T08 · Insecure Dependencies
Error
- Location
- SKILL.md:20
- Finding
- Mutable Third-Party Container Image Used for Security-Sensitive Vault Service<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 20-24 **Vulnerability Type**: Unpinned third-party container dependency **Risk Level**: High ### Vulnerable Code ```bash docker run -d -p 3001:3001 \ -v vault-data:/app/data \ -v vault-config:/app/config \ qsobad/ssh-vault-mcp:latest ``` ### Technical Analysis The documented deployment command executes the mutable third-party image `qsobad/ssh-vault-mcp:latest`. The `latest` tag is not cryptographically bound to the version reviewed with this Skill and can be changed by the publisher or anyone who compromises the publisher's registry account. This container occupies a particularly sensitive trust boundary because it receives persistent vault storage and manages SSH credentials, authorization sessions, and remote command execution. Publishing port 3001 without an explicit loopback address can also expose the service on every host network interface, depending on the Docker configuration and host firewall. The behavior is not necessary in its current form. The declared functionality can be provided using an image pinned to a reviewed immutable digest and with narrower network exposure. ### Attack Path 1. The container publisher's account, build environment, or image registry is compromised, or the mutable `latest` tag is intentionally replaced. 2. The attacker publishes a modified image under `qsobad/ssh-vault-mcp:latest`. 3. A user follows the Skill's documented Docker setup or later pulls the tag again. 4. Docker executes the changed image and attaches the persistent `/app/data` and `/app/config` volumes. 5. The altered service reads or modifies vault data, captures credentials or approval information, and abuses the service's ability to execute commands on managed SSH hosts. ### Impact Assessment A compromised image could obtain access to persistent vault data and configuration, capture credentials submitted during approval, tamper with authorization workflows, or execute com ...[truncated 247 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Replace the mutable tag with a reviewed, immutable image digest, for example `repository@sha256:<verified-digest>`. - Document the exact application version, source repository, build provenance, and digest verification procedure. - Use signed images and verify signatures or attestations before deployment. - Bind the published port to loopback by default, such as `127.0.0.1:3001:3001`, unless remote exposure is explicitly required. - Apply container hardening, including a non-root user, dropped Linux capabilities, a read-only root filesystem where practical, resource limits, and narrowly scoped volume permissions. - Establish a controlled upgrade process that reviews and pins every new image digest before deployment. ]]>
