name: flaw0
description: OpenClaw 代码、插件、技能和 Node.js 依赖的安全与漏洞扫描器。由 OpenClaw AI 模型驱动。
version: 1.0.0
author: Tom
homepage: https://github.com/yourusername/flaw0
license: MIT
metadata:
openclaw:
emoji: "🔍"
category: "security"
tags:
- security
- vulnerability-scanner
- code-analysis
- dependency-checker
- openclaw
专为 OpenClaw 生态系统打造的安全与漏洞扫描器。分析源代码、插件、技能和 Node.js 依赖,以检测潜在的安全缺陷。
目标:实现缺陷 0 (零缺陷检出) 🎯
通过 ClawHub 安装此技能:
npx clawhub@latest install flaw0
或通过 npm 全局安装:
npm install -g flaw0
在以下场景使用 flaw0 来确保你的 OpenClaw 代码和依赖是安全的:
# 在安装前检查一个技能
flaw0 scan ~/.openclaw/skills/new-skill
# 在开发时扫描你的代码
flaw0 scan src/
# 检查依赖项
flaw0 deps
# 完整的安全审计
flaw0 audit
# 扫描所有 OpenClaw 组件
flaw0 scan --target all
# 检查特定组件
flaw0 scan --target skills
flaw0 scan --target plugins
flaw0 scan --target core
# 扫描当前目录
flaw0 scan
# 扫描特定目录
flaw0 scan /path/to/code
# 使用特定的 AI 模型
flaw0 scan --model claude-opus-4-6
# 快速依赖扫描
flaw0 deps
# 深度扫描 (整个依赖树)
flaw0 deps --deep
# 全面扫描 (代码 + 依赖)
flaw0 audit
# 将报告保存到文件
flaw0 audit --output report.json
# 为 CI/CD 输出 JSON
flaw0 audit --json
# 扫描 OpenClaw 核心
flaw0 scan --target core
# 扫描所有插件
flaw0 scan --target plugins
# 扫描所有技能
flaw0 scan --target skills
# 扫描所有内容
flaw0 scan --target all
命令注入
exec()代码注入
eval() 的使用Function() 构造函数SQL 注入
跨站脚本攻击 (XSS)
innerHTML 赋值dangerouslySetInnerHTML 的使用路径遍历
readFile()硬编码密钥
弱加密
不安全随机性
Math.random()不安全的反序列化
JSON.parse()缺失身份验证
结果以 缺陷分数 报告 - 分数越低越好:
每个问题都根据严重程度加权:
- 严重:3 分
- 高:2 分
- 中:1 分
- 低:0.5 分
总缺陷分数 = 所有加权问题的总和 (四舍五入)
🔍 flaw0 安全扫描结果
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 结果:缺陷 0
✅ 状态:安全
✓ 未检测到安全问题!
✓ 所有检查通过
干得漂亮!🎉
🔍 flaw0 安全扫描结果
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 结果:缺陷 12
⚠️ 状态:发现问题
代码缺陷:5
├─ 🔴 严重:2
├─ 🟠 高:1
├─ 🟡 中:2
└─ ⚪ 低:0
依赖项缺陷:7
├─ 🔴 严重 CVE:3
├─ 🟠 高 CVE:2
├─ 🟡 中:2
└─ ⚪ 低:0
详细报告:
─────────────────────────────────
1. [严重] 命令注入
位置:src/executor.js:78
代码:`exec(\`ls ${userInput}\`)`
描述:未净化的 exec() 调用
→ 修复:使用 execFile() 或验证输入
🤖 AI 置信度:高
💡 AI 建议:将 exec() 替换为 execFile()
并根据白名单验证输入
2. [高] 硬编码 API 密钥
位置:config/api.js:5
代码:`const API_KEY = "sk-1234..."`
描述:API 密钥在源代码中暴露
→ 修复:使用 process.env.API_KEY
3. [严重] lodash@4.17.19 中的 CVE-2024-12345
包:lodash@4.17.19
描述:原型污染漏洞
→ 修复:npm install lodash@4.17.21
...
flaw0 使用 OpenClaw 的 AI 模型进行智能代码审查:
flaw0 scan --model claude-sonnet-4-5
flaw0 scan --model claude-opus-4-6
flaw0 scan --model claude-haiku-4-5
flaw0 init
这将创建 .flaw0rc.json:
{
"severity": {
"failOn": "high",
"ignore": ["low"]
},
"targets": {
"code": true,
"dependencies": true,
"devDependencies": false
},
"exclude": [
"node_modules/**",
"test/**",
"*.test.js"
],
"model": "claude-sonnet-4-5",
"maxFlawScore": 0
}
name: 安全扫描
on: [push, pull_request]
jobs:
flaw0:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: 安装 flaw0
run: npm install -g flaw0
- name: 运行安全扫描
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: flaw0 audit
- name: 检查缺陷分数
run: |
SCORE=$(flaw0 audit --json | jq '.flawScore')
if [ "$SCORE" -gt 0 ]; then
echo "❌ 检测到缺陷:缺陷 $SCORE"
exit 1
fi
echo "✅ 无缺陷:缺陷 0"
#!/bin/bash
echo "🔍 正在运行 flaw0 扫描..."
flaw0 scan
if [ $? -ne 0 ]; then
echo "❌ 检测到缺陷!提交被阻止。"
exit 1
fi
# 下载一个技能进行审查
git clone https://github.com/user/some-skill.git /tmp/some-skill
# 扫描它
flaw0 scan /tmp/some-skill
# 如果缺陷 0,可以安全安装
# 如果缺陷 > 0,请先审查问题
# 扫描所有已安装的技能
flaw0 scan --target skills
# 示例输出:
# ✓ clawdex - 缺陷 0
# ✓ database-helper - 缺陷 0
# ⚠ crypto-bot - 缺陷 3
# ✓ git-assistant - 缺陷 0
# 总体:缺陷 3
# 安装新包后
npm install some-package
# 检查漏洞
flaw0 deps
# 全面的安全检查
flaw0 audit --output security-report.json
# 审查报告
cat security-report.json | jq '.flawScore'
在你自己的工具中以编程方式使用 flaw0:
const Flaw0 = require('flaw0');
const scanner = new Flaw0({
target: './src',
model: 'claude-sonnet-4-5'
});
// 运行完整扫描
const results = await scanner.scan();
console.log(`缺陷分数:${results.flawScore}`);
if (results.flawScore === 0) {
console.log('✅ 未检测到缺陷!');
} else {
results.codeFlaws.forEach(flaw => {
console.log(`[${flaw.severity}] ${flaw.name}`);
console.log(` 位置:${flaw.file}:${flaw.line}`);
console.log(` 修复:${flaw.fix}`);
});
}
| 特性 | flaw0 | npm audit | Snyk | ESLint Security |
|---|---|---|---|---|
| 依赖项 CVE | ✅ | ✅ | ✅ | ❌ |
| AI 代码分析 | ✅ | ❌ | ❌ | ❌ |
| OpenClaw 特定 | ✅ | ❌ | ❌ | ❌ |
| 上下文感知 | ✅ | ❌ | ⚠️ | ⚠️ |
| 误报减少 | ✅ | ❌ | ⚠️ | ❌ |
| 修复建议 | ✅ | ⚠️ | ✅ | ⚠️ |
export ANTHROPIC_API_KEY='your-api-key-here'
从以下网址获取你的 API 密钥:https://console.anthropic.com/
export ANTHROPIC_API_KEY='sk-...'
# 或添加到 ~/.bashrc 或 ~/.zshrc
确保你有一个有效的 package.json:
npm init -y
npm install
如果遇到 API 速率限制:
1. 使用 haiku 模型:--model haiku
2. 扫描较小的部分
3. 等待并重试
./demo.sh 进行交互式演示flaw0 帮助 OpenClaw 社区实现安全、无漏洞的代码。
欢迎贡献!贡献领域包括:
- 新的漏洞模式
- 额外的 AI 模型
- Python/Go 支持
- Web 仪表板
- 自定义规则引擎
MIT 许可证 - 详见 LICENSE 文件
目标:让每个人都实现缺陷 0!🎯
记住:安全不是一次性的检查。定期运行 flaw0 以维持 缺陷 0 状态!