T08 · Insecure Dependencies
Error
- Location
- SKILL.md:8
- Finding
- Unpinned npm Package Execution and Transitive Skill Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 8-34 **Vulnerability Type**: Unpinned third-party package execution and undocumented transitive installation **Risk Level**: High ### Vulnerable Code ```markdown Everything runs through `npx hyperframes`. Requires Node.js >= 22 and FFmpeg. ## Workflow 1. **Scaffold** — `npx hyperframes init my-video` 2. **Write** — author HTML composition (see the `hyperframes` skill) 3. **Lint** — `npx hyperframes lint` 4. **Visual inspect** — `npx hyperframes inspect` 5. **Preview** — `npx hyperframes preview` 6. **Render** — `npx hyperframes render` Lint and inspect before preview. `lint` catches missing `data-composition-id`, overlapping tracks, and unregistered timelines. `inspect` opens the rendered composition in headless Chrome, seeks through the timeline, and reports text spilling out of bubbles/containers or off the canvas. ## Scaffolding ```bash npx hyperframes init my-video # interactive wizard npx hyperframes init my-video --example warm-grain # pick an example npx hyperframes init my-video --video clip.mp4 # with video file npx hyperframes init my-video --audio track.mp3 # with audio file npx hyperframes init my-video --example blank --tailwind # with Tailwind v4 browser runtime npx hyperframes init my-video --non-interactive # skip prompts (CI/agents) ``` Templates: `blank`, `warm-grain`, `play-mode`, `swiss-grid`, `vignelli`, `decision-tree`, `kinetic-type`, `product-promo`, `nyt-graph`. `init` creates the right file structure, copies media, transcribes audio with Whisper, and installs AI coding skills. Use it instead of creating files by hand. ``` ### Technical Analysis The skill consistently instructs the Agent to execute `npx hyperframes` without specifying an audited package version. When a suitable local package is unavailable, `npx` can retrieve and execute the package distributed under that name. Because neither a version nor an i ...[truncated 2499 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin every invocation to a reviewed, immutable package version, for example: ```bash npx --yes hyperframes@<reviewed-version> <command> ``` 2. Commit an appropriate lockfile and use reproducible installation mechanisms such as `npm ci` where a project-level installation is practical. 3. Verify package provenance and integrity through npm provenance attestations, trusted-registry restrictions, integrity hashes, and dependency review. 4. Prefer installing the pinned CLI as a declared development dependency and invoking the local binary instead of resolving a mutable package on every command. 5. Explicitly list every AI coding skill installed by `init`, including its source, version, destination, required permissions, and integrity information. 6. Require clear user confirmation before installing or modifying Agent skills. Provide a documented flag that disables all secondary skill installation, especially for CI and non-interactive operation. 7. Execute scaffolding and rendering in a sandbox or container with least-privilege filesystem access, restricted network access, and no unnecessary secrets in environment variables. 8. Add automated dependency auditing and release-signature verification to the documented workflow. ]]>
