T08 · Insecure Dependencies
Error
- Location
- SKILL.md:19
- Finding
- Unpinned Mutable Third-Party Dependency Installation## Vulnerability Details **File Location**: `SKILL.md:19-32`; additional occurrence at `CONTRIBUTING.md:23-26` **Vulnerability Type**: Unpinned third-party package and source installation **Risk Level**: High **Vulnerable code in `SKILL.md:19-32`:** ```bash npm install -g agent-browser agent-browser install agent-browser install --with-deps ``` ```bash git clone https://github.com/vercel-labs/agent-browser cd agent-browser pnpm install pnpm build agent-browser install ``` **Additional vulnerable code in `CONTRIBUTING.md:23-26`:** ```bash npm install -g agent-browser@latest ``` ### Technical Analysis The installation instructions retrieve and execute mutable third-party content without pinning an audited npm package version, Git commit, checksum, or cryptographic signature. The explicit use of `@latest` guarantees that the installed artifact can change independently of this Skill's reviewed contents. Cloning the repository's default branch creates the same issue because the referenced branch can be modified after the audit. Installing the npm package may execute package lifecycle scripts. The subsequent `agent-browser install`, `pnpm install`, and `pnpm build` commands also execute code obtained from external package registries or the mutable upstream repository. The global npm installation expands the potential effect to the user's global Node.js environment. This finding does not establish that the current upstream package is malicious. It establishes that the reviewed Skill does not provide a reproducible trust boundary and that future or compromised upstream content could execute without a corresponding change to this repository. ### Attack Path 1. An attacker compromises the upstream npm publisher account, package release process, dependency tree, or Git repository. 2. The attacker publishes a malicious `agent-browser` release, modifies the default Git branch, or compromises a transitive depend ...[truncated 1156 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `agent-browser` to an explicitly reviewed version, for example `agent-browser@X.Y.Z`, rather than using an implicit current version or `@latest`. 2. Pin source-based installation to a full audited Git commit hash instead of the repository's mutable default branch. 3. Publish and verify cryptographic checksums or signatures for downloaded artifacts before installation or execution. 4. Use a committed lockfile with integrity metadata for all Node.js and pnpm dependencies, and require immutable or frozen-lockfile installation. 5. Avoid global installation where possible. Install the dependency in an isolated project, container, sandbox, or dedicated low-privilege environment. 6. Disable npm lifecycle scripts during dependency retrieval when feasible, review required scripts separately, and execute them only after verification. 7. Document the exact trusted package version, repository commit, expected checksum, Node.js version, and installation procedure in `SKILL.md`. 8. Replace the recommendation to install `@latest` in `CONTRIBUTING.md` with a pinned, audited version and a controlled update process. 9. Run browser automation without administrative privileges and restrict access to unrelated credentials, authentication state, and sensitive local files.
