T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:68- Finding
Mutable Third-Party CLI Is Downloaded and Executed Through npx
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent video-production helper, but it asks agents to run mutable package commands, download browser components, disable sandboxing for renders, and use a sudo troubleshooting command without enough containment guidance.
Install only if you are comfortable running a video-rendering toolchain with shell access. Prefer pinning HyperFrames and Python package versions, running renders in a disposable container or VM, avoiding dangerouslyDisableSandbox unless isolated, and not using the sudo chown workaround without diagnosing the exact permission problem.
SKILL.md:68Mutable Third-Party CLI Is Downloaded and Executed Through npx
SKILL.md:833Unpinned Python Packages Are Installed Without Integrity Verification
SKILL.md:118Skill Mandates Disabling the Browser Execution Sandbox
SKILL.md:119Troubleshooting Guidance Performs Privileged Recursive Ownership Changes
The declared description centers on creating MP4 videos from HTML with HyperFrames, including visual editing/animation and muxing as part of a video pipeline. The actual code chunk does not render HTML, generate video, create MP4 files, or perform visual composition. Instead, it synthesizes deterministic ambient background music and saves it as a WAV file. While audio can be related to a video workflow, this code's primary purpose is materially different and represents an undeclared capability focused on standalone audio generation rather than short-video creation.
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<body>
<div data-composition-id="main" data-start="0" data-width="1920" data-height="1080">
<!-- Video clip: track 0, starts at 0s, plays for 10s -->
<video id="bg-video" data-start="0" data-duration="10" data-track-index="0"
src="background.mp4" muted playsinline></video>
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
data-width="1920" data-height="1080" data-fps="30"
data-duration="VIDEO_DURATION">
<!-- Track 0: 原始视频(或去背景后的视频 + 新背景) -->
<video id="main-video"
data-start="0" data-duration="VIDEO_DURATION" data-track-index="0"
src="input.mp4"
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
data-width="1920" data-height="1080" data-fps="30"
data-duration="VIDEO_DURATION">
<!-- Track 0: 原始视频(或去背景后的视频 + 新背景) -->
<video id="main-video"
data-start="0" data-duration="VIDEO_DURATION" data-track-index="0"
src="input.mp4"
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- Track 0: 新背景 -->
<div id="new-bg" data-start="0" data-duration="VIDEO_DURATION" data-track-index="0"
style="position:absolute;inset:0;background:linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);">
<!-- 可放动态网格、粒子等背景动画 -->
</div>
<!-- Track 1: 去背景后的人物 -->
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
For complex videos, split into separate HTML files:
<!-- In index.html -->
<div id="scene-1" data-composition-id="intro"
data-composition-src="compositions/intro.html"
data-start="0" data-duration="5" data-track-index="1"></div>
The README instructs users to run npx hyperframes browser ensure without pinning an exact package version, which causes execution of whatever package version is current at install time. If the upstream package, dependency chain, or account is compromised, users may execute attacker-controlled code on their machine during setup.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The invocation example is extremely broad natural language and maps to a high-capability workflow that can initialize projects, generate files, and render media. Without explicit activation constraints or confirmation gates, users may trigger substantial local actions unintentionally or the agent may over-assume permission to perform resource-intensive operations.
The README advertises fully automatic initialization, rendering, audio handling, and delivery, but does not warn users that these actions may create/modify local files, download dependencies, consume CPU/GPU/storage, or process media inputs. In an agentic environment, missing disclosure increases the chance of unsafe or unexpected execution on user systems.
The skill exposes clear shell and network-capable workflows (npx, ffmpeg, browser downloads) but does not declare any explicit tool scope or allowed-tools boundary. In an agent environment, this increases the blast radius because the skill can induce package downloads, command execution, and external fetches without a least-privilege contract.
Using npx hyperframes without a pinned version allows the resolved package to change over time or be influenced by registry/package compromise. In a skill that repeatedly instructs shell execution, this creates a supply-chain execution path where different code can run than what the author reviewed.
This unpinned npx hyperframes invocation enables execution of whatever version is current at runtime, rather than a reviewed artifact. Because the skill is operational documentation for agents, that translates directly into a mutable remote-code execution surface.
An unpinned package execution command means a future or malicious package release could alter behavior or introduce harmful install scripts. The context is especially risky because the skill normalizes repeated command execution by an automated agent.
This command relies on mutable package resolution from the registry, which is a classic supply-chain risk. In a skill that may run unattended, the lack of version pinning removes reproducibility and weakens trust boundaries.
Unpinned npx execution at setup time can fetch and run unexpected code, including postinstall behavior, if the package or dependency tree changes. This is a meaningful supply-chain issue, not just a documentation quality problem.
Because the skill instructs agents to run npx hyperframes directly, an unpinned reference can silently drift to unreviewed code. The impact is elevated by the skill's frequent shell usage and the presence of browser and media tooling.
This instance has the same supply-chain execution risk as the other floating npx references: the actual code executed depends on the registry state at runtime. In automated environments, that can become an easy path to compromise.
An unpinned npx call in prerequisite validation still causes code resolution from the network and can execute unreviewed package code. Since the command is framed as mandatory, the skill encourages unsafe default behavior at scale.
This package execution reference is mutable and therefore vulnerable to dependency or package takeover scenarios. The risk is heightened because it is part of a first-time setup flow that agents are likely to execute automatically.
The reference to npx cache appears to stem from prose about the npx cache rather than a real executable command. As flagged, this is likely a parser artifact and not an exploitable package-execution path by itself.
The document directly recommends a sudo command to modify npm cache ownership, introducing privileged execution into a routine troubleshooting path. In agent or semi-automated environments, normalizing root-level fixes can lead to unnecessary privilege use and broader damage if combined with other mistakes or malicious package behavior.
| `doctor` shows ✗ FFmpeg | FFmpeg not installed | `brew install ffmpeg` |
| `doctor` shows ✗ Chrome | First run, no cached browser | `npx hyperframes browser ensure` |
| Render hangs indefinitely | Chrome sandbox conflict in WorkBuddy | Use `dangerouslyDisableSandbox: true` on Bash tool |
| `EACCES` permission error | npx cache permission issue | `sudo chown -R $(whoami) ~/.npm` |
| Render produces 0-byte MP4 | FFmpeg encoder issue | Check `ffmpeg -encoders` has `libx264` and `aac` |
| `npx hyperframes` not found | Node/npx not in PATH | 确保 Node.js 22+ 在 PATH 中;WorkBuddy 环境下使用托管 Node |
No suspicious patterns detected.