T08 · Insecure Dependencies
- Location
SKILL.md:45- Finding
Execution of an Unpinned Mutable npm Dependency
- Content
View full analysis
&& npx chrome-devtools-mcp@latest --autoConnect --experimentalStructuredContent --experimental-page-id-routing" ``` Equivalent unpinned commands also appear in the troubleshooting and README instructions: ```powershell npx chrome-devtools-mcp@latest --autoConnect ``` ```powershell npx chrome-devtools-mcp@latest --autoConnect --experimentalStructuredContent --experimental-page-id-routing ``` ### Technical Analysis The documented commands instruct users to fetch and execute the mutable `latest` release of `chrome-devtools-mcp` directly through `npx`. No exact version, lockfile, integrity hash, or other verification mechanism constrains the downloaded code. Because the package is used with `--autoConnect`, the executed dependency receives browser-automation capabilities over a Chrome instance that is expected to contain an authenticated Gemini session. The package version executed in the future can therefore differ from the version reviewed when this Skill was published. This is a supply-chain weakness rather than evidence that the current package is malicious. Exploitation would require compromise of the npm package, its publisher account, the package distribution channel, or a future malicious release. ### Attack Path 1. An attacker compromises the npm package, its publisher account, or another part of its release pipeline. 2. The attacker publishes a malicious release and assigns it to the `latest` distribution tag. 3. A user follows the Skill instructions and runs `npx chrome-devtools-mcp@latest`. 4. `npx` downloads and executes the attacker-controlled package code locally. 5. The package starts with automatic browser connectivity and can interact with the remotely ...[truncated 1013 chars]- Remediation
View remediation
--autoConnect --experimentalStructuredContent --experimental-page-id-routing ``` 2. Install dependencies through a committed lockfile and use a deterministic installation mechanism such as `npm ci`. 3. Verify package provenance, publisher identity, release signatures where available, and npm integrity metadata before adoption. 4. Establish a controlled dependency-update process that reviews new versions before changing the pinned version. 5. Run the browser-control service under a dedicated, least-privileged operating-system account where practical. 6. Use a dedicated Chrome profile containing only the minimum account state required for Gemini. 7. Restrict the Chrome debugging endpoint to local access and terminate it immediately after the task. ]]>
