本卡屬 FR-114 資安修正(母卡 CM-2019),第 5 批子集 C 卡 5C-6,修 SUMMARY #101(M23-5)。高——供應鏈最根本的洞,且需獨立跑或排在最後(序列組 E,動到每一支 pyproject.toml,會與其他套件卡衝突)。計畫在 docs/features/FR-114-2609-security-fix-dispatch/batches/plan-b5C.md「卡 5C-6」段。
開發與建置機器安裝套件時,連到公司內部套件庫(Nexus)用的是不加密連線——這是安裝套件的主要來源,同樣的問題在另外兩個不相關的地方(共用基礎層、稽核工作流引擎)也各自獨立被抓到,證實「這不是某一支套件的疏忽,而是每一支都一樣」。版本鎖定檔(用來驗證套件沒被竄改的雜湊比對檔)現況也「只做了一半」:套件monorepo 那邊完全沒有——27 支套件裡有 17 支本機已產生這份檔案,但一支都沒有進版控,全被忽略規則擋住;主專案這邊已經修好,2026-08-15 起已入版控。
🔴 明確排除,不要順手併掉「第 6 項」:FE image 建置腳本裡,緊鄰那條明文網址的下一行寫死了帳號密碼——這是另一個不同的問題、不同的修法(M23 第 6 項,已是 CM-1998 的處理範圍,第 4 批已處理)。因為兩行緊挨著,容易讓修「連線未加密」的人順手看到憑證那行卻沒意識到那是另一件事而略過或誤動。若在本卡工作中看到那行憑證,不要動它,在回寫寫明「那行屬於 CM-1998」。
首腦核對:
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/.claude/worktrees/wt-fix-security(branch fix/security-b1)改,不要碰主 checkout(掃描線正在讀它)。跑服務用 PORT=8001。 本卡另涉整個套件 monorepo 全部 28 支套件(21 現役+6 封存+主專案)。/Users/chouraymond/Projects/Jedicogy/module/jedi-python-package/.claude/worktrees/jedi-wt-fix-security/<套件目錄>(branch fix/security-b1)改,只動自己那支套件的子目錄、只 git add 該子目錄下的檔。 worktree 建議 wt-fix-b5C-supply-chain。⚠️ 序列組 E:本卡動到每一支 pyproject.toml,與同批其他跨套件卡都會衝突,建議獨立一輪跑、或排在最後跑。compliance-manager-be/pyproject.toml:161 url = "<http://192.168.50.171:8082/repository/pypi-group/simple>",主專案
jedi-detection/pyproject.toml:66 同樣明文網址
jedi-flow-engine/pyproject.toml:46 同樣明文網址
jedi-compliance-audit/pyproject.toml:63 同樣明文網址
jedi-system-core/pyproject.toml:67 同樣明文網址
archive/jedi-information-system/pyproject.toml:47 已封存套件,同樣要改
archive/jedi-log-forwarding/pyproject.toml:43 已封存套件,同樣要改
archive/jedi-system-config/pyproject.toml:54 已封存套件,同樣要改
archive/jedi-participant/pyproject.toml:34 已封存套件,同樣要改
(其餘現役套件同樣一行,位置各異,不重複列——runner 開工第一步用 grep -rn '<http://192.168.50.171:8082>' --include='pyproject.toml' 兩個 repo 取得完整 28 支清單)
各套件 .gitignore 擋住 poetry.lock 入版控的規則,鎖定檔納管目標
⚠️ 明確不動:FE image 建置腳本裡緊鄰明文網址下一行的帳號密碼寫死,那是 CM-1998(第 4 批)範圍,看到不要動
D-b5C-8 決策者已裁「先查證再動手」;D-b5C-9 決策者已裁照建議寫成定案。
https://),逐一改完整清單裡的每一支 pyproject.toml。poetry.lock)納入版控——套件 monorepo 每一支套件的 .gitignore 目前都擋住這份檔案,要放行;主專案已經做過(2026-08-15 起),照那個做法比照套件側執行。archive/)一併更新:近乎零成本,且「封存」不代表不會被拿去安裝——漏掉的那支就是下一個破口。🔴 D-b5C-8 動手前必須先查證,這是本卡能不能繼續下去的前提:Nexus(192.168.50.171:8082)目前是否已經有加密連線可用?runner 第一步只做唯讀查證並回報(例如 curl -I https://192.168.50.171:8443),不要先改任何檔案——若 Nexus 沒有 TLS,把所有 URL 一次改成 https:// 會讓每一台開發機與建置機的 poetry install 立刻失敗,這是基礎設施層的前提,不是程式問題。若查到沒有 TLS,本卡拆成「先幫 Nexus 上憑證(基礎設施工作,不在本卡)」+「之後再切全部 URL」兩階段,第一階段屬另一個決策,查證後回寫本卡、狀態留 Not started,等回覆再繼續。