Back to skill

Security audit

Content Catcher

Security checks for vulnerabilities and agentic risk

Overview

This skill is a real content and video capture tool, but it has confirmed command-injection paths and under-disclosed media/key-handling behavior that make it unsafe to install without review.

Install only if you are prepared to audit or patch it first. At minimum, replace shell-based execSync calls with argument-array APIs, sandbox runs, avoid untrusted webpages and media URLs, review the legality of media downloads, and disable or remove key capture, Cookie header rewriting, and page-to-background pass-through unless you explicitly need them.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (4)

T09 · Insecure Skill Coding Practices

Error
Location
markdown-clip.js:74
Finding

Shell Command Injection Through a User-Controlled URL in Smart Extraction Mode

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
content-extractor.js:408
Finding

Shell Command Injection Through Extracted Webpage Content During Translation

Content
View full analysis
`, because `targetLang` is also inserted into the command without an explicit allowlist. ### Impact Assessment Exploitation prov ...[truncated 375 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
markdown-clip.js:23
Finding

Shell Command Injection Through Page-Title-Derived Paths in Article Analysis

Content
View full analysis
:"/\\|?*\x00-\x1f]/g, '') .replace(/\n+/g, ' ') .replace(/\s+/g, '-') .substring(0, 80) .trim('-'); } ``` ### Technical Analysis The webpage title is incorporated into the Markdown filename and then passed to a string-form `execSync()` command when `--analyze` is enabled. Although the filename sanitizer removes several filesystem characters, it is not a shell-safety mechanism. In particular, it does not remove characters used for POSIX command substitution, including `$`, parentheses, and backticks. The generated path is enclosed in double quotes, but POSIX shells still evaluate command substitution within double quotes. Consequently, webpage metadata can cross the data/code boundary and become executable shell syntax. ### Attack Path 1. An attacker controls the title metadata of a webpage. 2. The title contains shell-interpreted syntax that survives `sanitizeFilenameRelaxed()`. 3. The victim clips the webpage with the `--analyze` option. 4. The title is incorporated into the saved Markdown filename. 5. `analyzeMarkdown()` interpolates that path into an `execSync()` command. 6. The shell evaluates the surviving syntax. 7. The attacker's command ...[truncated 570 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
content-extractor.js:365
Finding

Shell Command Injection Through Page-Title-Derived Paths During PDF Export

Content
View full analysis
:"/\\|?*]/g, '').substring(0, 50); const filename = `${getTimestamp()}-${safeTitle}.md`; const outputPath = path.join(outputDir, filename); ``` PDF export derives another path from the Markdown path: ```javascript if (pdf) { const pdfPath = outputPath.replace('.md', '.pdf'); if (convertToPdf(outputPath, pdfPath)) { result.pdfPath = pdfPath; } } ``` ### Technical Analysis The PDF converter interpolates `inputPath` and `outputPath` into a string passed to `execSync()`. Both paths can include the remote webpage title. The title sanitizer removes common invalid filename characters but leaves shell-significant characters such as `$`, parentheses, and backticks. On POSIX systems, these characters may trigger command substitution even when the path is enclosed in double quotes. The Python helper itself invokes WeasyPrint safely with an argument array, but the preceding Node-to-Python invocation is unsafe and exposes a shell before the helper begins. ### Attack Path 1. An attacker creates a webpage with malicious shell syntax in its title. 2. The victim invokes `content-extractor.js` with `--pdf`. 3. The page title is used to create the Markdown filename. 4. The PDF output path is derived from that filename. 5. `convertToPdf()` interpolates both paths into a shell command. 6. `execSync()` causes the shell to evaluate the title-derived syntax. 7. The injected command runs with the Skill process's local privileges. ### Impact Assessment Successful exploitation permits arbitrary local comman ...[truncated 335 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (56)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

AES/HLS key retrieval, TS segment downloading/merging, live recording, transcoding handoff, and external downloader invocation substantially increase the skill's ability to acquire and process protected media. In this context, these undeclared capabilities are dangerous because they facilitate bulk media extraction and potentially circumvention-oriented workflows not obvious from a generic content-capture description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

AES/HLS key retrieval, TS segment downloading/merging, live recording, transcoding handoff, and external downloader invocation substantially increase the skill's ability to acquire and process protected media. In this context, these undeclared capabilities are dangerous because they facilitate bulk media extraction and potentially circumvention-oriented workflows not obvious from a generic content-capture description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

AES/HLS key retrieval, TS segment downloading/merging, live recording, transcoding handoff, and external downloader invocation substantially increase the skill's ability to acquire and process protected media. In this context, these undeclared capabilities are dangerous because they facilitate bulk media extraction and potentially circumvention-oriented workflows not obvious from a generic content-capture description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

AES/HLS key retrieval, TS segment downloading/merging, live recording, transcoding handoff, and external downloader invocation substantially increase the skill's ability to acquire and process protected media. In this context, these undeclared capabilities are dangerous because they facilitate bulk media extraction and potentially circumvention-oriented workflows not obvious from a generic content-capture description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

AES/HLS key retrieval, TS segment downloading/merging, live recording, transcoding handoff, and external downloader invocation substantially increase the skill's ability to acquire and process protected media. In this context, these undeclared capabilities are dangerous because they facilitate bulk media extraction and potentially circumvention-oriented workflows not obvious from a generic content-capture description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

AES/HLS key retrieval, TS segment downloading/merging, live recording, transcoding handoff, and external downloader invocation substantially increase the skill's ability to acquire and process protected media. In this context, these undeclared capabilities are dangerous because they facilitate bulk media extraction and potentially circumvention-oriented workflows not obvious from a generic content-capture description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

AES/HLS key retrieval, TS segment downloading/merging, live recording, transcoding handoff, and external downloader invocation substantially increase the skill's ability to acquire and process protected media. In this context, these undeclared capabilities are dangerous because they facilitate bulk media extraction and potentially circumvention-oriented workflows not obvious from a generic content-capture description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

AES/HLS key retrieval, TS segment downloading/merging, live recording, transcoding handoff, and external downloader invocation substantially increase the skill's ability to acquire and process protected media. In this context, these undeclared capabilities are dangerous because they facilitate bulk media extraction and potentially circumvention-oriented workflows not obvious from a generic content-capture description.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script listens for page messages carrying media/decryption keys, converts them, stores them, and forwards them to extension components and local handling. Collecting and exporting such keys is highly sensitive because it can facilitate unauthorized decryption, redistribution, or circumvention of protected media workflows.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The catCatchToBackground path relays arbitrary page-supplied message objects directly to the extension background after only deleting the action field. This creates a confused-deputy bridge from untrusted web pages into privileged extension logic, potentially enabling unauthorized privileged actions depending on background handlers.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

setHeaders provides privileged request-header rewriting for arbitrary URL filters and can inject Cookie headers directly into requests. This enables request forgery/impersonation against target sites and can bypass normal browser-originated header controls, which is especially dangerous in an extension that captures web resources.

Content

No source excerpt is available for this finding.

Unvalidated Output Injection

High
Category
Output Handling
Confidence
98% confidence
Finding

Untrusted data from another tab message, result.mediaInfo, is inserted into the DOM using .html(), enabling DOM-based XSS in the extension page if that content contains markup or script gadgets. Because extension pages often have elevated privileges, successful injection can have more severe consequences than ordinary web-page XSS.

Content

Scanner excerpt · cat-catch-core/m3u8.js (reported line 274)May include surrounding context.

js
chrome.tabs.sendMessage(getId, "getM3u8", function (result) {
                $("#m3u8Text").val(result.m3u8Content);
                $("#parse").click();
                $("#info").html(result.mediaInfo);
            });
        }
    } else {

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The code explicitly fetches HLS key URIs, stores the raw 16-byte decryption keys, and renders them in hex/base64 in the UI. It also enumerates possible keys from page frames, which materially expands the tool from content downloading into DRM/key extraction and exposes sensitive cryptographic material to the user.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

This logic collects candidate keys, decrypts a sample fragment with each, and checks magic bytes to discover a working 'real' key. That is an active key-recovery workflow designed to bypass protected media access controls, not merely to process user-provided media.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill advertises and invokes shell, network, file read/write, and likely environment-dependent tooling, but the manifest declares no explicit tool scope or permission boundaries. In an agent setting, this increases the chance of over-privileged execution, unexpected external access, and unsafe file or network operations without user-visible constraints.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad terms like webpage capture, content extraction, and video download, with no activation constraints or user-confirmation requirements. In an agent ecosystem, this can cause the skill to auto-activate in situations where the user did not intend network fetches, downloads, monitoring, or file generation, increasing the chance of privacy-impacting or overbroad actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation promotes video downloading, content extraction, PDF export, and page monitoring but does not warn users about privacy implications, bandwidth use, local storage, or retained monitored content. Because the skill interacts with external pages and can generate persistent outputs or ongoing monitoring, missing warnings reduce informed consent and increase the risk of unsafe use.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The file-level docstring states this module performs automatic article analysis, including summaries, insights, tags, and reader targeting, and the code implements only local markdown text analysis. This does not match the skill manifest's advertised scope of web grabbing, Markdown/PDF/multimodal extraction, translation, and video download, indicating a semantic mismatch between claimed skill purpose and actual implemented behavior in this file.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This Python skill includes its primary natural-language documentation and user-facing description exclusively in Chinese, which imposes a language constraint on users without any opt-in or alternative. The policy explicitly calls for flagging language or locale requirements when the skill forces a specific language without user choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The argparse description and help text shown to end users are hardcoded in Chinese, which effectively forces a specific language for interacting with the tool. There is no visible opt-in, locale switch, or documented justification for restricting the interface language.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script hard-codes locale: 'zh-CN' and timezoneId: 'Asia/Shanghai' for every browsing session. This is a natural-language/locale policy concern because it imposes a specific locale on all users and target sites without offering a choice or documenting a justified regional constraint.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The content script exposes broad media-control, download, extraction, and processing capabilities through message handlers in a page context, exceeding a narrowly described content-extraction role. While some features may be intended for a media downloader, the breadth of control increases abuse potential if another extension component, compromised page bridge, or weak sender validation can invoke them.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The screenshot handler captures the current video frame, converts it to a JPEG, and immediately triggers a file download via a synthetic link click. In this file there is no confirmation prompt, user-visible notice, or explanatory comment warning that invoking this action will write a file to the user's system.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The ffmpeg workflow can fetch arbitrary remote data or process provided blobs and then post the results into the page/extension workflow without visible disclosure or tight validation. In combination with the message bridge patterns in this file, this expands the data-movement surface and can be abused for unexpected network access or content processing.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The getPage handler can return the full page HTML or arbitrary selected DOM content to extension components with no user-facing notice. On pages containing tokens, personal data, or proprietary content, this enables silent extraction beyond what users may expect from a media/content tool.

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
content-extractor.js:365

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
markdown-clip.js:23