T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Global npm Dependency Installation## Vulnerability Details **File Location**: `SKILL.md`, line 5 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium **Vulnerable Code Snippet**: ```yaml compatibility: Requires nla CLI installed (npm install -g nla). Requires a funded Ethereum wallet whose address matches the oracle specified in escrows. ``` ### Technical Analysis The documentation directs users to install the `nla` package globally from npm without specifying an exact version, package integrity value, or verified source. Consequently, the command resolves to whichever package release is associated with the latest applicable npm tag at installation time rather than to a version reviewed alongside this Skill. npm packages can execute code through installation lifecycle scripts and installed command-line entry points. If the package, its maintainer account, or one of its transitive dependencies is compromised, a user following this instruction could execute attacker-controlled code. Global installation also increases exposure because the executable is made available system-wide for the installing user. The repository contains no bundled malicious scripts, and the audited instruction does not itself prove that the current `nla` package is malicious. The vulnerability is the absence of dependency pinning and integrity or provenance controls in a security-sensitive workflow involving Ethereum wallet credentials and LLM API keys. ### Attack Path 1. An attacker compromises the `nla` npm package, a maintainer account, or a transitive dependency, or publishes a malicious future release through the package's distribution channel. 2. The malicious release becomes the version selected by the unpinned `npm install -g nla` command. 3. A user follows the prerequisite instruction and globally installs the package. 4. Attacker-controlled code executes through an npm lifecycle script or when the user invokes the installed `nla` executable. 5. The ma ...[truncated 1204 chars]
- Remediation
- ## Remediation Suggestions 1. Replace the floating installation command with an exact, reviewed version, such as `npm install -g nla@<approved-version>`. 2. Document the package's official npm namespace, publisher, source repository, and expected provenance so users can verify that they are installing the intended package. 3. Verify package integrity and signatures where supported. Record the reviewed package artifact's checksum or npm integrity metadata in release documentation. 4. Review and pin transitive dependencies through a lockfile in a controlled local installation rather than relying on an unconstrained global installation. 5. Prefer a project-local installation invoked through a pinned package script or an independently verified binary. Avoid elevated installation privileges. 6. Audit lifecycle scripts before installation and consider installing with lifecycle scripts disabled when they are not required. 7. Execute the CLI in an isolated, least-privileged environment with only the credentials needed for the immediate operation. 8. Avoid passing private keys or API keys directly on the command line, and ensure secrets are not exposed to unrelated processes or retained in shell history. 9. Establish a dependency-update process in which new versions are reviewed and tested before the documented pin is changed.
