@liangjie559567/ultrapower 7.5.2 → 7.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +13 -2
- package/bridge/mcp-server.cjs +1 -0
- package/dist/cli/commands/repair.d.ts +3 -0
- package/dist/cli/commands/repair.d.ts.map +1 -0
- package/dist/cli/commands/repair.js +130 -0
- package/dist/cli/commands/repair.js.map +1 -0
- package/dist/features/analytics-dashboard/metrics-collector.d.ts.map +1 -1
- package/dist/features/analytics-dashboard/metrics-collector.js +4 -0
- package/dist/features/analytics-dashboard/metrics-collector.js.map +1 -1
- package/dist/features/analytics-dashboard/storage.d.ts +22 -2
- package/dist/features/analytics-dashboard/storage.d.ts.map +1 -1
- package/dist/features/analytics-dashboard/storage.js.map +1 -1
- package/dist/features/analytics-dashboard/tracker.d.ts.map +1 -1
- package/dist/features/analytics-dashboard/tracker.js +14 -2
- package/dist/features/analytics-dashboard/tracker.js.map +1 -1
- package/dist/features/personalized-recommendation/behavior-tracker.js +1 -1
- package/dist/features/personalized-recommendation/behavior-tracker.js.map +1 -1
- package/dist/features/personalized-recommendation/recommender.d.ts +1 -1
- package/dist/features/personalized-recommendation/recommender.d.ts.map +1 -1
- package/dist/features/personalized-recommendation/recommender.js +1 -1
- package/dist/features/personalized-recommendation/recommender.js.map +1 -1
- package/dist/features/quality-gate/gate-checker.d.ts.map +1 -1
- package/dist/features/quality-gate/gate-checker.js +2 -1
- package/dist/features/quality-gate/gate-checker.js.map +1 -1
- package/dist/hooks/bridge-converter.d.ts +8 -0
- package/dist/hooks/bridge-converter.d.ts.map +1 -1
- package/dist/hooks/bridge-converter.js +38 -0
- package/dist/hooks/bridge-converter.js.map +1 -1
- package/dist/hooks/handlers/route-map.js +6 -6
- package/dist/hooks/handlers/route-map.js.map +1 -1
- package/dist/hooks/handlers/stop-continuation.d.ts.map +1 -1
- package/dist/hooks/handlers/stop-continuation.js.map +1 -1
- package/dist/hooks/keyword-detector/conflict-resolver.d.ts +16 -0
- package/dist/hooks/keyword-detector/conflict-resolver.d.ts.map +1 -0
- package/dist/hooks/keyword-detector/conflict-resolver.js +41 -0
- package/dist/hooks/keyword-detector/conflict-resolver.js.map +1 -0
- package/dist/hooks/persistent-mode/index.js +2 -2
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/processors/permissionRequest.d.ts.map +1 -1
- package/dist/hooks/processors/permissionRequest.js.map +1 -1
- package/dist/hooks/ultrawork/index.js +3 -3
- package/dist/hooks/ultrawork/index.js.map +1 -1
- package/dist/hooks/workflow-gate/index.js +4 -4
- package/dist/hooks/workflow-gate/index.js.map +1 -1
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +3 -2
- package/dist/hud/usage-api.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/lib/atomic-write.d.ts.map +1 -1
- package/dist/lib/atomic-write.js +23 -2
- package/dist/lib/atomic-write.js.map +1 -1
- package/dist/lib/auditLog.d.ts +1 -1
- package/dist/lib/auditLog.d.ts.map +1 -1
- package/dist/lib/crypto.d.ts +3 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +60 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/deadlock-detector.d.ts +21 -0
- package/dist/lib/deadlock-detector.d.ts.map +1 -0
- package/dist/lib/deadlock-detector.js +74 -0
- package/dist/lib/deadlock-detector.js.map +1 -0
- package/dist/lib/fs-utils.d.ts +11 -0
- package/dist/lib/fs-utils.d.ts.map +1 -0
- package/dist/lib/fs-utils.js +32 -0
- package/dist/lib/fs-utils.js.map +1 -0
- package/dist/lib/logger.d.ts +7 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +28 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/state-adapter.d.ts +3 -2
- package/dist/lib/state-adapter.d.ts.map +1 -1
- package/dist/lib/state-adapter.js +12 -3
- package/dist/lib/state-adapter.js.map +1 -1
- package/dist/security/concurrency-control.d.ts +8 -1
- package/dist/security/concurrency-control.d.ts.map +1 -1
- package/dist/security/concurrency-control.js +22 -0
- package/dist/security/concurrency-control.js.map +1 -1
- package/dist/security/tenant-isolator.js.map +1 -1
- package/dist/state/index.d.ts +2 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +8 -6
- package/dist/state/index.js.map +1 -1
- package/dist/state/migration/integrity.d.ts.map +1 -1
- package/dist/state/migration/integrity.js +1 -2
- package/dist/state/migration/integrity.js.map +1 -1
- package/dist/tools/lsp-tools.js.map +1 -1
- package/dist/workers/sqlite-adapter.d.ts.map +1 -1
- package/dist/workers/sqlite-adapter.js.map +1 -1
- package/docs/CLAUDE.md +2 -2
- package/docs/CODE_BASED_FLOW.md +12 -12
- package/docs/COMPATIBILITY.md +1 -1
- package/docs/FEATURES.md +16 -16
- package/docs/INSTALL.md +4 -4
- package/docs/MIGRATION.md +2 -2
- package/docs/OMC-CLAUDE.md +1 -1
- package/docs/REFERENCE.md +16 -16
- package/docs/UPGRADE_VERIFICATION.md +1 -1
- package/docs/agent-templates/README.md +2 -2
- package/docs/api/media/INSTALL.md +2 -2
- package/docs/api/media/MIGRATION.md +2 -2
- package/docs/api/media/REFERENCE.md +14 -14
- package/docs/api/media/mcp-server-usage.md +4 -4
- package/docs/architecture/ultrapower-flow-analysis.md +1 -1
- package/docs/audit/direct-write-scan.md +88 -0
- package/docs/audit/subagent-stop-scan.md +48 -0
- package/docs/dev-experience/README.md +226 -0
- package/docs/dev-experience/best-practices.md +364 -0
- package/docs/dev-experience/quick-reference.md +114 -0
- package/docs/dev-experience/troubleshooting-guide.md +280 -0
- package/docs/dev-standards/AGENTS.md +68 -68
- package/docs/getting-started/quickstart.md +1 -1
- package/docs/glossary.md +174 -0
- package/docs/guides/mcp-server-usage.md +4 -4
- package/docs/guides/tool-name-migration.md +12 -12
- package/docs/mcp/configuration.md +5 -5
- package/docs/mcp/performance.md +5 -5
- package/docs/mcp-compatibility-matrix.md +1 -1
- package/docs/partials/agent-tiers.md +24 -24
- package/docs/partials/features.md +1 -1
- package/docs/partials/verification-tiers.md +2 -2
- package/docs/plans/2026-02-24-superpowers-ultrapower-integration-design.md +2 -2
- package/docs/plans/2026-03-02-docs-comprehensive-update.md +16 -16
- package/docs/plans/2026-03-05-mcp-adoption-atomic-tasks.md +9 -9
- package/docs/plans/2026-03-14-mcp-intelligent-orchestration.md +679 -679
- package/docs/plans/2026-03-16-tech-debt-fixes.md +222 -0
- package/docs/prd/bugs-pain-points-audit-dag.md +297 -0
- package/docs/prd/bugs-pain-points-audit-draft.md +154 -0
- package/docs/prd/bugs-pain-points-audit-manifest.md +830 -0
- package/docs/prd/bugs-pain-points-audit-rough.md +654 -0
- package/docs/reports/tech-debt-verification-2026-03-16.md +87 -0
- package/docs/research/deadlock-detection-poc.md +275 -0
- package/docs/reviews/bugs-pain-points-audit/review_critic.md +213 -0
- package/docs/reviews/bugs-pain-points-audit/review_domain.md +247 -0
- package/docs/reviews/bugs-pain-points-audit/review_product.md +189 -0
- package/docs/reviews/bugs-pain-points-audit/review_tech.md +382 -0
- package/docs/reviews/bugs-pain-points-audit/review_ux.md +161 -0
- package/docs/reviews/bugs-pain-points-audit/summary.md +129 -0
- package/docs/reviews/bugs-pain-points-audit/tech-debt-v7.6.0-code-review.md +328 -0
- package/docs/security/command-injection-scan.md +223 -0
- package/docs/security/path-traversal-scan-report.md +229 -0
- package/docs/security/sensitive-data-inventory.md +170 -0
- package/docs/security/sensitive-data-violations.md +388 -0
- package/docs/shared/agent-tiers.md +24 -24
- package/docs/shared/features.md +1 -1
- package/docs/shared/verification-tiers.md +2 -2
- package/docs/standards/README.md +1 -1
- package/docs/standards/cascade-failure.md +324 -0
- package/docs/standards/runtime-protection.md +7 -0
- package/docs/tech-debt/classification.md +190 -0
- package/docs/tech-debt/cleanup-report.md +172 -0
- package/docs/testing/client-additional-test-fix.md +64 -0
- package/docs/testing/concurrent-write-test-fix.md +111 -0
- package/docs/testing/coverage-report.md +274 -0
- package/docs/testing/phase2-test-coverage-completion.md +223 -0
- package/docs/testing/phase2-week3-docs-completion.md +271 -0
- package/docs/testing/phase2-week4-observability-completion.md +324 -0
- package/docs/testing/phase3-completion.md +324 -0
- package/docs/testing/test-fix-progress-2026-03-16.md +75 -0
- package/docs/testing/test-fix-summary.md +197 -0
- package/docs/testing/timer-buffer-test-fix.md +117 -0
- package/docs/troubleshooting.md +1 -1
- package/package.json +10 -10
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# 路径遍历漏洞扫描报告
|
|
2
|
+
|
|
3
|
+
**扫描日期**: 2026-03-16
|
|
4
|
+
**扫描工具**: Grep pattern matching
|
|
5
|
+
**扫描范围**: 所有 .ts 文件
|
|
6
|
+
|
|
7
|
+
## 扫描摘要
|
|
8
|
+
|
|
9
|
+
- **扫描文件数**: 47
|
|
10
|
+
- **发现风险点**: 8
|
|
11
|
+
- **高风险**: 4
|
|
12
|
+
- **中风险**: 0
|
|
13
|
+
- **低风险**: 4
|
|
14
|
+
|
|
15
|
+
## 高风险点
|
|
16
|
+
|
|
17
|
+
### 1. src/hooks/state/StateReader.ts:8
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
const statePath = join(worktreeRoot, ".omc", "state", `${mode}-state.json`);
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**风险等级**: 高
|
|
24
|
+
**原因**: 直接使用未校验的 `mode` 参数进行路径拼接,可能导致路径遍历攻击
|
|
25
|
+
**修复优先级**: P0
|
|
26
|
+
**影响范围**: Hook 系统状态读取
|
|
27
|
+
**建议修复**:
|
|
28
|
+
```typescript
|
|
29
|
+
import { assertValidMode } from '../../lib/validateMode.js';
|
|
30
|
+
const validMode = assertValidMode(mode);
|
|
31
|
+
const statePath = join(worktreeRoot, ".omc", "state", `${validMode}-state.json`);
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
### 2. src/state/migration/integrity.ts:42
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
const statePath = join(directory, '.omc', 'state', `${mode}-state.json`);
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**风险等级**: 高
|
|
43
|
+
**原因**: 迁移工具中未校验 `mode` 参数,可能在迁移过程中被利用
|
|
44
|
+
**修复优先级**: P0
|
|
45
|
+
**影响范围**: 状态迁移系统
|
|
46
|
+
**建议修复**: 在函数入口处添加 `assertValidMode(mode)`
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### 3. src/state/migration/integrity.ts:69
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
const statePath = join(directory, '.omc', 'state', `${mode}-state.json`);
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**风险等级**: 高
|
|
57
|
+
**原因**: 回滚功能中未校验 `mode` 参数
|
|
58
|
+
**修复优先级**: P0
|
|
59
|
+
**影响范围**: 状态回滚系统
|
|
60
|
+
**建议修复**: 在函数入口处添加 `assertValidMode(mode)`
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### 4. src/state/migration/integrity.ts:87
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
const statePath = join(directory, '.omc', 'state', `${mode}-state.json`);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**风险等级**: 高
|
|
71
|
+
**原因**: 完整性验证中未校验 `mode` 参数
|
|
72
|
+
**修复优先级**: P0
|
|
73
|
+
**影响范围**: 状态完整性验证
|
|
74
|
+
**建议修复**: 在函数入口处添加 `assertValidMode(mode)`
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 低风险点
|
|
79
|
+
|
|
80
|
+
### 5. src/state/migration/index.ts:23
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
const legacyPath = join(directory, '.omc', 'state', `${mode}-state.json`);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**风险等级**: 低
|
|
87
|
+
**原因**: 函数签名使用 `ValidMode` 类型,但未在运行时校验
|
|
88
|
+
**修复优先级**: P2
|
|
89
|
+
**影响范围**: 状态迁移
|
|
90
|
+
**建议修复**: 添加运行时校验 `assertValidMode(mode)` 以确保类型安全
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### 6. src/state/migration/index.ts:60
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
const statePath = join(directory, '.omc', 'state', `${mode}-state.json`);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**风险等级**: 低
|
|
101
|
+
**原因**: 函数签名使用 `ValidMode` 类型,但未在运行时校验
|
|
102
|
+
**修复优先级**: P2
|
|
103
|
+
**影响范围**: 状态备份
|
|
104
|
+
**建议修复**: 添加运行时校验
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
### 7. src/lib/state-adapter.ts:62
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
return join(this.directory, '.omc', 'state', `${this.mode}-state.json`);
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**风险等级**: 低
|
|
115
|
+
**原因**: 构造函数中已通过 `assertValidMode(mode)` 校验,但 `this.mode` 可能被修改
|
|
116
|
+
**修复优先级**: P3
|
|
117
|
+
**影响范围**: 状态适配器
|
|
118
|
+
**当前状态**: 已有部分防护(构造函数校验)
|
|
119
|
+
**建议**: 将 `mode` 字段设为 `readonly` 防止修改
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### 8. src/state/migration/integrity.ts:119
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
const pattern = `${mode}-state.json.backup-`;
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**风险等级**: 低
|
|
130
|
+
**原因**: 用于文件名匹配模式,不直接用于路径拼接,但仍应校验
|
|
131
|
+
**修复优先级**: P3
|
|
132
|
+
**影响范围**: 备份清理
|
|
133
|
+
**建议修复**: 添加 `assertValidMode(mode)` 确保一致性
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 已防护的安全实现(参考示例)
|
|
138
|
+
|
|
139
|
+
以下文件已正确实现路径遍历防护:
|
|
140
|
+
|
|
141
|
+
### src/tools/state-tools.ts
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
// 正确示例:在函数入口处校验
|
|
145
|
+
const validMode = assertValidMode(mode);
|
|
146
|
+
// 后续使用 validMode 而非 mode
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### src/lib/validateMode.ts
|
|
150
|
+
|
|
151
|
+
提供了完整的校验工具:
|
|
152
|
+
- `assertValidMode()`: 运行时校验并抛出异常
|
|
153
|
+
- `isValidMode()`: 布尔检查
|
|
154
|
+
- `ValidMode` 类型:编译时类型安全
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## 修复优先级清单
|
|
159
|
+
|
|
160
|
+
### P0 - 立即修复(高风险)
|
|
161
|
+
|
|
162
|
+
1. **[P0]** src/hooks/state/StateReader.ts:8 - Hook 状态读取未校验
|
|
163
|
+
2. **[P0]** src/state/migration/integrity.ts:42 - 迁移工具未校验
|
|
164
|
+
3. **[P0]** src/state/migration/integrity.ts:69 - 回滚功能未校验
|
|
165
|
+
4. **[P0]** src/state/migration/integrity.ts:87 - 完整性验证未校验
|
|
166
|
+
|
|
167
|
+
### P2 - 短期修复(中风险)
|
|
168
|
+
|
|
169
|
+
5. **[P2]** src/state/migration/index.ts:23 - 添加运行时校验
|
|
170
|
+
6. **[P2]** src/state/migration/index.ts:60 - 添加运行时校验
|
|
171
|
+
|
|
172
|
+
### P3 - 长期改进(低风险)
|
|
173
|
+
|
|
174
|
+
7. **[P3]** src/lib/state-adapter.ts:62 - 将 mode 字段设为 readonly
|
|
175
|
+
8. **[P3]** src/state/migration/integrity.ts:119 - 备份模式匹配校验
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 修复模板
|
|
180
|
+
|
|
181
|
+
### 标准修复模式
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
// 修复前
|
|
185
|
+
function someFunction(mode: string, directory: string) {
|
|
186
|
+
const path = join(directory, '.omc', 'state', `${mode}-state.json`);
|
|
187
|
+
// ...
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// 修复后
|
|
191
|
+
import { assertValidMode } from './lib/validateMode.js';
|
|
192
|
+
|
|
193
|
+
function someFunction(mode: string, directory: string) {
|
|
194
|
+
const validMode = assertValidMode(mode); // 添加校验
|
|
195
|
+
const path = join(directory, '.omc', 'state', `${validMode}-state.json`);
|
|
196
|
+
// ...
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 测试验证建议
|
|
203
|
+
|
|
204
|
+
修复后应执行以下测试:
|
|
205
|
+
|
|
206
|
+
1. **单元测试**: 验证非法 mode 值被正确拒绝
|
|
207
|
+
2. **集成测试**: 确保合法 mode 值正常工作
|
|
208
|
+
3. **安全测试**: 尝试路径遍历攻击(如 `../../../etc/passwd`)
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 附录:扫描方法
|
|
213
|
+
|
|
214
|
+
### 搜索模式
|
|
215
|
+
|
|
216
|
+
1. `\$\{mode\}` - 直接模板字符串插值
|
|
217
|
+
2. `.omc/state/.*mode` - 状态路径模式
|
|
218
|
+
3. `\$\{.*mode.*\}` - 包含 mode 的所有插值
|
|
219
|
+
|
|
220
|
+
### 排除项
|
|
221
|
+
|
|
222
|
+
- 测试文件中的示例代码(已标注)
|
|
223
|
+
- 注释和文档中的示例
|
|
224
|
+
- 日志输出和错误消息(非路径拼接)
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
**报告生成**: 自动化扫描
|
|
229
|
+
**下一步行动**: 按优先级修复 P0 高风险点
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# 敏感数据清单
|
|
2
|
+
|
|
3
|
+
## 敏感字段白名单
|
|
4
|
+
|
|
5
|
+
| 字段名 | 类型 | 风险等级 | 加密要求 | 说明 |
|
|
6
|
+
|--------|------|----------|----------|------|
|
|
7
|
+
| apiKey | string | 高 | 必须 | API 密钥 |
|
|
8
|
+
| token | string | 高 | 必须 | 认证令牌 |
|
|
9
|
+
| credential | string | 高 | 必须 | 凭证信息 |
|
|
10
|
+
| password | string | 高 | 必须 | 密码 |
|
|
11
|
+
| secret | string | 高 | 必须 | 密钥 |
|
|
12
|
+
| privateKey | string | 高 | 必须 | 私钥 |
|
|
13
|
+
| accessToken | string | 高 | 必须 | 访问令牌 |
|
|
14
|
+
| refreshToken | string | 高 | 必须 | 刷新令牌 |
|
|
15
|
+
| sessionId | string | 中 | 推荐 | 会话标识 |
|
|
16
|
+
| authToken | string | 高 | 必须 | 认证令牌 |
|
|
17
|
+
| bearerToken | string | 高 | 必须 | Bearer 令牌 |
|
|
18
|
+
| clientSecret | string | 高 | 必须 | 客户端密钥 |
|
|
19
|
+
| encryptionKey | string | 高 | 必须 | 加密密钥 |
|
|
20
|
+
| signingKey | string | 高 | 必须 | 签名密钥 |
|
|
21
|
+
| webhookSecret | string | 高 | 必须 | Webhook 密钥 |
|
|
22
|
+
|
|
23
|
+
## 扫描规则
|
|
24
|
+
|
|
25
|
+
### 正则模式
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
const SENSITIVE_PATTERNS = {
|
|
29
|
+
apiKey: /(api[_-]?key|apikey)/i,
|
|
30
|
+
token: /(token|bearer)/i,
|
|
31
|
+
credential: /(credential|cred)/i,
|
|
32
|
+
password: /(password|passwd|pwd)/i,
|
|
33
|
+
secret: /(secret|private[_-]?key|privatekey)/i,
|
|
34
|
+
accessToken: /(access[_-]?token|accesstoken)/i,
|
|
35
|
+
refreshToken: /(refresh[_-]?token|refreshtoken)/i,
|
|
36
|
+
authToken: /(auth[_-]?token|authtoken)/i,
|
|
37
|
+
clientSecret: /(client[_-]?secret|clientsecret)/i,
|
|
38
|
+
encryptionKey: /(encryption[_-]?key|encryptionkey)/i,
|
|
39
|
+
signingKey: /(signing[_-]?key|signingkey)/i,
|
|
40
|
+
webhookSecret: /(webhook[_-]?secret|webhooksecret)/i
|
|
41
|
+
};
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 扫描范围
|
|
45
|
+
|
|
46
|
+
- 状态文件 (`.omc/state/**/*.json`)
|
|
47
|
+
- 配置文件 (`*.json`, `*.yaml`, `*.yml`)
|
|
48
|
+
- 环境变量文件 (`.env*`)
|
|
49
|
+
- 日志文件 (`*.log`)
|
|
50
|
+
|
|
51
|
+
### 排除路径
|
|
52
|
+
|
|
53
|
+
- `node_modules/`
|
|
54
|
+
- `dist/`
|
|
55
|
+
- `.git/`
|
|
56
|
+
- `*.test.ts`
|
|
57
|
+
- `*.spec.ts`
|
|
58
|
+
|
|
59
|
+
## 加密策略
|
|
60
|
+
|
|
61
|
+
### 算法规范
|
|
62
|
+
|
|
63
|
+
- **算法**: AES-256-GCM
|
|
64
|
+
- **密钥长度**: 256 位
|
|
65
|
+
- **IV 长度**: 12 字节
|
|
66
|
+
- **认证标签长度**: 16 字节
|
|
67
|
+
|
|
68
|
+
### 密钥来源
|
|
69
|
+
|
|
70
|
+
1. **主密钥**: 从环境变量 `OMC_ENCRYPTION_KEY` 读取
|
|
71
|
+
2. **备用方案**: 使用 `crypto.scryptSync()` 从用户标识派生
|
|
72
|
+
3. **密钥格式**: Base64 编码的 32 字节随机数据
|
|
73
|
+
|
|
74
|
+
### 加密流程
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
// 1. 生成随机 IV
|
|
78
|
+
const iv = crypto.randomBytes(12);
|
|
79
|
+
|
|
80
|
+
// 2. 创建加密器
|
|
81
|
+
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
|
|
82
|
+
|
|
83
|
+
// 3. 加密数据
|
|
84
|
+
const encrypted = Buffer.concat([
|
|
85
|
+
cipher.update(plaintext, 'utf8'),
|
|
86
|
+
cipher.final()
|
|
87
|
+
]);
|
|
88
|
+
|
|
89
|
+
// 4. 获取认证标签
|
|
90
|
+
const authTag = cipher.getAuthTag();
|
|
91
|
+
|
|
92
|
+
// 5. 组合输出: iv + authTag + encrypted
|
|
93
|
+
const result = Buffer.concat([iv, authTag, encrypted]).toString('base64');
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 密钥管理
|
|
97
|
+
|
|
98
|
+
### 密钥轮换
|
|
99
|
+
|
|
100
|
+
- **轮换周期**: 90 天
|
|
101
|
+
- **触发条件**:
|
|
102
|
+
- 定期轮换到期
|
|
103
|
+
- 密钥泄露事件
|
|
104
|
+
- 安全审计要求
|
|
105
|
+
- **轮换流程**:
|
|
106
|
+
1. 生成新密钥
|
|
107
|
+
2. 使用新密钥重新加密所有敏感数据
|
|
108
|
+
3. 安全销毁旧密钥
|
|
109
|
+
4. 更新环境变量
|
|
110
|
+
|
|
111
|
+
### 密钥存储
|
|
112
|
+
|
|
113
|
+
- **生产环境**: 使用密钥管理服务 (KMS)
|
|
114
|
+
- **开发环境**: 环境变量 (`.env.local`, 不提交)
|
|
115
|
+
- **CI/CD**: 加密的 secrets 存储
|
|
116
|
+
|
|
117
|
+
### 密钥访问控制
|
|
118
|
+
|
|
119
|
+
- 仅加密/解密模块可访问密钥
|
|
120
|
+
- 密钥不得记录到日志
|
|
121
|
+
- 密钥不得通过网络传输(除 KMS)
|
|
122
|
+
|
|
123
|
+
## 检测与响应
|
|
124
|
+
|
|
125
|
+
### 自动检测
|
|
126
|
+
|
|
127
|
+
- **静态扫描**: 构建时扫描代码和配置文件
|
|
128
|
+
- **运行时监控**: 检测未加密的敏感数据写入
|
|
129
|
+
- **日志审计**: 定期扫描日志文件
|
|
130
|
+
|
|
131
|
+
### 响应流程
|
|
132
|
+
|
|
133
|
+
1. **检测到泄露**:
|
|
134
|
+
- 立即停止操作
|
|
135
|
+
- 记录泄露事件
|
|
136
|
+
- 通知管理员
|
|
137
|
+
|
|
138
|
+
2. **修复措施**:
|
|
139
|
+
- 加密泄露的数据
|
|
140
|
+
- 轮换受影响的密钥
|
|
141
|
+
- 更新访问控制
|
|
142
|
+
|
|
143
|
+
3. **事后审查**:
|
|
144
|
+
- 分析泄露原因
|
|
145
|
+
- 更新扫描规则
|
|
146
|
+
- 改进防护措施
|
|
147
|
+
|
|
148
|
+
## 合规要求
|
|
149
|
+
|
|
150
|
+
- **GDPR**: 个人数据必须加密存储
|
|
151
|
+
- **PCI DSS**: 支付相关数据必须加密
|
|
152
|
+
- **SOC 2**: 敏感数据访问必须审计
|
|
153
|
+
- **HIPAA**: 健康数据必须加密传输和存储
|
|
154
|
+
|
|
155
|
+
## 审计日志
|
|
156
|
+
|
|
157
|
+
所有敏感数据操作必须记录:
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
interface SensitiveDataAuditLog {
|
|
161
|
+
timestamp: string;
|
|
162
|
+
operation: 'encrypt' | 'decrypt' | 'access' | 'rotate';
|
|
163
|
+
fieldName: string;
|
|
164
|
+
userId?: string;
|
|
165
|
+
success: boolean;
|
|
166
|
+
errorMessage?: string;
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
日志存储位置: `.omc/logs/sensitive-data-audit.log`
|