การทดสอบ capgate กับ DVMCP
ผมได้ทดสอบเครื่องมือของผม capgate กับ MCP server ที่มีช่องโหว่ 10 ตัวในโปรเจกต์ Damn Vulnerable MCP (DVMCP)
DVMCP เป็นเครื่องมือเพื่อการเรียนรู้ โดยแต่ละ server จะสาธิตการโจมตีเฉพาะทาง เช่น prompt injection, การขโมย token หรือ command injection
เป้าหมายนั้นเรียบง่าย ผมเขียน manifest ตามความเป็นจริงสำหรับแต่ละเครื่องมือ จากนั้นผมก็ตั้งคำถามว่า: ขอบเขตที่ capgate สร้างขึ้นนั้นสามารถหยุดการโจมตีได้จริงหรือไม่?
ผลลัพธ์แสดงให้เห็นอย่างชัดเจนว่า capability compiler สามารถทำอะไรได้และทำอะไรไม่ได้บ้าง
สิ่งที่มันหยุดได้ (เข้าเป้าอย่างแม่นยำ) ใน Challenge 3 เครื่องมือหนึ่งมีสิทธิ์เกินความจำเป็น โดยอ้างว่าอ่านได้เพียงโฟลเดอร์เดียว แต่จริงๆ แล้วสามารถอ่านข้อมูลได้ทั้งดิสก์ การโจมตีพยายามขโมย system credentials จากโฟลเดอร์ส่วนตัว capgate หยุดสิ่งนี้ได้ โดยมันจะคอมไพล์ manifest เข้าสู่ Docker container ที่ทำการ mount เฉพาะโฟลเดอร์ที่ได้รับอนุญาตเท่านั้น ไฟล์ส่วนตัวจึงไม่มีตัวตนอยู่ภายใน sandbox ส่งผลให้การโจมตีล้มเหลว
สิ่งที่มันควบคุมได้ (กึ่งกลาง) ใน Challenge 7 เครื่องมือหนึ่งทำ API key รั่วไหล capgate ไม่สามารถหยุดเครื่องมือจากการอ่าน key ได้ แต่สามารถหยุดการ exfiltration ได้ โดยการสร้าง egress proxy ที่อนุญาตให้เชื่อมต่อกับ host เฉพาะเจาะจงเพียงแห่งเดียวเท่านั้น ทำให้ผู้โจมตีไม่สามารถส่ง key ที่ขโมยมาไปยัง server ของตนเองได้
ใน Challenge 8 เครื่องมือหนึ่งอนุญาตให้ใช้คำสั่ง shell ได้ตามใจชอบ ซึ่ง capgate ไม่สามารถระบุคำว่า "allow any shell" ใน grammar ของมันได้ แต่มันใช้วิธีการจำกัดขอบเขต (box) ของเครื่องมือแทน แม้ว่าผู้โจมตีจะรันคำสั่งได้ แต่กระบวนการนั้นจะไม่มีเครือข่าย ไม่มีสิทธิ์พิเศษเพิ่มเติม และมีระบบไฟล์แบบ read-only ทำให้ความเสียหายถูกจำกัดไว้
สิ่งที่มันพลาด (ข้อจำกัด) ใน Challenge 1 การโจมตีคือ prompt injection โดยผู้โจมตีจะหลอกล่อให้ model เพิกเฉยต่อคำสั่ง capgate ไม่สามารถทำอะไรได้ในกรณีนี้ เนื่องจาก sandbox compiler ทำหน้าที่จำกัดสิ่งที่เครื่องมือสามารถเข้าถึงได้ แต่ไม่สามารถควบคุมสิ่งที่ LLM พูดออกมาได้
หากคุณคิดว่า sandbox จะหยุด prompt injection ได้ คุณกำลังเข้าใจผิด มันเพียงแค่ทำให้ prompt injection มีประโยชน์น้อยลงโดยการจำกัดความเสียหายที่เกิดขึ้นเท่านั้น
บทสรุป • การป้องกันที่สมบูรณ์แบบ 1 อย่าง • การควบคุมที่ได้ผล 4 อย่าง • ข้อผิดพลาดที่ยอมรับตามจริง 3 อย่าง
capgate ไม่ใช่ silver bullet แต่มันคือการป้องกันอีกหนึ่งชั้น มันเปลี่ยนจาก "server นี้สามารถเข้าถึงได้ทุกอย่าง" ให้กลายเป็น "server นี้สามารถเข้าถึงได้เพียงเส้นทางเดียวที่กำหนดไว้"
Optional learning community: https://t.me/GyaanSetuAi