T09 · Insecure Skill Coding Practices
- Location
scripts/generate_font_signatures.js:115- Finding
User-Controlled Path Traversal in Output Directory Construction
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to generate Signus signature images as described, but its file-writing and ZIP extraction safeguards are weak enough that it should be reviewed before installation.
Install only if you are comfortable sending signature identity data to api.signus.ai and storing generated signature images locally. Before broad use, the maintainer should sanitize path components, enforce output-directory containment before every write, avoid remote IDs as filenames, add network and archive size limits, update or replace adm-zip, and define cleanup or retention behavior for generated signatures.
scripts/generate_font_signatures.js:115User-Controlled Path Traversal in Output Directory Construction
scripts/generate_font_signatures.js:166API-Controlled Signature Identifier Used as an Unvalidated File Path
scripts/generate_font_signatures.js:75Unbounded Buffering and Extraction of Remote Content
The lockfile pins adm-zip to version 0.5.16, which is reported as affected by multiple high-severity issues including symlink-following during extraction and crafted ZIP-induced excessive memory allocation. If this skill ever processes untrusted ZIP content, an attacker could potentially overwrite arbitrary files via symlink traversal or trigger denial of service through memory exhaustion; the skill context does not justify ZIP handling, so carrying this dependency increases unnecessary risk.
The package explicitly depends on adm-zip 0.5.16, which is identified as having multiple known vulnerabilities, including unsafe extraction behavior through destination symlinks and a crafted ZIP memory-allocation denial-of-service issue. If this skill ever processes ZIP content directly or indirectly, an attacker could cause file overwrite outside the intended directory or crash/exhaust memory in the runtime.
The skill explicitly directs the runtime to make outbound network requests to https://api.signus.ai, but the manifest declares no permissions or allowed-tools scope. This creates a governance gap: reviewers and policy enforcement may not realize the skill can access external services, increasing the risk of unintended data egress or unauthorized network use.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# Signus Font Signature
## User-facing language
- Always write user-facing text in English unless the user explicitly asks for another language.
## Runtime requirements
- Node.js 18+.
This code sends user-provided identity data such as name, firstName, lastName, or initials to an external Signus API over the network, but the script itself provides no user-facing disclosure, consent check, or data-minimization control. In a skill specifically meant to generate signatures, this transfer is expected for functionality, but it still creates a real privacy/security risk because sensitive personal identity data is disclosed to a third party.
The script writes downloaded/generated signature files into a persistent directory under the user's home folder without an explicit warning, retention policy, or permission check. Because signature images can be sensitive and reusable for impersonation or fraud, silently persisting them increases exposure if the local machine, account, or agent workspace is later accessed by another party.
The dependency is specified with a caret range, which allows future 0.5.x releases to be installed without explicit review. In a security-sensitive skill, unpinned dependencies increase supply-chain risk and make builds non-reproducible, though by itself this is generally a lower-severity issue than a known vulnerable package.
"private": true,
"description": "Skill runtime dependencies for Signus font signature generation",
"dependencies": {
"adm-zip": "^0.5.16"
}
}
No suspicious patterns detected.