T08 · Insecure Dependencies
Error
- Location
- SKILL.md:52
- Finding
- Unauthenticated and Mutable Software Installation Workflow## Vulnerability Details **File Location**: `SKILL.md:36`, `SKILL.md:39`, `SKILL.md:52-76`, `SKILL.md:140` **Vulnerability Type**: Unpinned dependencies and insufficient artifact authentication **Risk Level**: High ### Vulnerable Code ```bash git clone https://github.com/0-Vault/Vault-0.git && cd Vault-0 && npm install && npm run tauri build ``` ```text The DMG is not yet Apple notarized (no $99/yr Apple Developer account). macOS Gatekeeper may prompt on first launch. You can bypass with right-click > Open, or build from source for full trust. ``` ```bash VERSION=$(curl -s https://api.github.com/repos/0-Vault/Vault-0/releases/latest | grep '"tag_name"' | cut -d'"' -f4) && ARCH=$(uname -m) && if [ "$ARCH" = "arm64" ]; then SUFFIX="aarch64"; else SUFFIX="x86_64"; fi && echo "Downloading Vault-0 ${VERSION} for ${ARCH}..." && curl -sL "https://github.com/0-Vault/Vault-0/releases/download/${VERSION}/Vault-0_${VERSION}_${SUFFIX}.dmg" -o /tmp/Vault-0.dmg && echo "Downloaded to /tmp/Vault-0.dmg" ``` ```bash shasum -a 256 /tmp/Vault-0.dmg ``` ```bash hdiutil attach /tmp/Vault-0.dmg -nobrowse && cp -R "/Volumes/Vault-0/Vault-0.app" /Applications/ && hdiutil detach "/Volumes/Vault-0" && rm /tmp/Vault-0.dmg && echo "Vault-0 installed to /Applications" ``` ```bash npm install -g openclaw@latest ``` ### Technical Analysis The installation procedure resolves the mutable GitHub `latest` release at execution time, downloads an unnotarized DMG, and installs it under `/Applications`. It does not perform an automatic comparison against a pinned, independently authenticated digest or verify a trusted code-signing identity. Computing and displaying the downloaded file's SHA-256 digest detects accidental corruption only when compared against a trusted expected value. Asking the user to compare the digest with a value hosted ...[truncated 2654 chars]
- Remediation
- ## Remediation Suggestions 1. Pin Vault-0 to a reviewed, immutable release version and commit hash rather than resolving `releases/latest`. 2. Sign the macOS application with a Developer ID certificate and submit it for Apple notarization. Do not instruct users to bypass Gatekeeper. 3. Publish signed release manifests containing artifact names and SHA-256 digests. Verify the manifest using a trusted public key embedded in or independently distributed with the Skill. 4. Make checksum and signature verification automatic and fail closed before mounting the DMG. Merely displaying a digest is insufficient. 5. Verify the application's code-signing identity and notarization status with `codesign` and `spctl` before copying it into `/Applications`. 6. Pin source builds to a reviewed commit or signed tag. Avoid cloning and building the mutable default branch. 7. Commit and review dependency lockfiles, use `npm ci` instead of `npm install`, and enforce integrity metadata during reproducible builds. 8. Replace `openclaw@latest` with an explicitly reviewed version and document a controlled update process. 9. Publish reproducible-build instructions so users can compare locally produced artifacts with official signed releases. 10. Treat any artifact, signature, checksum, or signing-identity mismatch as a fatal error and remove the downloaded file without executing or mounting it.
