T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:45
- Finding
- Unpinned npm Dependencies Create a Supply-Chain Execution Risk## Vulnerability Details **File Location**: `SKILL.md`, lines 45, 145, 226, 371, and 395 **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium The installation instructions use npm package names without exact versions and do not require a reviewed lockfile. ```bash # SKILL.md:45 npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk @microsoft/teams.ai ``` ```bash # SKILL.md:145 npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk @microsoft/teams.ai @microsoft/teams.mcpclient ``` ```bash # SKILL.md:226 npm install @microsoft/teams.mcpclient ``` ```bash # SKILL.md:371 npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk ``` ```bash # SKILL.md:395 npm install @microsoft/teams.mcpclient ``` ### Technical Analysis These commands allow npm to resolve package versions at installation time. The resolved code can therefore differ from the version originally reviewed or tested. The project contains no lockfile or package manifest that constrains the selected versions. npm dependencies may execute lifecycle scripts during installation and run with the privileges of the user performing the installation. If an upstream maintainer account, package release process, or transitive dependency is compromised, a malicious release selected by these commands could execute arbitrary code. There is no evidence that the named packages are currently malicious; the issue is the absence of controls that make dependency installation reproducible and resistant to unexpected upstream changes. ### Attack Path 1. An attacker compromises an upstream package, maintainer account, release pipeline, or transitive dependency. 2. The attacker publishes a malicious version that remains compatible with npm's unconstrained resolution. 3. A user follows one of the documented `npm install` commands. 4. npm selects and downloads the malicious version. 5. Malicious code executes through an ...[truncated 913 chars]
- Remediation
- ## Remediation Suggestions 1. Pin every direct dependency to an exact, reviewed version rather than relying on npm's current resolution: ```bash npm install --save-exact package-name@reviewed-version ``` 2. Generate, review, and commit `package-lock.json`. 3. In automated and reproducible environments, install dependencies with: ```bash npm ci ``` 4. Review transitive dependencies and package provenance before approving lockfile changes. 5. Run `npm audit` or an equivalent software-composition analysis tool in CI, while manually evaluating relevant findings. 6. Use automated dependency updates only through reviewed pull requests with test and lockfile diffs. 7. Inspect dependency lifecycle scripts and consider installing with `--ignore-scripts` where lifecycle scripts are unnecessary. 8. Perform installation and runtime operations under a dedicated, least-privileged account with narrowly scoped credentials. 9. Avoid exposing production API keys during dependency installation; provide secrets only to the runtime process that requires them.
