T08 · Insecure Dependencies
- Location
SKILL.md:31- Finding
Unpinned npm Package Is Downloaded and Executed Without Confirmation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:15,SKILL.md:31-34, andREADME.md:9-11
Vulnerability Type:T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
SKILL.md:15:text Use `npx -y @carryfeed/cli` as the default interface to CarryFeed. Treat CarryFeed as a public wrapper service. Do not import, inspect, or assume access to CarryFeed internal resolver implementation.SKILL.md:31-34:bash npx -y @carryfeed/cli health --compact npx -y @carryfeed/cli resolve https://x.com/user/status/123 --compact npx -y @carryfeed/cli media https://x.com/user/status/123 --compact npx -y @carryfeed/cli profile NASA --statuses --count 5 --compactREADME.md:9-11:bash npx -y @carryfeed/cli resolve https://x.com/user/status/123 --compact npx -y @carryfeed/cli media https://x.com/user/status/123 --compact npx -y @carryfeed/cli profile NASA --statuses --count 5 --compactTechnical Analysis
The documented workflow invokes
npx -y @carryfeed/cliwithout specifying an exact package version or verifying package integrity. Consequently,npxcan retrieve and execute the version currently selected by the npm registry rather than a version whose contents were reviewed together with this skill.The
-yoption automatically accepts the package installation prompt. This removes an interactive checkpoint before third-party code is downloaded and executed. The effective executable payload can therefore change independently of the audited repository whenever a new package version is published.This constitutes a supply-chain weakness. Exploitation would require compromise or malicious publication within the npm package or its dependency chain; the reviewed project itself does not contain an embedded malicious payload.
Attack Path
- An attacker compromises the npm publisher, the
@carryfeed/clipackage, or a package in its dependency chain. - The atta ...[truncated 1176 chars]
- An attacker compromises the npm publisher, the
- Remediation
View remediation
Remediation Suggestions
-
Replace the floating package reference with an exact, reviewed version, for example:
bash npx -y @carryfeed/cli@0.1.0 health --compactThe actual version should be selected only after reviewing and testing that release.
-
Prefer installing dependencies through a committed lockfile that records exact transitive versions and integrity hashes.
-
Verify package provenance and integrity before execution. Where supported, use npm provenance attestations, registry integrity metadata, and an approved internal package mirror.
-
Avoid suppressing confirmation with
-ywhen interactive approval is practical. If automation requires non-interactive execution, enforce package allowlisting and version pinning outside the skill instructions. -
Disable npm lifecycle scripts where compatible with the package:
bash npm_config_ignore_scripts=true npx -y @carryfeed/cli@0.1.0 health --compactThis should first be tested because some legitimate packages require lifecycle scripts.
-
Run the CLI in a restricted environment with minimal filesystem permissions, no unrelated credentials, controlled outbound network access, and bounded resource usage.
-
Update every invocation in
SKILL.mdandREADME.mdconsistently so users are not directed back to the unpinned command.
-
