Problem
scripts/regression-gate.sh 的 model 欄位是「#112 那個 bug 隔壁一欄」——未驗證即進 path sink。regression-gate.sh:67 讀 entries[0]["model"] 無 charset 檢查,L80 內插進 MODEL_DIR 後 cd "$MODEL_DIR" + find + shasum,L162 又進 CLI arg --models "$MODEL"。
#112 verify(PR #114,6-AI ensemble)三個獨立 reviewer 各自 live 重現此漏洞:
換句話說 #112 沒有移除 path-traversal capability,只是把 payload 從 language 移到 model——且 model 觸及的是 language 從不碰的 path sink。
Type
bug
Expected
model 欄位在讀取後(worklist / model-pin 兩處使用點之前)加 charset 白名單 fail-loud,比照 #112 的 language 與既有的 corpus 檢查。whitelist 需容許合法 model id 形態(如 whisperkit/large-v3-turbo、含 / 的 HF-style repo path)但拒絕 ..、newline、shell metachar。
Impact
Source: surfaced during /idd-verify #112 (PR #114) — logic lens A1 + security lens H1 + Devil's Advocate, three independent reviewers each live-reproduced. DA 明確要求「file now, not defer」並將 #112 的 safe-close 條件設為「close note 限縮成 language TSV injection closed,且 model follow-up 已 filed」。
Current Status
- Phase: closed
- Last update: 2026-08-02
Problem
scripts/regression-gate.sh的model欄位是「#112 那個 bug 隔壁一欄」——未驗證即進 path sink。regression-gate.sh:67讀entries[0]["model"]無 charset 檢查,L80 內插進MODEL_DIR後cd "$MODEL_DIR"+find+shasum,L162 又進 CLI arg--models "$MODEL"。#112 verify(PR #114,6-AI ensemble)三個獨立 reviewer 各自 live 重現此漏洞:
"model": "../../../../tmp/…"產生 traversedMODEL_DIR。model='large-v3-turbo/../../../../../../etc'demonstrated traversal。baseline[0].model = "large-v3-turbo/../../../../../../etc"經 L67 →MODEL_DIRcanonicalize 成/Users/che/etc(逃出 cache root);同 payload 放language現已被 regression-gate.sh:baseline language 欄位未驗證即入 worklist TSV(follow-up from #109 verify) #112 白名單拒絕。換句話說 #112 沒有移除 path-traversal capability,只是把 payload 從
language移到model——且model觸及的是language從不碰的 path sink。Type
bug
Expected
model欄位在讀取後(worklist / model-pin 兩處使用點之前)加 charset 白名單 fail-loud,比照 #112 的language與既有的corpus檢查。whitelist 需容許合法 model id 形態(如whisperkit/large-v3-turbo、含/的 HF-style repo path)但拒絕..、newline、shell metachar。Impact
baseline.json受版控,實際攻擊需惡意 PR 混入 → defense-in-depth。Source: surfaced during /idd-verify #112 (PR #114) — logic lens A1 + security lens H1 + Devil's Advocate, three independent reviewers each live-reproduced. DA 明確要求「file now, not defer」並將 #112 的 safe-close 條件設為「close note 限縮成 language TSV injection closed,且 model follow-up 已 filed」。
Current Status