Prompt Injection ใน​ไ⁠ฟ⁠ล์​และ​เ⁠ว็⁠บ⁠ไ⁠ซ⁠ต์: ป้องกัน Agent ทำตามคำสั่งแฝงอย่างไร

ป้องกันคำสั่งแฝงในเอกสารและ​เ⁠ว็⁠บ⁠ไ⁠ซ⁠ต์​ด้วยขอบเขตข้อมูล สิทธิ์เครื่อง⁠มือ และการอนุ⁠มัติเฉพาะรายการ พร้อมทดสอบผลจริงของ Agent

โดย เผยแพร่ อัปเดต อ่านประมาณ 7 นาที

ภาพประกอบแว่นขยายตรวจข้อความที่ติดธงสีส้มบนเอกสารผู้ขาย ข้างแฟ้มปิด
ในบทความนี้
  1. ตามเส้นทางจากเอกสารไปจนถึงคำสั่ง
  2. เก็บอำนาจสั่งงานไว้นอกข้อมูลที่ค้นมา
  3. ให้สิทธิ์เครื่อง⁠มือน้อยกว่าสิ่งที่บทสนทนาอาจร้องขอ
  4. ทำให้การอนุ⁠มัติเป็นการ⁠ตรวจที่มีข้อมูล
  5. ทดสอบเส้นแบ่ง รวม⁠ถึงทางอ้อม

Agent อ่าน PDF ของผู้ขายเพื่อเทียบเงื่อนไขส่งของ แต่ในเอกสารมีข้อความบอกให้ผู้⁠ช่วยเลิกทำตามคำ⁠ขอทีมจัดซื้อ แล้วส่งข้อมูลภายในไปที่อื่น ข้อความนั้นเป็นส่วน⁠หนึ่งของเอกสารที่กำลังวิเคราะห์ ไม่ใช่คำสั่งจากคนที่อนุญาตให้ทำงาน

Prompt Injection พยายามข้ามเส้นแบ่งนี้ โดยทำให้เนื้อหาภายนอกกลายเป็นอำนาจสั่ง Agent ผลกระทบจะมาก⁠ขึ้นเมื่อผู้⁠ช่วยส่งข้อความ แก้รายการ หรือเรียกเครื่อง⁠มือที่ทำงานสำคัญได้ การป้องกันจึงต้องจำกัดทั้งสิ่งที่เนื้อหาภายนอกชี้นำได้ และสิ่งที่ตัว​แ⁠อ⁠ป​ยอมให้ทำจริง

ตามเส้นทางจากเอกสารไปจนถึงคำสั่ง

ในตัวอย่างสมมติของผู้⁠ช่วยจัดซื้อ ข้อมูลภายนอกอาจมาจาก PDF เ⁠ว็⁠บ⁠ไ⁠ซ⁠ต์ อี⁠เ⁠ม⁠ล หรือผลเครื่อง⁠มือที่อ่านข้อความจาก​ไ⁠ฟ⁠ล์ จาก⁠นั้นผ่านการสรุป ดัชนีค้น หรือ Agent อีกตัว ก่อนถึงส่วนที่เตรียมคำสั่งธุรกิจ การเชื่อมผ่านเครื่อง⁠มือที่เชื่อ⁠ถือ⁠ได้ไม่ได้ทำให้เอกสารทุกชิ้นที่เครื่อง⁠มือนั้นส่งกลับมาน่าเชื่อถือทั้งหมด

แจกแจงเส้นทางเหล่า⁠นี้และงานที่ทำได้ในแต่ละจุด การอ่านเงื่อนไขส่งของใช้สิทธิ์ต่างจากการแก้บัญชีผู้ขายหรือส่งตารางเปรียบเทียบภายใน หาก Agent ตัวเดียวทำได้ครบทุกอย่าง ความผิด⁠พลาดในการตีความจะส่งผลได้ไกลขึ้น

OWASP อธิบาย Prompt Injection ทั้งทางตรงและผ่านเนื้อหาภายนอก รวมความเสี่ยงจากข้อมูลหลายรูป⁠แบบ และเสนอการลดความเสี่ยงหลายชั้น เช่น จำกัดสิทธิ์ แยกเนื้อหาภายนอก และให้คนอนุ⁠มัติงานที่มีผลสำคัญ โดยไม่ได้เสนอวิธีที่รับประกันป้องกันได้ทุกกรณี แนวทาง Prompt Injection ของ OWASP

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

เก็บอำนาจสั่งงานไว้นอกข้อมูลที่ค้นมา

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

แนวทางความ⁠ปลอดภัยของ OpenAI เตือนไม่ให้นำตัวแปรจากแหล่งที่ไม่เชื่อถือใส่ใน Developer message และอธิบายการจำกัดข้อมูลที่ส่งระหว่างขั้น⁠ตอน หลักคิดนี้ใช้ประกอบการออก⁠แบบได้ แม้​แ⁠อ⁠ป​จะมี Workflow ของตัวเองแทนผลิตภัณฑ์ที่ใช้สาธิตในคู่มือ แนวทางสร้าง Agent ของ OpenAI

Anthropic มีคำแนะนำให้ระบุเนื้อหาบุคคลที่สามเป็นข้อมูลที่ไม่เชื่อถือ พร้อมแนวทางเฉพาะเรื่องการใส่ในผลเครื่อง⁠มือและการเข้ารหัสแบบมีโครงสร้าง ควรทำตามข้อตกลงของ API ที่ใช้ ไม่สมมติว่าบทบาทข้อความทำงานเหมือนกันทุกผู้⁠ให้⁠บริการ แนวทางลด Prompt Injection ของ Anthropic

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

ให้สิทธิ์เครื่อง⁠มือน้อยกว่าสิ่งที่บทสนทนาอาจร้องขอ

เครื่อง⁠มืออ่านเอกสารผู้ขายที่ได้⁠รับอนุญาตไม่ควรส่ง​อี⁠เ⁠ม⁠ล​ไปที่ใดก็ได้หรือแก้ราย⁠ละเอียดการจ่ายเงินไปด้วย แยกความ⁠สามารถและตรวจสิทธิ์ฝั่ง​เ⁠ซิ⁠ร์⁠ฟ⁠เ⁠ว⁠อ⁠ร์​ตามผู้ใช้กับขอบเขต⁠งาน รหัสลูกค้าที่​โ⁠ม⁠เ⁠ด⁠ล​เสนอเป็นข้อมูลให้ตรวจ ไม่ใช่คำตัดสินว่ามีสิทธิ์

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

คำสั่งส่งออกต้องตรวจปลายทาง ผู้รับและ​ไ⁠ฟ⁠ล์​แนบควรมาจากข้อมูลธุรกิจที่ยืนยันแล้วกับคำ⁠ขอปัจจุบัน การพบ​อี⁠เ⁠ม⁠ล​หนึ่งใน PDF ของผู้ขายยังไม่ใช่เหตุผลเพียงพอให้ส่ง​ไ⁠ฟ⁠ล์​ภายในไปที่​อี⁠เ⁠ม⁠ล​นั้น

ดูการนำข้อความไปใช้ต่อด้วย ข้อมูลจากเอกสารอาจไปอยู่ใน HTML ตารางคำนวณ หรือคำสั่งฐานข้อมูล ต้องใช้การเข้ารหัสอักขระ การส่งพารามิเตอร์ และการ⁠ตรวจค่าที่เหมาะกับปลายทาง การป้องกัน Prompt Injection ไม่ได้แทนความ⁠ปลอดภัยของ​แ⁠อ⁠ป​ส่วนอื่น

ภาพประกอบคลิปบอร์ดตรวจอนุ⁠มัติที่ยังมีช่องรอ คู่กับซองปิดและปากกา
ภาพประกอบแนวคิด: ตรวจผู้รับ เนื้อหา และรายการข้อมูลก่อนอนุญาตให้ส่งออกจากระบบ

ทำให้การอนุ⁠มัติเป็นการ⁠ตรวจที่มีข้อมูล

คำถามว่า “อนุญาตให้ Agent ทำต่อหรือไม่” ให้ข้อมูลผู้ตรวจน้อยเกินไป ควรแสดงงานที่จะทำ ผู้รับจริง รายการข้อมูล เนื้อหาที่จะส่ง และเหตุผลที่ต้องทำ ระบุด้วยว่าส่วนใดมาจากเอกสารภายนอกและยังต้องยืนยัน

ผูกการอนุ⁠มัติกับข้อมูลคำสั่งและรุ่นที่เตรียมไว้ หาก Agent เปลี่ยนผู้รับหรือ​ไ⁠ฟ⁠ล์​แนบหลังอนุ⁠มัติ การอนุ⁠มัติเดิมต้องไม่ครอบคลุมคำสั่งใหม่ ตรวจสิทธิ์อีกครั้งตอนลงมือด้วย เพราะสิทธิ์ผู้ใช้อาจเปลี่ยนระหว่างรอ

ออก⁠แบบให้เหมาะกับผลกระทบ การอ่านข้อความภายในขอบเขตที่อนุญาตแล้วอาจไม่ต้องถามซ้ำทุก⁠ครั้ง แต่งานส่งข้อมูลภายในหรือแก้รายการสำคัญต้องมีขอบเขตอีกแบบ การให้คนคลิกทุกขั้นที่ไม่เสี่ยงอาจทำให้เคยชินกับการกดยอมรับโดยไม่อ่าน

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

ทดสอบเส้นแบ่ง รวม⁠ถึงทางอ้อม

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

ตรวจคำ⁠ขอใช้เครื่อง⁠มือและรายการปลายทางจริง การตอบว่าไม่ทำตามคำสั่งแฝงยังไม่พอ หากผู้⁠ช่วยเปลี่ยนผู้รับ แนบ​ไ⁠ฟ⁠ล์​ที่ไม่เกี่ยว หรือเขียนค่าที่ยังไม่ตรวจอยู่ดี ต้องพิสูจน์ด้วยว่า​เ⁠ซิ⁠ร์⁠ฟ⁠เ⁠ว⁠อ⁠ร์​ปฏิเสธงานที่ห้ามได้โดยไม่ขึ้นกับคำ⁠ตอบ​โ⁠ม⁠เ⁠ด⁠ล

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

เก็บหลักฐานเหตุผิดปกติที่ช่วย​ต⁠ร⁠ว⁠จ⁠ส⁠อ⁠บ​ได้ โดยไม่กระจายข้อมูลอ่อนไหวลง​บั⁠น⁠ทึ⁠ก​ที่ทุกคนอ่าน กำหนดคนดูรายการที่ถูกระงับ เงื่อนไขหยุดตัวเชื่อมหรือ Workflow และวิธีเพิ่มกรณีที่แก้แล้วกลับเข้าชุดทดสอบ ตรวจซ้ำเมื่อเปลี่ยน​โ⁠ม⁠เ⁠ด⁠ล เครื่อง⁠มือ การอ่าน​ไ⁠ฟ⁠ล์ หรือ Memory เพราะอาจเปิดทางให้เนื้อหาภายนอกไหลไปถึงคำสั่งได้อีก

อ่านกรอบสิทธิ์ภาพ⁠รวมได้จาก สิทธิ์และจุดอนุ⁠มัติของ Agent และนำกรณีเหล่า⁠นี้ไปรวมกับ Evals ที่ตรวจผลทางธุรกิจจริง เพื่อดูว่ามาตรการ⁠ทำงานครบทั้งระบบหรือไม่

Talvyn Labs ช่วย​พั⁠ฒ⁠น⁠า AI Product ที่แบ่งขอบเขตข้อมูล จำกัดเครื่อง⁠มือ มีหน้าตรวจอนุ⁠มัติที่เข้าใจได้ และทดสอบจากเอกสารที่ทีมพบจริง นำ Workflow กับคำสั่งที่ต้องการให้ Agent ทำมาเริ่มกำหนดจุดควบคุม เพื่อให้ระบบทำงานที่เป็นประโยชน์ได้โดยไม่ต้องเชื่อทุกประโยคที่อ่านเจอ

เชื่อม Agent กับงานจริงโดยมีขอบเขตที่​ต⁠ร⁠ว⁠จ⁠ส⁠อ⁠บ​ได้

ให้ Talvyn Labs วางสิทธิ์เครื่อง⁠มือ การส่งข้อมูล และจุดอนุ⁠มัติจาก Workflow ของคุณ พร้อมทดสอบคำสั่งแฝงก่อนเปิดใช้ AI Product

พั⁠ฒ⁠น⁠า Agent พร้อมจุดควบคุม

มีโจทย์ธุรกิจ ที่ต้องการ⁠ปรึกษา?

ไม่ว่าจะเป็น​เ⁠ว็⁠บ⁠ไ⁠ซ⁠ต์​ใหม่ การ⁠พั⁠ฒ⁠น⁠า​ผลิตภัณฑ์ หรือการ⁠เชื่อม⁠ต่อระบบ สามารถแจ้งราย⁠ละเอียดทาง​อี⁠เ⁠ม⁠ล เพื่อนัดเวลาปรึกษาได้

ข้อมูลเบื้อง⁠ต้นก็เพียงพอ ราย⁠ละเอียดอื่นสามารถหารือร่วม⁠กันได้ภายหลัง

ติดต่อเรา
ส่ง​อี⁠เ⁠ม⁠ล​ถึงเรา
hello@talvynlabs.com
Facebook