T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:15
- Finding
- Unpinned Third-Party Package and Source Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:15-26`; `CONTRIBUTING.md:15-17` **Vulnerability Type**: Unpinned and mutable third-party dependencies **Risk Level**: Medium ### Vulnerable Code `SKILL.md:15-17`: ```bash npm install -g agent-browser agent-browser install agent-browser install --with-deps ``` `SKILL.md:23-26`: ```bash git clone https://github.com/vercel-labs/agent-browser cd agent-browser pnpm install pnpm build ``` `CONTRIBUTING.md:15-17`: ```bash npm install -g agent-browser@latest ``` ### Technical Analysis The installation instructions retrieve and execute third-party software without pinning an audited package version, source commit, dependency lock state, or artifact integrity value. The npm commands install either the registry's current default release or explicitly use the mutable `latest` tag. A future release can therefore differ from the version reviewed when this skill was published. npm installation can execute package lifecycle scripts with the privileges of the invoking user. The source installation workflow clones the current repository HEAD and resolves packages through `pnpm install`. No audited commit hash, signed tag, or frozen lockfile requirement is specified. The effective code and transitive dependency graph can consequently change after review. The subsequent `agent-browser install` commands retrieve additional browser components. The `--with-deps` variant may also install operating-system dependencies and can cause broader system modification when the user supplies elevated privileges. The documentation does not require checksum or signature verification for these retrieved components. ### Attack Path 1. An attacker compromises the upstream npm package, its maintainer account, the source repository, a transitive dependency, or a downloaded browser artifact. 2. The attacker publishes malicious content under the package's default release or `latest` tag, changes repository HEAD, or substitutes ...[truncated 1137 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the npm package to a specific, audited version rather than using an implicit current release or `@latest`: ```bash npm install -g agent-browser@<audited-version> ``` 2. Record and verify npm integrity metadata or package provenance before installation. 3. Pin source installations to an audited commit: ```bash git clone https://github.com/vercel-labs/agent-browser cd agent-browser git checkout --detach <audited-commit-sha> ``` 4. Require signature verification for signed releases or tags where upstream supports it. 5. Commit and review a dependency lockfile, then require a frozen installation mode such as: ```bash pnpm install --frozen-lockfile ``` 6. Publish expected cryptographic checksums for browser binaries and other downloaded artifacts, and verify them before execution. 7. Prefer a local, isolated installation or sandbox over a global package installation. 8. Warn users not to run installation as root or with administrative privileges unless strictly necessary. Review system dependencies before using `--with-deps`. 9. Establish a controlled update process in which package versions, source commits, lockfiles, and downloaded artifacts are re-audited before documentation is updated. ]]>
