Back to skill

Security audit

Send Md As

Security checks for vulnerabilities and agentic risk

Overview

This Markdown-to-image skill appears purpose-aligned, but it has review-worthy risks from unpinned dependency installation and unsafe temporary file handling.

Install and run this only in an environment where user-level pip/npm dependency installation is acceptable. Avoid rendering or sending secrets, credentials, or private notes unless you have verified the destination, and consider isolating the renderer until dependencies are pinned and the temporary-file issue is fixed.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
setup.sh:51
Finding

Unpinned Third-Party Dependencies Create a Supply-Chain Execution Risk

Content
View full analysis
/dev/null && info "Playwright pip installed" || fail "Playwright pip install failed" ``` ```bash python3 -m pip install --user pillow 2>/dev/null || fail "Pillow install failed (try: python3 -m pip install --user pillow)" ``` ```bash python3 -m pip install --user mistune 2>/dev/null || fail "Mistune install failed" ``` ```bash python3 -m pip install --user 'nh3>=0.2.18' 2>/dev/null || fail "nh3 install failed" ``` ```bash npm install --prefix "$VENDOR_DIR" @mermaid-js/mermaid-cli 2>/dev/null && info "Mermaid CLI installed" || warn "Mermaid CLI install failed, diagrams will show as code" ``` ```bash npm install --prefix "$VENDOR_DIR" katex 2>/dev/null && info "KaTeX CLI installed" || warn "KaTeX CLI install failed, LaTeX will show as raw text" ``` ### Technical Analysis The setup process downloads pip and npm packages without exact version constraints, package hashes, or an enforced lockfile. The constraint `nh3>=0.2.18` establishes only a minimum version and therefore does not provide reproducible dependency resolution. Consequently, the code installed by the same reviewed version of this skill can change over time. The trust boundary extends beyond the named packages to their transitive dependencies, package registries, mirrors, and package lifecycle behavior. In particular, npm dependencies may execute installation lifecycle scripts under the identity of the user running `setup.sh`. This is a supply-chain weakness rather than evidence that the currently named packages are malicious. Exploitation requires compromise or malicious publication of an accepted package, transitive dependency, registry response, or configured mirror. ### Attack Path 1 ...[truncated 1192 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
render.sh:408
Finding

Predictable Temporary HTML Filename Permits Symlink-Based File Overwrite

Content
View full analysis
.html ``` 4. Each malicious link points to a file writable by the victim that the attacker wants to overwrite. 5. The victim invokes `render.sh` during the predicted interval. 6. `open(tmp_html, 'w')` follows the symbolic link, truncates the t ...[truncated 919 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
97% confidence
Finding

The skill declares installation and runtime shell/file-write capabilities but does not define any explicit tool scope or permissions boundary. That increases the chance an agent can invoke shell-based rendering or setup steps more broadly than intended, especially because the skill includes executable scripts (setup.sh, render.sh) and writes output files for later sending.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documented workflow explicitly includes openclaw message send --media, which can transmit rendered user Markdown to an external messaging channel, but the skill does not clearly warn about the privacy and exfiltration implications. In practice, rendered content may contain sensitive text, screenshots of internal notes, credentials, or embedded data, so omission of a transmission warning can lead to unintended disclosure.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The generated output explicitly prioritizes "Microsoft YaHei" and "PingFang SC" in the body font stack, which embeds a specific language/locale preference into the skill's rendering behavior. There is no user opt-in or documentation explaining that the renderer is intentionally optimized for Chinese locales.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.