Skill Security Audit
Scan OpenClaw skills for security vulnerabilities before installation or publication.
Quick Start
CODEBLOCK0
What This Detects
Critical Issues (Block Installation)
| Issue | Description | Risk Level |
|---|
| Hardcoded Secrets | API keys, tokens, passwords in code | Critical |
| Shell Injection |
Unsanitized input to shell commands | Critical |
|
Code Execution | eval(), exec(), dynamic code execution | Critical |
|
Unauthorized Network | Calls to unknown/suspicious domains | Critical |
High Issues (Review Required)
| Issue | Description | Risk Level |
|---|
| Prompt Injection | User input in system prompts without sanitization | High |
| File Path Traversal |
Unchecked file paths from user input | High |
|
Excessive Permissions | Requests unnecessary system access | High |
Medium Issues (Warnings)
| Issue | Description | Risk Level |
|---|
| Outdated Dependencies | Packages with known CVEs | Medium |
| Unpinned Versions |
Floating dependency versions | Medium |
|
Missing License | No license file for distribution | Medium |
Security Patterns
Good Pattern: Environment Variables
CODEBLOCK1
Bad Pattern: Hardcoded Secrets
CODEBLOCK2
Good Pattern: Sanitized Input
CODEBLOCK3
Bad Pattern: Shell Injection
CODEBLOCK4
Running Audits
Important: Self-Scan Results
When running skill-security-audit audit skill-security-audit/, you will see findings for the pattern definitions themselves. This is expected — the scanner detects the example patterns in its own documentation. These are not real vulnerabilities.
For actual skill audits, this produces accurate results.
Single Skill Audit
CODEBLOCK5
Output:
- - Pass/Fail status
- List of vulnerabilities found
- Severity ratings
- Remediation suggestions
Batch Audit (All Installed Skills)
CODEBLOCK6
Scans ~/.openclaw/skills/ and reports on all installed skills.
Report Formats
CODEBLOCK7
CI/CD Integration
Add to your skill publishing pipeline:
CODEBLOCK8
Exit codes:
- - 0: No issues found
- 1: Medium+ issues found (warnings)
- 2: Critical issues found (block)
Publishing Secure Skills
Before publishing to ClawHub:
- 1. Run INLINECODE2
- Fix all critical and high issues
- Document any required secrets in README
- Include
.env.example with placeholder values - Re-run audit to confirm clean
See Also
- -
references/vulnerabilities.md — Complete vulnerability database - INLINECODE5 — How to fix common issues
- INLINECODE6 — Main audit script
技能安全审计
在安装或发布前扫描OpenClaw技能的安全漏洞。
快速开始
bash
审计单个技能
skill-security-audit audit /path/to/skill-folder
审计所有已安装技能
skill-security-audit audit-all
生成安全报告
skill-security-audit report /path/to/skill-folder --format json
检测内容
严重问题(阻止安装)
| 问题 | 描述 | 风险等级 |
|---|
| 硬编码密钥 | 代码中的API密钥、令牌、密码 | 严重 |
| Shell注入 |
未经过滤的shell命令输入 | 严重 |
|
代码执行 | eval()、exec()、动态代码执行 | 严重 |
|
未授权网络 | 调用未知/可疑域名 | 严重 |
高危问题(需审查)
| 问题 | 描述 | 风险等级 |
|---|
| 提示注入 | 系统提示中包含未经净化的用户输入 | 高危 |
| 文件路径遍历 |
用户输入中未检查的文件路径 | 高危 |
|
权限过大 | 请求不必要的系统访问权限 | 高危 |
中等问题(警告)
| 问题 | 描述 | 风险等级 |
|---|
| 过时依赖 | 包含已知CVE的包 | 中等 |
| 未固定版本 |
浮动的依赖版本 | 中等 |
|
缺少许可证 | 没有用于分发的许可证文件 | 中等 |
安全模式
良好模式:环境变量
python
正确:从环境加载密钥
import os
api
key = os.environ.get(OPENAIAPI_KEY)
不良模式:硬编码密钥
python
危险:代码中的密钥
api_key = sk-abc123def456... # 切勿这样做
良好模式:净化输入
python
正确:验证并净化
import re
def safe_filename(name):
return re.sub(r[^a-zA-Z0-9_-], , name)
不良模式:Shell注入
python
危险:用户输入到shell
os.system(fconvert {user_file} output.png) # 切勿这样做
运行审计
重要:自扫描结果
运行 skill-security-audit audit skill-security-audit/ 时,您会看到模式定义本身的发现结果。这是预期行为——扫描器会检测其自身文档中的示例模式。这些并非真实漏洞。
对于实际技能审计,这将产生准确结果。
单个技能审计
bash
skill-security-audit audit ./my-skill/
输出:
批量审计(所有已安装技能)
bash
skill-security-audit audit-all
扫描 ~/.openclaw/skills/ 并报告所有已安装技能。
报告格式
bash
JSON格式,用于CI/CD集成
skill-security-audit audit ./skill/ --format json
Markdown格式,用于文档
skill-security-audit audit ./skill/ --format markdown
摘要格式,用于快速审查
skill-security-audit audit ./skill/ --format summary
CI/CD集成
添加到您的技能发布流水线:
yaml
.github/workflows/publish.yml
run: skill-security-audit audit ./skill/
退出代码:
- - 0:未发现问题
- 1:发现中等问题(警告)
- 2:发现严重问题(阻止)
发布安全技能
在发布到ClawHub之前:
- 1. 运行 skill-security-audit audit ./your-skill/
- 修复所有严重和高危问题
- 在README中记录任何必需的密钥
- 包含带有占位符值的 .env.example
- 重新运行审计以确认干净
参见
- - references/vulnerabilities.md — 完整漏洞数据库
- references/remediation.md — 如何修复常见问题
- scripts/audit.py — 主审计脚本