T09 · Insecure Skill Coding Practices
- Location
QUICKSTART.md:279- Finding
Persistent Local-File Access Weakens Marp Conversion Isolation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Marp CLI skill is legitimate and coherent, but some examples could expose slide content or local files if copied without additional safeguards.
Install only if you are comfortable with Marp CLI behavior. Prefer localhost-only server use, avoid HOST=0.0.0.0 unless you intentionally expose the service with firewall/authentication controls, and do not enable --allow-local-files or persistent allowLocalFiles settings when processing untrusted Markdown or assets.
QUICKSTART.md:279Persistent Local-File Access Weakens Marp Conversion Isolation
EXAMPLES.md:128Marp HTTP Server Exposed on All Network Interfaces Without Access Controls
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
Content for audience.
<!-- Note: This is what I tell the audience about this content -->
---
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
marp --images png $(PRESENTATION) -o dist/images/
clean: rm -rf dist/
## Performance Tips
The examples document shows a server mode that serves presentation content over HTTP, which expands the skill from local file conversion into network service behavior. In a conversion-focused skill, this can unintentionally encourage users to expose files or generated outputs over a reachable interface without understanding the added attack surface.
The example explicitly binds the server to 0.0.0.0, making it accessible from other hosts on the network. Presenting this without a warning can lead users to expose presentation files or conversion endpoints externally, which is riskier than the skill's core local conversion purpose.
The all-interfaces server example lacks any caution about network accessibility, so users may run it assuming it is a local-only preview command. That omission increases the chance of accidental exposure of presentation content or local development artifacts to other systems on the network.
The examples enable --allow-local-files without explaining that this relaxes local file access restrictions during rendering. If users render untrusted Markdown or HTML-backed slide content, that setting can increase exposure of sensitive local files or broaden the impact of malicious deck content.
The configuration example enables allowLocalFiles and allow-local-files without an adjacent warning, normalizing a setting that weakens a documented security boundary intended to block local file access during rendering. If users adopt this sample config broadly, untrusted Markdown or embedded content may gain access to local files during browser-based export flows, increasing risk of inadvertent file disclosure.
The skill documents marp -s ./slides and example URLs but does not warn that server mode exposes a local directory over HTTP, which can unintentionally disclose slide contents or derived outputs to other users on the same network or host. In a skill meant for CLI use, this omission is security-relevant because users may treat the example as safe-by-default and start a local content server without understanding exposure risks.
The --allow-local-files option is listed with only a vague parenthetical and no explanation of the security consequences. Enabling local file access during rendering can allow markdown or embedded content to read/include sensitive local resources, making this especially risky when converting untrusted slide decks.
The server mode examples show how to expose a slide directory over HTTP but do not clearly warn that the contents become reachable via a web server, which can lead users to unintentionally publish internal presentation files on their local network or forwarded interfaces. In a quickstart document, omission of this warning increases the chance of accidental exposure, especially for users who copy commands without understanding the serving behavior.
The README documents marp -s ./presentations and direct access via http://localhost:8080/ plus query-based conversion, but it does not warn that server mode exposes an HTTP service and may make presentation content available to other local users or, depending on bind settings/network configuration, other hosts. In a CLI skill, omitting this context can lead users to run a long-lived service unintentionally and expose sensitive slide content or generated exports.
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.
Use Marp themes from npm packages or custom CSS files.
### Plugin System
Extend functionality with Marp plugins.
### CLI Integrations
Works well with other text processing tools (Pandoc, etc.)
No suspicious patterns detected.