T08 · Insecure Dependencies
Warning
- Location
- README.md:28
- Finding
- Mutable Remote Manifest Downloaded Without Integrity Verification## Vulnerability Details **File Location**: `README.md`, lines 28-32 **Vulnerability Type**: Supply-chain exposure through an unpinned remote configuration source **Risk Level**: Medium ```bash ### Step 3 — Create Your Identity Vault ```bash mkdir -p ~/identity-vault curl -o ~/identity-vault/manifest.json \ https://raw.githubusercontent.com/seamao/kyc-vault-skill-/main/manifest.template.json ``` ``` ### Technical Analysis The documented installation procedure downloads a security-sensitive manifest from the mutable `main` branch of an external personal GitHub repository. The command does not pin a reviewed commit and does not verify a checksum or digital signature. Consequently, the downloaded manifest can differ from the version included in the audited project. The manifest controls document filenames and associated document types used by the KYC workflow. The documented implementation does not define strict validation that filenames must be simple names or that their resolved paths must remain inside `~/identity-vault/`. Although the workflow requires user authorization before reading or uploading files, a maliciously modified manifest could present deceptive entries or reference unexpected local paths. User confirmation reduces the likelihood of exploitation but does not eliminate the supply-chain trust problem. ### Attack Path 1. An attacker compromises the referenced GitHub account or repository, or malicious content is otherwise committed to its mutable `main` branch. 2. The attacker modifies `manifest.template.json` to contain deceptive document entries or filenames referencing unintended files. 3. A user follows the README and downloads the modified manifest with `curl`. 4. The user replaces visible placeholders but fails to identify the malicious filename or configuration entry. 5. During a KYC operation, the skill interprets the attacker-controlled entry as an identity document. 6. The skill request ...[truncated 741 chars]
- Remediation
- ## Remediation Suggestions 1. Install the `manifest.template.json` file bundled with the reviewed skill package rather than downloading a second copy at setup time. 2. If remote retrieval is necessary, pin the URL to a reviewed immutable commit instead of the `main` branch. 3. Publish and verify a SHA-256 checksum or cryptographic signature before using the downloaded file. 4. Download to a temporary file, validate it, and only then atomically move it into the vault. 5. Enforce a strict manifest schema with an allowlist of supported document types and fields. 6. Require every document filename to be a simple basename. Reject absolute paths, `..` traversal, path separators, control characters, and URLs. 7. Resolve each document path canonically and verify that it remains under the canonical `~/identity-vault/` directory. 8. Reject symbolic links and non-regular files before access or upload. 9. Continue displaying the canonical local filename and exact destination domain during each authorization prompt.
