การวางยาพิษเครื่องมือ MCP: ซ่อนคำสั่งไว้ในคำอธิบายเครื่องมือ
Invariant Labs แสดงให้เห็นว่า MCP server สามารถซ่อนคำสั่งไว้ในคำอธิบายเครื่องมือที่โมเดลอ่าน พร้อมอธิบายรูปแบบการโจมตี tool shadowing และ rug pull
เกิดอะไรขึ้น
เมื่อ 1 April 2025 Invariant Labs เผยแพร่ประกาศด้านความปลอดภัยเกี่ยวกับการวางยาพิษเครื่องมือใน Model Context Protocol MCP server ที่เป็นอันตรายจะใส่คำสั่งไว้ในคำอธิบายของเครื่องมือ ผู้ใช้แทบไม่เห็นข้อความดังกล่าว แต่โมเดลจะอ่านเป็นส่วนหนึ่งของบริบทและอาจทำตามคำสั่งนั้น
ประกาศเดียวกันยังอธิบายการโจมตีที่เกี่ยวข้องอีกสองรูปแบบ ในการโจมตีแบบ tool shadowing คำอธิบายจาก server หนึ่งจะเปลี่ยนวิธีที่ agent ใช้เครื่องมือจาก server อื่นที่เชื่อถือได้ ส่วนการโจมตีแบบ rug pull คือ server เปลี่ยนคำอธิบายเครื่องมือหลังจากผู้ใช้อนุมัติไปแล้ว
เหตุใดจึงโจมตีสำเร็จ
Client จะโหลดคำอธิบายเครื่องมือจากทุก server ที่เชื่อมต่อไว้ลงในบริบทเดียวกัน และโมเดลไม่สามารถแยกเอกสารจากผู้ให้บริการออกจากคำสั่งของผู้โจมตีได้ หาก client อนุมัติ server เพียงครั้งเดียวและไม่ตรวจสอบอีก การเปลี่ยนแปลงภายหลังจะไม่ถูกสังเกตเห็น
สิ่งที่ควรทำ
- อ่านคำอธิบายเครื่องมือของ MCP server ให้ครบก่อนเชื่อมต่อ ไม่ใช่ดูเพียงชื่อเครื่องมือ
- กำหนดเวอร์ชันของ server ให้ตายตัวและทำ hash ของคำอธิบายเครื่องมือ เมื่อ hash เปลี่ยน ให้ถามยืนยันอีกครั้งหรือแจ้งเตือน
- เชื่อมต่อเฉพาะ server ที่จำเป็นต่องาน เพื่อไม่ให้ข้อความจาก server หนึ่งชี้นำการใช้เครื่องมือของอีก server
- กำหนดให้ต้องอนุมัติก่อนเรียกใช้เครื่องมือที่ส่งข้อมูลหรือแก้ไขไฟล์
ตรวจสอบ skill, plugin และ MCP serverกำหนดให้อนุมัติก่อนการกระทำที่มีผลสำคัญ
ทำตามรายการตรวจสอบความปลอดภัย →