FR-082 · 需求索引 · 本頁由 build 掃資料夾生成

FR-082 AI 聊天機器人(jedi-ai-bot)資安檢查

一棒掃完並經首腦驗收(2026-09-10)。stamp verified(六個 arc 以來最乾淨的一次)。找到 1 條 MEDIUM,已開修正卡 CM-1638 歸檔待 PM 安排

狀態:✅ 已完成 文件 1 份

🔴 一頁看完

要修 1 件事:AI 聊天功能沒有任何長度或次數限制——任何一個普通員工帳號,開四到八個連線就能讓整個系統停止回應,或者無限次呼叫把公司的 AI 額度燒光。

修正卡 CM-1638(🟡 中),已歸檔待 PM 安排。

§1

這在做什麼(白話)

系統裡有一個 AI 聊天機器人:使用者打字問問題,系統把訊息原封不動送給 Anthropic(Claude),拿回覆顯示給使用者。對話記錄存在 Redis,一小時沒動自動清掉。

§2

為什麼掃它(跟總表建議的順序不同)

跨 arc 總表的下一批建議是 jedi-common → jedi-integrity → jedi-file-upload,jedi-ai-bot 不在前五名(被歸在「攻擊面小」那組)。決策者 2026-09-10 指定先掃這支,首腦認為理由成立:

  • 排名表的判準裡沒有「資料外流」這個維度。它按「檔數 × 授權鏈風險密度」排,而這支只有 13 檔、沒有複雜的權限判定——但它是 25 支裡唯一會把使用者輸入原文送到公司網路外面的,也是唯一每次呼叫都直接產生金錢成本的
  • 13 檔是六個 arc 以來最小的一棒,先拿它把新的白話報告規則跑順,再去啃 jedi-common 那 92 檔。
§3

為什麼是一棒不是兩棒

依 FR-079 換來的判準,開卡前先查了「這支有沒有宿主那一半」——有,但太小

套件本體    jedi_ai_bot/ + harness/    13 檔  632 行
BE 宿主接線  api/ai/ + infra/ai/         3 檔   89 行

89 行不值得單獨跑一棒 40 分鐘,而 scanRoot 只能指一個目錄。處置:一棒掃套件,宿主那 3 檔由首腦全文讀完寫進卡片背景。 這與 jedi-bulletin(宿主 33 檔)、jedi-issue(宿主 31 檔)不同,那兩支的宿主側才是風險所在。

§4

找到什麼

# 嚴重度 這是什麼問題 出事會怎樣 修正卡
F1 🟡 聊天訊息沒有長度上限,呼叫次數也沒有限制 整個產品停止回應(4~8 個並發請求佔滿全部工作程序)② 燒光全公司共用的 AI 額度 CM-1638

只找到這 1 條。 另兩條候選被檢查員否決(Redis 記錄增長、開發檔的 debug 開關),理由首腦認同。

§5

🔴 首腦補查:卡片點名的兩個重點,工具一項都沒答

重點 結論
①(開卡時標為「本棒核心」)對話記錄能不能跨到別人那裡? 不能。儲存位置 chat_history:{使用者編號}:{對話編號},第一段由伺服器填且是數字,前綴偽造不了我原本的擔心是錯的——但這道保護完全依賴「編號由伺服器填、且排在最前面」,建議加註解說明順序不能改
④ 缺少認證設定時會怎樣? 會炸,安全的。實測 AiBotAdapters(auth_required=None) 建構會成功(必填欄位擋不住 None),但 plugin.py:223 呼叫它時 TypeError 炸掉。不如 jedi-issue 那支的明確錯誤訊息友善,但安全性上沒有洞

兩項結論都是好消息,但那不是工具給的。

§6

這次結果可信到什麼程度

「這條是真的嗎」→ ✅ 可信。 stamp 是 verified連拒收原因欄位都是空的——六個 arc 以來最乾淨的一次(前一個案子六棒有五棒帶著 findings-refused 標記)。9 票全投、零漏投、零中斷。檢查員還主動去主專案與 nginx 設定裡查有沒有頻率限制(沒有)。

「是不是只有這一條」→ ❌ 不可信。 快篩模式,13 檔中 4 個是空檔案。而且工具沒照卡片的重點清單走——兩項指定查證是首腦補做的。

§7

📌 開卡時的一個疏失(記錄給下一棒)

卡片寫「檔數 13」,工具報告寫 14。原因是工具算全部受版控檔,我給的驗證指令只算 .py,差的是 harness/docker-compose.yml

掃描範圍沒問題,反而多掃一個檔(那個檔也確實該掃)。但驗證指令的口徑該跟工具一致。

§8

進度

面板 發現 報告
A1 AI 聊天機器人 CM-1637 14 ✅ 9 票全投、verified 無拒收 1 條 MEDIUM 報告
§9

修正卡

卡號 修什麼 嚴重度 狀態
CM-1638 聊天端點加長度上限、上游呼叫逾時、頻率限制插槽 🟡 中 ⬜ Not started(歸檔待 PM 安排)
§10

座標

  • 首腦手冊:.claude/skills/security-scan-lead/SKILL.md第十節白話規則、第 5.1 節跨 arc 總表)
  • 跨 arc 總表:../security-scan-consolidated/README.md
  • 各 arc 共用現況:../FR-075-2609-jedi-package-security-audit/handoff/security-scan-STATE.md
  • branch:BE repo 與 jedi monorepo 都在 feature/FR-075
§11

文件

以下全部由 build 掃資料夾產生,新增檔案重 build 即自動出現。標題連結指向渲染後的 HTML,md 連向源檔。

其他文件

文件 類型 標題 最後更新
scan-A1-ai-botmd 文件 A1 檢查結果:AI 聊天機器人 未提交
§12

Notion 卡

卡片內容(決策紀錄、驗收條件)以 Notion 為準,本頁只記座標。

關係 卡號 標題 狀態
母案 CM-1636 FR-082 AI 聊天機器人(jedi-ai-bot)資安掃描(一棒,只掃不修)
子卡 CM-1637 A1 AI 聊天機器人(13 檔) 修正待驗證
子卡 CM-1638 修 聊天端點無長度與次數上限 Not started