registry / @prosopo/procaptcha-bundle / 4.1.57
@prosopo/procaptcha-bundle@4.1.57
AI Security Review
scanned 3mo ago · by lpm-firewall-aiThe static signal is explained by a legitimate browser captcha bundle that lazily imports its declared Prosopo dependencies to prefetch detection. No lifecycle execution or concrete malicious behavior was found in the inspected package source.
Static reason
One or more suspicious static signals were detected.
Trigger
A site loads the bundle or calls render() for a Procaptcha element.
Impact
Normal captcha-related network activity delegated to declared Prosopo dependencies; no package-local credential theft, persistence, or destructive action found.
Mechanism
Captcha widget rendering with detector prefetch
AI rationale
The static signal is explained by a legitimate browser captcha bundle that lazily imports its declared Prosopo dependencies to prefetch detection. No lifecycle execution or concrete malicious behavior was found in the inspected package source.
Evidence
package.jsonsrc/index.tssrc/util/widgetFactory.tssrc/util/configCreator.tssrc/util/captcha/components/bundleCaptcha.tsxsrc/util/config.tssrc/util/captcha/captchaRenderer.tsx
Decision evidence
public snapshotAI called this Clean at 94.0% confidence as Benign with low false-positive risk.
Evidence for AI clean decision
- Runtime prefetches the Prosopo detector using the supplied site key.
- Browser entrypoint mounts captcha widgets and registers DOM event handlers.
Evidence against
- package.json has no preinstall, install, or postinstall hook.
- Source contains no child-process, shell, eval/vm, filesystem harvesting, or credential-reading logic.
- Dynamic imports load declared @prosopo captcha dependencies for widget rendering.
- Environment values are used as captcha configuration fields, not collected or transmitted by this package.
Behavioral surface
CryptoEnvironmentVarsFilesystem
HighEntropyStringsUrlStrings
Source & flagged code
2 flaggeddist/index.jsView file
4package = @prosopo/procaptcha-bundle; repositoryIdentity = captcha; dependency = @prosopo/procaptcha-common
L4: import { WidgetThemeResolver } from "./util/widgetThemeResolver.js";
L5: import { getWindowCallback } from "@prosopo/procaptcha-common";
L6: import { at } from "@prosopo/util";
High
Copied Package Dependency Bridge
Package metadata claims a different repository identity while copied source loads a runtime dependency bridge.
dist/index.jsView on unpkg · L4src/index.tsView file
85if (!siteKey) return;
void Promise.all([
import("@prosopo/procaptcha-frictionless"),
import("@prosopo/procaptcha-common"),
])
.then(([frictionless, common]) => {
frictionless.prefetchDetector(
process.env.PROSOPO_DEFAULT_ENVIRONMENT as EnvironmentTypes,
common.pickIpMode(flags),
siteKey,
);
})
.catch(() => undefined);
Low
Ai Review Evidence
Runtime prefetches the Prosopo detector using the supplied site key.
src/index.tsView on unpkg · L85Findings
1 High2 Medium5 Low
HighCopied Package Dependency Bridgedist/index.js
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
LowAi Review Evidencesrc/index.ts
Affected versions and remediation
This report applies to @prosopo/procaptcha-bundle@4.1.57.
See all versions of @prosopo/procaptcha-bundle for other recorded verdicts.
- Review the evidence and your use of @prosopo/procaptcha-bundle@4.1.57 before allowing it. Restrict the permissions described in this report.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
Evidence last updated: .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced.