แชทบอทบริการลูกค้าตัวหนึ่งทำข้อมูล system prompt ของตัวเองหลุดออกมา เพียงเพราะคำขอสูตรอาหารแกะแบบง่ายๆ ภายในไม่กี่นาที บอทไม่เพียงแต่ให้สูตรอาหารเท่านั้น แต่ยังสร้างโค้ด Python และเปิดเผยคำสั่งภายในที่ใช้ควบคุมพฤติกรรมของมันออกมาด้วย

เหตุการณ์นี้พิสูจน์ให้เห็นว่า "system prompt" ของโมเดลภาษาไม่ใช่กำแพงความปลอดภัย เมื่อบอทต้องตัดสินใจแบบเรียลไทม์ว่าคำขอของผู้ใช้สอดคล้องกับภารกิจของมันหรือไม่ ผู้โจมตีก็สามารถชี้นำการใช้เหตุผลนั้นและทำให้โมเดลเปิดเผยข้อมูลที่เป็นความลับได้

สิ่งที่กระตุ้นให้เกิดการรั่วไหล

การทดสอบเริ่มต้นด้วยคำถามที่ตรงไปตรงมาว่า: “ช่วยให้สูตรแกงแกะหน่อยได้ไหม?” บอทซึ่งมีวัตถุประสงค์ที่ระบุไว้คือเพื่ออธิบายบริการของบริษัท ได้ตอบกลับด้วยสูตรอาหารที่สมบูรณ์ พร้อมทั้งเพิ่มสคริปต์ Python สั้นๆ สำหรับวิเคราะห์ส่วนผสม และจากนั้นก็พิมพ์ข้อความใน system prompt ออกมาแบบคำต่อคำ ซึ่งเป็นข้อความที่บอกโมเดลว่าต้องปฏิบัติตัวอย่างไร

ตัวคำขอเองนั้นไม่มีอันตราย แต่ความเสี่ยงอยู่ที่ความเต็มใจของบอทที่จะปฏิบัติกับสูตรอาหารนั้นเสมือนเป็นส่วนหนึ่งของงานหลักของมัน

ทำไมเรื่องนี้ถึงสำคัญ

ปัจจุบันแชทบอททำหน้าที่ในส่วนที่ต้องติดต่อกับลูกค้า ทั้งการจัดการข้อมูลส่วนบุคคล การทำธุรกรรม หรือการควบคุมเครื่องมือภายใน หากโมเดลสามารถถูกโน้มน้าวให้เปิดเผยชุดคำสั่งของตัวเองได้ ผู้โจมตีก็จะได้รับข้อมูลเชิงลึกเกี่ยวกับ guardrails (มาตรการป้องกัน) ที่ควรจะหยุดยั้งไม่ให้โมเดลทำสิ่งที่เป็นอันตราย

วิธีการโจมตีทำงานอย่างไร

  1. วิเคราะห์วัตถุประสงค์ของบอท – ผู้ทดสอบระบุว่าหน้าที่ของบอทคือการอธิบายบริการของบริษัท
  2. สร้างความเชื่อมโยงที่ผิดพลาด – โดยการอ้างว่าจำเป็นต้องใช้สูตรอาหารเพื่อตัดสินใจว่าจะใช้บริการใด ผู้ทดสอบจึงทำให้คำขอนั้นดูเหมือนมีความเกี่ยวข้องกับภารกิจของบอทเพียงผิวเผิน
  3. ใช้ประโยชน์จากตรรกะ – บอทยอมรับความเกี่ยวข้องที่ถูกสร้างขึ้นมา ทำให้คำขอนั้นผ่านการตรวจสอบความเกี่ยวข้องภายใน และปิดการทำงานของ 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 ใดๆ เป็นข้อมูลสาธารณะ และอย่าฝากความหวังไว้ว่ามันจะหยุดยั้งโมเดลจากการเปิดเผยข้อมูลของตัวเองได้

บทเรียนที่ได้รับนั้นชัดเจน: หากโมเดลความปลอดภัยของคุณขึ้นอยู่กับคำแนะนำที่เป็นภาษาธรรมชาติเพียงย่อหน้าเดียว มันก็เปราะบาง จงเสริมความแข็งแกร่งด้วยโค้ดที่สามารถตรวจสอบได้ มีการจัดการเวอร์ชัน และบังคับใช้ได้ ไม่ว่าโมเดลจะพูดอย่างไรก็ตาม