mcpField
F
fix-security-vulnerabilities-with-strix

fix-security-vulnerabilities-with-strix

github.com/usestrix安全72.6k16.4k 次安装今天更新
代码仓库

关于 fix-security-vulnerabilities-with-strix

本技能用于分诊 Strix 安全发现、修复根因并通过重新扫描验证,适合处理 OSS 命令行工具或 Strix Cloud 结果的开发者。

主要功能

  1. 01读取命令行产物或云端发现
  2. 02按严重程度安排修复顺序
  3. 03依据 PoC 步骤复现问题
  4. 04针对根因实施最小修复
  5. 05通过重新扫描和测试验证更改

适用场景

  1. 01修复代码库中已验证的漏洞
  2. 02查看云端发现并更新其状态
  3. 03确认修复后 PoC 不再复现
  4. 04检查修复是否影响项目功能

安装

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

$npx skills add https://github.com/usestrix/strix --skill fix-security-vulnerabilities-with-strix

安装后在 Claude Code 中输入/fix-security-vulnerabilities-with-strix确认已加载。

详细介绍

修复 Strix 发现的问题并验证

将已验证的 Strix 发现转化为精简、正确的修复,并通过重新扫描证明修复有效。

1. 分类处理

从扫描运行的位置获取发现的问题:

  • OSS CLI — strix_runs/<run-name>/ 中的产物:
    • vulnerabilities/*.md — 每个文件包含一个发现的问题:描述、严重性、PoC 步骤或脚本、受影响的代码位置以及修复建议。
    • vulnerabilities.json — 相同发现问题的 JSON 格式数据(ID、严重性、CWE/CVE、code_locations,以及可用时的 fix_before/fix_after 建议)。
  • Cloud(app.strix.ai) — 使用 CLI 拉取发现的问题:strix cloud vulns list --scan-id <scan-id> --json(或 strix cloud scans get <scan-id> --json | jq '.vulnerabilities',或在整个组织范围内执行 strix cloud vulns list --severity critical)。每条发现都包含 severity, cwe, endpoint, method, impact, technical_analysis, poc_description, poc_script_code;对于代码问题,还包含 code_file/code_diff/code_before/code_after。验证修复后,使用 strix cloud vulns update <id> --status fixed 标记。有关 strix cloud login 和作用域,请参阅 managed-pentesting-with-strix 技能。

按严重性安排处理顺序:critical → high → medium → low。Strix 的每项发现都已通过可运行的概念验证(PoC)验证,因此,未经自行重新测试 PoC,不要将发现判定为误报。

2. 修复

针对每项发现:

  1. 可行时,使用发现文件中的 PoC 复现问题。
  2. 修复根本原因,而非针对特定载荷修补(对每个查询进行参数化,而不是屏蔽某个字符串;在处理程序中强制执行授权,而不是隐藏端点)。
  3. 优先使用框架内置的防护措施(ORM 参数化、模板自动转义、CSRF 中间件、集中式授权),而不是临时拼凑的净化逻辑。
  4. 保持差异最小,并沿用仓库已有模式。发现文件通常包含 fix_before/fix_after 代码片段,可将其作为起点,但不要照搬。

常见发现类型及预期修复:注入 → 在数据接收点进行参数化/转义;IDOR/访问控制失效 → 执行对象级授权检查;SSRF → 使用允许列表并阻止内部网段;XSS → 使用与上下文相关的输出编码 + CSP;密钥泄露 → 轮换密钥并将其从代码/历史记录中移除;身份验证问题 → 修复服务端检查(绝不要只在客户端修复)。

3. 重新运行 Strix 进行验证

修复后,针对已修复的区域重新扫描,并确认该问题已消失。在扫描所用的环境中验证(也可以在两个环境中都验证):

OSS CLI:

# Re-test just the changed files (fast). Resolve the repo's real default
# branch instead of assuming origin/main (many repos use master/develop).
# Avoid the current branch's own upstream as the base — its merge base with
# HEAD would be HEAD, giving an empty diff and a falsely clean result.
DIFF_BASE=$(git symbolic-ref --quiet --short refs/remotes/origin/HEAD 2>/dev/null)
# origin/HEAD can be a dangling symbolic ref — keep it only if its target exists.
git rev-parse --verify --quiet "$DIFF_BASE" >/dev/null 2>&1 || DIFF_BASE=""
if [ -z "$DIFF_BASE" ]; then
  for b in origin/main origin/master origin/develop; do
    git rev-parse --verify --quiet "$b" >/dev/null && DIFF_BASE="$b" && break
  done
fi
# No silent fallback: a guess like HEAD~1 would cover only the last commit of a
# multi-commit fix branch. If no base resolves, ask the user for the base branch
# (or use the focused --instruction verification below, which needs no diff base).
[ -n "$DIFF_BASE" ] || { echo "Set DIFF_BASE to the branch your fix will merge into." >&2; exit 1; }
strix -n -t ./ --scan-mode quick --scope-mode diff --diff-base "$DIFF_BASE" --max-budget 5

# Or re-test with the original finding as focus (no diff base needed)
strix -n -t ./ --instruction "Verify the SQL injection in app/api/search.py is fixed. Original PoC: <poc>" --max-budget 5

退出代码:2 = 仍有发现的问题(阅读新的 strix_runs/<run>/vulnerabilities/ 并继续修复);0 = 对已分析内容未发现问题。信任 0 之前,请确认运行未提前结束——检查 run.json 中的状态是否为已完成,并将 llm_usage.cost 与 --max-budget 进行比较:硬性预算限制会导致 status: "stopped",而在预算警告下结束的运行会记录为 "completed",但覆盖范围不完整。确保验证有足够预算以完成,并优先重新运行特定 PoC,将其作为实际判定依据。

**Cloud:**使用相同配置重新扫描并再次轮询,然后确认该问题不再出现:

new_id=$(curl -sS "$BASE/scans/$scan_id/rerun" "${auth[@]}" -X POST | jq -r .scan_id)
# poll GET /scans/$new_id until completed, then check its vulnerabilities[]

或者,如果 Cloud 扫描来自仓库/PR,则在修复分支上触发新的 PR 审查(POST /pr-reviews/start)。平台也可以直接重新测试单项发现:POST /api/v1/vulnerabilities/{vulnerabilityId}/retest。

  • 如果 PoC 是简单的请求/脚本,也要手动重新运行——这是最快的验证方式。
  • 运行项目自己的测试套件,确保修复没有破坏功能。

4. 报告

按发现的问题逐项总结:严重性、根本原因、采取的修复(文件:行号)、验证结果(重新扫描未发现问题 / PoC 无法再复现)。报告中绝不要包含仍有效的密钥;如果密钥已泄露,请说明需要轮换。

评论

支持 Markdown