mcpField
T
testing-security

testing-security

github.com/alphaonedev安全42 次安装
代码仓库

关于 testing-security

面向代码库和 Web 应用安全审查的测试技能,整合动态、静态、依赖项与密钥扫描,适用于 CI/CD、部署前检查和定期审计。

主要功能

  1. 01使用 OWASP ZAP 和 Nuclei 执行动态扫描
  2. 02使用 Semgrep 和 Bandit 执行静态分析
  3. 03使用 Snyk 和 Trivy 扫描依赖项与容器
  4. 04检测文件及 Git 历史中的密钥
  5. 05在脚本工作流中组合扫描工具

适用场景

  1. 01检查拉取请求中的代码问题和泄露密钥
  2. 02部署前扫描预发布 Web 应用
  3. 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。

评论

支持 Markdown