站到攻擊者的角度
前四天,我一直站在防守方的角度在思考:這個系統有哪些風險(OWASP)、我該怎麼系統性地管理這些風險(NIST)。今天要換一個角度——如果我是想攻破這個系統的人,我會怎麼規劃我的攻擊路徑?
換個視角看待事情的角度會不同,相較於單純列出有哪些風險類別,跟攻擊者實際上會怎麼一步一步組合這些手法來達成目的是兩件不同的事。今天用的是 MITRE ATLAS 這個框架,它專門在整理AI 系統的對手戰術與技術。說白話一點,就是一份駭客如果要打 AI 系統,通常會走哪些套路的參考資料庫。
MITRE ATLAS 在做什麼?
MITRE 這個組織原本就以整理資安攻防知識庫聞名(熟悉傳統資安的人可能聽過 MITRE ATT&CK,那是給一般 IT 系統用的) 。ATLAS 是他們專門為 AI 系統另外做的一個版本,裡面整理了從怎麼開始接觸目標系統到最後怎麼達成攻擊目的的完整戰術分類,還附上不少真實的案例研究。
對我來說,這份資料庫最有用的地方,就是是它將攻擊拆成階段而非零散的技巧清單。這讓我可以用講故事的方式設計出一條完整的攻擊路徑,而不是東測一題、西測一題,測完不知道彼此之間的關聯。
設計我的攻擊鏈(Attack Chain)
參考 ATLAS 拆解的攻擊階段邏輯,我把自己這幾天測試的手法,重新串成一條完整的路徑:
第一步:Initial Access(初始接觸)
攻擊者透過正常的聊天介面,開始跟 Chatbot 互動
↓
第二步:Discovery(偵查)
攻擊者用類似「你是誰」、「你的規則是什麼」這種問題,
試探系統的角色設定與限制條件
↓
第三步:Execution(執行攻擊手法)
攻擊者根據偵查到的資訊,設計 Prompt Injection,
嘗試讓系統忽略原本設定的角色限制
↓
第四步:Collection(收集目標資料)
如果前面的操控成功,攻擊者接著嘗試取得敏感資訊,
例如病患資料、或系統的完整設定
↓
第五步:Exfiltration(資料外流)
攻擊者將取得的資訊,以某種形式帶出系統
(例如直接顯示在對話回應裡)
↓
第六步:Impact(造成影響)
病患隱私外洩、系統信任度受損、
甚至可能違反醫療資料保護相關規範
對照回我這幾天的實測經驗,我發現自己不知不覺已經走過了這條鏈的前四步:我測試過角色設定(Discovery)、測試過 Prompt Injection(Execution)、也測試過資料查詢類的攻擊(想進到 Collection 階段,雖然大部分被擋下來了)。唯一真正走到「洩漏」這一步的,是 System Prompt Leakage 那幾題——攻擊者從 Discovery 直接跳到某種程度的 Exfiltration,中間幾乎沒有阻礙。
這條攻擊鏈給我的啟發
畫完這張圖,我更清楚一件事:防禦不能只顧單一個點,要顧整條鏈。 就算我把 Prompt Injection 防得再好,只要 System Prompt Leakage 這個環節沒補上,攻擊者一樣可以繞過中間的步驟,直接從偵查跳到資料外流。這也是我接下來設計防禦(Blue Team 階段)時,會提醒自己不要只顧著補單一漏洞,而是要想這個補丁有沒有可能被攻擊者從別的路徑繞過去。
明天預告
Day 6 會進入這個系列的第一個實作里程碑:把前五天想清楚的東西,實際動手做出一個能跑的醫療 AI Chatbot。理論的部分先告一段落,接下來要開始真正的動手實驗了。
本系列所有病患資料皆為人工生成之虛構資料,不涉及任何真實病患。GitHub Repo:medical-ai-security-lab