- Google จัดอีเวนต์ bugSWAT แบบ red-teaming ล่วงหน้าเพื่อเสริมความแข็งแกร่งด้าน AI security และเปิดโอกาสให้นักวิจัยทดสอบระบบ AI ของบริษัทอย่างเข้มข้น
- ทีมที่เคยได้รับรางวัล $50,000 ในปี 2023 ครั้งนี้ก็พบช่องโหว่ใหม่ของ Gemini อีก และคว้าตำแหน่ง ‘Most Valuable Hacker(MVH)’
- ทีมแฮ็กเกอร์ได้รับสิทธิ์เข้าถึงฟีเจอร์พรีวิวของ Gemini รุ่นใหม่ และเอกสารจาก Google เพื่อนำมาทดสอบฟีเจอร์ในมุมมองด้านความปลอดภัย
- เมื่อขอให้เขียนโค้ด Python ด้วยพรอมป์ต์ง่าย ๆ จะมีปุ่ม “Run in Sandbox” ให้ใช้
- สภาพแวดล้อม sandbox ของ Gemini เป็นสภาพแวดล้อมรัน Python ที่ปลอดภัย ออกแบบบนพื้นฐานของ gVisor และ GRTE ของ Google
- gVisor คือเคอร์เนลใน user space ที่ Google สร้างขึ้น เป็นเทคโนโลยีที่ดักจับ system call เพื่อเพิ่มความปลอดภัย
- สภาพแวดล้อม sandbox ถูกแยกอย่างสมบูรณ์ และหลบหนีออกจากมันได้ยากมาก
- แต่ก็ยังมีกรณีที่สามารถดึงข้อมูลออกจากภายใน sandbox ได้
- พบว่า sandbox เปิดให้ใช้ไลบรารี
os จึงเขียนโค้ด Python เพื่อสำรวจ file system ได้
- พบไฟล์ไบนารีขนาด 579MB ที่
/usr/bin/entry/entry_point
- หากพิมพ์ไฟล์ไบนารีออกมาเป็น base64 ตรง ๆ sandbox จะล่ม จึงแบ่งออกเป็นช่วงละ 10MB แล้วค่อยพิมพ์
- ใช้เครื่องมือชื่อ
Caido เพื่อเก็บทุกชังก์แบบอัตโนมัติและนำมาประกอบคืนบนเครื่องโลคัล
- เมื่อนำไปวิเคราะห์ด้วยคำสั่ง
file, strings, binwalk ก็พบโครงสร้างภายในและเส้นทางภายในของ Google ถูกเปิดเผย
- จากการวิเคราะห์ด้วย binwalk พบไดเรกทอรี
google3 ที่บรรจุซอร์สโค้ด Python ภายใน
- ภายในไดเรกทอรี
assistant มีโค้ดที่เกี่ยวข้องกับ RPC ซึ่ง Gemini ใช้โต้ตอบกับบริการของ Google เช่น YouTube, Flights เป็นต้น
- มีสตริงสำหรับป้องกันการดัมป์สคริปต์บางรายการรวมอยู่ด้วย แต่ทีมความปลอดภัยของ Google ได้ตรวจสอบล่วงหน้าแล้วและตัดสินว่าสามารถเปิดเผยโค้ดดังกล่าวได้
วิเคราะห์ลอจิกหลักของ sandbox
- การเรียกใช้บริการของ Google ถูกอิมพลีเมนต์ไว้ในคลาสเฉพาะที่เขียนด้วยโค้ด Python
- เช่น
_set_reader_and_writer, run_tool เป็นต้น ใช้ file descriptor ในการสื่อสารกับบริการของ Google
- ภายในไบนารีสามารถประกอบข้อความโดยอิงจาก protobuf schema โดยตรง และเรียกใช้เครื่องมือได้
- Google อิมพลีเมนต์ให้ Gemini อ้างอิงจากงานวิจัย
ReAct เพื่อให้มันสร้างพรอมป์ต์หลายครั้งและวางแผนด้วยตัวเองในการแก้ปัญหาที่ซับซ้อน
- ตัวอย่างเช่น หากผู้ใช้ถามว่า “เวลาเที่ยวบิน Toronto → New York?” Gemini จะเลือกเครื่องมือและค้นข้อมูลผ่านหลายขั้นตอน
- มีการพยายามใช้ประโยชน์จากลอจิกนี้เพื่อทำ prompt injection ให้สร้าง sandbox ที่มีสิทธิ์สูงกว่า
- sandbox บางตัวสามารถเข้าถึงความสามารถขยายของ Google ได้ เช่น RPC API
- ความสามารถขยายเหล่านี้ถูกเรียกใช้ผ่าน FD ที่เปิดค้างอยู่เสมอ และหากนำไปใช้ในทางที่ผิด ก็อาจเข้าถึงระบบในระดับสูงขึ้นได้
- ยืนยันได้ว่าสามารถเข้าถึง sandbox ขั้นสูงได้ภายใต้เงื่อนไขบางอย่าง เช่น ในขั้นตอนที่ Gemini กำลังวางแผน
การรั่วไหลของไฟล์ proto ที่อ่อนไหว
- ไฟล์ Protocol Buffer (proto) ใช้กำหนดข้อมูลระหว่างระบบ และมีข้อมูลโครงสร้างระบบที่อ่อนไหวรวมอยู่
- หลังรัน
strings entry_point > stringsoutput.txt แล้วค้นหาสตริง “Dogfood” ก็พบว่าเส้นทาง proto ที่อ่อนไหวจำนวนมากถูกเปิดเผย
- ตัวอย่าง:
privacy/data_governance/attributes/proto/classification.proto → ไฟล์ที่กำหนดว่า Google จัดประเภทข้อมูลผู้ใช้อย่างไร
- คำสั่ง
cat stringsoutput.txt | grep '.proto' | grep 'security' เปิดเผยรายชื่อไฟล์ proto ที่เกี่ยวข้องกับความปลอดภัยจำนวนมาก
- ตัวอย่าง:
security/thinmint/proto/core/thinmint_core.proto, security/credentials/proto/authenticator.proto เป็นต้น
ทำไมไฟล์เหล่านี้ถึงอยู่ที่นั่น?
- ทีมความปลอดภัยของ Google อนุมัติเนื้อหาที่รวมอยู่ในไบนารีของ sandbox ล่วงหน้าแล้ว แต่ build pipeline แบบอัตโนมัติกลับเพิ่มไฟล์ security proto ที่ไม่จำเป็นเข้ามา
- ส่งผลให้ไฟล์นิยามภายในที่มีความอ่อนไหวสูงถูกเปิดเผยสู่ภายนอก
- ฝั่งแฮ็กเกอร์จึงรายงานเรื่องนี้เป็นช่องโหว่ โดยอิงจากข้อเท็จจริงที่ว่าไฟล์เหล่านี้ถูกจัดเป็นข้อมูลอ่อนไหวตามเกณฑ์ของ Google
บทสรุปและข้อคิดย้อนหลัง
- ระบบ AI มีองค์ประกอบจำนวนมากที่ทำงานโต้ตอบกัน จึงมักเกิดปัญหาด้านความปลอดภัยที่คาดไม่ถึงได้บ่อย
- แม้แต่ sandbox เพียงตัวเดียวก็ยังสื่อสารกับเครื่องมือภายในและมีสิทธิ์ที่เปลี่ยนแปลงได้แบบไดนามิก จึงจำเป็นต้องมีการทดสอบอย่างละเอียด
- การร่วมมือกับทีมความปลอดภัยของ Google เป็นประโยชน์มาก และประสบการณ์ทั้งหมดก็เป็นการผจญภัยที่ทั้งท้าทายและน่าตื่นเต้น
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
stringsที่มีมาให้ในตัวเพื่อดึงชื่อไฟล์บางส่วนออกจากไบนารี คงเรียกว่าเป็นการแฮ็ก/แคร็กได้ยาก