MITRE ATLAS
mitre-atlas-cs0016
以提示詞注入在 MathGPT 上達成程式碼執行
- 自主式 agent
- 系統入侵與遠端程式碼執行
公開的 Streamlit 應用程式 MathGPT(https://mathgpt.streamlit.app/),會用大型語言模型(LLM)GPT-3 來回答使用者提出的數學問題。 近期的研究與實驗顯示,GPT-3 這類 LLM 直接做精確數學運算時表現並不好;不過只要改成請它產生可以解題的可執行程式碼,答案就會準確得多。在 MathGPT 這個應用程式中,GPT-3 的工作就是把使用者的自然語言問題,轉成 Python 程式碼,接著再實際執行。運算完成後,執行過的程式碼與答案會一起顯示給使用者。 有些 LLM 會受到提示詞注入攻擊影響,也就是惡意的使用者輸入,會讓模型做出非預期的行為。在這起事件中,攻擊者嘗試了好幾種覆寫提示詞的做法,最後產生出來的程式碼,讓他取得了應用程式主機的系統環境變數與該應用程式的 GPT-3 API 金鑰,同時也發動了一次阻斷服務攻擊。結果,攻擊者原本可以耗光這個應用程式的 API 查詢額度,或直接把服務打掛。 在把這些攻擊手法與結果揭露給 MathGPT 與 Streamlit 團隊之後,兩邊都採取了緩解措施,包括過濾特定提示詞,以及輪替 API 金鑰。