T08 · Insecure Dependencies
Error
- Location
- SKILL.md:6
- Finding
- Unpinned Remote Package Execution and Automatic Skill Updates<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:6`, `SKILL.md:30`, `SKILL.md:126`, `SKILL.md:182-200` **Vulnerability Type**: Unpinned third-party package execution and automatic remote updates **Risk Level**: High ### Vulnerable Code ```text > **First, keep this skill fresh — confirm with the user before running:** `npx hyperframes skills update faceless-explainer`. A fast no-op when everything is current; otherwise it refreshes this skill plus the core domain skills it depends on before you rely on them. ``` ```text `npx hyperframes init "videos/<project>" --non-interactive --example=blank --skill=faceless-explainer` — `init` checks the installed skills against the latest on GitHub and updates the global set if any are out of date. ``` ```text run `npx hyperframes catalog --query "<the look, in plain English>" --json` ``` ```text npx hyperframes lint npx hyperframes check npx hyperframes snapshot --at <frame-midpoints> npx hyperframes preview --background npx hyperframes render --skill=faceless-explainer --quality high --output renders/video.mp4 ``` ### Technical Analysis The workflow repeatedly invokes `npx hyperframes` without an exact package version, lockfile, or verified artifact hash. Depending on the local npm state, `npx` may download and execute the current package release from the configured npm registry. The initialization command also explicitly checks GitHub for newer Skill content and may update the global Skill set. Consequently, the code and instructions that execute can differ from the version reviewed in this audit. User confirmation before the explicit update reduces surprise but does not authenticate the downloaded artifact or protect subsequent unpinned `npx` invocations. It also does not constrain what a compromised package lifecycle or CLI entry point can execute. ### Attack Path 1. An attacker compromises the `hyperframes` npm package, its publisher account, registry resolution, GitHub update source, or a futu ...[truncated 1119 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `hyperframes` to an audited exact version, for example: ```text npx --no-install hyperframes ``` after installing an exact version through a lockfile, or: ```text npx hyperframes@<audited-exact-version> ``` 2. Commit and enforce a package lockfile containing registry integrity hashes. 3. Disable automatic global Skill updates during `init`. 4. Separate updates into an explicit administrative workflow that: - displays the source and exact target version; - verifies a signature or cryptographic digest; - downloads without executing; - presents the diff for review; - requires separate approval before installation. 5. Run package commands in a sandbox with access limited to the active project and required media directories. 6. Restrict network destinations to approved npm, GitHub, HeyGen, and catalog endpoints. 7. Avoid inheriting unnecessary credentials or environment variables when executing third-party CLIs. ]]>
