Back to skill

Security audit

URL to Markdown

Security checks for vulnerabilities and agentic risk

Overview

This web-to-Markdown skill mostly matches its purpose, but its URL fetching is too broad and can access local or internal resources if given crafted URLs.

Review before installing in environments that can reach internal services, cloud metadata endpoints, or sensitive local files. Use only trusted public HTTP/HTTPS URLs, avoid attacker-supplied URL lists, and be cautious with --download-images and batch mode because they can make additional requests and write many local files.

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 (1)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/url2md.py:1018
Finding

Unrestricted URL Fetching Enables Local File Disclosure and Server-Side Request Forgery

Content
View full analysis
Optional[str]: """Download an image and ...[truncated 4574 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (5)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The request header hard-codes "Accept-Language: en-US,en;q=0.9", which imposes a specific language/locale preference on all fetched pages regardless of user preference. SQP-3 covers natural-language policy violations, and this is a locale constraint that is neither optional nor justified as region-specific behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
71% confidence
Finding

The image-download path reuses a browser-like request pattern tied to page retrieval behavior that already enforces an English locale for content acquisition, but the tool never offers user choice over localization behavior. This contributes to a skill design that assumes English output rather than respecting or documenting locale selection.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly operates on arbitrary HTTP/HTTPS URLs, but the description does not warn users that invoking it causes outbound network requests to third-party hosts and exposes requester metadata such as IP address and user-agent. This can create privacy, compliance, or SSRF-adjacent risk in environments where users may supply sensitive internal URLs or assume the action is purely local.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill documents writing output files, batch directory output, and image downloading, but does not clearly warn that a single invocation may create many files on disk. In automated or shared environments this can surprise users, consume storage, overwrite expected locations, or leave behind persisted copies of fetched content and assets.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

This code performs outbound network requests and includes explicit request headers, including an Accept-Language value, but the script provides no user-facing warning in its help text or documentation that invoking it will contact remote servers and transmit client metadata. Because SQP-2 applies to code files for network calls that transmit user or system data, the absence of disclosure is a quality/safety issue.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.