T08 · Insecure Dependencies
- Location
- SKILL.md:4
- Finding
- Unpinned third-party browser package execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:4` **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```yaml allowed-tools: Bash(npx agent-browser:*) ``` ### Technical Analysis The Skill authorizes execution of `agent-browser` through `npx` without identifying an exact package version, integrity hash, lockfile, or trusted package source. Consequently, the implementation retrieved and executed by `npx` can change after the Skill has been reviewed. If the package name is compromised, transferred, replaced, or resolved from an untrusted registry, the package installation lifecycle or executable can run arbitrary code with the privileges of the Agent process. The repository does not include dependency metadata that pins and verifies the expected implementation. ### Attack Path 1. An attacker compromises the npm package, package owner, or configured npm registry. 2. A malicious version is published under the package name accepted by the tool rule. 3. The Agent invokes the allowed `npx agent-browser` command. 4. `npx` resolves and executes the malicious package version. 5. The package gains the filesystem, network, and process privileges available to the Agent. ### Impact Assessment Successful exploitation could result in arbitrary local code execution under the Agent's operating-system account. This may expose project files, environment variables, browser state, authentication artifacts, and any other resources accessible to that account. No privilege escalation beyond the Agent account is demonstrated by the audited files. ]]>
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `agent-browser` to a reviewed, exact version rather than accepting any current registry version. 2. Use a lockfile and verify package integrity hashes before execution. 3. Install the audited package in a controlled build step instead of resolving it dynamically on every invocation. 4. Restrict npm to a trusted registry and disable unexpected lifecycle scripts where operationally possible. 5. Record the expected package owner, version, source repository, and integrity value in the Skill metadata. 6. Periodically review the pinned version before upgrading it. ]]>
