关于 security-scanner
用于部署前安全评估的只读技能,结合静态代码模式扫描、密钥检测、依赖审查和合规启发式检查。它将发现映射到 CWE 和 OWASP,并按严重程度提供修复建议。
主要功能
- 01静态代码安全模式扫描
- 02检测源代码中的密钥
- 03分析依赖锁定文件
- 04映射 CWE 与 OWASP 类别
- 05执行 SOC2、GDPR、HIPAA 启发式检查
- 06生成安全发现报告
适用场景
- 01部署前审计代码库
- 02排查提交代码中的凭据
- 03检查依赖版本和已知风险
- 04整理合规控制项的检查结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wyattowalsh/ agents --skill security-scanner安装后在 Claude Code 中输入/security-scanner确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
data/cwe-common.jsonowasp-top-10.jsonsecrets-patterns.jsonevals/compliance-mode.jsonevals.jsonexplicit-scan.jsonfull-scan.jsonimplicit-trigger.jsonnegative-control.jsonreferences/compliance-checklists.mdcwe-patterns.mddependency-audit.mdowasp-patterns.mdscope-boundary.mdsecrets-guide.mdtriage-protocol.mdscripts/check.pycompliance-scorer.pydependency-checker.pysarif-formatter.pysecrets-detector.pyscripts/asset_toolkit/__init__.py_shared.pycommon.pypackage.pyvalidate_evals.pyvalidate_hooks.pyvalidate_skill.pytemplates/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> | compliance | SOC2/GDPR/HIPAA 启发式检查清单 |
report | report | 以仪表板形式可视化发现结果 |
| 无法识别的输入 | — | 请求澄清 |
空输入 / 帮助示例
当 $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:风险分级
- 使用
find或 Glob 枚举文件,建立文件清单 - 根据安全相关性将文件划分为 HIGH/MEDIUM/LOW 风险:
- HIGH:身份验证、加密、支付、用户输入处理、API 端点、包含密钥的配置
- MEDIUM:数据模型、中间件、涉及外部 I/O 的实用工具
- LOW:静态资源、测试、文档、纯计算代码
- 文件数达到 100+ 时进行抽样:全部 HIGH、50% MEDIUM、10% LOW
- 构建 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
针对特定文件或目录进行定向安全检查。
- 读取指定文件
- 应用完整的 SAST 模式匹配(不进行分诊或抽样——扫描所有内容)
- 对该路径进行密钥检测
- 将发现映射到 CWE/OWASP
- 呈现发现及修复建议
模式:deps
依赖项锁定文件分析。
- 检测锁定文件:
package-lock.json、yarn.lock、pnpm-lock.yaml、requirements.txt、uv.lock、Cargo.lock、go.sum、Gemfile.lock、composer.lock - 运行:
uv run python scripts/dependency-checker.py <path> - 解析输出:依赖项名称、版本、生态系统
- 标记:过时的软件包、存在已知 CVE 模式的软件包、异常的版本固定
- 呈现依赖项健康状况报告
模式:secrets
仅使用正则表达式模式扫描密钥。
- 运行:
uv run python scripts/secrets-detector.py <path> - 解析 JSON 发现项
- 与
.gitignore交叉检查——将已跟踪文件中的密钥标记为 CRITICAL - 检查 Git 历史中此前提交的密钥:
git log --diff-filter=D -p -- <file> - 按密钥类型分组呈现发现,绝不披露实际值
模式:compliance
轻量级合规性启发式评分。
- 验证
<standard>是否为以下之一:soc2、gdpr、hipaa - 运行:
uv run python scripts/compliance-scorer.py <path> --standard <standard> - 阅读
references/compliance-checklists.md中的参考检查清单 - 根据证据将每项控制评为 PASS/FAIL/PARTIAL
- 呈现合规性评分卡,包含总体百分比和未通过的控制项
模式:report
生成可视化安全仪表板。
- 收集当前会话中的所有发现(如果没有,则重新运行扫描)
- 将发现格式化为符合仪表板架构的 JSON
- 如有需要,转换为 SARIF:
uv run python scripts/sarif-formatter.py - 将 JSON 注入
templates/dashboard.html - 复制到临时文件,并在浏览器中打开
扩展策略
| 范围 | 策略 |
|---|---|
| 1-10 个文件 | 直接扫描,不进行分诊 |
| 11-100 个文件 | 分诊 + 按优先级扫描 |
| 100-500 个文件 | 分诊 + 抽样(全部 HIGH、50% MEDIUM、10% LOW) |
| 500 个以上文件 | 分诊 + 抽样 + 按风险等级并行运行子 Agent |
参考文件
每次只加载一个参考文件。不要将所有参考文件预加载到上下文中。
| 文件 | 内容 | 读取时机 |
|---|---|---|
| references/owasp-patterns.md | OWASP Top 10,包含代码模式和检测启发式规则 | SAST 扫描期间(步骤 2) |
| references/cwe-patterns.md | Top 50 CWE,包含检测模式和修复方法 | CWE 映射期间(步骤 5) |
| references/secrets-guide.md | 密钥模式、误报提示和分类指导 | 密钥扫描期间 |
| references/dependency-audit.md | 依赖项审计协议和 CVE 查询工作流 | deps 模式期间 |
| references/compliance-checklists.md | SOC2/GDPR/HIPAA 控制清单及评分 | 合规模式期间 |
| references/triage-protocol.md | 安全文件的风险分级方法 | 分类期间(步骤 1) |
| references/scope-boundary.md | 与审查、渗透测试和运行时监控的范围边界 | 范围不明确时 |
| 脚本 | 运行时机 |
|---|---|
| scripts/secrets-detector.py | 密钥扫描 — 基于正则表达式的检测 |
| scripts/dependency-checker.py | 依赖项分析 — 解析锁文件 |
| scripts/sarif-formatter.py | SARIF 转换 — CI 集成输出 |
| scripts/compliance-scorer.py | 合规评分 — 启发式清单 |
| 模板 | 渲染时机 |
|---|---|
| templates/dashboard.html | 扫描后 — 将发现项 JSON 注入 data 标签 |
关键规则
- 切勿在输出中暴露实际密钥值 — 仅显示类型、文件和行号
- 每项发现都必须至少映射到一个 CWE ID
- 置信度 < 0.3 = 丢弃;0.3-0.7 = 标记为潜在问题;>= 0.7 = 报告
- 报告前运行 secrets-detector.py — 正则表达式模式可捕获 LLM 扫描遗漏的问题
- 不要报告需要不可能条件才会出现的虚构漏洞
- 对于 100 个以上的文件,扫描前务必先分类 — 切勿对整个代码库进行蛮力扫描
- 依赖项发现必须有版本证据 — 未核实实际版本时切勿标记
- 合规模式仅为启发式评估 — 在输出中明确说明,切勿声称已获认证
- 先呈现发现项,再提出修复建议 — 始终设置审批关卡
- 与 .gitignore 交叉核对 — 未跟踪文件中的密钥标记为 INFO,已跟踪文件中的密钥标记为 CRITICAL
- 每次只加载一个参考文件 — 不要将所有参考文件预加载到上下文中
- 此技能仅用于部署前审计 — 代码审查请求转交审查流程,拒绝渗透测试请求
- SARIF 输出必须符合 SARIF v2.1 架构 — 使用 sarif-formatter.py 验证
- 切勿修改源文件 — 此技能仅进行只读分析