T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:86
- Finding
- Unpinned Installation and Execution of an External CLI Dependency<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:86-94`, `SKILL.md:231-240`, `references/cli-workflows.md:31-58`, `README.md:166-169` **Vulnerability Type**: Unpinned third-party executable dependency **Risk Level**: Medium ### Vulnerable Code `SKILL.md:86-94`: ```text Do not use source-checkout build artifacts or source builds as an installation path. This skill is intended to operate published installs only. If the binary is missing, install it from a published channel first: prefer a verified GitHub Release archive, or use `cargo install relay-knowledge` from crates.io when Cargo is the selected published package channel. Before downloading a binary from GitHub Releases or crates.io, tell the user to configure a proxy when their network requires one. Prefer standard `HTTPS_PROXY`, `HTTP_PROXY`, and `NO_PROXY` environment variables, and preserve those settings for checksum verification and follow-up diagnostics. ``` `SKILL.md:231-240`: ```text For online install or upgrades, prefer the official release path first and Cargo second: ```bash cargo install relay-knowledge relay-knowledge version check --format json ``` `version check` only reports available stable versions. It must not replace the binary automatically. Follow installer or package-manager policy for the actual upgrade. ``` `references/cli-workflows.md:31-58`: ```text Use a GitHub Release archive when the bundled asset is absent, unusable, or the user requested a specific published version that is not available in the skill assets. Before downloading, tell the user to configure proxy settings if their network needs them: ```bash export HTTPS_PROXY=http://proxy.example:8080 export HTTP_PROXY=http://proxy.example:8080 export NO_PROXY=localhost,127.0.0.1 ``` ```powershell $env:HTTPS_PROXY = "http://proxy.example:8080" $env:HTTP_PROXY = "http://proxy.example:8080" $env:NO_PROXY = "localhost,127.0.0.1" ``` Verify the archive with `checksums.txt`, then place the binary on `PATH ...[truncated 3246 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin an audited, exact CLI version rather than installing the latest registry-resolved release: ```bash cargo install relay-knowledge --version '<exact-version>' --locked ``` 2. Publish expected SHA-256 or stronger digests for each supported release artifact in a channel independent of the artifact host. Require the downloaded archive to match the pinned digest before extraction or execution. 3. Verify signed release metadata, such as Sigstore attestations or equivalent cryptographic signatures, against a pinned publisher identity. 4. Require explicit user approval before downloading, installing, or upgrading the executable. Clearly disclose the selected version, source URL, expected digest, destination, and permissions before proceeding. 5. Do not treat a checksum file downloaded from the same release as sufficient authentication. Authenticate the checksum file itself through a trusted signature or independently pinned digest. 6. Prefer a bundled, previously audited executable when available. Record its version and digest, and fail closed when verification fails rather than silently selecting a mutable installation source. 7. Run the CLI with least privilege and restrict its filesystem and network access where practical. Avoid exposing unrelated repositories, credentials, environment variables, or service-management permissions. 8. Separate normal indexing/query workflows from service installation. Service creation or persistent configuration should require a distinct, explicit user request and confirmation. ]]>
