T08 · Insecure Dependencies
Warning
- Location
- scripts/preflight.mjs:12
- Finding
- Unpinned HyperFrames Package and Registry Component Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:6, 45, 154, 178, 216-234`; `scripts/preflight.mjs:12-16` **Vulnerability Type**: Supply-chain exposure through unpinned package and component execution **Risk Level**: Medium ### Vulnerable Code `scripts/preflight.mjs:12-16`: ```js export function runCliPreflight({ command = "check", spawn = spawnSync } = {}) { const result = spawn("npx", ["hyperframes", "--help"], { encoding: "utf8", shell: process.platform === "win32", }); ``` Related commands in `SKILL.md`: ```bash npx hyperframes skills update pr-to-video npx hyperframes init "$PROJECT_DIR" --non-interactive --example=blank --skill=pr-to-video npx hyperframes catalog --query "<the look, in plain English>" --json for b in <each registry block named in the storyboard>; do npx hyperframes add "$b"; done npx hyperframes lint npx hyperframes check npx hyperframes snapshot --at <frame-midpoints> npx hyperframes preview "$PROJECT_DIR" --background npx hyperframes render --skill=pr-to-video --quality high --output renders/video.mp4 ``` ### Technical Analysis The workflow repeatedly invokes `npx hyperframes` without specifying an audited package version or integrity digest. If a trusted local package is unavailable, `npx` can resolve and download a package from the configured npm registry before executing it. The workflow also installs registry blocks selected dynamically from storyboard content. No component version, cryptographic digest, or immutable manifest is required before those blocks are added to the project. The initial Skill update requires user confirmation, but that confirmation does not provide integrity protection and does not cover every later package or registry-component retrieval. Consequently, the effective executable content can change after this Skill has been reviewed. This access is broader than the minimum privilege needed to invoke a known renderer: a fixed, previously verified CLI and immutable component ...[truncated 1476 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the HyperFrames CLI to an explicitly audited version, such as an exact package version rather than an unconstrained package name. 2. Install the verified CLI during a controlled setup phase and use `npx --no-install hyperframes ...` or invoke the verified local binary directly. 3. Maintain a lockfile and require registry integrity metadata for all npm artifacts. 4. Pin each HyperFrames registry block to an immutable version or content digest. 5. Verify downloaded component hashes against a trusted manifest before installation or rendering. 6. Disable package lifecycle scripts where feasible and reject packages that require unexpected installation hooks. 7. Require explicit user approval before retrieving any component that is not already present in the verified manifest. 8. Run package/component installation and rendering in a sandbox with: - A project-scoped writable filesystem. - No unnecessary access to the home directory. - No inherited cloud or repository credentials. - Restricted outbound network access. 9. Log the exact package versions, component versions, sources, and hashes used for every build. ]]>
