mcp-fence – พร็อกซีความปลอดภัยที่ตรวจสอบคำขอและคำตอบของเซิร์ฟเวอร์ MCP ได้ทั้งสองทิศทาง
(github.com/yjcho9317)เมื่อ AI เอเจนต์อ่านไฟล์หรือเรียกใช้เครื่องมือผ่านเซิร์ฟเวอร์ MCP คำตอบที่เซิร์ฟเวอร์ส่งกลับจะถูกนำเข้าไปอยู่ในคอนเท็กซ์โดยไม่มีการตรวจสอบแยกต่างหาก mcp-fence คือพร็อกซีความปลอดภัยที่ตรวจสอบทั้งฝั่งคำขอและคำตอบแบบเรียลไทม์
ผมได้พบกับโครงสร้างแบบนี้ด้วยตัวเองระหว่างสร้าง nworks (เซิร์ฟเวอร์ NAVER WORKS MCP) ผมตรวจดูโปรเจกต์ด้านความปลอดภัย MCP 28 รายการบน GitHub และพบว่าส่วนใหญ่ตรวจแค่ฝั่งที่ส่งออกไป แต่ไม่ดูฝั่งที่ส่งกลับมา จึงลงมือสร้างขึ้นเอง
หลังจากสร้างเสร็จ ผมรันการตรวจสอบความปลอดภัยด้วยตัวเอง พบว่าสามารถเจาะการตรวจจับทั้งหมดได้ด้วยอักขระที่คนมองเหมือนกันแต่คอมพิวเตอร์มองว่าเป็นคนละตัว สามารถสอดแทรกอักขระโปร่งใสที่มองไม่เห็นเพื่อผ่านการตรวจทั้งหมดได้ และยังพบบั๊กที่ทำให้การตรวจสอบความปลอดภัยหยุดทำงานได้ด้วยอินพุตแบบพิเศษ ทั้งหมดนี้แก้ไขเรียบร้อยก่อนเปิดตัว ในการทดสอบ 1,426 รายการ มี 630 รายการเป็นการทดสอบความปลอดภัยเชิงปฏิปักษ์ และมีอัตราการตรวจจับ 86% สำหรับช่องโหว่ MCP ที่เป็นที่รู้จัก 13 รายการ ครอบคลุม 9 จาก 10 ข้อ ตามเกณฑ์ OWASP MCP Top 10
ตรวจจับอินเจกชัน, ซีเคร็ต, PII, command injection และยังจับ rug-pull ที่คำอธิบายเครื่องมือถูกเปลี่ยนแบบลับ ๆ ได้ด้วย hash pinning การตรวจจับเป็นแบบอิง regex จึงยังสามารถหลบผ่านได้หากใช้ถ้อยคำต่างออกไปแต่มีความหมายเดียวกัน ส่วนการตรวจจับเชิงความหมายด้วย ML อยู่ในแผน v1.x
ตัวอย่างเช่น หากใช้ filesystem MCP server ก็เพียงวางไว้ข้างหน้าแบบนี้
npx mcp-fence start -- npx @modelcontextprotocol/server-filesystem /tmp
ทำงานได้ด้วยคำสั่งบรรทัดเดียวนี้โดยไม่ต้องแก้โค้ดของเซิร์ฟเวอร์เดิม ค่าเริ่มต้นจะบันทึก log อย่างเดียวและไม่บล็อก คุณสามารถตรวจดูก่อนว่ามีทราฟฟิกแบบใดวิ่งผ่านบ้าง แล้วถ้าไม่มีปัญหาค่อยสลับไปเป็นโหมดบล็อก
นี่เป็นโปรเจกต์ที่วิศวกรความปลอดภัยมือถือซึ่งมีประสบการณ์ 9 ปีทำคนเดียวใน 10 สัปดาห์ จึงอาจยังมีส่วนที่ไม่สมบูรณ์อยู่บ้าง หากให้ข้อเสนอแนะได้ก็จะขอบคุณมากครับ
ยังไม่มีความคิดเห็น