T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:89- Finding
Unverified Remote Retrieval and Execution of a Closed-Source Browser Kernel
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 89-93
Vulnerability Type: Remote payload retrieval through an insufficiently verifiable third-party supply chain
Risk Level: HighVulnerable Code Snippet
markdown | `anti-detect-browser` | npm registry | Install an exact version; `npm view anti-detect-browser@2.2.0 dist.integrity` gives the published tarball hash. No install scripts; dependencies are `ws`, `socks`, `yauzl`, `adm-zip`, `@modelcontextprotocol/sdk` | | `antibrow` (Python path) | PyPI | `pip install "antibrow[mcp]==0.3.0"`, exact version, in a lockfile | | Browser kernel | AntiBrow's CDN, fetched by the package on first launch | Closed-source Chromium build, cached in `~/.anti-detect-browser/`. Prefetch it during a build and mount the cache, so a running agent never triggers a download | The kernel being a closed binary from a small vendor is a real supply-chain consideration, not a formality - it is the tradeoff for the spoofing living in C++ rather than in an injectable script. Treat it the way you would any vendor binary: install it deliberately, pin it, keep it in an image you built, and if a deployment cannot accept a closed binary that phones home for license verification, this is the wrong tool - there is no offline mode.Technical Analysis
The Skill instructs users to install version-pinned npm or PyPI packages, but those packages subsequently retrieve a separate closed-source Chromium kernel from the vendor's CDN. The document does not provide an immutable kernel version, expected cryptographic digest, signed manifest, or public-key verification procedure.
Pinning the npm or PyPI wrapper does not pin the effective executable payload if the wrapper resolves and downloads a mutable kernel artifact later. Consequently, reviewing the Skill and its package versions cannot establish which browser binary will execute on first launch. The mandatory license-verification connection fur ...[truncated 2702 chars]
- Remediation
View remediation
Remediation Suggestions
- Assign every browser kernel release an immutable version and publish its SHA-256 or stronger cryptographic digest.
- Sign a release manifest with a documented vendor signing key and verify the signature before extracting or executing the kernel.
- Make the package fail closed when the signature, digest, platform identifier, or expected version does not match.
- Pin both the package and kernel versions; do not allow a pinned wrapper package to resolve a mutable
latestkernel. - Publish stable artifact URLs or content-addressed downloads rather than mutable CDN paths.
- Prefetch and verify the kernel in a controlled build pipeline, then include it in an immutable deployment image. Disable runtime downloads in production.
- Support an offline mode that does not require recurring license-verification traffic, or document and strictly allowlist the required endpoints.
- Run the MCP server and browser kernel as a dedicated, unprivileged operating-system account inside a container or sandbox with read-only filesystems where practical.
- Restrict outbound network access to operator-approved destinations and separate license/download access from ordinary browser traffic.
- Keep persistent profiles outside broadly accessible directories, encrypt sensitive profile data at rest, and use separate disposable profiles for untrusted websites.
- Avoid exposing optional high-risk tools such as
evaluate, profile management, proxy management, and Live View unless the task explicitly requires them. - Maintain an auditable software bill of materials and independent security review process for the native kernel and package release pipeline.
