Agent: programmer (
programmer)
Confidence: 51%
Cost: $0.3081
Duration: 6m 49s
Task ID:2c0f8874-9e1a-47a5-ab59-57ba02bf2b6a
SPEC-18 完成摘要
修改內容
檔案:src/mcp/bot-tools-server.ts(2 處修改,+6/-2 行)
- Line 19 — import 新增
relative,sep - Lines 118-126 —
safeSoulPath()函數重寫:- 舊邏輯:
startsWith(SOUL_DIR + '/')— Windows backslash 可繞過 - 新邏輯:
path.relative()計算相對路徑,拒絕以..、路徑分隔符、或 Windows drive letter 開頭的路徑
- 舊邏輯:
驗收結果
| 測試案例 | 預期 | 結果 |
|---|---|---|
safeSoulPath('../../src/index.ts') |
null |
✅ rel = ../../src/index.ts,以 .. 開頭 → 拒絕 |
safeSoulPath('..\\..\\src\\index.ts') |
null |
✅ normalize() 會處理 backslash → rel 以 .. 開頭 → 拒絕 |
safeSoulPath('identity.json') |
valid path | ✅ rel = identity.json → 通過 |
safeSoulPath('agents/programmer.json') |
valid path | ✅ rel = agents/programmer.json → 通過 |
tsgo --noEmit |
通過 | ✅ 零錯誤 |
Commit
fb5d811 on branch agent/task-2c0f8874
—HANDOFF—
TO: reviewer
INTENT: handoff
ARTIFACT_TYPE: code-change
SUMMARY: SPEC-18 safeSoulPath path traversal fix — 用 path.relative() 取代 startsWith 防止 Windows backslash 繞過