Back to skill

Security audit

marktodocx-skill

Security checks for vulnerabilities and agentic risk

Overview

This skill coherently converts user-provided Markdown into DOCX files, with expected local file reads and writes and no artifact-backed evidence of hidden persistence, snooping, exfiltration, or destructive behavior.

Install only if you want an explicit Markdown-to-DOCX converter that can read local Markdown/images and write DOCX files. Use explicit output paths, avoid running it on hostile Markdown until dependencies are updated, and keep Mermaid support disabled unless you specifically need Chromium-backed diagram rendering.

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
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (30)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
1. Prefer the shared agent wrapper in [skill.mjs](skill.mjs), specifically `convertWithAgentSkill()`. Do not create a second conversion path.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
1. Prefer the shared agent wrapper in [skill.mjs](skill.mjs), specifically `convertWithAgentSkill()`. Do not create a second conversion path.

Known Vulnerable Dependency: basic-ftp==5.3.0 — 1 advisory(ies): CVE-2026-44240 (basic-ftp allows a malicious FTP server to cause client-side denial of service v)

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: extract-zip==2.0.1 — 2 advisory(ies): CVE-2026-19693 (extract-zip allows arbitrary file writes through symlink archive entries); CVE-2026-56876 (extract-zip unvalidated symlink path traversal)

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: image-size==1.2.1 — 2 advisory(ies): CVE-2025-71329 (image-size: JXL and HEIF parsers allow denial of service through infinite loops); CVE-2025-71330 (image-size: ICNS parser allows denial of service through an infinite loop)

High
Category
Supply Chain
Confidence
83% confidence
Finding

image-size is used by html-to-docx and parses image metadata; if the skill converts untrusted Markdown/HTML containing attacker-controlled images, malformed JXL/HEIF/ICNS files could trigger infinite-loop denial of service during conversion. That is directly relevant to a document-conversion skill exposed to arbitrary user content.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ip-address==10.1.0 — 2 advisory(ies): CVE-2026-69192 (ip-address: Address4 decodes leading-zero octets as decimal while resolvers deco); CVE-2026-42338 (ip-address has XSS in Address6 HTML-emitting methods)

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: js-yaml==4.1.1 — 4 advisory(ies): CVE-2026-84375 (js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge sources); CVE-2026-59869 (js-yaml: YAML merge-key chains can force quadratic CPU consumption); GHSA-5p4m-2wfm-xmqj (JS-YAML: Quadratic CPU consumption in !!omap resolution (3.x and 4.x) — CVE-2026) +1 more

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: linkify-it==5.0.0 — 2 advisory(ies): CVE-2026-48801 (LinkifyIt#match scan loop has quadratic algorithmic complexity); CVE-2026-59887 (linkify-it: Quadratic-complexity DoS via the `mailto:` validator scan-loop on at)

High
Category
Supply Chain
Confidence
84% confidence
Finding

linkify-it is used by markdown-it in the core Markdown parsing path, and the cited quadratic-complexity bugs can let crafted Markdown consume excessive CPU during conversion. Because this skill explicitly processes user-supplied Markdown, parser-level algorithmic DoS is plausibly reachable and relevant.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · INTRO.md (reported line 77)May include surrounding context.

bash
# Claude Code
mkdir -p ~/.claude/skills
unzip -oq marktodocx-skill.zip -d ~/.claude/skills

# OpenClaw

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · INTRO.md (reported line 77)May include surrounding context.

Then copy it into the default Claude Code skills root:

bash
mkdir -p ~/.claude/skills
cp -R apps/agent-skill/dist/marktodocx-skill ~/.claude/skills/marktodocx-skill

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 46)May include surrounding context.

Then copy it into the default Claude Code skills root:

bash
mkdir -p ~/.claude/skills
cp -R apps/agent-skill/dist/marktodocx-skill ~/.claude/skills/marktodocx-skill

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 53)May include surrounding context.

Then copy it into the default Claude Code skills root:

bash
mkdir -p ~/.claude/skills
cp -R apps/agent-skill/dist/marktodocx-skill ~/.claude/skills/marktodocx-skill

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · dist/marktodocx-skill/README.md (reported line 46)May include surrounding context.

Then copy it into the default Claude Code skills root:

bash
mkdir -p ~/.claude/skills
cp -R apps/agent-skill/dist/marktodocx-skill ~/.claude/skills/marktodocx-skill

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · dist/marktodocx-skill/README.md (reported line 53)May include surrounding context.

Then copy it into the default Claude Code skills root:

bash
mkdir -p ~/.claude/skills
cp -R apps/agent-skill/dist/marktodocx-skill ~/.claude/skills/marktodocx-skill

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 46)May include surrounding context.

Then copy it into the default Claude Code skills root:

bash
mkdir -p ~/.claude/skills
cp -R apps/agent-skill/dist/marktodocx-skill ~/.claude/skills/marktodocx-skill

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · dist/marktodocx-skill/README.md (reported line 46)May include surrounding context.

Then copy it into the default Claude Code skills root:

bash
mkdir -p ~/.claude/skills
cp -R apps/agent-skill/dist/marktodocx-skill ~/.claude/skills/marktodocx-skill

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 185)May include surrounding context.

md
Common deployment roots:

- Claude Code default skills root: `~/.claude/skills/`
- OpenClaw workspace skills root: `~/.openclaw/workspace/skills/`

Use a symlink only when you deliberately want a development-time deployment that continues to point at the local export directory.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · dist/marktodocx-skill/README.md (reported line 185)May include surrounding context.

md
Common deployment roots:

- Claude Code default skills root: `~/.claude/skills/`
- OpenClaw workspace skills root: `~/.openclaw/workspace/skills/`

Use a symlink only when you deliberately want a development-time deployment that continues to point at the local export directory.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The skill changes file permissions with fs.chmod to add execute bits, which is a system-affecting file modification. There is no visible confirmation prompt, user-facing log, or inline warning explaining that the skill may alter permissions of bundled browser binaries before execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

This markdown file documents that if outputPath is omitted, the skill writes a .docx file next to the source Markdown file. Because this behavior affects user files and the surrounding filesystem, the skill description should clearly warn users that conversion may create or overwrite local files, rather than only describing it as a parameter default.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file documents that the skill writes a .docx file to outputPath, or next to the source Markdown file when outputPath is omitted. Because this behavior affects user files, the skill description should include a clear warning about where files will be created and whether existing files may be overwritten.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: dompurify==3.4.0 — 10 advisory(ies): CVE-2026-75838 (DOMPurify: IN_PLACE hook removal leaves a detached subtree executable, causing X); CVE-2026-65902 (DOMPurify: Hook mutation of `data.allowedTags` / `data.allowedAttributes` perman); CVE-2026-66010 (DOMPurify: `CUSTOM_ELEMENT_HANDLING` bypasses `afterSanitizeElements` for allowe) +7 more

Low
Category
Supply Chain
Confidence
87% confidence
Finding

dompurify is a sanitizer inside the optional Mermaid rendering path, and multiple sanitizer-bypass advisories mean attacker-supplied diagram content could survive sanitization and execute unexpected markup/script logic during rendering. In a Markdown conversion skill that may process untrusted user content, a broken sanitizer is security-relevant even if the package is only optional.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: markdown-it==14.1.1 — 1 advisory(ies): CVE-2026-48988 (markdown-it: Quadratic complexity DoS in smartquotes rule via replaceAt string o)

Low
Category
Supply Chain
Confidence
81% confidence
Finding

markdown-it is part of the primary document conversion flow, and the reported quadratic smartquotes behavior could let crafted text degrade performance or hang conversions. This is a real but relatively low-impact denial-of-service issue in a content-processing skill.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: mermaid==11.14.0 — 9 advisory(ies): CVE-2026-71436 (Mermaid XY Charts are vulnerable to an infinite loop DoS); CVE-2026-71437 (Mermaid Architecture diagrams are vulnerable to prototype pollution); CVE-2026-41150 (Mermaid Gantt Charts are vulnerable to an Infinite Loop DoS) +6 more

Low
Category
Supply Chain
Confidence
86% confidence
Finding

mermaid is an optional but explicitly included runtime feature for rendering diagrams from Markdown, and multiple advisories include infinite-loop DoS and prototype pollution. Since Mermaid would process attacker-controlled diagram definitions embedded in Markdown, these issues are relevant whenever the optional Mermaid path is enabled.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
90% confidence
Finding

The overrides section uses caret ranges instead of exact versions, which permits future patch/minor releases to be selected at install time. That weakens build reproducibility and can unexpectedly introduce a vulnerable or incompatible transitive dependency into a document-conversion skill that processes potentially untrusted Markdown content.

Content

Scanner excerpt · dist/marktodocx-skill/package.json (reported line 13)May include surrounding context.

json
"@marktodocx/runtime-node-mermaid": "file:./vendor/marktodocx-runtime-node-mermaid-0.1.0.tgz"
  },
  "overrides": {
    "highlight.js": "^11.11.1",
    "html-to-docx": "^1.8.0",
    "jszip": "^3.10.1",
    "markdown-it": "^14.1.1",

Static analysis

No suspicious patterns detected.