T08 · Insecure Dependencies
- Location
SKILL.md:9- Finding
Unpinned External Dependencies Create a Mutable Supply-Chain Execution Path
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 9-15 and line 47
Vulnerability Type: Unpinned npm package and externally delegated setup skill
Risk Level: MediumVulnerable Code
yaml "requires": { "bins": ["mcporter"], "skills": ["xpoz-setup"], "network": ["mcp.xpoz.ai"], "credentials": "Xpoz account (free tier) — auth via xpoz-setup skill (OAuth 2.1)" }, "install": [{"id": "node", "kind": "node", "package": "mcporter", "bins": ["mcporter"], "label": "Install mcporter (npm)"}],markdown Run `xpoz-setup` skill. Verify: `mcporter call xpoz.checkAccessKeyStatus`Technical Analysis
The skill declares installation of the
mcporternpm package without an exact version or integrity hash. Consequently, the installed code can change after this skill has been reviewed. The skill also delegates authentication to the externalxpoz-setupskill without identifying a pinned version, immutable source, or reviewed implementation.Package installation and OAuth setup are security-sensitive operations. An npm package can execute installation lifecycle scripts, while an authentication helper may access tokens, browser authorization sessions, configuration files, or environment variables. If either mutable dependency is compromised, substituted, or resolved from an unsafe source, attacker-controlled code could execute with the permissions of the process installing or invoking the skill.
The audited file does not establish that either current dependency is malicious. The vulnerability is the absence of controls ensuring that the reviewed dependency is the same dependency executed later.
Attack Path
- An attacker compromises the npm package, its maintainer account, the package distribution channel, or the externally resolved
xpoz-setupskill. - A malicious release or substituted implementation is published under the dependency identifier expected by this skill.
- Th ...[truncated 1006 chars]
- An attacker compromises the npm package, its maintainer account, the package distribution channel, or the externally resolved
- Remediation
View remediation
Remediation Suggestions
- Pin
mcporterto an exact reviewed version rather than resolving the latest compatible package. - Record and verify the package integrity hash through a committed lockfile or equivalent integrity mechanism.
- Restrict package resolution to a trusted registry and use lockfile-enforced, reproducible installation.
- Disable npm lifecycle scripts where they are unnecessary; otherwise, review all lifecycle scripts before installation.
- Pin
xpoz-setupto an immutable version or content digest and document its trusted source. - Audit the setup skill for credential handling, OAuth scopes, filesystem access, subprocess execution, and outbound connections.
- Request only the minimum OAuth scopes required for lead discovery and store tokens in an operating-system credential store rather than plaintext files.
- Run dependency installation and authentication in a sandbox with restricted filesystem access, least-privilege credentials, and an outbound network allowlist.
- Add automated dependency provenance, signature, vulnerability, and integrity verification to the release process.
- Pin
