_))
> * _~
`;'__-' _
____ | ) _ _____________________
____ / / `` w w ____________________
____ w w ________________AI_Goat______
______________________________________
Presented by: rootcauz
เรียนรู้ความปลอดภัยของ AI ผ่านชุดความท้าทาย LLM CTF ที่มีช่องโหว่ ไม่มีการสมัครสมาชิก ไม่มีค่าธรรมเนียมคลาวด์ รันทุกอย่างภายในระบบของคุณ
บริษัทหลายแห่งเริ่มสร้างซอฟต์แวร์ที่ผสานรวมกับโมเดลภาษาขนาดใหญ่ของ AI (LLM) เนื่องจากการเปิดตัว ChatGPT และกลไกอื่นๆ ความสนใจที่เพิ่มขึ้นนี้ได้นำไปสู่ระบบการพัฒนาที่รวดเร็วซึ่งนำช่องโหว่เก่ากลับมาอีกครั้ง และกำหนดประเภทใหม่ของภัยคุกคามที่ไม่ค่อยมีใครเข้าใจ ทีมรักษาความปลอดภัยของบริษัทหลายแห่งอาจไม่มีอุปกรณ์ครบครันในการจัดการกับความปลอดภัยของ LLM เนื่องจากสาขานี้ยังคงมีเครื่องมือและทรัพยากรการเรียนรู้เพิ่มมากขึ้น
ฉันได้พัฒนา AI Goat เพื่อเรียนรู้เกี่ยวกับการพัฒนา LLM และความเสี่ยงด้านความปลอดภัยที่บริษัทต่างๆ เผชิญในการใช้งาน รูปแบบ CTF เป็นวิธีที่ดีเยี่ยมสำหรับนักวิจัยด้านความปลอดภัยในการได้รับประสบการณ์เชิงปฏิบัติและเรียนรู้ว่าระบบเหล่านี้มีช่องโหว่และสามารถถูกโจมตีได้อย่างไร ขอขอบคุณที่สนใจโครงการนี้ และฉันหวังว่าคุณจะสนุก!
OWASP Top 10 สำหรับแอปพลิเคชัน LLM เป็นสถานที่ที่ดีเยี่ยมในการเริ่มต้นเรียนรู้เกี่ยวกับภัยคุกคามและการบรรเทาความปลอดภัยของ LLM ฉันขอแนะนำให้คุณอ่านเอกสารอย่างละเอียด เนื่องจากมีการสำรวจแนวคิดต่างๆ ใน AI Goat และให้บทสรุปที่ยอดเยี่ยมเกี่ยวกับสิ่งที่คุณจะเผชิญในความท้าทาย
โปรดจำไว้ว่ากลไก LLM ที่รวมอยู่ในเว็บแอปพลิเคชันที่โฮสต์ในสภาพแวดล้อมคลาวด์จะต้องตกอยู่ภายใต้ภัยคุกคามด้านความปลอดภัยบนคลาวด์และเว็บแอปพลิเคชันแบบเดิม นอกเหนือจากภัยคุกคามแบบดั้งเดิมเหล่านี้ โครงการ LLM ยังอยู่ภายใต้รายการภัยคุกคามที่ไม่ครอบคลุมดังต่อไปนี้:
AI Goat ใช้ Vicuna LLM ซึ่งได้มาจาก LLaMA ของ Meta และควบคู่ไปกับข้อมูลการตอบสนองของ ChatGPT เมื่อติดตั้ง AI Goat ไบนารี LLM จะถูกดาวน์โหลดจาก HuggingFace ในเครื่องคอมพิวเตอร์ของคุณ ไบนารี่ขนาดประมาณ 8GB นี้เป็นเอ็นจิ้น AI ที่สร้างความท้าทายขึ้นมา ไบนารี LLM รับอินพุต "พร้อมท์" เป็นหลักและให้เอาต์พุต "ตอบกลับ" พรอมต์ประกอบด้วยสามองค์ประกอบที่ต่อกันเป็นสตริง องค์ประกอบเหล่านี้คือ: 1. คำแนะนำ; 2. คำถาม; และ 3. การตอบสนอง องค์ประกอบคำแนะนำประกอบด้วยกฎที่อธิบายไว้สำหรับ LLM มีไว้เพื่ออธิบายให้ LLM ทราบว่าควรประพฤติตนอย่างไร องค์ประกอบคำถามคือส่วนที่ระบบส่วนใหญ่อนุญาตให้ผู้ใช้ป้อนข้อมูล ตัวอย่างเช่น ความคิดเห็นที่ป้อนลงในเครื่องมือแชทจะถูกวางไว้ในองค์ประกอบคำถาม สุดท้ายนี้ ส่วนการตอบสนองกำหนดให้ LLM ตอบคำถาม
อิมเมจ Docker ที่สร้างไว้ล่วงหน้า ai-base มีไลบรารีทั้งหมดที่จำเป็นในการรัน LLM และความท้าทาย คอนเทนเนอร์นี้จะถูกดาวน์โหลดในระหว่างกระบวนการติดตั้งพร้อมกับไบนารี LLM นักเทียบท่าเขียนที่เปิดใช้งานแต่ละความท้าทายจะแนบไบนารี LLM ไฟล์ความท้าทายเฉพาะ และเปิดเผยพอร์ต TCP ที่จำเป็นในการทำให้แต่ละความท้าทายเสร็จสมบูรณ์ ดูส่วนการติดตั้งและการตั้งค่าสำหรับคำแนะนำในการเริ่มต้นใช้งาน
มีการเตรียมคอนเทนเนอร์ CTFd เสริมซึ่งประกอบด้วยคำอธิบายการท้าทาย คำแนะนำ หมวดหมู่ และการส่งธง อิมเมจคอนเทนเนอร์โฮสต์อยู่ใน dockerhub ของเรา และเรียกว่า ai-ctfd ควบคู่ไปกับอิมเมจ ai-base คอนเทนเนอร์ 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
และเปลี่ยนการตั้งค่าสถานะในสตริงที่บรรทัด 12ai-goat/app/challenges/2/entrypoint.sh
และเปลี่ยนธงในบรรทัดที่ 3./ai-goat.py --run ctfd
และเปิดเบราว์เซอร์ไปที่ http://127.0.0.1:8000
) จากนั้นเข้าสู่ระบบด้วยผู้ใช้ root
โดยใช้ qVLv27Dsy5WuXRubjfII
เป็นรหัสผ่านมีความสุข!
ดูส่วน Challenges
สำหรับคำอธิบายของแต่ละความท้าทายหรืออ้างอิงถึงหน้าเว็บ ai-ctfd จาก Step 1
คำสั่งต่อไปนี้เปิดการท้าทายแรก:
./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 จะเริ่มต้นใหม่อย่างมีประสิทธิภาพ ดังนั้นอย่าลืมสร้างผู้ใช้ใหม่และส่งการท้าทายก่อนหน้านี้อีกครั้ง หากต้องการ
การโจมตีแบบฉีดพร้อมท์ที่ประสบความสำเร็จส่งผลให้ LLM ตอบสนองต่อข้อมูลที่ไม่ได้ตั้งใจจะเปิดเผย ในความท้าทายนี้ แชทบอท AI ที่ทำงานบนพอร์ต 9001 กำลังจัดเก็บแฟล็กไว้เป็นความลับ และได้รับแจ้งให้ไม่ยอมแพ้ คุณสามารถโน้มน้าวหรือหลอกให้บอทมอบธงให้คุณได้หรือไม่?
./ai-goat.py -r 1
LLM01: การฉีดพร้อมท์ | LLM07: ข้อมูลรั่วไหล
ไม่ควรเชื่อถือเอาต์พุตของระบบ LLM โดยเฉพาะอย่างยิ่งเมื่อมีการใช้เอาต์พุตนั้นในการดำเนินการดาวน์สตรีม เช่น คำสั่ง OS หรือการเรียกผ่านเครือข่าย ความท้าทายนี้มีแชทบอท AI อีกตัวที่ทำงานบนพอร์ต 9002 ซึ่งจะตอบคำถามของผู้ใช้และส่งกลับชื่อเว็บไซต์ การป้อนข้อมูลของผู้ใช้จะถูกแปลงเป็น URL โดยแชทบอตซึ่งใช้เพื่อขอแหล่งที่มาของไซต์นั้นในขณะที่ริปชื่อ Chatbot นี้สามารถเข้าถึงเครือข่ายอะไรได้อีก?
./ai-goat.py -r 2
LLM02: การจัดการเอาต์พุตที่ไม่ปลอดภัย
เวอร์ชันล่าสุดเป็นสาขาหลัก คุณสามารถค้นหาเวอร์ชันได้ในไฟล์ CHANGELOG.md
สาขาจะถูกสร้างขึ้นสำหรับแต่ละเวอร์ชันที่เกี่ยวข้อง
เครื่องยนต์ CTF: CTFD
ศิลปะโดย: ejm97 บน ascii.co.uk
เทคโนโลยีคอนเทนเนอร์ AI: