T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned Global Installation of a Third-Party npm Package
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 10
Vulnerability Type: Insecure third-party dependency installation
Risk Level: MediumVulnerable Code:
markdown If not installed: `npm install -g defuddle`Technical Analysis
The skill directs the agent to install the latest available release of the
defuddlenpm package globally. The dependency is not pinned to a reviewed version, protected by a lockfile, or verified using an expected package integrity value.Because npm packages can define installation lifecycle scripts, package-controlled code may execute with the permissions of the user running npm. The
-goption also expands the installation scope beyond the project, even though a project-local or ephemeral installation would be sufficient for webpage extraction.The audit did not establish that the named package is malicious. The vulnerability is the unsafe, mutable dependency acquisition process: a compromised maintainer account, malicious future release, registry compromise, or other supply-chain incident could change the code executed after the skill has already been reviewed.
Attack Path
- The skill is invoked for a webpage extraction task.
- The agent determines that the
defuddleexecutable is not installed. - Following
SKILL.md, it runsnpm install -g defuddle. - npm resolves the current registry release rather than a specifically reviewed version.
- If that release or one of its transitive dependencies has been compromised, package installation scripts or subsequently invoked CLI code execute locally.
- The malicious code operates with the invoking user's permissions and may access files, credentials, environment variables, and network resources available to that user.
Impact Assessment
Successful exploitation could provide arbitrary code execution under the account performing the installation. The accessible scope includes that user's readable ...[truncated 667 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
defuddleto a specific, reviewed version rather than resolving the mutable latest release. - Prefer a project-local installation with a committed lockfile over
npm install -g. - Verify package provenance and integrity against an approved registry and expected integrity digest.
- Disable npm lifecycle scripts during installation where compatible, then explicitly permit only installation steps shown to be necessary.
- Run the package with the least-privileged account in a restricted environment that limits filesystem, credential, and network access.
- Establish a dependency update process that reviews new versions and transitive dependency changes before changing the pin.
- If ephemeral execution is required, invoke an explicitly pinned version in a sandbox rather than relying on a persistent global executable.
- Pin
