SuperAPI AI 工具集

mapping-findings-to-owasp-top10

安全与审计

查看项目

更新于 10-16 07:06

技能介绍

用途

OWASP Top 10 是 Web 应用风险类别的权威分类法。面向客户的渗透测试报告通常包含"OWASP 覆盖"章节,因为客户、审计方和保险方都期望看到发现结果与 Top 10 的对应关系。该技能为每条发现标注其所属的 OWASP 分类,将 CVE 和错误配置的冗长列表转化为结构化评估。

主要能力

  • 基于确定性规则表对每条发现进行 OWASP 分类标注。规则依据以下键值:
    • 来源技能 ID(例如来自 auditing-npm-dependencies 的发现几乎总是 A06——易受攻击和过时的组件)
    • 发现类别(每技能类别标签,如 dependency-vulnerability、engagement-scope)
    • CWE 标识符(若存在;CWE 到 OWASP 有成熟的映射)
    • 明细关键词作为上述无法确定时的兜底
  • 输出增强 JSONL(每条发现新增 owasp_category 字段)以及覆盖率报告,展示发现结果在 A01-A10 之间的分布。
  • 未映射(UNMAPPED)的发现以 INFO 级别呈现以供人工审查,可扩展规则表或接受该发现为跨类别。

使用方式

前提条件

  • Python 3.9+
  • 一个或多个 cluster 1-4 发现文件
  • 可选的 .owasp-overrides.yaml 用于特定评估的分类规则

步骤

  1. 识别发现来源:默认读取 engagement/findings/*.json[l] 下的所有文件,可通过 --source FILE(可重复)覆盖。

  2. 运行映射器:

python3 ./scripts/map_owasp.py engagements/acme-2026-q2/

选项:

Usage: map_owasp.py PATH [OPTIONS]

Options:
  --source FILE           Specific findings file (repeatable)
  --enrich-output FILE    Write annotated findings JSONL here
                          (default: PATH/findings/all-with-owasp.jsonl)
  --coverage-output FILE  Coverage report path
                          (default: PATH/reports/owasp-coverage.md)
  --overrides FILE        Optional rule-overrides YAML
  --output FILE           Operational findings output
  --format FMT            json | jsonl | markdown (default: markdown)
  --min-severity SEV      default info
  1. 审查未映射的发现:UNMAPPED 以 INFO 呈现。检查是否存在 CWE;若存在,CWE 到 OWASP 的映射本应捕获,需扩展规则表。检查发现来源技能 ID 是否在规则表中;若否,添加技能级默认值。若确实不适配单一 A0X 类别,接受 UNMAPPED 并在评估备注中记录。

  2. 阅读覆盖率报告:报告列出每个 A0X 类别的发现数量、类别内严重性分布、具体发现指针。对于广泛覆盖测试的评估,十个类别应各至少有一条记录。零发现的类别要么反映范围("我们未测试此项"),要么反映清洁结果("我们测试了但未发现")。

输出

  • 增强发现 JSONL(--enrich-output):每条发现新增 owasp_category 字段。
  • 覆盖率报告 Markdown(--coverage-output):按类别汇总。

每条操作发现包含:id(owasp::<issue>::<finding-fingerprint>)、severity(多为 INFO;解析错误为 HIGH)、category(owasp-mapping)、summary(发现发生了什么)、evidence(原始发现指纹、推导的 OWASP 类别、匹配的规则)。

技能产生的发现

发现 严重性 阈值 受影响控制
规则应用后未映射的发现 INFO 无规则匹配该发现 (操作)
源 JSONL 无法解析 HIGH 标准 JSONL 解析错误 (操作)
标注成功写回 INFO 每个源文件的确认 (信息)
覆盖率报告已生成 INFO 输出覆盖率报告路径 (信息)
评估覆盖全部 10 个类别 INFO A01-A10 每个桶至少一条发现 (正面观察)
评估覆盖少于 10 个类别中的 5 个 MEDIUM 提示范围可能过窄 (信息)

OWASP Top 10(2021)参考

类别 描述
A01:2021 Broken Access Control
A02:2021 Cryptographic Failures
A03:2021 Injection
A04:2021 Insecure Design
A05:2021 Security Misconfiguration
A06:2021 Vulnerable and Outdated Components
A07:2021 Identification and Authentication Failures
A08:2021 Software and Data Integrity Failures
A09:2021 Security Logging and Monitoring Failures
A10:2021 Server-Side Request Forgery

示例

示例 1——评估结束时增强:

python3 ./scripts/map_owasp.py engagements/acme-2026-q2/

生成 engagements/acme-2026-q2/findings/all-with-owasp.jsonl(增强发现)和 engagements/acme-2026-q2/reports/owasp-coverage.md(覆盖率报告)。

示例 2——应用评估特定覆盖:

# .owasp-overrides.yaml — engagement-specific classifications
- skill_id: auditing-cors-policy
  owasp_category: A05:2021 — Security Misconfiguration
  reason: customer treats CORS as misconfig, not access-control
- skill_id: scanning-for-hardcoded-secrets
  detail_contains: ".env"
  owasp_category: A02:2021 — Cryptographic Failures
  reason: env-file leaks treated as crypto failure for this engagement
python3 ./scripts/map_owasp.py engagements/acme-2026-q2/ \
    --overrides engagements/acme-2026-q2/.owasp-overrides.yaml

示例 3——覆盖率审计(不写回增强):

python3 ./scripts/map_owasp.py engagements/acme-2026-q2/ \
    --enrich-output /dev/null \
    --coverage-output /tmp/coverage.md

生成覆盖率报告而不修改发现文件。

错误处理

  • PATH 缺失 → CRITICAL 操作发现,退出码 1。
  • 源文件无法解析 → HIGH 操作发现,跳过该文件。
  • 未找到来源 → HIGH 操作发现,退出码 1。
  • 覆盖 YAML 无法解析 → HIGH 操作发现,回退到默认规则。
  • 增强输出路径不可写 → HIGH 操作发现,退出码 1。

资源

  • references/THEORY.md——OWASP Top 10 历史及 2021 年变更、CWE 到 OWASP 映射、规则表设计原理、发现确实不适配时的处理、OWASP A0X 精度权衡(宽类别与具体发现)
  • references/PLAYBOOK.md——cluster 1-4 技能的默认规则表、覆盖 YAML 格式、覆盖率审计解读、客户特定类别偏好、与 PCI DSS 6.5 / NIST 800-53 控制映射的集成

适用场景和限制

适用于需要将渗透测试发现结构化映射到 OWASP Top 10 的安全评估场景,尤其是报告、审计与保险合规用途。使用要求 Python 3.9+,输入为 cluster 1-4 的发现文件。该技能依赖确定性规则表,未映射的发现需人工复核。部分发现可能天然不适配单一类别。详细信息以参考文档为准;资料未提供平台的收费、价格或具体平台信息。