mcpField
S
security-scanner

security-scanner

github.com/wyattowalsh安全549 次安装8 周前更新
代码仓库

关于 security-scanner

用于部署前安全评估的只读技能,结合静态代码模式扫描、密钥检测、依赖审查和合规启发式检查。它将发现映射到 CWE 和 OWASP,并按严重程度提供修复建议。

主要功能

  1. 01静态代码安全模式扫描
  2. 02检测源代码中的密钥
  3. 03分析依赖锁定文件
  4. 04映射 CWE 与 OWASP 类别
  5. 05执行 SOC2、GDPR、HIPAA 启发式检查
  6. 06生成安全发现报告

适用场景

  1. 01部署前审计代码库
  2. 02排查提交代码中的凭据
  3. 03检查依赖版本和已知风险
  4. 04整理合规控制项的检查结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wyattowalsh/agents --skill security-scanner

安装后在 Claude Code 中输入/security-scanner确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

data/
cwe-common.json
owasp-top-10.json
secrets-patterns.json
evals/
compliance-mode.json
evals.json
explicit-scan.json
full-scan.json
implicit-trigger.json
negative-control.json
references/
compliance-checklists.md
cwe-patterns.md
dependency-audit.md
owasp-patterns.md
scope-boundary.md
secrets-guide.md
triage-protocol.md
scripts/
check.py
compliance-scorer.py
dependency-checker.py
sarif-formatter.py
secrets-detector.py
scripts/asset_toolkit/
__init__.py
_shared.py
common.py
package.py
validate_evals.py
validate_hooks.py
validate_skill.py
templates/
dashboard.html

详细介绍

安全扫描器

主动进行部署前安全评估。包括 SAST 模式匹配、密钥检测、依赖项扫描、OWASP/CWE 映射和合规性启发式检查。

**范围:**仅限部署前安全审计。不用于代码审查(请使用 review)、经授权的实时攻击性测试(请使用 pentest 并提供已签署的 ROE)、缺少静态审计背景的渗透测试、运行时安全监控或供应链深度分析。

规范术语

术语定义
finding一项独立的安全问题,包含严重性、CWE 映射、置信度和修复建议
severity根据与 CVSS 对齐的启发式规则划分的 CRITICAL / HIGH / MEDIUM / LOW / INFO 等级
confidence每项发现的 0.0-1.0 评分;>=0.7 时报告,0.3-0.7 时标记为潜在问题,<0.3 时舍弃
CWE将发现映射到已知弱点类别的通用弱点枚举标识符
OWASP开放式 Web 应用程序安全项目 Top 10 类别映射
SAST静态应用程序安全测试——基于模式的源代码分析
secret在源代码中检测到的硬编码凭据、API 密钥、令牌或私钥
lockfile包含固定版本的依赖项清单(package-lock.json、uv.lock 等)
compliance根据 SOC2/GDPR/HIPAA 控制项进行轻量级启发式评分
triage在深度扫描前,根据安全相关性对文件进行风险分级
remediation具体的修复指导,适用时附带代码示例
SARIF用于 CI 集成的静态分析结果交换格式
false positive检测结果匹配某种模式,但并非实际漏洞

调度

$ARGUMENTS模式操作
空—显示调度菜单和调用示例;不要开始扫描
scan [path]scan对路径进行完整安全扫描(默认为 cwd)
check <file/dir>check对指定文件进行定向安全检查
deps [path]deps依赖项锁定文件分析
secrets [path]secrets仅使用正则表达式扫描密钥
compliance <standard>complianceSOC2/GDPR/HIPAA 启发式检查清单
reportreport以仪表板形式可视化发现结果
无法识别的输入—请求澄清

空输入 / 帮助示例

当 $ARGUMENTS 为空时,显示上方的调度表和以下示例:

  • /security-scanner scan
  • /security-scanner check src/auth/
  • /security-scanner deps
  • /security-scanner secrets
  • /security-scanner compliance soc2
  • /security-scanner report

说明只有在用户选择模式(例如 scan)后才会运行完整扫描;空调用只显示菜单。

模式:scan

通过风险分级和抽样,对大型代码库进行完整安全评估。

步骤 1:风险分级
  1. 使用 find 或 Glob 枚举文件,建立文件清单
  2. 根据安全相关性将文件划分为 HIGH/MEDIUM/LOW 风险:
    • HIGH:身份验证、加密、支付、用户输入处理、API 端点、包含密钥的配置
    • MEDIUM:数据模型、中间件、涉及外部 I/O 的实用工具
    • LOW:静态资源、测试、文档、纯计算代码
  3. 文件数达到 100+ 时进行抽样:全部 HIGH、50% MEDIUM、10% LOW
  4. 构建 HIGH 风险文件的依赖关系图
步骤 2:SAST 模式扫描

读取 HIGH 级别文件以及抽样的 MEDIUM/LOW 级别文件。根据 references/owasp-patterns.md 中的模式进行匹配:

  • 注入漏洞(SQL、命令、路径遍历、模板、LDAP)
  • 身份验证 / 会话弱点
  • 敏感数据暴露(日志记录 PII、明文存储)
  • XXE、SSRF、反序列化
  • 安全配置错误
  • XSS(反射型、存储型、DOM 型)
  • 不安全的直接对象引用
  • 缺少访问控制
  • CSRF 漏洞
  • 使用存在已知漏洞的组件
步骤 3:密钥扫描

运行:uv run python scripts/secrets-detector.py <path> 解析 JSON 输出。将发现结果与 .gitignore 的覆盖范围进行交叉比对。

步骤 4:依赖项检查

如果存在锁定文件,请运行:uv run python scripts/dependency-checker.py <path> 解析 JSON 输出。标记过时或不再维护的依赖项。

步骤 5:CWE/OWASP 映射

使用 references/cwe-patterns.md,将每项发现映射到 CWE ID 和 OWASP Top 10 类别。 分配严重性(CRITICAL/HIGH/MEDIUM/LOW/INFO)和置信度(0.0-1.0)。

步骤 6:修复

对于置信度 >= 0.7 的每项发现,提供:

  • CWE 参考链接
  • 具体的修复指导
  • 适用时提供代码示例
步骤 7:报告

按严重性分组呈现发现。包括:

  • 执行摘要,列出各严重性级别的发现数量
  • 详细发现,包含 CWE、OWASP、证据和修复建议
  • 依赖项健康状况摘要(如果已扫描锁定文件)
  • 密钥摘要(按类型统计数量,不披露任何值)

模式:check

针对特定文件或目录进行定向安全检查。

  1. 读取指定文件
  2. 应用完整的 SAST 模式匹配(不进行分诊或抽样——扫描所有内容)
  3. 对该路径进行密钥检测
  4. 将发现映射到 CWE/OWASP
  5. 呈现发现及修复建议

模式:deps

依赖项锁定文件分析。

  1. 检测锁定文件:package-lock.json、yarn.lock、pnpm-lock.yaml、requirements.txt、uv.lock、Cargo.lock、go.sum、Gemfile.lock、composer.lock
  2. 运行:uv run python scripts/dependency-checker.py <path>
  3. 解析输出:依赖项名称、版本、生态系统
  4. 标记:过时的软件包、存在已知 CVE 模式的软件包、异常的版本固定
  5. 呈现依赖项健康状况报告

模式:secrets

仅使用正则表达式模式扫描密钥。

  1. 运行:uv run python scripts/secrets-detector.py <path>
  2. 解析 JSON 发现项
  3. 与 .gitignore 交叉检查——将已跟踪文件中的密钥标记为 CRITICAL
  4. 检查 Git 历史中此前提交的密钥:git log --diff-filter=D -p -- <file>
  5. 按密钥类型分组呈现发现,绝不披露实际值

模式:compliance

轻量级合规性启发式评分。

  1. 验证 <standard> 是否为以下之一:soc2、gdpr、hipaa
  2. 运行:uv run python scripts/compliance-scorer.py <path> --standard <standard>
  3. 阅读 references/compliance-checklists.md 中的参考检查清单
  4. 根据证据将每项控制评为 PASS/FAIL/PARTIAL
  5. 呈现合规性评分卡,包含总体百分比和未通过的控制项

模式:report

生成可视化安全仪表板。

  1. 收集当前会话中的所有发现(如果没有,则重新运行扫描)
  2. 将发现格式化为符合仪表板架构的 JSON
  3. 如有需要,转换为 SARIF:uv run python scripts/sarif-formatter.py
  4. 将 JSON 注入 templates/dashboard.html
  5. 复制到临时文件,并在浏览器中打开

扩展策略

范围策略
1-10 个文件直接扫描,不进行分诊
11-100 个文件分诊 + 按优先级扫描
100-500 个文件分诊 + 抽样(全部 HIGH、50% MEDIUM、10% LOW)
500 个以上文件分诊 + 抽样 + 按风险等级并行运行子 Agent

参考文件

每次只加载一个参考文件。不要将所有参考文件预加载到上下文中。

文件内容读取时机
references/owasp-patterns.mdOWASP Top 10,包含代码模式和检测启发式规则SAST 扫描期间(步骤 2)
references/cwe-patterns.mdTop 50 CWE,包含检测模式和修复方法CWE 映射期间(步骤 5)
references/secrets-guide.md密钥模式、误报提示和分类指导密钥扫描期间
references/dependency-audit.md依赖项审计协议和 CVE 查询工作流deps 模式期间
references/compliance-checklists.mdSOC2/GDPR/HIPAA 控制清单及评分合规模式期间
references/triage-protocol.md安全文件的风险分级方法分类期间(步骤 1)
references/scope-boundary.md与审查、渗透测试和运行时监控的范围边界范围不明确时
脚本运行时机
scripts/secrets-detector.py密钥扫描 — 基于正则表达式的检测
scripts/dependency-checker.py依赖项分析 — 解析锁文件
scripts/sarif-formatter.pySARIF 转换 — CI 集成输出
scripts/compliance-scorer.py合规评分 — 启发式清单
模板渲染时机
templates/dashboard.html扫描后 — 将发现项 JSON 注入 data 标签

关键规则

  1. 切勿在输出中暴露实际密钥值 — 仅显示类型、文件和行号
  2. 每项发现都必须至少映射到一个 CWE ID
  3. 置信度 < 0.3 = 丢弃;0.3-0.7 = 标记为潜在问题;>= 0.7 = 报告
  4. 报告前运行 secrets-detector.py — 正则表达式模式可捕获 LLM 扫描遗漏的问题
  5. 不要报告需要不可能条件才会出现的虚构漏洞
  6. 对于 100 个以上的文件,扫描前务必先分类 — 切勿对整个代码库进行蛮力扫描
  7. 依赖项发现必须有版本证据 — 未核实实际版本时切勿标记
  8. 合规模式仅为启发式评估 — 在输出中明确说明,切勿声称已获认证
  9. 先呈现发现项,再提出修复建议 — 始终设置审批关卡
  10. 与 .gitignore 交叉核对 — 未跟踪文件中的密钥标记为 INFO,已跟踪文件中的密钥标记为 CRITICAL
  11. 每次只加载一个参考文件 — 不要将所有参考文件预加载到上下文中
  12. 此技能仅用于部署前审计 — 代码审查请求转交审查流程,拒绝渗透测试请求
  13. SARIF 输出必须符合 SARIF v2.1 架构 — 使用 sarif-formatter.py 验证
  14. 切勿修改源文件 — 此技能仅进行只读分析

评论

支持 Markdown