本卡為 FR-079 母案。用 claude-security plugin 掃「公告」這條鏈的資安問題,切兩棒:B1 套件本體(jedi monorepo)、B2 宿主接線(BE repo)。只掃不修,修正卡另開、由 PM 統一安排。子卡清單在末段。

這系列在做什麼(白話)

公告是系統裡「一則訊息要發給哪些人看」的功能:管理員發公告、指定要發給哪些部門,其他人在自己的畫面上看到。這系列要檢查的是——有沒有人可以看到不該看的公告、改別人的公告、或發公告給不屬於自己的部門。

這是繼 FR-075(登入身分)、FR-076(授權碼)、FR-077(遠端代理)、FR-078(通知寄送)之後的第五個掃描案,方法與紀律完全沿用前四案。

為什麼要做

jedi-bulletin 在全套件掃描排名裡被歸在「讀取展示型、攻擊面小」那組(29 檔、847 行),看起來風險低。但那個評估只看了套件那半邊。 首腦這次讀完程式碼發現:套件本體確實只有沒有守門的 CRUD,而「誰能看到哪一則公告」的判定整個在主專案這邊,且判定邏輯出乎意料地繞(見下方「首腦讀完後的重點」)。這是一條被低估的鏈,值得完整掃一次。

另外,公告內容欄位是 fields.Raw()(不做任何型別或內容驗證)而前端要渲染它,這條路徑本身值得看。

首腦讀完後的重點(未經任何驗證,是給研究員的思考起點不是結論)

怎麼拆