OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  flaw0: OpenClaw 代码、插件与技能的安全漏洞扫描器

flaw0: OpenClaw 代码、插件与技能的安全漏洞扫描器

 
  debug ·  2026-02-01 10:55:43 · 3 次点击  · 0 条评论  

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


flaw0 - 零缺陷安全扫描器

专为 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 安装

# 扫描所有 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 组件

# 扫描 OpenClaw 核心
flaw0 scan --target core

# 扫描所有插件
flaw0 scan --target plugins

# 扫描所有技能
flaw0 scan --target skills

# 扫描所有内容
flaw0 scan --target all

flaw0 检测内容

代码漏洞 (12+ 种类型)

  1. 命令注入

    • 使用未净化的输入调用 exec()
    • 使用用户输入构建 Shell 命令
  2. 代码注入

    • eval() 的使用
    • 使用字符串的 Function() 构造函数
  3. SQL 注入

    • SQL 查询中的字符串拼接
    • 未参数化的查询
  4. 跨站脚本攻击 (XSS)

    • innerHTML 赋值
    • dangerouslySetInnerHTML 的使用
  5. 路径遍历

    • 未验证的文件路径操作
    • 使用用户输入的 readFile()
  6. 硬编码密钥

    • 源代码中的 API 密钥
    • 密码和令牌
    • AWS 凭证
  7. 弱加密

    • MD5 和 SHA1 的使用
    • 弱哈希算法
  8. 不安全随机性

    • 安全操作中使用 Math.random()
    • 可预测的令牌生成
  9. 不安全的反序列化

    • 未经验证的 JSON.parse()
    • 未验证的输入解析
  10. 缺失身份验证

    • 没有认证中间件的 API 端点
    • 未受保护的路由

依赖项问题

  1. 已知 CVE - 来自 CVE 数据库的漏洞
  2. 过时的包 - 有可用安全更新的包
  3. 恶意包 - 已知的恶意软件或可疑包
  4. 重复依赖 - 臃肿的依赖树

理解结果

缺陷分数

结果以 缺陷分数 报告 - 分数越低越好:

  • 缺陷 0 🎯 - 完美!未检测到问题
  • 缺陷 1-3 🟡 - 轻微问题
  • 缺陷 4-10 🟠 - 需要关注
  • 缺陷 10+ 🔴 - 严重问题

分数计算

每个问题都根据严重程度加权:
- 严重:3 分
- :2 分
- :1 分
- :0.5 分

总缺陷分数 = 所有加权问题的总和 (四舍五入)

示例输出

干净的代码 (缺陷 0)

🔍 flaw0 安全扫描结果
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📊 结果:缺陷 0
✅ 状态:安全

✓ 未检测到安全问题!
✓ 所有检查通过

干得漂亮!🎉

发现问题 (缺陷 12)

🔍 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

...

AI 驱动的分析

flaw0 使用 OpenClaw 的 AI 模型进行智能代码审查:

可用模型

claude-sonnet-4-5 (默认)

  • 速度与准确性的平衡
  • 最适合大多数用例
  • 良好的误报减少
flaw0 scan --model claude-sonnet-4-5

claude-opus-4-6

  • 最彻底的分析
  • 最深的上下文理解
  • 较慢但最准确
flaw0 scan --model claude-opus-4-6

claude-haiku-4-5

  • 最快的扫描速度
  • 适合快速检查
  • 在 CI/CD 中使用以提高速度
flaw0 scan --model claude-haiku-4-5

AI 功能

  • 上下文感知分析 - 理解代码流和上下文
  • 误报减少 - 过滤掉非问题
  • 置信度评分 - 评估检测置信度
  • 修复建议 - 提供具体的修复步骤

配置

创建配置文件

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
}

配置选项

  • severity.failOn - 当达到或超过此严重级别时退出并报错
  • severity.ignore - 跳过这些严重级别
  • targets - 要扫描的内容 (代码、依赖项)
  • exclude - 要忽略的文件模式
  • model - 要使用的 AI 模型
  • maxFlawScore - 可接受的最大缺陷分数

CI/CD 集成

GitHub Actions

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,请先审查问题

审计你的 OpenClaw 技能

# 扫描所有已安装的技能
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'

API 使用

在你自己的工具中以编程方式使用 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}`);
  });
}

工作原理

  1. 模式匹配 - 基于正则表达式的快速常见漏洞检测
  2. AI 分析 - Claude AI 在上下文中审查每个问题
  3. 误报过滤 - AI 识别并移除非问题
  4. 依赖项检查 - 与 npm audit 和 CVE 数据库集成
  5. 评分 - 计算加权缺陷分数
  6. 报告 - 生成详细、可操作的报告

实现缺陷 0 的技巧

  1. 首先修复严重问题 - 最大的安全影响
  2. 更新依赖项 - 快速解决已知 CVE
  3. 使用参数化查询 - 防止 SQL 注入
  4. 验证所有输入 - 阻止注入攻击
  5. 使用环境变量 - 不要硬编码密钥
  6. 应用安全头部 - 使用 helmet.js
  7. 实施身份验证 - 保护所有端点
  8. 使用强加密 - SHA-256 或更好
  9. 净化输出 - 防止 XSS
  10. 审查 AI 建议 - 从推荐中学习

与其他工具的比较

特性 flaw0 npm audit Snyk ESLint Security
依赖项 CVE
AI 代码分析
OpenClaw 特定
上下文感知 ⚠️ ⚠️
误报减少 ⚠️
修复建议 ⚠️ ⚠️

要求

  • Node.js:14+
  • API 密钥:用于 AI 分析的 Anthropic API 密钥
  • npm:用于依赖项检查

设置 API 密钥

export ANTHROPIC_API_KEY='your-api-key-here'

从以下网址获取你的 API 密钥:https://console.anthropic.com/

故障排除

"未找到 API 密钥"

export ANTHROPIC_API_KEY='sk-...'
# 或添加到 ~/.bashrc 或 ~/.zshrc

"npm audit 失败"

确保你有一个有效的 package.json:

npm init -y
npm install

超出速率限制

如果遇到 API 速率限制:
1. 使用 haiku 模型:--model haiku
2. 扫描较小的部分
3. 等待并重试

支持

  • 文档:查看 USAGE.md 获取详细指南
  • 示例:检查 examples/ 目录
  • 问题:在 GitHub 仓库报告
  • 演示:运行 ./demo.sh 进行交互式演示

关于

flaw0 帮助 OpenClaw 社区实现安全、无漏洞的代码。

  • 使用 OpenClaw/Claude AI 构建
  • 使用行业标准的安全模式
  • 持续更新新的漏洞
  • 在 MIT 许可证下开源

贡献

欢迎贡献!贡献领域包括:
- 新的漏洞模式
- 额外的 AI 模型
- Python/Go 支持
- Web 仪表板
- 自定义规则引擎

许可证

MIT 许可证 - 详见 LICENSE 文件


目标:让每个人都实现缺陷 0!🎯

记住:安全不是一次性的检查。定期运行 flaw0 以维持 缺陷 0 状态!

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor