T08 · Insecure Dependencies
- Location
SKILL.md:49- Finding
Unpinned and Unauditable External Package Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:49-53,README.md:22-27,README.md:61-71, andpackage.json:5
Vulnerability Type: Supply-chain risk from mutable external dependencies
Risk Level: MediumVulnerable Code Snippets
SKILL.md:49-53:bash npm install marketing-drafter # or pip install marketing-drafterREADME.md:22-27:bash npm install marketing-drafter # or python -m pip install marketing-drafterREADME.md:61-71:bash npm install marketing-drafterbash pip install marketing-drafterpackage.json:5:json "main": "index.js",Technical Analysis
The documentation instructs users to install
marketing-drafterfrom the npm or Python package registry without pinning a version or verifying an integrity hash. These commands resolve to mutable, externally hosted packages whose contents are not included in the audited artifact.The artifact contains only documentation and package metadata. In particular,
package.jsondeclaresindex.jsas its entry point, but no such implementation was present in the supplied project structure. There is also no npm lockfile, Python requirements lockfile, integrity metadata, vendored source code, or other mechanism that would allow the installed implementation to be compared with the reviewed artifact.An unversioned npm installation can execute package lifecycle scripts during installation. Both npm and Python packages can also execute arbitrary code when imported or invoked. The documented examples direct users to provide the installed package with an OpenAI API key, potentially exposing that credential and other process environment data to code that was not available for audit.
This finding does not establish that the current registry packages are malicious. It establishes that following the documented installation procedure crosses an unaudited supply-chain boundary and allows ...[truncated 1914 chars]
- Remediation
View remediation
Remediation Suggestions
- Include the actual implementation in the reviewed repository so its behavior can be audited against the documentation.
- Confirm ownership and provenance of both the npm and Python registry packages before directing users to install them.
- Pin exact package versions rather than relying on the latest registry release.
- Commit appropriate lockfiles, such as
package-lock.jsonfor npm and a hash-locked requirements file for Python. - Require integrity verification. Use npm lockfile integrity fields and Python hash checking, such as
pip install --require-hashes. - Publish reproducible build information and signed release artifacts where possible.
- Ensure the package repository URL, registry metadata, release tags, and source commit are consistently linked and verifiable.
- Avoid providing API credentials to the installed package until its provenance and implementation have been verified.
- Run package installation and content generation under a dedicated, least-privileged account or isolated container with restricted filesystem and network access.
- In CI environments, expose only narrowly scoped, short-lived credentials and prevent untrusted installation scripts from accessing production secrets.
- Add the referenced
index.jsimplementation or correct the package entry point so the distributed artifact is complete and independently reviewable.
