สรุปสั้น
บริษัท Wiz ได้เปิดเผยลูกโซ่ช่องโหว่ที่ตั้งชื่อว่า CosmosEscape ในบริการฐานข้อมูล Azure Cosmos DB ของบริษัท Microsoft ซึ่งหากถูกใช้โจมตีจริงจะเปิดทางให้ผู้โจมตีหนีออกจาก sandbox ของเอนจิน Gremlin แล้วเข้าถึงฐานข้อมูลของลูกค้ารายอื่นข้าม tenant ได้ทั้งการอ่านและเขียน โดยลูกโซ่นี้เริ่มต้นจากการยิงคำสั่ง query ที่ประดิษฐ์ขึ้นใส่ฐานข้อมูล Gremlin ที่ผู้โจมตีสร้างและควบคุมเอง จากนั้นจึงได้การรันโค้ดบนเกตเวย์ที่ให้บริการผู้เช่าหลายรายร่วมกัน ซึ่งเปิดเผยทั้งกุญแจลงนามระดับแพลตฟอร์มและไดเรกทอรีบัญชีระดับภูมิภาค ทำให้นักวิจัยสามารถค้นหาเป้าหมายแล้วดึงคีย์หลักของบัญชีนั้นออกมาได้
จุดที่ทำให้ช่องโหว่นี้รุนแรงเป็นพิเศษคือเงื่อนไขการโจมตีที่ต่ำมาก บริษัท Wiz ระบุกับ The Hacker News ว่าสิ่งที่ต้องมีคือบัญชี Azure ทั่วไปกับฐานข้อมูล Gremlin ที่ผู้โจมตีควบคุมเอง ซึ่งสร้างเสร็จได้ในไม่กี่นาที ไม่ต้องมีสิทธิ์พิเศษใด ไม่ต้องอาศัยคนใน และไม่ต้องมีที่มั่นในระบบเป้าหมายมาก่อน ทั้งหมดทำผ่านหน้าจอ query ของฐานข้อมูลตัวเองล้วน ๆ เมื่อ query คืนกุญแจหลักระดับแพลตฟอร์มออกมาแล้ว ผู้โจมตีสามารถทิ้งทั้งฐานข้อมูลและบัญชี Azure เดิมไปได้เลย แล้วใช้กุญแจนั้นผ่าน endpoint สาธารณะของ Cosmos DB เพื่อขอคีย์หลักของบัญชีเป้าหมายและยึดครองฐานข้อมูลของเหยื่อ
บริษัท Microsoft ปิดช่องทางเข้า Gremlin ที่มีปัญหาภายใน 48 ชั่วโมงหลังได้รับรายงานเมื่อเดือนพฤศจิกายน 2568 และตามข้อมูลของ Wiz ได้แก้ไขระยะยาวครบทุกภูมิภาคพร้อมยกเลิกกุญแจระดับแพลตฟอร์มไปแล้วเมื่อเดือนกรกฎาคม 2569 โฆษกของ Microsoft ระบุว่าบริษัทได้แก้ไขปัญหาอย่างสมบูรณ์และไม่พบหลักฐานว่ามีลูกค้าได้รับผลกระทบจากการตรวจสอบ ไม่พบกิจกรรมผิดปกตินอกเหนือจากการทดสอบของนักวิจัย ไม่มีข้อมูลลูกค้าถูกเข้าถึง และลูกค้าไม่ต้องดำเนินการใด ทั้งนี้การเปิดเผยครั้งนี้ไม่มีการออกรหัส CVE หรือคะแนนความรุนแรง และนักวิจัยจะนำเสนอลูกโซ่การโจมตีฉบับเต็มในงาน Black Hat USA วันที่ 6 สิงหาคม
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 30 กรกฎาคม 2569 ว่า ช่องโหว่ซึ่งได้รับการแก้ไขไปแล้วใน Azure Cosmos DB อาจเปิดทางให้ผู้โจมตีหลุดออกจาก sandbox ของ Gremlin query engine และได้สิทธิ์อ่านและเขียนฐานข้อมูลข้าม tenant ของลูกค้ารายอื่นอย่างเต็มรูปแบบ ตามรายงานของบริษัท Wiz
ตามคำอธิบายเชิงเทคนิคของ Wiz เอนจิน Gremlin ที่ Cosmos DB พัฒนาขึ้นเองจะแปลงคำสั่ง Gremlin เป็นโค้ด .NET แล้วนำไปรันในสภาพแวดล้อมที่ถูกจำกัดสิทธิ์ แต่ข้อจำกัดดังกล่าวไม่ได้คำนึงถึงกลไก reflection ของ .NET ทำให้นักวิจัยสร้างความสามารถอ่านไฟล์และเขียนไฟล์ขึ้นมาได้ ก่อนจะยกระดับไปสู่การรันโค้ดตามอำเภอใจในที่สุด ทั้งนี้เอกสารเผยแพร่ต่อสาธารณะแสดงเพียงผลลัพธ์ของคำสั่ง hostname ที่ถูกรันบนแบ็กเอนด์ของ Cosmos DB แต่ไม่ได้เปิดเผยตัว query ที่ใช้
การรันโค้ดไปตกอยู่บนคอมโพเนนต์ที่ Wiz เรียกว่า DB Gateway ซึ่งทำหน้าที่ประมวลผล query ของลูกค้าบนคลัสเตอร์ Azure Service Fabric แบบใช้ร่วมกันหลายผู้เช่า แม้ฐานข้อมูลของลูกค้าจะไม่ได้ถูกเก็บบนคลัสเตอร์เหล่านั้น แต่เกตเวย์สามารถเรียกคีย์หลัก (primary key) ของบัญชี Cosmos DB ที่ร้องขอมาได้ ซึ่งเอกสารของ Microsoft ระบุชัดว่าคีย์หลักของบัญชี Cosmos DB ให้สิทธิ์ควบคุมทรัพยากรทั้งหมดในบัญชีนั้นอย่างเต็มที่
ข้อมูลยืนยันตัวตนที่เกตเวย์เข้าถึงได้ยังรวมถึงกุญแจลงนามที่ Wiz ตั้งชื่อว่า Cosmos Master Key โดยบริษัทระบุกับ The Hacker News ว่าได้ทดสอบกุญแจนี้กับ Cosmos DB ทุกรูปแบบ API และในหลายภูมิภาค แล้วพบว่ามันปลดล็อกได้ทุกบัญชีที่ทดสอบ กล่าวคือกุญแจลงนามตัวเดียวสามารถดึงคีย์หลักของบัญชีข้าม tenant ข้ามภูมิภาค และครอบคลุมทั้ง API แบบ SQL, MongoDB, Cassandra และ Gremlin
กุญแจตัวเดียวกันนี้ยังเปิดฐานข้อมูลระดับภูมิภาคที่ชื่อ Config Store ซึ่ง Wiz อธิบายว่าเป็นไดเรกทอรีเก็บชื่อบัญชี Cosmos DB, รหัสซับสคริปชันและ tenant, การตั้งค่าเครือข่าย และแท็กต่าง ๆ ผู้โจมตีจึงใช้มันค้นหาบัญชีขององค์กรที่ต้องการ แล้วจึงขอคีย์หลักของบัญชีนั้นได้ทันที บริษัท Wiz ระบุว่าได้ลองรัน query นับจำนวนผ่าน Config Store และยืนยันว่าใน tenant หนึ่งในภูมิภาคหนึ่งมีฐานข้อมูลภายในของ Microsoft อยู่หลายพันรายการ พร้อมย้ำว่าขอบเขตการเข้าถึงที่กว้างกว่านั้นในรายงานเป็นเพียงสิ่งที่กุญแจ “ทำได้” ไม่ใช่สิ่งที่นักวิจัยลงมือทำจริง

รายละเอียดช่องโหว่
ประเด็นที่น่ากังวลที่สุดของลูกโซ่นี้คือมันทำลายขอบเขตความปลอดภัยที่ลูกค้าเชื่อว่ามีอยู่ บริษัท Wiz ระบุว่าลูกโซ่การโจมตีสามารถเข้าถึงบัญชีที่ตั้งค่าเป็น private หรือแยกเครือข่าย (network-isolated) ได้ด้วย เพราะเกตเวย์ที่ถูกยึดเป็นตัวบังคับใช้ขอบเขตเครือข่ายเหล่านั้นจากภายในบริการเอง เมื่อผู้โจมตีอยู่บนเกตเวย์แล้ว การจำกัดด้วย firewall หรือ private endpoint จึงไม่ใช่กำแพงอีกต่อไป นอกจากนี้สิทธิ์เขียนที่นักวิจัยมีต่อ Config Store ยังบ่งชี้ว่าการตั้งค่าเครือข่ายอาจถูกแก้ไขได้เช่นกัน แม้รายงานจะไม่ได้ระบุว่าได้สาธิตการแก้ค่ากับบัญชีของลูกค้ารายอื่นจริง
ในแง่ผลกระทบต่อข้อมูล เอกสารของ Microsoft ระบุว่าข้อมูลข้อความของ Microsoft Teams ถูกเก็บอยู่ใน Cosmos DB ขณะที่บล็อกวิศวกรรมของ Microsoft ระบุว่า Copilot เก็บคำสั่งและประวัติการสนทนาของผู้ใช้ไว้ในบริการเดียวกัน บริษัท Wiz จึงระบุว่าฐานข้อมูลที่รองรับผลิตภัณฑ์เหล่านั้นมีความเป็นไปได้ที่จะถูกเข้าถึง แต่ยืนยันว่าไม่ได้เข้าไปดูข้อมูลของผลิตภัณฑ์เหล่านั้น
สิ่งที่บันทึกสาธารณะยังตอบไม่ได้คือ เอนจินที่มีช่องโหว่และเส้นทางกุญแจลงนามนี้เข้าสู่ระบบ production ตั้งแต่เมื่อใด และการตรวจสอบล็อกของ Microsoft ครอบคลุมช่วงเวลาย้อนหลังแค่ไหน ระยะเวลาที่อาจมีความเสี่ยงจริงจึงยังไม่ทราบแน่ชัด แม้เส้นทางที่ถูกเปิดเผยจะถูกปิดไปแล้ว การเปิดเผยครั้งนี้ยังไม่มีการออกรหัส CVE หรือคะแนนความรุนแรง และในทางเทคนิค CosmosEscape เป็นคนละเรื่องกับช่องโหว่ ChaosDB และ CosMiss ที่เปิดเผยในปี 2564 และ 2565 ซึ่งเกี่ยวข้องกับฟีเจอร์ Jupyter Notebook ของ Cosmos DB
ผลกระทบต่อไทย
Azure Cosmos DB เป็นฐานข้อมูลที่องค์กรไทยจำนวนมากใช้อยู่เบื้องหลังโดยที่ผู้ใช้ปลายทางอาจไม่รู้ตัว ทั้งในระบบธนาคาร ค้าปลีก โลจิสติกส์ แอปพลิเคชันภาครัฐที่ย้ายขึ้นคลาวด์ และที่สำคัญคือมันอยู่เบื้องหลัง Microsoft Teams และ Copilot ซึ่งหน่วยงานไทยใช้งานอย่างกว้างขวางผ่านสัญญา Microsoft 365 บทเรียนสำคัญของกรณีนี้จึงไม่ใช่การไล่แพตช์ เพราะลูกค้าทำอะไรไม่ได้เลยและไม่ต้องทำอะไรตามคำแถลงของ Microsoft แต่คือการตระหนักว่าความเสี่ยงชั้นที่ผู้ให้บริการคลาวด์รับผิดชอบนั้นอยู่นอกสายตาและนอกการควบคุมของลูกค้าโดยสิ้นเชิง
ประเด็นที่องค์กรไทยควรถอดบทเรียนคือเรื่องคีย์หลักของบัญชี Cosmos DB ซึ่งให้สิทธิ์ควบคุมทุกอย่างในบัญชีนั้น การออกแบบระบบให้พึ่งพา primary key เป็นวิธียืนยันตัวตนหลักจึงเป็นความเสี่ยงในตัวเอง เพราะกุญแจหลุดหนึ่งดอกเท่ากับเสียทั้งบัญชี องค์กรที่มีข้อกำหนดด้านอธิปไตยข้อมูลหรืออยู่ภายใต้ PDPA ควรใช้กรณีนี้เป็นตัวอย่างในการทบทวนว่า ข้อมูลส่วนบุคคลที่เก็บบนบริการ PaaS ถูกป้องกันด้วยกลไกอะไรบ้างนอกเหนือจากคำสัญญาของผู้ให้บริการ และสัญญาที่ทำไว้ระบุการแจ้งเตือนเหตุระดับแพลตฟอร์มไว้อย่างไร
คำแนะนำ
ลูกค้า Azure ไม่จำเป็นต้องดำเนินการใดเป็นการเฉพาะกับช่องโหว่นี้ เพราะ Microsoft แก้ไขที่ฝั่งบริการครบทุกภูมิภาคแล้ว แต่องค์กรควรใช้โอกาสนี้ทบทวนแนวปฏิบัติรอบ ๆ Cosmos DB ให้รัดกุมขึ้น เริ่มจากการเลิกพึ่งพาคีย์หลักของบัญชีในการเข้าถึงข้อมูล แล้วเปลี่ยนไปใช้ Microsoft Entra ID กับ role-based access control ซึ่งให้สิทธิ์แบบละเอียดและเพิกถอนได้ง่ายกว่า พร้อมทั้งหมุนเวียนคีย์ที่ยังจำเป็นต้องใช้ตามรอบเวลาที่กำหนดชัดเจน
ควรเปิดใช้งานบันทึกการตรวจสอบผ่าน Azure Monitor และ Diagnostic Settings สำหรับบัญชี Cosmos DB ทุกบัญชี แล้วส่งล็อกออกไปเก็บนอกบริการเพื่อให้ยังตรวจสอบย้อนหลังได้ในกรณีที่เกิดเหตุที่ฝั่งผู้ให้บริการ นอกจากนี้ควรจำกัดการเข้าถึงด้วย private endpoint และ IP firewall เป็นค่าเริ่มต้น แม้กรณีนี้จะแสดงว่าการยึดเกตเวย์ทำให้ขอบเขตดังกล่าวถูกข้ามได้ แต่มันยังคงเป็นชั้นป้องกันที่จำเป็นสำหรับภัยคุกคามรูปแบบอื่น
ในระดับนโยบาย ทีมความมั่นคงปลอดภัยควรกำหนดให้มีการติดตามประกาศช่องโหว่ของผู้ให้บริการคลาวด์อย่างเป็นระบบ เนื่องจากช่องโหว่ระดับแพลตฟอร์มแบบนี้มักไม่มีรหัส CVE ไม่เข้าสู่ระบบแจ้งเตือนแบบเดิม และไม่ปรากฏในเครื่องมือสแกนช่องโหว่ขององค์กรเลย ผู้ที่สนใจรายละเอียดทางเทคนิคฉบับเต็มสามารถติดตามการนำเสนอของ Wiz ที่งาน Black Hat USA ในวันที่ 6 สิงหาคม 2569
