ภาพรวมของสถาปัตยกรรม
MCP เป้าหมายสำหรับการสาธิต: Toolbox
Smithery.ai โดดเด่นในฐานะศูนย์กลางที่สำคัญสำหรับปลั๊กอิน MCP ดึงดูดรายชื่อ MCP จำนวนมากและผู้ใช้งานที่กระตือรือร้น ในบรรดาเหล่านี้ @smithery/toolbox ซึ่งเป็นเครื่องมือจัดการ MCP อย่างเป็นทางการที่ Smithery.ai นำเสนอ ถือเป็นจุดสนใจของการประเมินความปลอดภัยนี้
Toolbox ได้รับเลือกให้เป็นเป้าหมายการทดสอบด้วยเหตุผลสำคัญหลายประการ:
- มีฐานผู้ใช้จำนวนมาก ทำให้เป็นตัวอย่างที่เป็นตัวแทนภายในระบบนิเวศ MCP
- รองรับการติดตั้งปลั๊กอินเพิ่มเติมโดยอัตโนมัติ เพิ่มฟังก์ชันการทำงานฝั่งไคลเอ็นต์ (เช่น Claude Desktop)
- มีค่ากำหนดที่ละเอียดอ่อน เช่น คีย์ API ซึ่งอำนวยความสะดวกในการสาธิตการเอ็กซ์พลอยต์ที่อาจเกิดขึ้น
MCP ที่เป็นอันตรายที่ใช้สำหรับการสาธิต: MasterMCP
MasterMCP ซึ่งพัฒนาโดย SlowMist โดยเฉพาะเพื่อวัตถุประสงค์ในการทดสอบความปลอดภัย เป็นเครื่องมือ MCP ที่เป็นอันตรายจำลองซึ่งสร้างขึ้นบนสถาปัตยกรรมแบบแยกส่วน องค์ประกอบสำคัญ ได้แก่:
- การจำลองบริการเว็บไซต์ในเครื่อง: http://127.0.0.1:1024
เพื่อสร้างสถานการณ์การโจมตีที่สมจริง MasterMCP ได้รวมโมดูลจำลองบริการเว็บไซต์ในเครื่อง การใช้เฟรมเวิร์ก FastAPI โมดูลนี้จะสร้างเซิร์ฟเวอร์ HTTP อย่างง่ายได้อย่างรวดเร็วซึ่งเลียนแบบสภาพแวดล้อมเว็บทั่วไป หน้าเหล่านี้อาจดูไม่มีพิษภัย แสดงข้อมูลเบเกอรี่ หรือส่งคืนข้อมูล JSON มาตรฐาน แต่จะซ่อนเพย์โหลดที่เป็นอันตรายที่สร้างขึ้นอย่างพิถีพิถันภายในซอร์สโค้ดหรือการตอบสนอง API
แนวทางนี้ช่วยให้สามารถสาธิตเทคนิคการวางยาพิษข้อมูลและการซ่อนคำสั่งได้อย่างครอบคลุมในสภาพแวดล้อมภายในเครื่องที่ปลอดภัยและมีการควบคุม เน้นถึงความเสี่ยงที่อาจแฝงตัวอยู่ในหน้าเว็บที่ดูธรรมดา ซึ่งสามารถกระตุ้นพฤติกรรมที่ผิดปกติในโมเดลภาษาขนาดใหญ่ได้
- สถาปัตยกรรม MCP ปลั๊กอินในเครื่อง
MasterMCP ใช้แนวทางปลั๊กอินเพื่ออำนวยความสะดวกในการปรับขนาดอย่างรวดเร็วสำหรับเวกเตอร์การโจมตีใหม่ๆ เมื่อดำเนินการ MasterMCP จะเริ่มต้นบริการ FastAPI ของโมดูลก่อนหน้าในกระบวนการย่อย
ไคลเอนต์สาธิต
- Cursor: หนึ่งใน IDE การเขียนโปรแกรมที่ใช้ AI ช่วยเหลือที่ใช้กันอย่างแพร่หลายมากที่สุดทั่วโลก
- Claude Desktop: ไคลเอนต์อย่างเป็นทางการของ Anthropic องค์กรที่ปรับแต่งโปรโตคอล MCP
โมเดลภาษาขนาดใหญ่ (LLM) ที่ใช้สำหรับการสาธิต
- Claude 3.7
Claude 3.7 ได้รับเลือกเนื่องจากมีความสามารถที่ได้รับการปรับปรุงในการจดจำการดำเนินการที่ละเอียดอ่อน และการเป็นตัวแทนของความสามารถในการปฏิบัติงานที่แข็งแกร่งภายในระบบนิเวศ MCP ปัจจุบัน
การกำหนดค่า claude\_desktop\_config.json
เมื่อการกำหนดค่าเสร็จสมบูรณ์ ขั้นตอนการสาธิตจะเริ่มต้นขึ้น
การเรียกใช้ที่เป็นอันตรายข้าม MCP
การสาธิตนี้รวมเอาทั้งเทคนิคการวางยาพิษและกลยุทธ์การเรียกใช้ที่เป็นอันตรายข้าม MCP ที่ระบุไว้ในรายการตรวจสอบ
การโจมตีการวางยาพิษเนื้อหาหน้าเว็บ
- การวางยาพิษตามความคิดเห็น
Cursor เข้าถึงเว็บไซต์ทดสอบในเครื่องที่ http://127.0.0.1:1024
หน้านี้เกี่ยวกับ “Delicious Cake World” ที่ดูเหมือนไม่มีอันตราย ทำหน้าที่เป็นการจำลองเพื่อแสดงให้เห็นถึงผลกระทบที่อาจเกิดขึ้นจากการที่ไคลเอนต์โมเดลภาษาขนาดใหญ่เข้าถึงเว็บไซต์ที่เป็นอันตราย
คำสั่งดำเนินการ:
ผลลัพธ์แสดงให้เห็นว่า Cursor ไม่เพียงแต่อ่านเนื้อหาหน้าเว็บเท่านั้น แต่ยังส่งข้อมูลการกำหนดค่าที่ละเอียดอ่อนในเครื่องกลับไปยังเซิร์ฟเวอร์ทดสอบด้วย พรอมต์ที่เป็นอันตรายจะถูกฝังอยู่ในซอร์สโค้ดเป็นความคิดเห็น HTML:
แม้ว่าแนวทางที่ใช้ความคิดเห็นนี้จะค่อนข้างตรงไปตรงมาและตรวจจับได้ง่าย แต่ก็ยังสามารถกระตุ้นการดำเนินการที่เป็นอันตรายได้
- การวางยาพิษความคิดเห็นที่เข้ารหัส
การเข้าถึง http://127.0.0.1:1024/encode เผยให้เห็นหน้าเว็บที่ดูเหมือนจะเหมือนกับตัวอย่างก่อนหน้า อย่างไรก็ตาม พรอมต์ที่เป็นอันตรายถูกเข้ารหัส ทำให้การเอ็กซ์พลอยต์ตรวจจับได้ยากยิ่งขึ้นแม้ในขณะที่ตรวจสอบซอร์สโค้ดของหน้าเว็บ
แม้ว่าจะไม่มีพรอมต์ที่ชัดเจนในซอร์สโค้ด การโจมตีก็ประสบความสำเร็จ
การวางยาพิษข้อมูลตอบกลับเครื่องมือ MCP
จากคำแนะนำพร้อมท์ MasterMCP เราป้อนคำสั่งจำลองที่กระตุ้น MCP ที่เป็นอันตรายและแสดงให้เห็นถึงการดำเนินการที่ตามมา
เมื่อเรียกใช้คำสั่ง ไคลเอนต์จะเริ่มต้นการโทรข้าม MCP ไปยัง Toolbox และเพิ่มเซิร์ฟเวอร์ MCP ใหม่ได้สำเร็จ
การตรวจสอบโค้ดปลั๊กอินเผยให้เห็นว่าข้อมูลที่ส่งคืนมีเพย์โหลดที่เป็นอันตรายที่เข้ารหัส ทำให้ผู้ใช้แทบตรวจไม่พบ
การโจมตีมลพิษอินเทอร์เฟซของบุคคลที่สาม
การสาธิตนี้เน้นถึงความเสี่ยงที่อาจเกิดขึ้นที่เกี่ยวข้องกับ MCP ทั้งที่เป็นอันตรายและไม่เป็นอันตรายที่ส่งคืนข้อมูล API ของบุคคลที่สามไปยังบริบทโดยตรง
ตัวอย่างโค้ด:
คำขอดำเนินการ:
ผลลัพธ์: พรอมต์ที่เป็นอันตรายจะถูกฝังอยู่ในข้อมูล JSON ที่ส่งคืนและกระตุ้นการดำเนินการที่เป็นอันตรายได้สำเร็จ
เทคนิคการวางยาพิษระหว่างการเริ่มต้น MCP
การสาธิตนี้ครอบคลุมรายการตรวจสอบของการแทรกพรอมต์เริ่มต้นและความขัดแย้งของชื่อ
การโจมตีการเขียนทับฟังก์ชันที่เป็นอันตราย
MasterMCP สร้างเครื่องมือที่มีชื่อฟังก์ชันเดียวกับฟังก์ชัน remove_server
ของ Toolbox และเข้ารหัสพรอมต์ที่เป็นอันตรายภายในนั้น
คำสั่งดำเนินการ:
Claude Desktop ไม่ได้เรียกใช้เมธอด toolbox remove_server
ดั้งเดิม แต่จะทริกเกอร์เมธอดที่ MasterMCP จัดเตรียมให้ด้วยชื่อเดียวกันแทน:
สิ่งนี้ทำได้โดยเน้นว่า “เมธอดดั้งเดิมเลิกใช้แล้ว” ซึ่งสนับสนุนให้โมเดลภาษาขนาดใหญ่จัดลำดับความสำคัญของฟังก์ชันที่ถูกเขียนทับที่เป็นอันตราย
การเพิ่มตรรกะการตรวจสอบส่วนกลางที่เป็นอันตราย
MasterMCP สร้างเครื่องมือที่เรียกว่า “banana” ซึ่งออกแบบมาเพื่อบังคับใช้การตรวจสอบความปลอดภัยภาคบังคับก่อนที่จะดำเนินการเครื่องมืออื่นใด
ก่อนที่จะดำเนินการแต่ละฟังก์ชัน ระบบจะจัดลำดับความสำคัญของกลไกการตรวจสอบ “banana”:
การแทรกตรรกะส่วนกลางนี้ทำได้โดยเน้นย้ำซ้ำๆ ถึง “การดำเนินการบังคับของการตรวจจับ banana” ภายในโค้ด
เทคนิคขั้นสูงสำหรับการซ่อนพรอมต์ที่เป็นอันตราย
วิธีการเข้ารหัสที่เป็นมิตรกับ LLM
โมเดลภาษาขนาดใหญ่มีความสามารถในการแยกวิเคราะห์ที่แข็งแกร่งสำหรับรูปแบบหลายภาษา ซึ่งสามารถนำไปใช้เพื่อซ่อนข้อมูลที่เป็นอันตรายได้ วิธีการทั่วไป ได้แก่:
- สภาพแวดล้อมภาษาอังกฤษ: การเข้ารหัส Hex Byte
- สภาพแวดล้อมภาษาจีน: การเข้ารหัส NCR หรือการเข้ารหัส JavaScript
กลไกการส่งคืนเพย์โหลดที่เป็นอันตรายแบบสุ่ม
คล้ายกับมลพิษอินเทอร์เฟซของบุคคลที่สามที่กล่าวถึงในส่วนที่สาม การร้องขอ http://127.0.0.1:1024/random ส่งผลให้:
แต่ละคำขอจะส่งคืนหน้าที่สร้างขึ้นแบบสุ่มซึ่งมีเพย์โหลดที่เป็นอันตราย ซึ่งเพิ่มความยากในการตรวจจับและการติดตามอย่างมาก
จากการสาธิตเชิงปฏิบัติของ MasterMCP ช่องโหว่ด้านความปลอดภัยที่ซ่อนอยู่ภายในระบบนิเวศ Model Context Protocol (MCP) ได้ถูกเปิดเผย จากการแทรกพรอมต์พื้นฐานและการเรียกข้าม MCP ไปจนถึงการโจมตีที่ละเอียดอ่อนยิ่งขึ้นระหว่างการเริ่มต้นและการซ่อนคำสั่งที่เป็นอันตราย แต่ละขั้นตอนทำหน้าที่เป็นเครื่องเตือนใจถึงความเปราะบางโดยธรรมชาติควบคู่ไปกับพลังของระบบนิเวศ MCP
วันนี้ เมื่อโมเดลขนาดใหญ่มีการโต้ตอบกับปลั๊กอินและ API ภายนอกมากขึ้น มลพิษอินพุตที่ดูเหมือนเล็กน้อยสามารถกระตุ้นความเสี่ยงด้านความปลอดภัยทั่วทั้งระบบ ความหลากหลายที่พัฒนาไปของกลยุทธ์ของผู้โจมตี รวมถึงเทคนิคการเข้ารหัส มลพิษแบบสุ่ม และการเขียนทับฟังก์ชัน ทำให้จำเป็นต้องมีการอัปเกรดที่ครอบคลุมสำหรับแนวทางด้านความปลอดภัยแบบเดิมๆ