关于 testing-security
面向代码库和 Web 应用安全审查的测试技能,整合动态、静态、依赖项与密钥扫描,适用于 CI/CD、部署前检查和定期审计。
主要功能
- 01使用 OWASP ZAP 和 Nuclei 执行动态扫描
- 02使用 Semgrep 和 Bandit 执行静态分析
- 03使用 Snyk 和 Trivy 扫描依赖项与容器
- 04检测文件及 Git 历史中的密钥
- 05在脚本工作流中组合扫描工具
适用场景
- 01检查拉取请求中的代码问题和泄露密钥
- 02部署前扫描预发布 Web 应用
- 03审计依赖项和容器镜像中的漏洞
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill testing-security安装后在 Claude Code 中输入/testing-security确认已加载。
详细介绍
测试安全性
用途
此技能通过集成 DAST 工具(OWASP ZAP、Nuclei)、SAST 工具(Semgrep、Bandit)、SCA 工具(Snyk、Trivy)和密钥扫描器(detect-secrets、TruffleHog),自动执行安全测试,以识别代码、应用和密钥中的漏洞。
何时使用
在 CI/CD 流水线中、部署前或定期审计时使用此技能;它适用于包含 Web 应用、API,或使用 Python、Java、JavaScript 等语言的代码库的项目,因为这些项目中的安全缺陷可能导致数据泄露。
主要功能
- DAST:运行 OWASP ZAP 对 Web 应用进行主动扫描,检测 XSS 或 SQLi 等问题;使用 Nuclei 自定义漏洞模板。
- SAST:运行 Semgrep 进行基于模式的代码分析(例如 YAML 规则集),或使用 Bandit 检测 Python 特有的缺陷,例如不安全的导入。
- SCA:通过 SBOM 分析,使用 Snyk 扫描依赖项中的已知 CVE;使用 Trivy 及其漏洞数据库扫描容器镜像。
- 密钥检测:使用 detect-secrets 扫描文件,查找 API 密钥等模式;使用 TruffleHog 扫描 Git 历史记录,查找暴露的密钥。
- 集成:在单个工作流中组合使用这些工具,例如,对代码变更运行 SAST,并对预发布环境运行 DAST。
使用模式
始终通过环境变量配置工具的身份验证(例如,OWASP ZAP 使用 $ZAP_API_KEY,Snyk 使用 $SNYK_TOKEN)。在新项目上先进行基线扫描,然后通过脚本实现自动化。
- 模式 1:对于 CI/CD,在拉取请求上触发 SAST,在构建时触发 DAST;示例:使用 GitHub Actions 对差异文件运行 Semgrep。
- 模式 2:对于本地测试,依次运行工具——先对 Docker 镜像运行 Trivy,再对 URL 运行 Nuclei。
- 示例 1:对 Python 仓库进行 SAST 和密钥扫描:安装工具,对文件运行 Bandit,然后运行 detect-secrets;将结果输出到 JSON 报告,以便解析。
- 示例 2:对 Web 应用执行 DAST:以守护进程模式启动 OWASP ZAP,使用
zap-cli扫描 URL,然后运行 Nuclei 检测特定漏洞利用。
常用命令/API
在脚本或终端中使用以下确切命令;确保已安装依赖项(例如通过 pip 或 Docker 安装)。
- OWASP ZAP(DAST):使用
zap.sh -daemon -port 8080启动,然后通过zap-cli -p 8080 quick-scan --spider https://target.com --report html扫描。API 端点:使用$ZAP_API_KEY向/JSON/core/action/newSession/发送 POST 请求。 - Nuclei(DAST):运行
nuclei -t templates/ -u https://target.com -o results.txt;使用nuclei-config.yaml等配置文件设置严重级别。 - Semgrep(SAST):执行
semgrep --config p/default --lang python .;使用.semgrep.yml文件自定义:rules: - id: no-os-system patterns: - pattern: os.system(...)。 - Bandit(SAST):命令:
bandit -r /path/to/code -f json;使用-x tests/忽略路径。 - Snyk(SCA):使用
$SNYK_TOKEN进行身份验证,然后运行snyk test --file=requirements.txt;API:通过 GET 请求访问https://snyk.io/api/v1/org/{orgId}/projects,获取项目列表。 - Trivy(SCA):扫描镜像:
trivy image myimage:latest --exit-code 1 --severity CRITICAL;通过.trivy.yaml配置,设置ignoreUnfixed: true。 - detect-secrets(密钥):运行
detect-secrets scan > .secrets.baseline;与 Git 钩子配合使用:detect-secrets hook --baseline .secrets.baseline。 - TruffleHog(密钥):命令:
trufflehog git https://github.com/repo --since-commit HEAD~1;使用--regex按模式筛选。
集成说明
通过脚本或 Jenkins、GitHub Actions 等编排工具进行集成;将输出作为 JSON 传递,以便串联执行。对于身份验证,设置 $TRIVY_USERNAME 和 $TRIVY_PASSWORD 等环境变量。使用 Docker 镜像(例如 owasp/zap2docker-stable)进行隔离运行。配置格式:Semgrep 规则使用 YAML(例如 { patterns: [pattern: "regex"] }),Snyk 报告使用 JSON。确保固定工具版本(例如 Semgrep v0.100.0),以避免不兼容变更。
错误处理
每条命令执行后都要检查退出代码(例如,Semgrep 发现问题时会返回非零值);从标准输出中解析错误,例如 OWASP ZAP 的 JSON 响应中的 "error" 键。常见问题:DAST 中的网络错误——使用 zap-cli --retries 3 重试;身份验证失败——检查环境变量(例如,如果 $SNYK_TOKEN 无效,输出 "Auth error")。将所有输出记录到文件,并在脚本中使用 try-catch 处理,例如,在 Bash 中:zap-cli quick-scan || echo "Scan failed: $?" >> error.log。对于 API 调用,请检查 HTTP 状态码(例如,未授权时返回 401)。
图关系
- 相关内容:"testing" 集群(例如,链接到 unit-testing 或 integration-testing 技能,以实现组合工作流)。
- 依赖项:用于 DAST 的 OWASP ZAP、用于 SAST 的 Semgrep。
- 集成项:用于 SCA 的 Snyk API、用于版本控制系统中密钥检测的 TruffleHog。