安全、越獄與紅隊測試

提示注入(prompt injection)

提示注入(prompt injection)發生在大型語言模型分不出「它該遵循的指令」與「它該處理的資料」之時。對模型來說,兩者都以同一串文字抵達。於是當開發者的應用把一段可信的系統指令和不可信的使用者內容串接在一起,攻擊者就能寫出讀起來像命令的內容——忽略你的指示、改去做這件事——而模型可能照辦這條夾帶進來的命令,彷彿它出自開發者之手。

這是 SQL 注入在大型語言模型上的近親,根因相同:把「控制」與「資料」混在同一個通道裡。一個被交代要有禮貌的客服機器人,可能被導向辱罵客戶;一個負責摘要文件的應用,可能被命令把對話內容外洩;一個寫程式的代理(agent),可能被指示植入後門。因為模型沒有可靠、內建的「指令權限」概念,一般的越獄措辭同時也能當成注入酬載(payload)。

沒有乾淨的解法,只有緩解:把不可信文字清楚地界定與標示、對工具與資料給模型最小權限、驗證並約束它的輸出,且絕不讓單一一次模型動作在沒有檢查的情況下造成不可逆的傷害。把每一個從外部進入提示的位元組,都當成可能懷有敵意。

提示注入針對的是「圍繞模型打造的應用」,而非模型自己的拒絕機制——這正是為什麼模型端的安全訓練解決不了它。

又称
prompt injection attackinstruction injection