用途:处理 Jira 中针对 openshift-lightspeed/lightspeed-service-api-rhel9 的 CVE 漏洞工单。用户提供 Jira key(如 OLS-789)或链接;未指定时按当前 sprint 搜索待办漏洞工单,仅处理摘要含该组件的工单。
主要能力与流程:
- 读取漏洞:通过 getJiraIssue 获取工单(responseContentFormat: "markdown"),从 summary 解析 CVE ID,从描述的 Flaw 段解析受影响包、受影响版本范围、修复引用;用 WebSearch 在 NVD 查询 CVSS 严重级别。
- 影响评估:在 pyproject.toml 与 uv.lock 中查找该包(不区分大小写),确认直接依赖还是经 uv.lock 中的传递依赖引入;比对 uv.lock 中安装版本与受影响范围;必要时搜索代码库确认受影响 API 是否被调用。
- 展示评估并设 gate:输出包名、受影响版本、安装版本、是否直接依赖与结论(NOT AFFECTED / AFFECTED—bump needed / AFFECTED—code change needed);必须等待用户明确确认后才能继续。
- 处置:
- 不受影响:用 addCommentToJiraIssue 添加说明,调用 getTransitionsForJiraIssue 找 Done/Closed 转换,再 transitionJiraIssue 并设 resolution "Won't Do"。
- 需升级依赖:按 deps-update 技能仅升级该包(使用 --upgrade-package,不用 --upgrade),运行验证门并提 PR;确认新版本已脱离受影响范围,若上游仍无修复则停止并告知用户。
- 需改代码(少见):先与用户确认方案,做针对性修复并写/更新测试,运行 make verify && make check-types && make test-unit。
- 报告:汇总结论、Jira 操作、变更文件及提交信息,例如 fix: resolve {CVE-ID} — bump {package} to {version}。
限制:任何处置都需用户确认;Paths B/C 的 Jira 转换状态需询问用户;变更最小化并逐一验证。若工单缺少 CVE ID 或受影响包不明确,需请用户澄清。若使用 Jira MCP 且 cloudId 未知,调用 getAccessibleAtlassianResources 发现或询问用户。