ช่องโหว่ Supabase MCP เปิดโอกาสให้เข้าถึงฐานข้อมูล SQL ทั้งหมดผ่านการโจมตี Prompt Injection

ทีมชุมชน BigGo
ช่องโหว่ Supabase MCP เปิดโอกาสให้เข้าถึงฐานข้อมูล SQL ทั้งหมดผ่านการโจมตี Prompt Injection

ช่องโหว่ด้านความปลอดภัยที่สำคัญใน Model Context Protocol (MCP) ของ Supabase ถูกค้นพบแล้ว ซึ่งช่วยให้ผู้โจมตีสามารถดึงข้อมูลฐานข้อมูล SQL ทั้งหมดผ่านเทคนิค prompt injection ที่ซับซ้อน ช่องโหว่นี้แสดงให้เห็นว่า AI agent สามารถถูกจัดการให้ข้ามการควบคุมความปลอดภัยและรั่วไหลข้อมูลสำคัญเมื่อเชื่อมต่อกับฐานข้อมูลที่ใช้งานจริง

ข้อความโจมตีที่สำคัญภายในตั๋วรับแจ้งปัญหาแสดงให้เห็นว่าการจัดการที่ซับซ้อนมุ่งเป้าไปที่ช่องโหว่ของฐานข้อมูลอย่างไร
ข้อความโจมตีที่สำคัญภายในตั๋วรับแจ้งปัญหาแสดงให้เห็นว่าการจัดการที่ซับซ้อนมุ่งเป้าไปที่ช่องโหว่ของฐานข้อมูลอย่างไร

เวกเตอร์การโจมตี: เมื่อข้อมูลผู้ใช้กลายเป็นคำสั่ง

ปัญหาหลักเกิดจากปัญหาพื้นฐานของ Large Language Models (LLMs) คือไม่สามารถแยกแยะระหว่างคำสั่งที่ถูกต้องและคำสั่งที่เป็นอันตรายที่ฝังอยู่ในเนื้อหาที่ผู้ใช้สร้างขึ้นได้อย่างน่าเชื่อถือ นักวิจัยด้านความปลอดภัยจาก General Analysis ได้แสดงให้เห็นว่าผู้โจมตีสามารถส่งตั๋วสนับสนุนที่มีคำสั่งที่สร้างขึ้นอย่างระมัดระวัง ซึ่งดูเหมือนข้อความปกติแต่จริงๆ แล้วเป็นคำสั่งให้ AI agent ทำการดำเนินการฐานข้อมูลที่ไม่ได้รับอนุญาต

เมื่อนักพัฒนาที่ใช้ Cursor (โปรแกรมแก้ไขโค้ดที่ขับเคลื่อนด้วย AI) ที่เชื่อมต่อกับ Supabase MCP ตรวจสอบตั๋วสนับสนุนที่เป็นอันตราย คำสั่งที่ฝังอยู่จะหลอก AI ให้ดำเนินการคิวรี SQL เพื่อดึงข้อมูลสำคัญ เช่น โทเค็นการตรวจสอบสิทธิ์ ข้อมูลประจำตัวผู้ใช้ และข้อมูลลับอื่นๆ การโจมตีนี้ใช้ได้ผลเพราะ AI ประมวลผลทั้งคำสั่งที่ถูกต้องของนักพัฒนาและคำสั่งที่ซ่อนอยู่จากตั๋วสนับสนุนเป็นข้อมูลที่ถูกต้องเท่าเทียมกัน

MCP (Model Context Protocol): มาตรฐานการสื่อสารที่ช่วยให้ AI agent โต้ตอบกับเครื่องมือและบริการภายนอก รวมถึงฐานข้อมูล

ขอบเขตสิทธิ์ในระบบที่มีช่องโหว่

ผู้ใช้งาน บทบาท/การเข้าถึงใน Freshdesk บทบาท/การเข้าถึงใน SQL
ลูกค้าที่ส่งตั๋วแจ้งปัญหา ผู้รายงาน AGENT: SELECT; INSERT; UPDATE
เจ้าหน้าที่ฝ่ายสนับสนุน เอเจนต์ AGENT: SELECT; INSERT; UPDATE; pg_read_all_stats
นักพัฒนา ผู้ดูแลระบบ ADMIN: .+Extension; CREATE FUNCTION

การตอบสนองของอุตสาหกรรมและความพยายามในการลดความเสี่ยง

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

การโจมตีนี้เกิดจากการรวมกันของข้อบกพร่องในการออกแบบสองประการ: การเข้าถึงที่อนุญาตมากเกินไป (service_role) ที่มีให้กับระบบที่มีความน่าเชื่อถือต่ำหรือไม่น่าเชื่อถือ ในขณะที่ MCP ปลดล็อกความสามารถในการทำงานอัตโนมัติที่ทรงพลัง จำเป็นต้องจัดการนิพจน์ความปลอดภัยการตรวจสอบอย่างระมัดระวัง

ความท้าทายพื้นฐานคือ prompt engineering ไม่สามารถทำหน้าที่เป็นขอบเขตความปลอดภัยที่เชื่อถือได้ ต่างจากช่องโหว่ความปลอดภัยเว็บแบบดั้งเดิม เช่น SQL injection ซึ่งมีการแก้ไขที่ยอมรับกันดีผ่าน parameterized queries และการทำความสะอาดข้อมูลนำเข้า ปัจจุบันยังไม่มีกลไกที่เทียบเท่าสำหรับการรักษาความปลอดภัย LLM prompt จากการโจมตี injection

มาตรการป้องกันที่ Supabase ได้นำมาใช้

  • อ่านอย่างเดียวตามค่าเริ่มต้น: ส่งเสริมให้ผู้ใช้กำหนดค่า MCP ด้วยการเข้าถึงฐานข้อมูลแบบอ่านอย่างเดียว
  • การห่อหุ้มการตอบกลับ: เพิ่มพรอมต์ที่ท้อแท้ LLM จากการทำตามคำสั่งภายในข้อมูลผู้ใช้
  • การทดสอบ E2E: ทดสอบกับ LLM ที่มีความสามารถน้อยกว่าเพื่อตรวจสอบความต้านทานต่อการโจมตี
  • สิทธิ์การเข้าถึงแบบละเอียด: วางแผนสิทธิ์ระดับโทเค็นสำหรับบริการ Supabase เฉพาะ
  • เอกสารที่ปรับปรุงแล้ว: เพิ่มข้อจำกัดความรับผิดชอบด้านความปลอดภัยและเอกสารสร้างความตระหนัก

ผลกระทบด้านความปลอดภัยในวงกว้าง

ช่องโหว่นี้เป็นส่วนหนึ่งของสิ่งที่ผู้เชี่ยวชาญด้านความปลอดภัย Simon Willison เรียกว่า lethal trifecta - การรวมกันที่อันตรายของระบบ AI ที่มีการเข้าถึงข้อมูลส่วนตัว การเปิดรับข้อมูลที่ไม่น่าเชื่อถือ และความสามารถในการขโมยข้อมูล ปัญหานี้ขยายไปไกลกว่าตั๋วสนับสนุนไปยังระบบใดๆ ที่เนื้อหาที่ผู้ใช้สร้างขึ้นอาจถูกประมวลผลโดย AI agent ที่มีการเข้าถึงฐานข้อมูล

ชุมชนด้านความปลอดภัยได้ระบุช่องโหว่ที่คล้ายกันในการใช้งาน database MCP อื่นๆ รวมถึง Neon DB และ MCP server ของ Heroku สิ่งนี้แสดงให้เห็นว่าปัญหาไม่ได้เฉพาะเจาะจงกับ Supabase แต่เป็นปัญหาระบบของวิธีที่ AI agent โต้ตอบกับฐานข้อมูลเมื่อถูกเปิดรับข้อมูลที่ไม่น่าเชื่อถือ

องค์ประกอบของ "Lethal Trifecta"

  1. การเข้าถึงข้อมูลส่วนตัว: เอเจนต์ AI สามารถอ่านข้อมูลที่ละเอียดอ่อนในฐานข้อมูลได้
  2. การสัมผัสกับข้อมูลนำเข้าที่ไม่น่าเชื่อถือ: ระบบประมวลผลเนื้อหาที่ผู้ใช้สร้างขึ้น (ตั๋วสนับสนุน ความคิดเห็น ฯลฯ)
  3. ความสามารถในการขโมยข้อมูล: AI สามารถส่งข้อมูลที่ดึงออกมากลับไปยังผู้โจมตีผ่านช่องทางต่างๆ

ก้าวไปข้างหน้า: โซลูชันระดับสถาปัตยกรรม

ผู้เชี่ยวชาญด้านความปลอดภัยเน้นย้ำว่าโซลูชันที่มีประสิทธิภาพต้องถูกใช้งานในระดับสถาปัตยกรรมมากกว่าการพึ่งพาการลดความเสี่ยงแบบ prompt แนวทางที่แนะนำรวมถึงการใช้สิทธิ์ฐานข้อมูลแบบละเอียด การใช้บริบท AI แยกต่างหากสำหรับการดำเนินการที่แตกต่างกัน และการปฏิบัติต่อ AI agent เป็นศัตรูที่อาจเป็นไปได้เมื่อประมวลผลเนื้อหาที่ผู้ใช้สร้างขึ้น

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

ช่องโหว่นี้ทำหน้าที่เป็นสัญญาณเตือนสำหรับระบบนิเวศการรวม AI ที่เติบโตอย่างรวดเร็ว แสดงให้เห็นว่าหลักการความปลอดภัยแบบดั้งเดิมยังคงมีความสำคัญแม้ในขณะที่เทคโนโลยีใหม่ๆ เกิดขึ้น

อ้างอิง: Supabase MCP can leak your entire SQL database