_))
> * _~
`;'__-' _
____ | ) _ _____________________
____ / / `` w w ____________________
____ w w ________________AI_Goat______
______________________________________
Presented by: rootcauz
透過一系列易受攻擊的 LLM CTF 挑戰來學習 AI 安全性。無需註冊,無雲端費用,在您的系統上本地運行所有內容。
由於ChatGPT和其他引擎的發布,許多公司已經開始建立與AI大語言模型(LLM)整合的軟體。這種興趣的爆發導致了系統的快速開發,這些系統重新引入了舊的漏洞並施加了新類別的不太了解的威脅。許多公司的安全團隊可能沒有完全具備處理法學碩士安全性的能力,因為該領域的工具和學習資源仍處於成熟階段。
我開發了 AI Goat 來了解 LLM 開發以及使用它的公司面臨的安全風險。 CTF 格式是安全研究人員獲得實務經驗並了解這些系統如何容易受到攻擊以及如何被利用的好方法。感謝您對這個項目的興趣,希望您玩得開心!
OWASP Top 10 LLM 應用程式是開始了解 LLM 安全威脅和緩解措施的好地方。我建議您仔細閱讀該文檔,因為 AI Goat 中探討了許多概念,並且它提供了您將在挑戰中面臨的精彩總結。
請記住,封裝在雲端環境中託管的 Web 應用程式中的 LLM 引擎將受到相同的傳統雲端和 Web 應用程式安全威脅。除了這些傳統的威脅之外,LLM專案還將受到以下不全面的威脅:
AI Goat 使用源自 Meta 的 LLaMA 的 Vicuna LLM 並結合 ChatGPT 的反應資料。安裝 AI Goat 時,將從 HuggingFace 下載 LLM 二進位檔案到您的本機電腦。這個大約 8GB 的二進位檔案是挑戰所圍繞的 AI 引擎。 LLM 二進位檔案本質上接受輸入「提示」並給出輸出「響應」。該提示由字串中連接在一起的三個元素組成。這些要素是: 1. 說明; 2. 問題; 3. 響應。說明元素由所描述的法學碩士規則組成。它們旨在向法學碩士描述它應該如何表現。 Question 元素是大多數系統允許使用者輸入的地方。例如,輸入聊天引擎的評論將被放置在「問題」元素中。最後,「答复」部分規定法學碩士對問題做出答覆。
預先建置的 Docker 映像 ai-base 包含執行 LLM 和挑戰所需的所有程式庫。該容器在安裝過程中與 LLM 二進位檔案一起下載。啟動每個挑戰的 docker compose 會附加 LLM 二進位檔案、特定挑戰文件,並公開完成每個挑戰所需的 TCP 連接埠。有關入門說明,請參閱安裝和設定部分。
已準備好一個可選的 CTFd 容器,其中包括每個挑戰描述、提示、類別和標記提交。容器映像託管在我們的 dockerhub 中,與 ai-base 映像一起稱為 ai-ctfd。 ai-ctfd 容器可以從 ai-goat.py 啟動並使用瀏覽器存取。
sudo apt install git -y
sudo apt install python3-pip -y
sudo usermod -aG docker $USER
reboot
git clone https://github.com/dhammon/ai-goat
cd ai-goat
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
本節要求您已遵循Installation
步驟。
使用 ai-ctfd 可為您提供所有挑戰和標記提交的清單。它是您自己使用或舉辦 CTF 時使用的絕佳工具。作為個人使用它可以為您提供挑戰地圖,並幫助您追蹤已完成的挑戰。它提供標記提交以確認挑戰完成,並可以提供提示,將您推向正確的方向。該容器還可以在內部伺服器上啟動和託管,您可以在其中將自己的 CTF 託管給一組安全愛好者。以下命令在背景啟動 ai-ctfd 並可在連接埠 8000 上存取:
./ai-goat.py --run ctfd
重要提示:啟動後,您必須建立使用者並註冊使用者帳戶。此註冊保留在容器本地,不需要真實的電子郵件地址。
您可以更改挑戰原始碼中的標誌,然後更改 CTFD 中的標誌(它們必須匹配)。
ai-goat/app/challenges/1/app.py
並更改第 12 行字串中的標誌。ai-goat/app/challenges/2/entrypoint.sh
並更改第 3 行的標誌。./ai-goat.py --run ctfd
並開啟瀏覽器造訪http://127.0.0.1:8000
),然後使用root
使用者使用qVLv27Dsy5WuXRubjfII
作為密碼登入。玩得開心!
有關每個挑戰的說明,請參閱Challenges
部分,或參閱Step 1
中的 ai-ctfd 網頁。以下命令啟動第一個挑戰:
./ai-goat.py --run 1
挑戰容器將在背景啟動,並提供有關如何與挑戰互動的說明。每個挑戰都有一個標誌,它是一個用大括號括起來的字串。例如: {eXampl3F!ag}
。您可以透過提交 ai-ctfd 頁面中的主題挑戰來驗證該標誌。
重要提示:有時 LLM 會構成標誌值,因此請確保在 ai-ctfd 中驗證該標誌;)
重要提示:LLM 回覆可能需要 30 秒左右
./ai-goat.py --run
。如果容器已在執行,此命令將重新啟動容器。docker container ps
。要停止容器: docker stop
。 主分支將始終包含最新版本。歷史版本將在各自的分支中維護。升級說明:
cd ai-goat
git pull
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
重要提示:ai-ctfd 將有效地從頭開始,因此請確保創建一個新用戶並根據需要重新提交/重做任何先前的挑戰。
成功的即時注入攻擊會影響法學碩士以他們不打算洩露的資訊回應。在本次挑戰中,在連接埠 9001 上運行的人工智慧聊天機器人將標誌儲存為秘密,並被提示不要放棄它。你能說服或欺騙機器人給你旗幟嗎?
./ai-goat.py -r 1
LLM01:立即註射 | LLM07:資料外洩
LLM 系統輸出不應被信任,尤其是當該輸出用於下游操作(例如作業系統命令或網路呼叫)時。此挑戰賽有另一個 AI 聊天機器人在連接埠 9002 上運行,它接受用戶問題並返回網站標題。使用者輸入由聊天機器人轉換為 URL,用於在提取標題時請求該網站的原始程式碼。該聊天機器人還可以透過網路存取什麼?
./ai-goat.py -r 2
LLM02:不安全的輸出處理
最新版本是主分支。您可以在CHANGELOG.md
檔案中找到該版本。為每個各自的版本建立分支。
CTF引擎:CTFD
藝術創作:ascii.co.uk 上的 ejm97
AI容器技術: