code-security-audit

对代码项目进行全面安全审计,支持 Python、Node.js、Go、Java 四种语言。 包含依赖漏洞扫描(结合原生工具 + Claude 分析)、代码安全模式检查(OWASP Top 10、注入、反序列化、 敏感信息泄露、认证授权、加密问题等)、业务逻辑审计、攻击链构建、配置审计、以及结构化报告输出。 触发场景:(1) 用户要求对项目进行安全审计/安全检查/代码审计 (2) 用户要求检查代码中的安全漏洞 (3) 用户要求进行依赖漏洞扫描 (4) 用户提到 security audit、vulnerability scan、代码审计、安全扫描、渗透测试前的代码审查 (5) 用户要求检查 OWASP Top 10 相关问题

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "code-security-audit" with this command: npx skills add chaigon/code-security-audit-skill/chaigon-code-security-audit-skill-code-security-audit

代码安全审计

对项目执行安全审计,支持三种审计模式以平衡深度与 token 消耗。

审计模式选择

触发时先确定审计模式。用户明确指定则使用指定模式,否则默认 中度

触发关键词模式
"快速扫描"、"quick scan"、"轻度审计"、"light"轻度
"安全审计"、"代码审计"、"audit"(默认)中度
"深度审计"、"full audit"、"deep"、"渗透测试级"深度

轻度审计(Quick Scan)

目标:快速发现高危问题,最小 token 消耗。

阶段执行内容
Phase 1仅识别语言/框架,不画模块地图和攻击面清单
Phase 2单 Agent,仅搜索 Critical/High 级别模式(每语言 Top 10 高危模式)
Phase 3跳过
Phase 4跳过攻击链,仅基本验证(排除明显误报)
Phase 5终端简要输出,不生成报告文件

不执行多轮审计。不加载 references 文件(使用内置知识)。依赖审计仅运行工具扫描,不做 Claude 分析。

轻度模式 Top 10 高危模式(跨语言通用):

  1. eval(/exec(/Runtime.exec/os.system — 代码/命令执行
  2. pickle.loads/ObjectInputStream/yaml.load — 不安全反序列化
  3. SQL 字符串拼接("SELECT.*" + /Statement/${} in Mybatis)
  4. 硬编码密码/密钥(password\s*=\s*["']/secret/api_key
  5. shell=True/child_process.exec — 命令注入
  6. dangerouslySetInnerHTML/innerHTML/v-html — XSS
  7. verify=False/InsecureSkipVerify — TLS 绕过
  8. DEBUG\s*=\s*True/NODE_ENV.*development — 生产环境调试模式
  9. cors.*origin.*\* — CORS 全开
  10. log4j/fastjson 已知高危版本

中度审计(Standard Audit)

目标:覆盖主要安全风险,合理 token 消耗。

阶段执行内容
Phase 1完整信息收集 + 依赖审计(工具 + Claude 分析)
Phase 22-3 个 Agent 并行扫描,覆盖所有 Critical/High/Medium 模式
Phase 3仅审计 P0 文件(认证链 + 未认证端点 + 核心 Sink 聚合点)
Phase 4基本验证(四步法),不构建攻击链
Phase 5完整报告(无攻击链章节)

单轮审计。按需加载 vulnerability_rules.md 中对应语言章节。

深度审计(Full Audit)

目标:最大化发现率,适合安全评审和渗透测试前审查。

执行完整五阶段流程 + 多轮审计策略 + 攻击链构建。即下文描述的全部内容。


审计哲学

核心分析模型

所有安全漏洞的本质:不可信的数据到达了危险的操作

Source(源)      用户可控的输入入口
     ↓
Propagation(传播) 数据流经的函数、过滤、转换
     ↓
Sink(汇)        SQL执行、命令执行、文件读写等危险操作

审计的三个核心动作:

  1. 找到所有 Source(识别攻击面)
  2. 追踪 Propagation(验证中间是否有有效过滤)
  3. 确认是否有未过滤的路径到达 Sink(漏洞判定)

优先级排序

优先级 = (攻击面大小 × 潜在影响) / 利用复杂度
维度高权重低权重
攻击面未认证可达内部接口
潜在影响RCE、全库读取信息收集
利用复杂度单请求触发需物理接触

第一条决策原则:永远优先审计认证链。 认证绕过能把所有需认证才能触发的漏洞升级为未认证漏洞。

五阶段审计流程

Phase 1: 信息收集与攻击面识别(10% 精力)

此阶段不搜漏洞,只产出四样东西:

1. 技术栈画像

  • 检测语言标识文件:Python (requirements.txt等), Node.js (package.json等), Go (go.mod), Java (pom.xml等)
  • 识别框架(Django/Flask/FastAPI, Express/Koa/Next.js, Gin/Echo, Spring/Mybatis)
  • 识别数据库、中间件、模板引擎

2. 模块地图

  • 扫描目录结构,识别路由层、控制器层、服务层、数据访问层
  • 标注各模块的职责和依赖关系

3. 攻击面清单

  • 列出所有 API 端点(HTTP 方法、路径、认证状态)
  • 标记未认证端点、GET 写操作、管理端点(admin/metrics/swagger/actuator)
  • 识别所有外部入口(API、WebSocket、消息队列、定时任务)和出口(HTTP 出站、邮件、文件写入)

4. 安全机制

  • 识别认证方案(JWT/Session/OAuth)、授权中间件、CSRF 保护
  • 识别输入校验方式、输出编码、加密方案

依赖审计也在此阶段执行:

  • 运行 scripts/dep_audit.shscripts/dep_audit_java.sh(工具不可用则跳过)
  • 读取依赖清单,分析已知高危版本、废弃包、typosquatting、宽泛版本范围

后续所有 Agent 的方向、搜索模式、优先级排序,全部基于这张地图推导。没有地图就没有方向。

Phase 2: 并行模式匹配扫描(30% 精力)

Agent 决策链

Phase 1 攻击面清单 → 推导审计方向 → 按"可并行 + 不重叠"切分 Agent → 执行

核心原则:Agent 的方向由攻击面决定,不是固定模板。 项目没有文件上传就不设文件操作 Agent。

切分约束

  • 约束 1:搜索模式互不重叠,每个 Agent 有独占的 Grep 模式集
  • 约束 2:可完全并行执行,Agent 之间零依赖

典型 Agent 映射(根据 Phase 1 发现动态调整):

探测发现审计方向Agent 任务
Web 框架 + REST API认证/授权链Agent: 认证与授权
数据库连接SQL/NoSQL 注入Agent: 注入
文件上传 + HTTP 出站SSRF + 文件操作Agent: 文件/SSRF
模板引擎/eval/execXSS/SSTI/RCEAgent: 代码执行
业务交易逻辑IDOR/数值/竞态Agent: 业务逻辑

Agent 数量:小型项目 2-3 个,中型 3-5 个,大型 5-9 个。

按语言加载对应规则,参考 references/vulnerability_rules.md

核心检查项:

  • 注入: SQL注入、命令注入、LDAP注入、模板注入(SSTI)、XSS
  • NoSQL注入: MongoDB $where 拼接、操作符注入($gt/$ne/$regex)
  • 反序列化: pickle/yaml/ObjectInputStream/Fastjson 不安全反序列化
  • 认证授权: 硬编码凭证、JWT 配置、Session 管理、越权风险
  • 加密: 弱算法(MD5/SHA1/DES)、硬编码密钥、不安全随机数
  • 敏感信息: API Key/密码/Token 硬编码、日志泄露、错误信息泄露
  • 文件操作: 路径遍历、不受限的文件上传
  • SSRF/XXE: 不受限的 URL 请求、XML 外部实体
  • 前端安全: innerHTML/dangerouslySetInnerHTML/bypassSecurityTrust*、前端路由泄露、前端硬编码凭据
  • 业务逻辑: IDOR、Mass Assignment、数值校验缺失、竞态条件、CSRF、反自动化
  • 原型污染 (Node.js) / Log4Shell (Java)
  • 供应链: typosquatting、废弃包、可疑依赖来源

Phase 2 的核心产出是"高风险区域地图",不是最终漏洞清单。发现率 30-50% 是正常的。

Phase 3: 关键路径深度审计(40% 精力)

对 Phase 2 标记的高风险文件做逐行审计。文件优先级排序:

优先级文件类型决策依据
P0认证过滤器 / Token 处理认证绕过影响全系统
P0未认证可达的接口直接暴露的攻击面
P0Sink 最密集的核心业务入口漏洞密度最高
P1文件上传下载 / HTTP 出站工具类路径遍历、SSRF
P2配置类、加密工具类配置缺陷、密钥管理

逐行审计逻辑

对每个 P0/P1 文件:
  1. 读取完整结构(字段、方法列表)
  2. 从 public 方法开始,追踪每个参数的数据流
  3. 对每个分支判断:
     ├── 参数是否经过验证/过滤?→ 检查验证逻辑完整性
     ├── 参数是否到达 Sink?    → 记录完整路径
     └── 是否有绕过过滤的路径? → 分析边界条件
  4. 记录: 文件 → 行号 → 漏洞类型 → 完整数据流路径

关键决策:优先审计 Sink 聚合点。 如果项目有统一的 HTTP 出站工具类,审计这一个文件就覆盖所有 SSRF 风险。

配置审计也在此阶段执行:

  • DEBUG/开发模式、CORS 配置、安全 HTTP 头、数据库明文密码
  • TLS/SSL 配置、Docker/K8s 安全(特权容器、root 运行)
  • .env 文件是否被 .gitignore 排除
  • Swagger/Actuator 等管理端点暴露

Phase 4: 漏洞验证与攻击链构建(15% 精力)

验证四步法 — 每个疑似漏洞必须过四关:

步骤验证项判定标准
1数据流完整性Source 到 Sink 中间无截断过滤
2防护可绕过性安全检查是否有遗漏的边界条件
3前置条件可满足性攻击者能否到达漏洞触发点
4影响范围利用后最大损害(RCE?数据泄露?提权?)

四步全过 → 确认漏洞。任一步不过 → 降级或排除。

攻击链构建

对每个 Critical/High 漏洞:
  1. 确认前置条件(需要认证?什么权限?什么网络位置?)
  2. 如果需要认证 → 检查是否有认证绕过可串联
  3. 确认利用结果(信息泄露?代码执行?权限提升?)
  4. 检查结果能否作为下一个漏洞的输入
  5. 组合为完整攻击链,评估整体影响

典型攻击链模式参考 references/vulnerability_rules.md 中的攻击链模式章节。

等级影响规则:漏洞 A(认证绕过)消除漏洞 B 的认证前置条件 → B 按"未认证可达"重新评估。编号等级 = 独立等级,攻击链部分 = 组合等级。

Phase 5: 报告输出(5% 精力)

参考 references/report_template.md 输出。

报告包含:

  1. 审计摘要(各严重程度的发现数量)
  2. 攻击面地图(端点清单、认证状态)
  3. 漏洞详情(位置、代码片段、完整数据流路径、修复建议、CWE 编号)
  4. 攻击链分析(漏洞组合路径、整体影响)
  5. 依赖审计结果
  6. 配置审计结果
  7. 修复优先级建议

多轮审计策略

单轮审计漏报率可达 50-60%。多轮审计每轮执行不同类型的分析:

轮次目标函数方法发现类型
第一轮max(覆盖面)模式匹配(Grep + 并行 Agent)表面可见:硬编码、未验证、配置缺陷
第二轮max(深度)数据流追踪(逐行 Read)隐藏在数据流中:拼接链、协议注入、权限缺失
第三轮max(关联度)跨模块交叉验证组合才危险:IDOR+白名单、加密体系缺陷

轮次终止规则

每轮结束后,强制回答三个问题:

  1. 有没有计划搜索但没搜到的区域? YES → 需要下一轮(补盲区)
  2. 发现的入口点是否都追踪到了 Sink? NO → 需要下一轮(追数据流)
  3. 高风险发现之间是否可能存在跨模块关联? YES → 需要下一轮(交叉验证)

三个问题的答案全部为 NO → 终止。任一为 YES → 继续。

轮次规模参考

项目规模典型轮次Agent 总数
小型(<10K LOC)1 轮2-3 个
中型(10K-50K)1-2 轮3-5 个
大型(50K-200K)2-3 轮5-9 个
超大型(>200K)2-4 轮8-15 个

严重等级判定

三维决策模型:严重等级 = f(可达性, 影响范围, 利用复杂度)

                漏洞发现
                   │
           未认证可达?
             ╱        ╲
           YES         NO
           ╱             ╲
   RCE/全库读取?    RCE/全库读取?
     ╱     ╲         ╱     ╲
   YES     NO      YES     NO
    │       │       │       │
 Critical   │     High   Medium/Low
         广范围数据
         泄露/篡改?
          ╱    ╲
        YES    NO
         │      │
       High   Medium

编号体系:C-001 (Critical 9.0-10.0), H-001 (High 7.0-8.9), M-001 (Medium 4.0-6.9), L-001 (Low 0.1-3.9)

排序策略:影响最广排最前 → 攻击链根漏洞优先 → 同模块漏洞相邻。

攻击链对等级的影响:

  • 编号等级 = 独立等级(假设攻击者无其他漏洞)
  • 攻击链部分 = 组合等级
  • 修复链中一环不影响剩余漏洞的独立评级

误报处理

确认漏洞前必须验证:

  • 危险函数的输入是否来自用户可控数据
  • 是否存在上游的输入校验/转义/参数化
  • 是否在测试代码中(测试代码中的 eval 通常不是漏洞)
  • 框架是否已内置防护(如 Django ORM 默认参数化)

标记为 "可能的误报" 而非直接忽略,让用户自行判断。

快速参考

依赖审计脚本:

  • 通用: scripts/dep_audit.sh <项目目录> [python|node|go|auto]
  • Java: scripts/dep_audit_java.sh <项目目录>

漏洞规则详情: references/vulnerability_rules.md 报告模板: references/report_template.md

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Security

code-security-audit

No summary provided by upstream source.

Repository SourceNeeds Review
Security

code-security-audit

No summary provided by upstream source.

Repository SourceNeeds Review
Security

compliance-evidence-assembler

把审计所需证据整理成目录、清单和缺失项,便于后续评审。;use for compliance, evidence, audit workflows;do not use for 伪造证据, 替代正式审计结论.

Archived SourceRecently Updated
Security

skillguard-hardened

Security guard for OpenClaw skills, developed and maintained by rose北港(小红帽 / 猫猫帽帽). Audits installed or incoming skills with local rules plus Zenmux AI intent review, then recommends pass, warn, block, or quarantine.

Archived SourceRecently Updated