Back to skill

Security audit

TaoHtml

Security checks for vulnerabilities and agentic risk

Overview

TaoHtml is a disclosed local HTML presentation/report skill; its browser automation, file handling, and corporate-template profile storage fit that purpose, with supply-chain and persistence considerations users should understand.

Install and run this in an isolated virtual environment or container, preferably with reviewed pinned dependencies if your environment requires stronger reproducibility. Expect Chinese documentation/UI, local workspace file writes, Playwright/Chromium browser testing, and optional persistent corporate-template profiles under TAOHTML_HOME or ~/.taohtml; review or archive those profiles if they contain brand materials you no longer want reused.

Vulnerability Patterns
  • 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
  • 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 (1)

T08 · Insecure Dependencies

Warning
Location
requirements.txt:1
Finding

Mutable Python Dependencies and Unverified Chromium Binary Installation

Content
View full analysis
=10.0,<13 playwright>=1.50,<2 PyMuPDF>=1.24,<2 PyYAML>=6.0,<7 ``` From `SKILL.md:96-97`: ```bash python -m pip install -r requirements.txt python -m playwright install chromium ``` ### Technical Analysis The installation instructions cause Python packages and a Chromium executable to be obtained from external package infrastructure. The dependencies use broad version ranges rather than exact versions, and no cryptographic hashes are supplied. Consequently, two installations of the same Skill version may resolve to different package artifacts. Python package installation can execute package build or installation logic with the privileges of the user running `pip`. The Playwright command also downloads and installs a native Chromium executable. If an upstream package release, package index, transitive dependency, browser artifact, or distribution channel is compromised, malicious code could execute locally during installation or later when the imported package or browser is launched. The dependencies and Chromium browser are functionally relevant to document processing, static-reference rendering, and browser QA. The issue is therefore not that these components are unnecessary, but that their identities and integrity are insufficiently constrained. No evidence was found that the Skill intentionally retrieves a malicious package or browser. This finding concerns supply-chain exposure and non-reproducible installation. ### Attack Path 1. An attacker compromises an eligible future release of one of the declared packages, a transitive dependency, the configured package index, or the Playwright browser distribution channel. 2. A user follows the installation instructions in `SKIL ...[truncated 1176 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (114)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The repeated pattern across findings is a broad declared purpose paired with implementation centered on IR/JSON validation and normalization rather than end-user presentation generation. While this does not prove malicious intent, it is a real security issue because deceptive or stale manifests impair review, consent, and sandbox policy decisions.

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 91)May include surrounding context.

md
技能根目录中的 `requirements.txt` 会随原始 Skill、marketplace 和 Skill Hub 包一起分发,但“包内声明依赖”不等于平台已经自动安装。`scripts/preflight.py` 只检查当前 Python、工作区、模块和 Chromium 真实启动能力,不安装依赖,也不改变托

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
技能根目录中的 `requirements.txt` 会随原始 Skill、marketplace 和 Skill Hub 包一起分发,但“包内声明依赖”不等于平台已经自动安装。`scripts/preflight.py` 只检查当前 Python、工作区、模块和 Chromium 真实启动能力,不安装依赖,也不改变托

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · assets/html-deck-template/index.html (reported line 412)May include surrounding context.

html
</head>
<body>
  <main class="deck" id="deck" data-taohtml-step-contract="fragment-v1">
    <!-- TAOHTML_SLIDES_START -->
    <section class="slide active" data-title="Cover">
      <div class="signal-disc"></div>
      <div class="kicker">SECTION LABEL</div>

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/theme_runtime.py (reported line 481)May include surrounding context.

python
raise ValueError("Corporate theme CSS contains an empty rule.")
        for selector in selectors:
            rules.append(_CssRule(selector, declarations))
    return rules


def _css_compounds(selector: str) -> list[str]:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill advertises and instructs use of capabilities that imply shell, file read/write, environment access, network retrieval, and browser automation, but it does not declare an explicit tool/permission scope in the skill manifest. That creates an authorization gap: hosts or reviewers cannot reliably enforce least privilege, and users may install a skill without understanding the breadth of access it expects.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The summary and description force a specific language for core user-facing skill metadata, and the rest of the document continues in Chinese. Under the policy rule, language constraints should either be optional for the user or explicitly justified as region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This code hard-codes Chinese UI labels for the edit toggle, and similar Chinese-only strings appear throughout the file. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is clearly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The HTML root sets lang="zh-CN", and the visible UI text throughout the template is written in Simplified Chinese. This imposes a specific language/locale by default, and the file does not offer user opt-in, language selection, or a documented region-specific justification.

Content

No source excerpt is available for this finding.