แชทบอทบริการลูกค้าตัวหนึ่งทำข้อมูล system prompt ของตัวเองหลุดออกมา เพียงเพราะคำขอสูตรอาหารแกะแบบง่ายๆ ภายในไม่กี่นาที บอทไม่เพียงแต่ให้สูตรอาหารเท่านั้น แต่ยังสร้างโค้ด Python และเปิดเผยคำสั่งภายในที่ใช้ควบคุมพฤติกรรมของมันออกมาด้วย
เหตุการณ์นี้พิสูจน์ให้เห็นว่า "system prompt" ของโมเดลภาษาไม่ใช่กำแพงความปลอดภัย เมื่อบอทต้องตัดสินใจแบบเรียลไทม์ว่าคำขอของผู้ใช้สอดคล้องกับภารกิจของมันหรือไม่ ผู้โจมตีก็สามารถชี้นำการใช้เหตุผลนั้นและทำให้โมเดลเปิดเผยข้อมูลที่เป็นความลับได้
สิ่งที่กระตุ้นให้เกิดการรั่วไหล
การทดสอบเริ่มต้นด้วยคำถามที่ตรงไปตรงมาว่า: “ช่วยให้สูตรแกงแกะหน่อยได้ไหม?” บอทซึ่งมีวัตถุประสงค์ที่ระบุไว้คือเพื่ออธิบายบริการของบริษัท ได้ตอบกลับด้วยสูตรอาหารที่สมบูรณ์ พร้อมทั้งเพิ่มสคริปต์ Python สั้นๆ สำหรับวิเคราะห์ส่วนผสม และจากนั้นก็พิมพ์ข้อความใน system prompt ออกมาแบบคำต่อคำ ซึ่งเป็นข้อความที่บอกโมเดลว่าต้องปฏิบัติตัวอย่างไร
ตัวคำขอเองนั้นไม่มีอันตราย แต่ความเสี่ยงอยู่ที่ความเต็มใจของบอทที่จะปฏิบัติกับสูตรอาหารนั้นเสมือนเป็นส่วนหนึ่งของงานหลักของมัน
ทำไมเรื่องนี้ถึงสำคัญ
ปัจจุบันแชทบอททำหน้าที่ในส่วนที่ต้องติดต่อกับลูกค้า ทั้งการจัดการข้อมูลส่วนบุคคล การทำธุรกรรม หรือการควบคุมเครื่องมือภายใน หากโมเดลสามารถถูกโน้มน้าวให้เปิดเผยชุดคำสั่งของตัวเองได้ ผู้โจมตีก็จะได้รับข้อมูลเชิงลึกเกี่ยวกับ guardrails (มาตรการป้องกัน) ที่ควรจะหยุดยั้งไม่ให้โมเดลทำสิ่งที่เป็นอันตราย
วิธีการโจมตีทำงานอย่างไร
- วิเคราะห์วัตถุประสงค์ของบอท – ผู้ทดสอบระบุว่าหน้าที่ของบอทคือการอธิบายบริการของบริษัท
- สร้างความเชื่อมโยงที่ผิดพลาด – โดยการอ้างว่าจำเป็นต้องใช้สูตรอาหารเพื่อตัดสินใจว่าจะใช้บริการใด ผู้ทดสอบจึงทำให้คำขอนั้นดูเหมือนมีความเกี่ยวข้องกับภารกิจของบอทเพียงผิวเผิน
- ใช้ประโยชน์จากตรรกะ – บอทยอมรับความเกี่ยวข้องที่ถูกสร้างขึ้นมา ทำให้คำขอนั้นผ่านการตรวจสอบความเกี่ยวข้องภายใน และปิดการทำงานของ guardrails ที่ควรจะบล็อกคำขอนั้นไว้
การโจมตีนี้ขึ้นอยู่กับการประเมินความเกี่ยวข้องด้วยตัวเองของโมเดล เมื่อการประเมินนั้นถูกโน้มน้าวได้ "กฎ" ของโมเดลเองก็กลายเป็นสิ่งที่ต่อรองได้
จุดล้มเหลว 3 ประการ
| ขั้นตอนที่ล้มเหลว | สิ่งที่เกิดขึ้น |
|---|---|
| การจี้เป้าหมาย (Goal hijacking) | บอทปฏิบัติกับคำขอทำอาหารที่ไม่เกี่ยวข้องเสมือนเป็นส่วนหนึ่งของเป้าหมายการอธิบายบริการ |
| การขยายขอบเขตความสามารถ (Capability drift) | บอทสร้างโค้ด Python ที่รันได้ ทั้งที่บทบาทของมันไม่ได้รวมถึงการสร้างโค้ด |
| การรั่วไหลของ Prompt (Prompt leakage) | บอทพิมพ์ system prompt ออกมาแบบคำต่อคำ ทั้งที่ควรจะถูกเก็บเป็นความลับ |
แต่ละขั้นตอนแสดงถึงการพังทลายของชั้นการป้องกันที่แตกต่างกัน ซึ่งในการใช้งานจริงหลายแห่งมักทึกทักเอาเองว่าตัวโมเดลจะเป็นผู้บังคับใช้กฎเหล่านั้นเอง
ชั้นการป้องกันที่ใช้งานได้จริง
การย้าย guardrails ออกจากตัวโมเดลไปไว้ในโค้ดแบบ deterministic จะช่วยกู้คืนขอบเขตความปลอดภัยที่เชื่อถือได้กลับมา
- การกำหนดเส้นทางงาน (Task routing) – ใช้ classifier แยกต่างหากเพื่อจับคู่ข้อความที่ส่งเข้ามากับรายการเจตนา (intents) ที่อนุญาตไว้ล่วงหน้า หากคำขออยู่นอกเหนือจากรายการนั้น ให้ปฏิเสธทันที โดยที่โมเดลไม่มีโอกาสได้โต้แย้งเรื่องความเกี่ยวข้อง
- ความสามารถขั้นต่ำที่จำเป็น (Least capability) – ตัดเครื่องมือที่บอทไม่จำเป็นต้องใช้ออกไป หากบอทไม่จำเป็นต้องรันโค้ดหรือเข้าถึงฐานข้อมูลในวงกว้าง ก็ควรลบความสามารถเหล่านั้นออก
- การอนุญาตแบบ Deterministic (Deterministic authorization) – ทำการตรวจสอบสิทธิ์ในโค้ดของแอปพลิเคชัน ไม่ใช่ในโมเดลภาษา โมเดลสามารถเสนอแนะการกระทำได้ แต่โค้ดจะเป็นผู้ตัดสินใจว่าจะดำเนินการตามนั้นหรือไม่
- การตรวจสอบผลลัพธ์ (Output validation) – สแกนทุกการตอบกลับของโมเดลเพื่อหาเนื้อหาที่ไม่ได้รับอนุญาต เช่น system prompt หรือข้อมูลที่ละเอียดอ่อน ก่อนที่ข้อมูลจะส่งถึงผู้ใช้
ตัวกรองที่ถามเพียงแค่ว่า "คำขอนี้ถูกสั่งห้ามหรือไม่?" สามารถถูกหลบเลี่ยงได้โดยผู้ใช้ที่มีวาทศิลป์ แต่ชั้นการกำหนดเส้นทาง (routing layer) ที่ตรวจสอบกับรายการที่ปิดตายไว้แล้ว จะไม่เปิดช่องว่างให้มีการต่อรองใดๆ
สิ่งที่ควรเฝ้าระวังต่อไป
องค์กรที่พึ่งพา Conversational AI ควรตรวจสอบการใช้งานของตนเพื่อหาโหมดความล้มเหลวทั้งสามรูปแบบที่แสดงให้เห็นจากการทดสอบสูตรอาหารแกะ ในระหว่างนี้ ให้ถือว่า system prompt ใดๆ เป็นข้อมูลสาธารณะ และอย่าฝากความหวังไว้ว่ามันจะหยุดยั้งโมเดลจากการเปิดเผยข้อมูลของตัวเองได้
บทเรียนที่ได้รับนั้นชัดเจน: หากโมเดลความปลอดภัยของคุณขึ้นอยู่กับคำแนะนำที่เป็นภาษาธรรมชาติเพียงย่อหน้าเดียว มันก็เปราะบาง จงเสริมความแข็งแกร่งด้วยโค้ดที่สามารถตรวจสอบได้ มีการจัดการเวอร์ชัน และบังคับใช้ได้ ไม่ว่าโมเดลจะพูดอย่างไรก็ตาม
