T08 · Insecure Dependencies
- Location
SKILL.md:159- Finding
Unpinned Packages Executed Through npx
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This contribution skill is coherent, but it needs review because it asks users to run unpinned external tools and generated templates load third-party scripts while publishing content.
Install only if you are comfortable reviewing and running the contribution commands yourself. Prefer running the workflow in a clean checkout or container, pin or use locked project dependencies for hyperframes, oxfmt, and tsx, and be aware that generated HTML templates fetch scripts from public CDNs unless you vendor or add integrity controls.
SKILL.md:159Unpinned Packages Executed Through npx
templates.md:13Externally Hosted JavaScript Executes Without Integrity Verification
The skill instructs use of npx hyperframes without pinning an exact package version. npx may resolve and execute the latest published package or a locally shadowed package, which creates a supply-chain risk if an upstream release is compromised or behavior changes unexpectedly. In a skill that guides contributors through publishing and PR workflows, this can directly lead to execution of unreviewed code on the user's machine.
The instruction uses npx oxfmt without an exact version, allowing execution of whatever package version is currently resolved from the registry. This exposes contributors to supply-chain compromise or unexpected formatter behavior, especially because the command is intended to be run on developer workstations during contribution flow.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 2. Format HTML
npx oxfmt registry/{kind}/{name}/*.html
# 3. Update registry/registry.json — add entry to the "items" array:
# { "name": "{name}", "type": "hyperframes:block" } (or "hyperframes:component")
# 4. Generate catalog docs page
The skill calls npx tsx scripts/generate-catalog-pages.ts without pinning tsx to a specific version. Because tsx executes JavaScript/TypeScript code, an unpinned resolution increases the risk of arbitrary code execution through a malicious or compromised package version or dependency tree.
This is another unpinned npx hyperframes invocation, here used for publishing. Publishing-related commands are especially sensitive because they may handle credentials, upload content, or affect remote state, so executing an unpinned package heightens the supply-chain risk.
The quality gate references npx oxfmt --check without version pinning. Even though this is a check step, it still executes downloaded code and therefore carries the same supply-chain and reproducibility risks as other unpinned npx commands.
The quality gate again instructs npx hyperframes publish without pinning a version. Because this command likely performs networked publishing and may use credentials or project metadata, unpinned execution materially increases the impact of a compromised upstream package.
The caption template instructs users to load third-party assets from public CDNs (Google Fonts and jsDelivr) at runtime without any disclosure or integrity controls. This creates a supply-chain and privacy risk because generated artifacts will make external requests and will trust whatever script/font content is served at execution time.
The VFX template loads GSAP and Three.js directly from a CDN, again without warning users that the produced composition depends on third-party network resources. In a contribution skill that helps publish upstream registry items, this risk propagates into reusable public catalog content and increases exposure to supply-chain tampering or unexpected outbound requests.