Trust Assessment
md-to-pdf received a trust score of 79/100, placing it in the Mostly Trusted category. This skill has passed most security checks with only minor considerations noted.
SkillShield's automated analysis identified 2 findings: 0 critical, 1 high, 1 medium, and 0 low severity. Key findings include Untrusted image paths lead to Local File Inclusion or SSRF, Unpinned dependency `reportlab`.
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 February 14, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings2
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| HIGH | Untrusted image paths lead to Local File Inclusion or SSRF The skill processes markdown content from an untrusted input file. Image paths specified in markdown (``) are directly passed to `reportlab.lib.utils.ImageReader()` and `reportlab.platypus.Image()`. This allows an attacker to specify arbitrary local file paths (e.g., ``) or external URLs (e.g., ``). This can lead to Local File Inclusion (LFI) by attempting to load sensitive local files as images, or Server-Side Request Forgery (SSRF) by forcing the skill to make requests to arbitrary external or internal network resources. Implement strict validation and sanitization for image paths. For remote images, only allow `http://` or `https://` protocols and consider fetching them to a temporary, sandboxed location before passing the local path to `reportlab.Image`. For local paths, ensure they are within an allowed, sandboxed directory and do not contain directory traversal sequences (`../`). Alternatively, disable support for remote or local file-based images if not strictly necessary. | LLM | scripts/md-to-pdf.py:292 | |
| MEDIUM | Unpinned dependency `reportlab` The `requires` section specifies `reportlab` without a version pin. This means that `uv` will install the latest available version of `reportlab` at the time of installation. If a malicious version of `reportlab` is published to PyPI, it could be inadvertently installed, leading to a supply chain attack. Pin the dependency to a specific version or a range of versions (e.g., `"reportlab==4.0.8"` or `"reportlab>=4.0.0,<5.0.0"`) to ensure deterministic and secure installations. | LLM | scripts/md-to-pdf.py:4 |
Scan History
Embed Code
[](https://skillshield.io/report/d8fde3c06e290e87)
Powered by SkillShield