Skip to content

Commit f43548a

Browse files
committed
Merge branch '3.6.x'
2 parents 2f6c643 + 0d341fc commit f43548a

File tree

23 files changed

+1219
-191
lines changed

23 files changed

+1219
-191
lines changed

.ai-workspace/.gitkeep

Lines changed: 0 additions & 3 deletions
This file was deleted.

.claude/commands/analyze-issue.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ gh issue view <issue-number> --json number,title,body,labels
9595
9696
**下一步**:
9797
审查需求分析后,使用以下命令设计技术方案:
98-
/plan {task-id}
98+
/plan-task {task-id}
9999
```
100100

101101
## 参数说明
@@ -130,7 +130,7 @@ gh issue view <issue-number> --json number,title,body,labels
130130

131131
## 相关命令
132132

133-
- `/plan <task-id>` - 设计技术方案
133+
- `/plan-task <task-id>` - 设计技术方案
134134
- `/task-status <task-id>` - 查看任务状态
135135

136136
## 错误处理
Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
---
2+
name: "analyze-security"
3+
description: "分析 Dependabot 安全告警并创建修复任务"
4+
usage: "/analyze-security <alert-number>"
5+
---
6+
7+
# Analyze Security Command
8+
9+
## 功能说明
10+
11+
分析指定的 Dependabot 安全告警,评估安全风险并创建修复任务,输出安全分析文档到 `.ai-workspace/context/` 目录。
12+
13+
## 执行流程
14+
15+
### 1. 获取安全告警信息
16+
17+
```bash
18+
gh api repos/{owner}/{repo}/dependabot/alerts/<alert-number>
19+
```
20+
21+
提取关键信息:
22+
- `number`: 告警编号
23+
- `state`: 状态(open/dismissed/fixed)
24+
- `security_advisory`: 安全公告详情
25+
- `ghsa_id`: GHSA ID
26+
- `cve_id`: CVE ID(如果有)
27+
- `severity`: 严重程度(critical/high/medium/low)
28+
- `summary`: 漏洞摘要
29+
- `description`: 详细描述
30+
- `vulnerabilities`: 受影响的版本范围
31+
- `dependency`: 受影响的依赖
32+
- `package.name`: 包名
33+
- `package.ecosystem`: 生态系统(maven/pip/npm等)
34+
- `manifest_path`: 依赖文件路径
35+
- `security_vulnerability.first_patched_version`: 首个修复版本
36+
- `security_vulnerability.vulnerable_version_range`: 受影响版本范围
37+
38+
### 2. 创建任务文件
39+
40+
检查是否已存在该安全告警的任务:
41+
-`.ai-workspace/tasks/active/` 中搜索相关任务
42+
- 如果找到,询问是否重新分析
43+
- 如果没有,使用 `.ai-agents/templates/task.md` 模板创建新任务
44+
45+
任务文件命名:`TASK-{yyyyMMdd-HHmmss}.md`
46+
47+
任务元数据需包含:
48+
```yaml
49+
security_alert_number: <alert-number>
50+
severity: <critical/high/medium/low>
51+
cve_id: <CVE-ID> # 如果有
52+
ghsa_id: <GHSA-ID>
53+
```
54+
55+
### 3. 分析受影响范围
56+
57+
**必须完成的分析**:
58+
- [ ] 识别受影响的依赖包和版本
59+
- [ ] 搜索项目中使用该依赖的所有位置(使用 Grep 工具)
60+
- [ ] 检查依赖文件(pom.xml, requirements.txt, package.json 等)
61+
- [ ] 分析是否直接使用了漏洞代码路径
62+
- [ ] 评估漏洞的实际影响(是否可被利用)
63+
- [ ] 识别依赖关系(直接依赖 vs 传递依赖)
64+
65+
### 4. 制定修复方案
66+
67+
根据漏洞严重程度和修复难度制定方案:
68+
69+
**优先方案**:
70+
1. **升级到安全版本**
71+
- 检查是否有修复版本
72+
- 评估升级的兼容性风险
73+
- 检查是否有破坏性变更
74+
75+
2. **替换依赖**(如果无法升级)
76+
- 寻找替代库
77+
- 评估迁移成本
78+
79+
3. **缓解措施**(临时方案)
80+
- 配置调整
81+
- 代码层面的防护
82+
- 网络隔离等
83+
84+
### 5. 输出分析文档
85+
86+
创建 `.ai-workspace/context/{task-id}/security-analysis.md`,必须包含以下章节:
87+
88+
```markdown
89+
# 安全告警分析报告
90+
91+
## 告警基本信息
92+
93+
- **告警编号**: #{alert-number}
94+
- **严重程度**: {critical/high/medium/low} 🔴/🟠/🟡/🟢
95+
- **GHSA ID**: {ghsa-id}
96+
- **CVE ID**: {cve-id}
97+
- **告警状态**: {open/dismissed/fixed}
98+
99+
## 漏洞详情
100+
101+
### 漏洞描述
102+
{详细描述漏洞的性质和攻击方式}
103+
104+
### 受影响的依赖
105+
- **包名**: {package-name}
106+
- **生态系统**: {maven/pip/npm/...}
107+
- **当前版本**: {current-version}
108+
- **受影响版本范围**: {vulnerable-range}
109+
- **首个修复版本**: {patched-version}
110+
111+
### 依赖文件位置
112+
- `{manifest-path}` - {说明}
113+
114+
## 影响范围评估
115+
116+
### 直接影响
117+
- {项目中使用该依赖的模块和文件}
118+
119+
### 漏洞可利用性分析
120+
- [ ] 是否直接使用了漏洞代码路径?
121+
- [ ] 是否有外部输入触发漏洞?
122+
- [ ] 当前配置是否暴露了漏洞?
123+
124+
**结论**: {高/中/低风险 - 说明理由}
125+
126+
## 修复方案
127+
128+
### 推荐方案: {方案名称}
129+
130+
**具体步骤**:
131+
1. {步骤1}
132+
2. {步骤2}
133+
...
134+
135+
**兼容性评估**:
136+
- {是否有破坏性变更}
137+
- {需要的代码调整}
138+
139+
**工作量预估**:
140+
- 复杂度: {高/中/低}
141+
- 预估时间: {时间}
142+
- 风险等级: {高/中/低}
143+
144+
### 备选方案(如果有)
145+
{其他可能的修复方案}
146+
147+
### 临时缓解措施(如果无法立即修复)
148+
{临时性的防护措施}
149+
150+
## 测试策略
151+
152+
- [ ] {测试项1}
153+
- [ ] {测试项2}
154+
- [ ] 验证漏洞已修复
155+
- [ ] 回归测试
156+
157+
## 参考链接
158+
159+
- GHSA Advisory: https://github.com/advisories/{ghsa-id}
160+
- CVE Details: https://cve.mitre.org/cgi-bin/cvename.cgi?name={cve-id}
161+
- {其他相关文档}
162+
```
163+
164+
### 6. 更新任务状态
165+
166+
更新 `.ai-workspace/tasks/active/{task-id}.md`:
167+
- `current_step`: security-analysis
168+
- `assigned_to`: claude
169+
- `updated_at`: {当前时间}
170+
- 标记 security-analysis.md 为已完成
171+
172+
### 7. 告知用户
173+
174+
输出格式:
175+
```
176+
🔒 安全告警 #{alert-number} 分析完成
177+
178+
**漏洞信息**:
179+
- 严重程度: {severity}
180+
- CVE/GHSA: {cve-id} / {ghsa-id}
181+
- 受影响包: {package-name}
182+
183+
**任务信息**:
184+
- 任务ID: {task-id}
185+
- 任务标题: {title}
186+
- 风险等级: {高/中/低}
187+
188+
**输出文件**:
189+
- 任务文件: .ai-workspace/tasks/active/{task-id}.md
190+
- 分析文档: .ai-workspace/context/{task-id}/security-analysis.md
191+
192+
**修复建议**: {简短的修复建议摘要}
193+
194+
**下一步**:
195+
审查安全分析后,使用以下命令设计修复方案:
196+
/plan-task {task-id}
197+
198+
如果是误报,可以使用以下命令关闭告警:
199+
/close-security {alert-number}
200+
```
201+
202+
## 参数说明
203+
204+
- `<alert-number>`: Dependabot 安全告警编号(必需)
205+
206+
## 使用示例
207+
208+
```bash
209+
# 分析安全告警 #23
210+
/analyze-security 23
211+
```
212+
213+
## 注意事项
214+
215+
1. **告警验证**
216+
- 执行前检查告警是否存在
217+
- 如果告警已关闭,询问用户是否继续分析
218+
219+
2. **严重程度优先级**
220+
- Critical/High: 立即处理
221+
- Medium: 计划处理
222+
- Low: 可延后处理
223+
224+
3. **依赖类型区分**
225+
- **直接依赖**: 在依赖文件中明确声明
226+
- **传递依赖**: 由其他依赖引入,修复可能需要升级父依赖
227+
228+
4. **误报识别**
229+
- 检查漏洞代码路径是否被使用
230+
- 评估实际可利用性
231+
- 如确认是误报,建议使用 `/close-security` 关闭
232+
233+
5. **兼容性风险**
234+
- 特别注意跨大版本升级
235+
- 查看 CHANGELOG 和 Migration Guide
236+
- 评估对现有代码的影响
237+
238+
## 相关命令
239+
240+
- `/close-security <alert-number>` - 关闭安全告警(需提供理由)
241+
- `/plan-task <task-id>` - 设计修复方案
242+
- `/task-status <task-id>` - 查看任务状态
243+
- `/upgrade-dependency` - 升级依赖
244+
245+
## 错误处理
246+
247+
- 告警不存在:提示 "安全告警 #{number} 不存在,请检查告警编号"
248+
- 网络错误:提示 "无法连接到 GitHub,请检查网络连接"
249+
- 权限错误:提示 "没有访问该仓库的权限,请检查 GitHub CLI 认证状态"
250+
- API 限制:提示 "GitHub API 请求限制,请稍后重试"

0 commit comments

Comments
 (0)