T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:48
- Finding
- Unpinned and Unverifiable External Package Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:48-52`, `README.md:21-24`, and `README.md:55-63` **Vulnerability Type**: Third-party package supply-chain exposure **Risk Level**: Medium ### Vulnerable Code `SKILL.md:48-52`: ```bash npm install agentmail-wrapper # or pip install agentmail-wrapper ``` `README.md:21-24`: ```bash npm install agentmail-wrapper # or python -m pip install agentmail-wrapper ``` `README.md:55-63`: ```markdown ### Node.js ```bash npm install agentmail-wrapper ``` ### Python ```bash pip install agentmail-wrapper ``` ``` ### Technical Analysis The documentation directs users to install packages named `agentmail-wrapper` from both the npm and PyPI registries without specifying an immutable version, integrity hash, lockfile, or verified artifact source. The audited project contains no implementation of either distribution, so the behavior of the packages retrieved by these commands cannot be verified against the advertised functionality. npm and PyPI are separate package ecosystems, and control of a name in one registry does not establish control of the same name in the other. Package installation can execute package-controlled lifecycle or build logic. For example, an npm package may define installation scripts, while a Python distribution may execute build-backend logic during installation. Consequently, compromise, replacement, dependency confusion, or mistaken ownership of either external package could expose users to arbitrary code execution under the privileges of the package-manager process. No evidence in the supplied artifact proves that either external package is currently malicious. The finding concerns the unverifiable and mutable supply-chain trust introduced by the installation instructions. ### Attack Path 1. A user trusts the skill documentation and runs one of the provided installation commands. 2. The package manager resolves the package name through an external registry. 3. Because no exact ...[truncated 1072 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Include the complete auditable implementation in the project artifact. 2. Pin installations to reviewed, exact package versions rather than resolving the latest mutable release. 3. Provide lockfiles and registry-generated integrity hashes for all dependencies. 4. Publish verified links to the exact npm and PyPI publisher profiles and document ownership of both package names. 5. Use package provenance or signed release attestations where supported. 6. Audit package lifecycle scripts and Python build configuration before recommending installation. 7. In CI environments, install dependencies with minimum privileges and without access to unrelated production credentials. 8. Consider disabling unnecessary lifecycle scripts during dependency review and installing only from an approved internal registry or verified mirror. ]]>
