T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:11
- Finding
- Unpinned Third-Party Executable Receives Sensitive Credentials<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 11-15; credential-bearing execution occurs at lines 53-55 **Vulnerability Type**: Unpinned executable dependency and supply-chain exposure **Risk Level**: Medium ### Vulnerable Code ```yaml install: - kind: node package: "@stringclaw/bridge" bins: ["stringclaw-bridge"] ``` The installed executable is subsequently started with access to credentials: ```bash OPENCLAW_GATEWAY_TOKEN=<token> stringclaw-bridge serve > /tmp/stringclaw-bridge.log 2>&1 & ``` The Skill metadata also requires `STRINGCLAW_API_KEY`, which will ordinarily be available in the process environment: ```yaml requires: env: ["STRINGCLAW_API_KEY"] bins: ["stringclaw-bridge"] ``` ### Technical Analysis The npm package `@stringclaw/bridge` is specified without an exact version or integrity hash. Consequently, installation may resolve to a future package release whose contents differ from those reviewed during this audit. This dependency is especially sensitive because its executable is launched with `OPENCLAW_GATEWAY_TOKEN` explicitly present in its environment and may also inherit `STRINGCLAW_API_KEY`. The Skill enables the gateway chat-completions endpoint before launching the executable. A compromised package release, registry account, transitive dependency, or package-resolution path could therefore execute arbitrary code with the invoking user's privileges and access these credentials. The audit found no evidence that the currently referenced package is malicious. The vulnerability is the absence of dependency pinning and integrity verification around a security-sensitive executable. ### Attack Path 1. An attacker compromises the package publisher, npm account, registry path, or an unpinned transitive dependency. 2. The attacker publishes a modified version that satisfies the unconstrained package reference. 3. A user installs the Skill dependency and receives the modified package. 4. The user follow ...[truncated 1057 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `@stringclaw/bridge` to a reviewed, immutable exact version rather than relying on unconstrained resolution. 2. Use a lockfile and verify package integrity with a trusted cryptographic digest. 3. Pin and audit all transitive dependencies, and install only from an explicitly trusted registry. 4. Require package-signature or provenance verification where supported. 5. Run the bridge under a dedicated, unprivileged account or sandbox with minimal filesystem and network access. 6. Supply only the credentials required by the bridge instead of allowing it to inherit the complete parent environment. 7. Scope and rotate `STRINGCLAW_API_KEY` and the gateway token, and provide revocation procedures for suspected dependency compromise. 8. Document the reviewed package version in `SKILL.md` and establish a controlled process for dependency upgrades. ]]>
