Security Audit
coleam00/excalidraw-diagram-skill:root
github.com/coleam00/excalidraw-diagram-skillTrust Assessment
coleam00/excalidraw-diagram-skill:root received a trust score of 63/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 2 findings: 1 critical, 0 high, 1 medium, and 0 low severity. Key findings include Unpinned Python dependency version, Headless Browser XSS leading to Local File Read/Data Exfiltration.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. All layers scored 70 or above, reflecting consistent security practices.
Last analyzed on March 7, 2026 (commit 8646fcc9). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings2
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Headless Browser XSS leading to Local File Read/Data Exfiltration The `render_excalidraw.py` script loads a local HTML template (`render_template.html`) using the `file://` scheme. It then injects user-controlled Excalidraw JSON data into this page for rendering via `page.evaluate()`. If the Excalidraw rendering library or the `render_template.html` itself is vulnerable to Cross-Site Scripting (XSS) when processing malicious Excalidraw JSON (e.g., through unescaped text elements, embedded malicious SVGs, or external resource loading), an attacker could execute arbitrary JavaScript within the headless browser. Because the page is loaded via `file://`, this injected JavaScript would have access to the local filesystem, allowing it to read arbitrary local files (e.g., `/etc/passwd`, `~/.ssh/id_rsa`, sensitive configuration files) and potentially exfiltrate them to an attacker-controlled server. 1. **Isolate Rendering Environment**: Instead of loading `render_template.html` via `file://`, serve it via a minimal, ephemeral HTTP server (e.g., `http://localhost:port`) with a strict Content Security Policy (CSP) that disallows external network requests and local file access. This prevents injected JavaScript from accessing the local filesystem or exfiltrating data. 2. **Strict Sandboxing**: Ensure the Playwright browser is launched with the strongest possible sandboxing and security features enabled. 3. **Audit Rendering Logic**: Thoroughly review `render_template.html` and the Excalidraw rendering library's handling of user-provided content for XSS vulnerabilities. Ensure all user-provided text and embedded content are properly sanitized and escaped before being inserted into the DOM. | Static | references/render_excalidraw.py:128 | |
| MEDIUM | Unpinned Python dependency version Dependency 'playwright>=1.40.0' is not pinned to an exact version. Pin Python dependencies with exact versions where feasible. | Dependencies | references/pyproject.toml |
Scan History
Embed Code
[](https://skillshield.io/report/839eae559f4962ab)
Powered by SkillShield