T08 · Insecure Dependencies
Warning
- Location
- package.json:12
- Finding
- Declared vendored dependency is absent from the distributed project<![CDATA[ ## Vulnerability Details **File Location**: `package.json:12-14`, `vendor/caduceusmail-release.json:2-6`, `scripts/ensure-caduceusmail.sh:51-52, 63-68` **Vulnerability Type**: Missing security-critical vendored dependency and incomplete supply-chain verification **Risk Level**: Medium ### Complete Code Snippet ```json "dependencies": { "caduceusmail": "file:vendor/caduceusmail-3.6.7.tgz" } ``` ```json { "name": "caduceusmail", "version": "3.6.7", "filename": "caduceusmail-3.6.7.tgz", "integrity": "sha512-fv4cj8iFUM7yE9GSqDigiwm3MVgcJjxikp03hQGHqjFbEseoLS0UnooreIF7pg+LGbqpyecvF35sJitaGpghAg==", "shasum": "aa74eaf1f8e24b394846bd176014458acc485065" } ``` ```bash PACKAGE_TARBALL="${SKILL_DIR}/vendor/${PACKAGE_FILENAME}" INSTALL_DIR="${INSTALL_ROOT}/${PACKAGE_NAME}-${PACKAGE_VERSION}" verify_vendored_release() { python3 - "${PACKAGE_TARBALL}" "${PACKAGE_INTEGRITY}" "${PACKAGE_SHASUM}" <<'PY' import base64 import hashlib import pathlib import sys tarball = pathlib.Path(sys.argv[1]) expected_integrity = sys.argv[2] expected_shasum = sys.argv[3] payload = tarball.read_bytes() ``` ### Technical Analysis The project declares `vendor/caduceusmail-3.6.7.tgz` as both a local package dependency and the executable release artifact. The audited directory contains only `vendor/caduceusmail-release.json`; the referenced tarball is absent. Consequently, the integrity check fails when `tarball.read_bytes()` attempts to open the missing file, and the Skill cannot execute as distributed. The omitted archive is also the component that would receive Entra, Exchange, and Cloudflare credentials and perform the principal network and infrastructure operations. Its credential handling, network destinations, and mutation behavior could not be audited. The manifest contains expected hashes, which would protect against an unmodified manifest paired with an incorrect archive. However, users may be encouraged to obtain the missing component separately, creating ...[truncated 1296 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Include the exact `vendor/caduceusmail-3.6.7.tgz` artifact referenced by the manifest and `package.json`. 2. Add a packaging or CI check that fails when the archive is absent. 3. Recompute SHA-512 and SHA-1 values during CI and compare them against independently maintained release metadata. 4. Publish provenance information, a full immutable commit identifier, and reproducible-build instructions for the archive. 5. Audit the archive contents, especially network endpoints, credential handling, persistence, subprocess execution, and Microsoft/Cloudflare permission use. 6. Do not instruct users to download the missing artifact manually from an unverified location. 7. Consider signing the release manifest and archive with a trusted release key so replacement of both files is detectable. ]]>
