T08 · Insecure Dependencies
- Location
SKILL.md:12- Finding
Unpinned Third-Party npm Package Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 12–18 and line 28
Vulnerability Type: Unpinned third-party dependency with globally installed executable
Risk Level: MediumVulnerable Code
json "install": [ { "id": "npm", "kind": "node", "package": "@shan8851/tfl-cli", "bins": ["tfl"], "label": "Install tfl-cli (npm)", }, ]sh npm install -g @shan8851/tfl-cliTechnical Analysis
The Skill instructs the environment to install
@shan8851/tfl-clifrom npm without specifying an exact version or an integrity digest. The package reference therefore resolves to a mutable registry release, and the code installed in the future may differ from the code reviewed when this Skill was published.The global installation command also makes the package's
tflexecutable available across the user's environment. npm lifecycle scripts, if present in the package or relevant dependencies, may execute during installation with the privileges of the user running npm.The repository contains only
SKILL.md; it does not include the dependency's source code, lockfile, integrity metadata, or a vendored reviewed copy. Consequently, the external CLI's implementation—including its handling ofTFL_APP_KEY, travel locations, network requests, subprocesses, and transitive dependencies—cannot be verified from this artifact.Attack Path
- An attacker compromises the npm publisher account, package distribution process, or a transitive dependency used by
@shan8851/tfl-cli. - The attacker publishes a malicious release that becomes the version selected by the unpinned package reference.
- A user or agent follows the Skill metadata or documented command and runs:
sh npm install -g @shan8851/tfl-cli - npm downloads the mutable release and may execute its installation lifecycle scripts.
- The malicious package executes with the installing user's privileges or later runs when the ag ...[truncated 984 chars]
- An attacker compromises the npm publisher account, package distribution process, or a transitive dependency used by
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an exact, reviewed version rather than relying on the latest registry release:
sh npm install -g @shan8851/tfl-cli@X.Y.Z - Record and verify the package tarball's cryptographic integrity or checksum before installation.
- Prefer a lockfile-backed, project-local installation over a global installation where the runtime supports it.
- Review the pinned package, its lifecycle scripts, and all transitive dependencies before approval.
- Disable npm lifecycle scripts with
--ignore-scriptsif the reviewed package does not require them. - Document the expected package source, publisher identity, repository, and network endpoints.
- Run the CLI under least privilege and expose only the environment variables and filesystem paths required for transport queries.
- Establish a controlled update process in which new package versions are reviewed and integrity-pinned before deployment.
- Pin the dependency to an exact, reviewed version rather than relying on the latest registry release:
