Back to skill

Security audit

ChatCut口播 · 马甲实战版

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed ChatCut workflow helper, but it also ships repository instructions that can require pushing code to a remote GitHub branch without a fresh user approval.

Review the repository policy before installing or developing with this package: do not let an agent push to origin/main unless you explicitly authorize that specific push. For normal ChatCut use, keep export, generated media, music, and motion graphics disabled unless you intentionally approve them, and treat current real end-to-end editing claims as UNVERIFIED unless backed by fresh ChatCut evidence.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T01 · Skill Instruction Hijacking

Warning
Location
AGENTS.md:3
Finding

Repository Instructions Require External Publication Without Explicit User Approval

Content
View full analysis

Vulnerability Details

File Location: AGENTS.md, lines 3–9
Vulnerability Type: Agent instruction-driven unauthorized remote publication
Risk Level: Medium

Vulnerable Instructions:

markdown
For every completed development increment in this repository:

1. Run the relevant focused checks and the full release gate when practical.
2. Commit only the intended, verified changes.
3. Fast-forward the local `main` branch to the verified commit.
4. Push `main` to `origin`.
5. Read back the GitHub `main` commit and confirm it exactly matches local `HEAD`.

A development increment is not complete until the GitHub `main` readback succeeds.

Technical Analysis

The repository-level agent instructions require every completed development increment to be committed, merged into the local main branch, and pushed to origin. These operations are presented as mandatory completion criteria and are not conditioned on explicit user approval immediately before the remote write.

When an agent loads and follows AGENTS.md, a request that only authorizes local development can therefore be expanded into modification of a shared remote repository. The configured Git remote and ambient Git credentials cross a trust boundary from the local workspace into an external service. Successful tests, a clean commit, branch protection, and a post-push readback validate the change but do not establish the user's authorization to publish it.

The behavior is explicit rather than concealed, and the evidence does not establish malicious intent. It is therefore classified as suspicious high-risk instruction behavior rather than a covert backdoor or malicious exfiltration mechanism.

Attack Path

  1. A user asks the agent to make and verify a local development change.
  2. The agent loads the repository's AGENTS.md instructions.
  3. After completing the edit and tests, the instructions require the agent to create a commit.
  4. The agent fast-forwards the local main b ...[truncated 1039 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove automatic commit, branch advancement, and push operations from the mandatory completion policy.
  2. Default to leaving verified changes in the working tree or on a local feature branch.
  3. Require explicit, operation-specific user confirmation immediately before:
    • Creating a commit.
    • Updating main.
    • Pushing to any remote.
  4. Display the exact remote URL, branch, and commits to be pushed before requesting confirmation.
  5. Do not treat prior authorization to edit files as authorization to publish them.
  6. Prefer a protected feature-branch workflow and pull request over direct updates to main.
  7. Preserve server-side branch protection, required reviews, and CI gates as defense in depth, but do not use them as substitutes for user consent.
  8. Revise the policy to state that inability or lack of authorization to push is a normal local-completion outcome, not an incomplete task.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (163)

Intent-Code Divergence

Critical
Category
Not specified by scanner
Confidence
100% confidence
Finding

This flow transitions the run to verified and review_ready, then builds passing verification records using simulated structure, frame, audio, and human-listening evidence. In a safety wrapper that explicitly says end-to-end success may only be claimed with real anonymous samples and complete tool evidence, this is a severe integrity failure: it can falsely represent incomplete or non-real validation as successful production verification.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The handbook explicitly authorizes use of generated image/video assets and generated MG/B-roll workflows, which conflicts with the skill metadata stating the skill should not add generated material. In a video-editing skill, this mismatch is dangerous because downstream agents may treat the handbook as operative policy and silently introduce synthetic assets, violating user expectations, provenance constraints, or safety guarantees around evidence-based editing.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The document describes generating external motion graphics and importing rendered MP4 assets, despite the manifest saying the skill should not add motion graphics or generated assets by default. This is dangerous because it creates a covert path to introduce synthesized content and external-tool outputs while presenting the skill as a constrained safety wrapper.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description presents an orchestration and safety layer for ChatCut video-editing workflows, including intent routing, risk controls, approval/state handling, and evidence-based claims. The supplied code does none of that. Instead, it implements a browser-side presentation component for rendering themed portrait talk cards with customizable copy and speaker media. There is no sign of ChatCut integration, workflow routing, safety review logic, approval binding, recovery, evidence handling, timeline delivery, or editing-policy enforcement. This is a materially different primary purpose, so the description does not accurately represent the code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about a conversational safety/default layer for ChatCut video-editing workflows, including intent routing, risk controls, approval binding, recovery, and constrained editing behavior. The supplied code does none of that. Instead, it performs local file processing for design assets by converting SVG background files into PNGs at a fixed resolution. This is a materially different primary purpose and an unrelated capability set. There is no evidence of ChatCut integration, intent routing, approval handling, safety policy enforcement, or timeline delivery. Therefore the description does not accurately represent the behavior of this code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about a control/safety layer for ChatCut video-editing workflows, including routing user commands, applying editing defaults, managing approvals, risk levels, recovery, and evidence-based claims. The supplied code does none of that. It is purely a static theme-kit module containing portrait canvas settings, typography, shape tokens, and eight predefined themes with colors, gradients, layouts, and background asset paths. Its primary purpose is UI/visual styling configuration, which is materially different from the declared purpose. Therefore this is a clear description-behavior mismatch.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

RULE-AUD-001 explicitly instructs adding background music as part of the default flow, which directly conflicts with the manifest statement that this layer does not add music by default. In a security-sensitive orchestration context, contradictory defaults are dangerous because downstream agents may treat the rule file as authoritative and perform edits the user did not authorize.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

This distribution pack defines platform-specific output artifacts for Douyin and Xiaohongshu, including derived assets, even though the skill description claims it does not export or publish and delegates project operations to the official ChatCut skill. That mismatch can mislead downstream automation or reviewers into treating this skill as having a narrower capability boundary than it actually represents, enabling unauthorized distribution preparation or policy bypass through trusted metadata.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The content-related overrides disable evidence-first and truth/evidence checks while lowering safeguards around visual anti-patterns, which conflicts with the stated promise not to add supplemental visuals and to remain evidence-driven. This can enable unsupported B-roll or misleading visual edits to be introduced into generated video output without sufficient provenance or review.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

These overrides disable or weaken core approval, authorization, and privacy fail-closed controls despite the skill claiming a safety-default, approval-bound workflow. In practice, this can permit edits, previews, or exports to proceed without required human approval or privacy safeguards, increasing the chance of unauthorized processing or release of sensitive media.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module enables live routing for timeline-write, media-import, and preview-render when evidence is current and validated, despite the metadata describing this skill as a routing/safety-default layer that should delegate project operations and tool parameters to the official ChatCut skill. In this context, granting direct live access to modification-oriented capabilities violates least privilege and increases the chance that this skill can perform edits or imports beyond its claimed review-only role.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The simulatedEvidence helper generates provenance marked as 'simulation' yet packages it in the same evidence structure used for verification decisions. That enables synthetic artifacts to be mistaken for real tool output, undermining assurance claims and potentially allowing unsafe or unreviewed edits to appear validated.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The code directly assigns project and timeline identifiers into the manifest when no project exists, which is a form of project-state creation inside this skill. That contradicts the documented boundary that project operations must be delegated to the official ChatCut skill, creating a trust-boundary violation where this layer can silently fabricate or steer execution context.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The orchestrator executes both sample and full-batch timeline operations through FakeTimelineAdapter and RecoverableExecutor instead of only handing off parameters. In this skill context, that is especially dangerous because the skill description promises a safety/default layer only; violating that promise lets the layer perform edits users and downstream systems may not expect or authorize.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest says the skill should not export, but this file models 'exported' as a normal terminal stage and includes transition logic requiring export approval before entering it. That is a direct behavior-level expansion beyond the claimed safety/default orchestration role.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

authorizeExport records an 'export' approval bound to the current timeline, creating first-class support for export operations in the skill state machine. Even if the actual media export is performed elsewhere, this skill is still orchestrating and authorizing export behavior that the manifest says is out of scope.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/public-safety.test.mjs (reported line 71)May include surrounding context.

js
});

test("common token and private-key signatures fail without value disclosure", async (t) => {
  await t.test("access token", (subtest) => {
    const directory = temporaryRepository(subtest);
    const token = ["AK", "IA", "1234567890ABCDEF"].join("");
    writeFile(directory, "config.env", `PUBLIC=true\nVALUE=${token}\n`);

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/public-safety.test.mjs (reported line 78)May include surrounding context.

js
const result = runGate(directory);
    assert.equal(result.status, 1, result.output);
    assert.match(result.stderr, /path=config\.env rule=SECRET_TOKEN line=2/);
    assert.equal(result.output.includes(token), false, result.output);
  });

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/public-safety.test.mjs (reported line 106)May include surrounding context.

js
const result = runGate(directory);
    assert.equal(result.status, 1, result.output);
    assert.match(result.stderr, /path=config\.env rule=SECRET_TOKEN line=2/);
    assert.equal(result.output.includes(token), false, result.output);
  });

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/public-safety.test.mjs (reported line 169)May include surrounding context.

js
const result = runGate(directory);
    assert.equal(result.status, 1, result.output);
    assert.match(result.stderr, /path=config\.env rule=SECRET_TOKEN line=2/);
    assert.equal(result.output.includes(token), false, result.output);
  });

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The document explicitly frames the maintenance areas as Chinese-only content ('四个中文维护区') and contrasts them with English directories intended mainly for programs, tests, and tools. This imposes a language expectation on human maintainers without any opt-in, alternative language path, or documented justification for the locale constraint.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file permits export operations when the user requests them, but the skill metadata says this skill does not export. This policy inconsistency can cause unauthorized file creation or validation exports under the guise of normal workflow, weakening safety boundaries and making it easier for an agent to exceed its declared scope.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This section explicitly prescribes adding sound effects and background music, which conflicts with the skill metadata stating the default behavior must not add music. In a routing/default-safety layer, undocumented media additions can silently expand the skill’s authority and cause edits the user did not request, undermining safety guarantees and user consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
80% confidence
Finding

L79 states the acceptance-playback priority section is the authoritative source referenced by SKILL.md, and the entire file prescribes operator behavior in Chinese only. There is no indication that users may choose another language or that the locale restriction is required for a region-specific compliance purpose.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/doctor.mjs:123

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/asset-validation.test.mjs:10

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/capability-profile.test.mjs:118

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/caption-validator.test.mjs:164

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/distribution-pack.test.mjs:81

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/explainable-planner.test.mjs:130

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/extensions.test.mjs:10

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/feedback-governance.test.mjs:173

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/koubo-cli.test.mjs:16

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/media-release-audit.test.mjs:118

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/plan-bundle.test.mjs:211

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/preview-approval.test.mjs:174

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/profile-resolver.test.mjs:389

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/public-safety.test.mjs:25

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/repository-consistency.test.mjs:79

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/rule-registry.test.mjs:30

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/runtime-contracts.test.mjs:30

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/schema-validation.test.mjs:32

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/srt-bridge.test.mjs:194

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
tests/visual-decision-plan.test.mjs:31