GHSA-xrmc-c5cg-rv7x
HIGHSafeInstall agent guard shell parsing can miss raw package execution
Blast Radius
Weekly download volume for affected packages — a proxy for how broadly this vulnerability is deployed.
safeinstall-clinpmDescription
Summary
SafeInstall CLI through 0.10.1 can fail to recognize some package-manager and registry-runner commands in its agent guard. Case-variant launcher names, leading file-descriptor redirections, and supported shell wrappers with options can cause a raw install command to receive no guard decision. Remote project scaffolding through package-manager create/init commands can also avoid the approval decision used for other registry runners.
Impact
When the SafeInstall guard is installed for a coding agent, a crafted shell command can bypass the intended deny or ask response. The coding agent may then run a package installation or registry-provided scaffolding command without SafeInstall policy evaluation and without SafeInstall enforcing disabled lifecycle scripts.
Exploitation requires a coding agent to act on attacker-influenced instructions and issue the crafted shell command. A successful malicious package or runner can execute with the permissions of the developer account, affecting the confidentiality, integrity, and availability of local source code, credentials, and development resources.
The vulnerability is limited to guard interception. Commands already routed through the SafeInstall CLI continue to receive normal policy evaluation.
Affected versions
- safeinstall-cli <= 0.10.1
Patched version
- safeinstall-cli 0.10.2
Fix
Version 0.10.2:
- normalizes package-manager and wrapper launcher names for detection and rewriting;
- parses leading redirections before classifying the command;
- handles supported wrapper option arity conservatively and fails closed on ambiguous embedded command syntax;
- routes remote create/init scaffolding through the registry-runner approval path;
- preserves SafeInstall routing for path-qualified package-manager invocations.
The patch includes a permanent regression corpus, table-driven parser characterization, an independent reference detector, and deterministic fuzz invariants. The integrated release candidate passed 626 tests, package smoke validation, and a one-million-command fuzz campaign with zero invariant violations.
Mitigation
Upgrade to safeinstall-cli 0.10.2 or later.
Until an upgrade is possible, manually review every coding-agent shell command and prevent the agent from invoking package managers or registry runners directly. Running an affected guard does not make raw package-manager execution safe.
Credits
Discovered, reproduced, and remediated by the SafeInstall maintainer during adversarial parser testing.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦npm | safeinstall-cli | all versions | 0.10.2 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for safeinstall-cli. O3's reachability analysis confirms whether the vulnerable code path is actually invoked in your application, so you act on real exposure instead of every transitive match.
Fix
Update safeinstall-cli to 0.10.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-xrmc-c5cg-rv7x is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
How O3 protects you
O3 pinpoints whether GHSA-xrmc-c5cg-rv7x is reachable in your code and exactly where to fix it, then blocks exploitation in production at runtime until the patched version is deployed.
Tailored to GHSA-xrmc-c5cg-rv7x. Runtime protection reduces exposure until a permanent patch is applied and verified — it complements patching, it doesn't replace it.
Frequently Asked Questions
Is GHSA-xrmc-c5cg-rv7x in your dependencies?
O3 detects GHSA-xrmc-c5cg-rv7x across npm dependencies and uses function-level reachability to confirm whether the vulnerable code path is actually reachable — not just present. No false positives.