T09 · Insecure Skill Coding Practices
- Location
scripts/convert_svg.py:31- Finding
Unrestricted External Resource Resolution in Untrusted SVG Files
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly does what it advertises, but converting untrusted SVG files is under-contained and could make the renderer access local or network resources.
Install only if you are comfortable running a local image converter on the SVGs you provide. Avoid converting SVG files from untrusted people unless the run is sandboxed with limited filesystem and network access, and prefer pinned dependency versions before broad use.
scripts/convert_svg.py:31Unrestricted External Resource Resolution in Untrusted SVG Files
requirements.txt:1Unpinned Third-Party Dependencies Produce Non-Reproducible Installations
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
- `cairosvg` (SVG rendering)
- `Pillow` (only for JPG output)
**Setup:** OpenClaw does not install Python packages automatically. After installing this skill, run once: `pip install -r requirements.txt` (from the skill folder). On Linux (e.g. Ubuntu/Debian), install the Cairo library first: `sudo apt install libcairo2`. If a script fails with `ModuleNotFoundError` or a cairo library error, install the missing package or system library.
## Usage
Declared permissions with no matching code capability may indicate removed functionality or pre-staging for future abuse.
The dependency cairosvg is unpinned, so installs may resolve to different versions over time, including versions with known denial-of-service and external resource handling issues. In a skill that converts attacker-supplied SVG content and has shell execution permission, dependency drift increases the chance of silently introducing exploitable parsing vulnerabilities into a high-risk input-processing path.
cairosvg
Pillow
CairoSVG has multiple known advisories, including denial-of-service and unsafe handling of external SVG resources, and the manifest does not specify a version, so a vulnerable release may be installed. This is especially dangerous here because the skill's purpose is to parse and render untrusted SVG input, making library flaws directly reachable by an attacker through normal use.
The dependency Pillow is unpinned, which makes builds non-reproducible and can pull in vulnerable or incompatible versions without notice. Because this skill processes image data and Pillow has a history of memory corruption and resource-consumption issues, leaving the version unconstrained exposes the image-conversion workflow to avoidable supply-chain and parser risk.
cairosvg
Pillow
Pillow has numerous historical advisories, including resource-consumption and code-execution-class issues, and the lack of version pinning means the environment may resolve to an affected release. Since this skill converts files to PNG/JPG, Pillow is likely on the primary attack surface for untrusted image processing, so an unverified version materially increases risk.
No suspicious patterns detected.