T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:17
- Finding
- Unpinned Third-Party CLI Installation and Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:17-30`; additional occurrence at `CONTRIBUTING.md:23-26` **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium ### Vulnerable Code `SKILL.md:17-30`: ```bash ```bash npm install -g agent-browser agent-browser install agent-browser install --with-deps ``` ### From Source ```bash git clone https://github.com/vercel-labs/agent-browser cd agent-browser pnpm install pnpm build agent-browser install ``` ``` `CONTRIBUTING.md:23-26`: ```bash 1. Install the latest version ```bash npm install -g agent-browser@latest ``` ``` ### Technical Analysis The installation instructions retrieve and execute mutable third-party content without pinning a reviewed npm package version, Git commit, or release artifact. They also provide no checksum, signature, or integrity-verification procedure. Running `npm install -g agent-browser` or `npm install -g agent-browser@latest` can execute npm lifecycle scripts supplied by the selected package and its dependency graph. Because the selected version can change over time, the code executed by a user may differ from the code originally reviewed. The source installation workflow clones the default branch of a remote repository and then runs `pnpm install` and `pnpm build`. Consequently, repository HEAD, package resolution, installation scripts, and build scripts remain mutable. The subsequent `agent-browser install --with-deps` operation may also install browser or system-level dependencies, potentially increasing the impact if run with elevated privileges. This finding does not establish that the current upstream project is malicious. It identifies an unsafe, non-reproducible dependency acquisition process that could become exploitable following compromise of the package registry, upstream repository, maintainer account, release process, or transitive dependency. ### Attack Path 1. An attacker compromises the upstream npm package, maintaine ...[truncated 1554 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the npm dependency to a specific reviewed version instead of using an unqualified package name or `@latest`, for example: ```bash npm install -g agent-browser@<reviewed-version> ``` 2. Pin source installations to a verified immutable commit or signed release tag: ```bash git clone https://github.com/vercel-labs/agent-browser cd agent-browser git checkout <verified-commit-sha> ``` 3. Publish the expected commit SHA and cryptographic checksums for release artifacts and browser binaries. Verify them before installation or execution. 4. Enforce a committed lockfile with frozen dependency resolution, such as `pnpm install --frozen-lockfile`. 5. Prefer signed releases and document signature verification procedures. 6. Avoid global installation where practical. Use a project-local dependency, isolated container, or dedicated unprivileged account. 7. Explicitly warn users not to run npm, pnpm, or `agent-browser install --with-deps` with administrative privileges unless required and independently reviewed. 8. Review npm lifecycle scripts, build scripts, transitive dependencies, and binary-download behavior before updating the pinned version. 9. Establish a controlled upgrade process in which new versions are reviewed, tested, and assigned updated checksums before documentation is changed. ]]>
