_))
> * _~
`;'__-' _
____ | ) _ _____________________
____ / / `` w w ____________________
____ w w ________________AI_Goat______
______________________________________
Presented by: rootcauz
Pelajari keamanan AI melalui serangkaian tantangan LLM CTF yang rentan. Tanpa pendaftaran, tanpa biaya cloud, jalankan semuanya secara lokal di sistem Anda.
Banyak perusahaan telah mulai membangun perangkat lunak yang terintegrasi dengan model bahasa besar (LLM) AI karena dirilisnya ChatGPT dan mesin lainnya. Ledakan minat ini telah menyebabkan pesatnya perkembangan sistem yang memunculkan kembali kerentanan lama dan menerapkan kelompok ancaman baru yang kurang dipahami. Banyak tim keamanan perusahaan mungkin belum sepenuhnya siap menangani keamanan LLM karena bidangnya masih memiliki alat dan sumber pembelajaran yang matang.
Saya mengembangkan AI Goat untuk mempelajari pengembangan LLM dan risiko keamanan yang dihadapi perusahaan yang menggunakannya. Format CTF adalah cara terbaik bagi peneliti keamanan untuk mendapatkan pengalaman praktis dan belajar tentang bagaimana sistem ini rentan dan dapat dieksploitasi. Terima kasih atas minat Anda pada proyek ini dan saya harap Anda bersenang-senang!
10 Teratas OWASP untuk Aplikasi LLM adalah tempat yang bagus untuk mulai belajar tentang ancaman dan mitigasi keamanan LLM. Saya sarankan Anda membaca dokumen secara menyeluruh karena banyak konsep yang dieksplorasi di AI Goat dan dokumen ini memberikan ringkasan luar biasa tentang apa yang akan Anda hadapi dalam tantangan.
Ingat, mesin LLM yang dibungkus dalam aplikasi web yang dihosting di lingkungan cloud akan terkena ancaman keamanan aplikasi web dan cloud tradisional yang sama. Selain ancaman tradisional ini, proyek LLM juga akan terkena daftar ancaman yang tidak komprehensif berikut ini:
AI Goat menggunakan Vicuna LLM yang berasal dari LLaMA Meta dan digabungkan dengan data respons ChatGPT. Saat memasang AI Goat, biner LLM diunduh dari HuggingFace secara lokal di komputer Anda. Biner berukuran kira-kira 8GB ini adalah mesin AI yang menjadi tantangannya. Biner LLM pada dasarnya mengambil masukan "prompt" dan memberikan keluaran, "respons". Prompt terdiri dari tiga elemen yang digabungkan menjadi satu dalam sebuah string. Unsur-unsur tersebut adalah: 1. Petunjuk; 2. Pertanyaan; dan 3. Respon. Elemen Instruksi terdiri dari aturan yang dijelaskan untuk LLM. Mereka dimaksudkan untuk menjelaskan kepada LLM bagaimana seharusnya berperilaku. Elemen Pertanyaan adalah tempat sebagian besar sistem mengizinkan masukan pengguna. Misalnya, komentar yang dimasukkan ke mesin obrolan akan ditempatkan di elemen Pertanyaan. Terakhir, bagian Respons mengatur agar LLM memberikan respons terhadap pertanyaan tersebut.
Gambar Docker bawaan, ai-base, memiliki semua perpustakaan yang diperlukan untuk menjalankan LLM dan tantangannya. Kontainer ini diunduh selama proses instalasi bersama dengan biner LLM. Penulisan buruh pelabuhan yang meluncurkan setiap tantangan melampirkan biner LLM, file tantangan spesifik, dan mengekspos port TCP yang diperlukan untuk menyelesaikan setiap tantangan. Lihat bagian instalasi dan pengaturan untuk petunjuk memulai.
Wadah CTFd opsional telah disiapkan yang mencakup setiap deskripsi tantangan, petunjuk, kategori, dan pengiriman bendera. Gambar kontainer dihosting di dockerhub kami dan disebut ai-ctfd di samping gambar ai-base. Kontainer ai-ctfd dapat diluncurkan dari ai-goat.py dan diakses menggunakan browser Anda.
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
Bagian ini mengharapkan Anda telah mengikuti langkah-langkah Installation
.
Menggunakan ai-ctfd memberi Anda daftar semua tantangan dan pengiriman bendera. Ini adalah alat yang hebat untuk digunakan sendiri atau saat menghosting CTF. Menggunakannya sebagai individu memberi Anda peta tantangan dan membantu Anda melacak tantangan mana yang telah Anda selesaikan. Ini menawarkan pengiriman bendera untuk mengonfirmasi penyelesaian tantangan dan dapat memberikan petunjuk yang mendorong Anda ke arah yang benar. Kontainer juga dapat diluncurkan dan dihosting di server internal tempat Anda dapat menghosting CTF Anda sendiri ke sekelompok penggemar keamanan. Perintah berikut meluncurkan ai-ctfd di latar belakang dan dapat diakses pada port 8000:
./ai-goat.py --run ctfd
Penting: Setelah diluncurkan, Anda harus membuat pengguna yang mendaftarkan akun pengguna. Pendaftaran ini tetap bersifat lokal di penampung dan tidak memerlukan alamat email asli.
Anda dapat mengubah tanda dalam kode sumber tantangan dan kemudian di CTFD (harus cocok).
ai-goat/app/challenges/1/app.py
dan ubah tanda pada string pada baris 12.ai-goat/app/challenges/2/entrypoint.sh
dan ubah bendera di baris 3../ai-goat.py --run ctfd
dan buka browser ke http://127.0.0.1:8000
) lalu login dengan pengguna root
menggunakan qVLv27Dsy5WuXRubjfII
sebagai kata sandi.Selamat bersenang-senang!
Lihat bagian Challenges
untuk penjelasan setiap tantangan atau lihat halaman web ai-ctfd dari Step 1
. Perintah berikut meluncurkan tantangan pertama:
./ai-goat.py --run 1
Wadah tantangan akan diluncurkan di latar belakang dan memberikan petunjuk tentang cara berinteraksi dengan tantangan. Setiap tantangan memiliki bendera, yaitu string yang diapit kurung kurawal. Misalnya: {eXampl3F!ag}
. Anda memverifikasi bendera melalui penyerahan tantangan subjek di halaman ai-ctfd.
Penting: Terkadang LLM membuat nilai bendera, jadi pastikan Anda memverifikasi bendera di ai-ctfd ;)
Penting: Respons LLM dapat memerlukan waktu sekitar 30 detik
./ai-goat.py --run
. Perintah ini akan memulai ulang container jika sudah berjalan.docker container ps
. Untuk menghentikan sebuah container: docker stop
. Cabang utama akan selalu berisi rilis terbaru. Versi sejarah akan disimpan di masing-masing cabang. Petunjuk peningkatan:
cd ai-goat
git pull
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
Penting: ai-ctfd akan dimulai dari awal secara efektif, jadi pastikan untuk membuat pengguna baru dan kirim ulang/ulangi tantangan sebelumnya jika diinginkan.
Serangan injeksi cepat yang berhasil memengaruhi LLM untuk merespons dengan informasi yang tidak ingin mereka ungkapkan. Dalam tantangan ini, chatbot AI yang berjalan pada port 9001 menyimpan bendera sebagai rahasia dan diminta untuk tidak menyerahkannya. Bisakah Anda meyakinkan atau mengelabui bot agar memberi Anda bendera?
./ai-goat.py -r 1
LLM01: Suntikan Segera | LLM07: Kebocoran Data
Keluaran sistem LLM tidak boleh dipercaya, terutama bila keluaran tersebut digunakan dalam operasi hilir seperti perintah OS atau panggilan jaringan. Tantangan ini memiliki chatbot AI lain yang berjalan pada port 9002 yang menjawab pertanyaan pengguna dan mengembalikan judul situs web. Masukan pengguna diubah menjadi URL oleh chatbot yang digunakan untuk meminta sumber situs tersebut sambil menyalin judulnya. Apa lagi yang bisa diakses jaringan chatbot ini?
./ai-goat.py -r 2
LLM02: Penanganan Output Tidak Aman
Versi terbaru adalah cabang utama. Anda dapat menemukan versinya di file CHANGELOG.md
. Cabang dibuat untuk setiap versi masing-masing.
Mesin CTF: CTFD
Seni oleh: ejm97 di ascii.co.uk
Teknologi wadah AI: