用途:把 Strix 已验证的漏洞发现转化为最小且正确的修复,并通过重新扫描证明修复有效。
主要能力与流程:
- 分诊:从扫描产物获取发现。开源 CLI 产物位于 strix_runs/<run-name>/,含 vulnerabilities/*.md(每个文件一条发现,含描述、严重程度、PoC 步骤或脚本、受影响代码位置、修复建议)与 vulnerabilities.json(含 id、严重程度、CWE/CVE、code_locations 及 fix_before/fix_after 建议)。云端通过 GET /api/v1/scans/{scanId} 获取 vulnerabilities[],或 GET /api/v1/vulnerabilities 获取组织范围结果,字段含 severity、cwe、endpoint、method、impact、technical_analysis、poc_description、poc_script_code 及代码发现的 code_file/code_diff/code_before/code_after;认证见 strix-cloud-api 技能。按 critical → high → medium → low 排序处理。每条发现都经过可用的 PoC 验证,未自行复测前不应视为误报。
- 修复:尽量用发现中的 PoC 复现;修复根因而非特定载荷(如参数化所有查询而非屏蔽某个字符串,在处理器中强制授权而非隐藏端点);优先使用框架内置防御(ORM 参数化、模板自动转义、CSRF 中间件、集中式授权);保持 diff 最小并沿用仓库既有模式;fix_before/fix_after 片段仅作起点。常见类别对应修复:注入→在汇聚点参数化/转义;IDOR/访问控制缺陷→对象级授权检查;SSRF→允许列表并屏蔽内网网段;XSS→上下文感知输出编码加 CSP;密钥泄露→轮换密钥并从代码与历史中移除;认证问题→修复服务端检查,绝不依赖客户端。
- 重新运行 Strix 验证:修复后对修复区域重新扫描确认发现消失。CLI 可用 diff 范围快速复测,需先解析真实默认分支(避免用当前分支自身 upstream 导致空 diff 的假干净结果),示例:DIFF_BASE=$(git symbolic-ref --quiet --short refs/remotes/origin/HEAD 2>/dev/null),再依次回退 origin/main、origin/master、origin/develop,无法解析时要求用户指定基线;随后执行 strix -n -t ./ --scan-mode quick --scope-mode diff --diff-base "$DIFF_BASE" --max-budget 5。也可用原始发现作为焦点复测: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" 但覆盖不完整。云端可重跑同一配置并轮询,确认发现不再出现:new_id=$(curl -sS "$BASE/scans/$scan_id/rerun" "${auth[@]}" -X POST | jq -r .scan_id),再轮询 GET /scans/$new_id 至 completed 并检查 vulnerabilities[];若云端扫描来自仓库/PR,可在修复分支触发新的 PR 审查(POST /pr-reviews/start);平台也支持单条发现重测:POST /api/v1/vulnerabilities/{vulnerabilityId}/retest。简单请求或脚本可直接手动重跑 PoC,信号最快。同时运行项目自身测试套件,确认修复未破坏行为。
- 报告:按发现汇总严重程度、根因、所应用修复(file:line)、验证结果(重扫干净/PoC 不再复现)。报告中不得包含真实密钥;若密钥已泄露,须说明需要轮换。
适用场景:在 Strix 渗透测试后需要分诊、修复并验证漏洞的开发者与安全工程流程。
限制:具体认证方式、云端 API 细节与预算行为以官方资料为准;本技能不替代人工判断,未复测不应判定误报。