Back to skill

Security audit

Remotion To Hyperframes

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent migration purpose, but its required validation path can run mutable npm packages and remote browser scripts on the user's machine.

Install only if you are comfortable letting an agent read and rewrite the target Remotion project and run local validation tools. Run the npm/render steps in a clean sandbox or container without unrelated credentials, prefer pinned dependencies and lockfiles, and review generated HTML for external script URLs before rendering or publishing.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T08 · Insecure Dependencies

Error
Location
assets/test-corpus/run.sh:128
Finding

Mutable npm Dependencies Are Installed and Executed Without a Lockfile

Content
View full analysis
/dev/null 2>&1) fi echo " ⏳ render Remotion baseline" if ! (cd "$fixture_dir/remotion-src" && \ npx --no-install remotion render "$composition_id" out/baseline.mp4 >/dev/null 2>&1); then ``` The Tier 3 manifest, representative of the mutable dependency declarations, contains: ```json { "name": "tier-3-data-driven-remotion", "version": "0.0.0", "private": true, "scripts": { "render": "remotion render Stargazed out/baseline.mp4" }, "dependencies": { "@remotion/cli": "^4.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", "remotion": "^4.0.0", "zod": "^3.22.0" } } ``` The documented quick path also invokes HyperFrames through `npx` without `--no-install` or an exact package version: ```bash # Render Remotion baseline (after npm install in the fixture) cd remotion-src && npx remotion render out/baseline.mp4 # Render HF translation cd ../hf-src && npx hyperframes render --output ../hf.mp4 ``` ### Technical Analysis The project does not include lockfiles for the fixture projects, while all dependencies use caret ranges. Running `npm install` can therefore resolve different direct and transitive package versions over time. Standard npm installation also permits dep ...[truncated 1916 chars]
Remediation
View remediation

T03 · Remote Payload Retrieval and Execution

Warning
Location
assets/test-corpus/tier-1-title-card/hf-src/index.html:6
Finding

HyperFrames Examples Retrieve and Execute Third-Party JavaScript Without Integrity Verification

Content
View full analysis
tier-1-title-card ``` The Lottie reference similarly recommends remote executable scripts without integrity verification, including an unversioned package URL: ```html ``` ```html ``` ### Technical Analysis A remote `
Remediation
View remediation
``` 3. Replace the unversioned `@lottiefiles/dotlottie-web` URL with an exact reviewed version. 4. Apply a restrictive Content Security Policy that permits scripts only from approved local paths or explicitly approved origins. 5. Disable outbound network access during deterministic rendering after all required assets have been staged locally. 6. Document and verify cryptographic hashes for vendored browser dependencies. 7. Ensure the rendering browser runs sandboxed, without unrelated credentials, local-file access, privileged extensions, or exposed remote-debugging interfaces. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (60)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Even if framed as self-grading, the skill instructs execution of smoke tests, diff generation, and lint checks that go beyond the narrow task users may believe they invoked. In context, this is dangerous because the skill already lacks explicit tool scoping, so hidden or under-declared operational breadth can lead to unnecessary shell execution and file writes.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

Even if framed as self-grading, the skill instructs execution of smoke tests, diff generation, and lint checks that go beyond the narrow task users may believe they invoked. In context, this is dangerous because the skill already lacks explicit tool scoping, so hidden or under-declared operational breadth can lead to unnecessary shell execution and file writes.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even if framed as self-grading, the skill instructs execution of smoke tests, diff generation, and lint checks that go beyond the narrow task users may believe they invoked. In context, this is dangerous because the skill already lacks explicit tool scoping, so hidden or under-declared operational breadth can lead to unnecessary shell execution and file writes.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even if framed as self-grading, the skill instructs execution of smoke tests, diff generation, and lint checks that go beyond the narrow task users may believe they invoked. In context, this is dangerous because the skill already lacks explicit tool scoping, so hidden or under-declared operational breadth can lead to unnecessary shell execution and file writes.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even if framed as self-grading, the skill instructs execution of smoke tests, diff generation, and lint checks that go beyond the narrow task users may believe they invoked. In context, this is dangerous because the skill already lacks explicit tool scoping, so hidden or under-declared operational breadth can lead to unnecessary shell execution and file writes.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Even if framed as self-grading, the skill instructs execution of smoke tests, diff generation, and lint checks that go beyond the narrow task users may believe they invoked. In context, this is dangerous because the skill already lacks explicit tool scoping, so hidden or under-declared operational breadth can lead to unnecessary shell execution and file writes.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even if framed as self-grading, the skill instructs execution of smoke tests, diff generation, and lint checks that go beyond the narrow task users may believe they invoked. In context, this is dangerous because the skill already lacks explicit tool scoping, so hidden or under-declared operational breadth can lead to unnecessary shell execution and file writes.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 37)May include surrounding context.

md
Run [`scripts/lint_source.py`](scripts/lint_source.py) over the Remotion source directory. The lint detects patterns that can't translate cleanly:

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 47)May include surrounding context.

md
Read [`references/api-map.md`](references/api-map.md) — the index of every Remotion API and its HF equivalent or per-topic reference. Identify which topic refer

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill instructs the agent to read files, write outputs, inspect environment-dependent project state, and execute shell commands, but it declares no explicit tool scope or permission boundary. That creates an overprivileged, ambiguous execution model where the agent may perform filesystem and command actions without a narrowly defined contract, increasing the chance of unsafe or unintended operations.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · SKILL.md (reported line 27)May include surrounding context.

md
**Do NOT use this skill when:**

- (a) The user is authoring a **new** HyperFrames composition, even if they have or are A/B-testing a similar Remotion video.
- (b) The user mentions Remotion in passing without asking for migration.
- (c) The user shares Remotion code as reference material rather than asking for a translation.
- (d) The user asks for "the same video as my Remotion one" without explicitly asking to migrate the source — treat that as a fresh HyperFrames build.

Rp1

Medium
Category
MCP Rug Pull
Confidence
81% confidence
Finding

Using npx remotion without a pinned version allows whatever package version resolves at runtime to be executed, which undermines reproducibility and can introduce supply-chain risk. If the environment fetches packages dynamically, a compromised or unexpected version could run arbitrary install or CLI code during skill execution.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
81% confidence
Finding

Using npx hyperframes without an exact version similarly permits execution of an unpinned toolchain component whose behavior may change or be malicious if the package source is compromised. In a skill that already performs rendering and file generation, that can expose the host to arbitrary code execution through the package manager path.

Content

No source excerpt is available for this finding.

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · assets/test-corpus/tier-1-title-card/README.md (reported line 16)May include surrounding context.

md
## Translation walk-through

| Remotion                                                      | HyperFrames                                                                                             |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `<AbsoluteFill style={{ backgroundColor: "#0a0a0a" }}>`       | `<body style="background: #0a0a0a">` + a positioned root div                                            |
| `useCurrentFrame()`                                           | dropped — HF seeks the timeline                                                                         |

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The README instructs users to run npx hyperframes render without pinning a specific package version. This can fetch and execute whatever version is current at invocation time, creating a supply-chain risk if a malicious or compromised release is published or if behavior changes unexpectedly. In a skill context, executable setup/render commands are more dangerous because users may copy-paste them directly.

Content

No source excerpt is available for this finding.

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · assets/test-corpus/tier-2-multi-scene/README.md (reported line 21)May include surrounding context.

md
## Translation walk-through

| Remotion                                                            | HyperFrames                                                                                              |
| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `<Sequence from={0} durationInFrames={60}>`                         | `<div data-start="0" data-duration="2" data-track-index="0">`                                            |
| `spring({frame, fps, config: {damping:12, stiffness:100, mass:1}})` | `gsap.to(target, { scale: 1, duration: 0.7, ease: "back.out(1.4)" })`                                    |

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The README instructs users to execute npx hyperframes render without pinning a specific package version. npx may resolve and execute the latest published package, so a compromised, typosquatted, or unexpectedly changed package could run arbitrary code on the user's machine during rendering. In this skill context, the command is presented as a normal workflow step, which increases the likelihood of direct execution by users.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The documentation instructs users to run npx hyperframes without pinning an exact package version. npx may fetch the latest published package at execution time, which creates a supply-chain risk: a compromised, typosquatted, or unexpectedly changed release could execute arbitrary code on the user's system. In a skill/README context, this is especially relevant because users may copy-paste the command directly.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The code sends user-provided text to an external API as part of a network request, which can expose potentially sensitive user content to a third party without any visible disclosure, consent flow, or data-minimization control. Even though the request is used to compute metadata, this still creates a privacy and data-handling risk because arbitrary input is transmitted off-box.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

This code performs an outbound request to an external domain using user-influenced data, creating a data exfiltration and privacy exposure path. In the context of this skill, the danger is somewhat increased because the skill is specifically supposed to reject async metadata translation blockers, so retaining or reproducing this pattern in translated output could propagate unsupported behavior and external data dependency into generated artifacts.

Content

Scanner excerpt · assets/test-corpus/tier-4-escape-hatch/cases/03-async-metadata.tsx (reported line 32)May include surrounding context.

tsx
export const calculateMetadata = async ({ props }: { props: Props }) => {
  const response = await fetch(
    `https://api.example.com/duration?text=${encodeURIComponent(props.text)}`,
  );
  const { durationInFrames } = await response.json();
  return {

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/api-map.md (reported line 16)May include surrounding context.

md
## Composition root

| Remotion                                             | HyperFrames                                                                                                          |
| ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `<Composition id durationInFrames fps width height>` | root `<div id="stage" data-composition-id data-start="0" data-duration="<dur/fps>" data-fps data-width data-height>` |
| `defaultProps={...}`                                 | `data-*` attributes on `#stage` (one per scalar prop). Nested objects/arrays — see [parameters.md](parameters.md)    |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/api-map.md (reported line 23)May include surrounding context.

md
| `schema={z.object(...)}`                             | not represented in HTML; the schema lives in the agent's translation step only                                       |
| `calculateMetadata` (sync)                           | resolve at translation time, write concrete values into `data-*`                                                     |
| `calculateMetadata` (async)                          | **refuse + interop** — see [escape-hatch.md](escape-hatch.md)                                                        |
| `registerRoot(RemotionRoot)`                         | drop                                                                                                                 |
| `<AbsoluteFill style>`                               | `<div style="position:absolute;inset:0;{style}">`                                                                    |

## Sequencing

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/api-map.md (reported line 30)May include surrounding context.

md
See [sequencing.md](sequencing.md) for nesting and stagger details.

| Remotion                                   | HyperFrames                                                                                               |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------- |
| `<Sequence from={F} durationInFrames={D}>` | `<div data-start="<F/fps>" data-duration="<D/fps>" data-track-index="N">`                                 |
| `<Series>` + `<Series.Sequence>`           | siblings with sequential `data-start` values                                                              |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/api-map.md (reported line 71)May include surrounding context.

md
See [sequencing.md](sequencing.md) for nesting and stagger details.

| Remotion                                   | HyperFrames                                                                                               |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------- |
| `<Sequence from={F} durationInFrames={D}>` | `<div data-start="<F/fps>" data-duration="<D/fps>" data-track-index="N">`                                 |
| `<Series>` + `<Series.Sequence>`           | siblings with sequential `data-start` values                                                              |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/api-map.md (reported line 82)May include surrounding context.

md
See [sequencing.md](sequencing.md) for nesting and stagger details.

| Remotion                                   | HyperFrames                                                                                               |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------- |
| `<Sequence from={F} durationInFrames={D}>` | `<div data-start="<F/fps>" data-duration="<D/fps>" data-track-index="N">`                                 |
| `<Series>` + `<Series.Sequence>`           | siblings with sequential `data-start` values                                                              |