Skip to content

system prompt 不是安全邊界

你剛才做的事情,就只是開口問。

沒有話術、沒有繞路、沒有任何技巧——你問模型藏在它脈絡裡的 Secret 是什麼,它就告訴你了。這一關讓人不安的地方不在於它有多難,而在於它有多容易。

為什麼會這樣

把 Secret 寫進 system prompt,再交代模型「不要說出去」,是很自然的直覺:指令在上、對話在下,看起來像是一道牆。

它不是牆。

模型收到的東西,是 system prompt 和你的訊息被拼成的同一串 token。模型內部並不存在「這一段可信、那一段不可信」的分界線,它只是在預測下一個字。所謂的保護,只是模型剛好比較傾向於接續「我不能說」而不是「Secret 是⋯」——而那個傾向,是統計上的偏好,不是規則。

Tier 1 甚至沒有交代它去保護什麼。在沒有任何人攻擊的情況下,Secret 就自己走出來了。

這叫什麼

OWASP 在 2026 年版的 LLM Top 10 裡把這件事列為 LLM08 Hidden Context Exposure

它原本叫 System Prompt Leakage,改名並且擴大範圍,正是因為問題從來不只是 system prompt:任何被塞進模型脈絡、而使用者看不到的東西——檢索到的文件、前幾輪的對話、工具回傳的資料——都在同一個袋子裡,而模型分不出袋子裡誰是誰。

所以呢

一句話:凡是進到模型脈絡裡的東西,就當作使用者遲早看得到。

實務上這代表:金鑰、內部規則、其他人的資料,不要放進 prompt。要限制模型能碰什麼,靠的是它拿不到的東西,而不是叫它不要講的東西。


回到 Tier 1 — 直接問,或往下一關:Tier 2 — 繞過指示