T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:20
- Finding
- Unpinned Third-Party Browser Automation Dependency## Vulnerability Details **File Location**: `SKILL.md:20-30`; `CONTRIBUTING.md:25` **Vulnerability Type**: Unpinned and mutable executable dependencies **Risk Level**: Medium ### Vulnerable Code `SKILL.md:20-22`: ```bash npm install -g agent-browser agent-browser install agent-browser install --with-deps ``` `SKILL.md:28-30`: ```bash git clone https://github.com/vercel-labs/agent-browser cd agent-browser pnpm install ``` `CONTRIBUTING.md:25`: ```bash npm install -g agent-browser@latest ``` ### Technical Analysis The installation instructions retrieve executable third-party content without pinning an audited npm package version, Git commit, or integrity hash. In particular, `@latest` explicitly selects a mutable release, while cloning the repository without a commit or tag executes the contents of its mutable default branch. Running `pnpm install` may also execute package lifecycle scripts from the project and its dependency graph. The global npm installation expands the potential impact because the package is installed into the user's global environment and exposes commands through the user's executable search path. The subsequent browser installation commands retrieve additional executable browser components or system dependencies. This is a supply-chain weakness rather than evidence that the current upstream package is malicious. Exploitation depends on compromise of the npm package, upstream repository, maintainer account, release process, or transitive dependency. ### Attack Path 1. An attacker compromises the `agent-browser` npm package, an upstream maintainer account, the repository's default branch, or a transitive dependency. 2. The attacker publishes or commits a malicious version containing installation lifecycle code, build logic, or a modified CLI executable. 3. A user or agent follows the documented `npm install -g agent-browser`, `npm install -g agent-browser@latest`, or unpinned ...[truncated 1465 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the npm package to a specific reviewed version, for example: ```bash npm install --global agent-browser@<reviewed-version> ``` Do not use `@latest` in installation or troubleshooting instructions. 2. Pin source installations to an immutable reviewed commit: ```bash git clone https://github.com/vercel-labs/agent-browser cd agent-browser git checkout --detach <reviewed-commit-sha> ``` 3. Publish expected package integrity hashes or signed release information and instruct users to verify them before installation. 4. Use and retain a lockfile for source builds. Install with frozen-lockfile behavior so dependency resolution cannot silently change: ```bash pnpm install --frozen-lockfile ``` 5. Prefer project-local or isolated installation over global installation. Run the tool in a container, sandbox, or dedicated low-privilege account when it will handle sensitive browser sessions. 6. Review package lifecycle scripts and the transitive dependency graph before approving a release. Where compatible with the installation process, disable lifecycle scripts during dependency retrieval and execute only explicitly reviewed build steps. 7. Document the exact relationship between the Skill version, approved CLI version, source commit, and browser component versions so installations are reproducible. 8. Warn users not to run installation as root or with `sudo`, and protect saved authentication-state files with restrictive permissions and exclusion from version control.
