สรุปสั้น
นักวิจัยด้านความมั่นคงวัย 16 ปีที่ใช้ชื่อว่า Faav ค้นพบช่องโหว่การยืนยันตัวตนในบริการวิเคราะห์ข้อมูลภายในของ Microsoft ที่ชื่อ Titan ซึ่งอาจเปิดข้อมูลในฐานข้อมูลที่ประเมินได้ราว 17.3 ล้านล้านแถว ช่องโหว่นี้เปิดทางให้ปลอมการเข้าถึงระดับผู้ดูแลระบบและรัน SQL query โดยไม่ได้รับอนุญาต โดยไม่ต้องมี credential ของ Microsoft อย่างไรก็ตาม Faav เน้นย้ำว่าผลกระทบที่อาจเกิดขึ้นเป็นเพียงเชิงสมมติ เขาอาศัยเพียง metadata คำอธิบายตาราง และตัวอย่างข้อมูลที่จำกัด ไม่เคยเข้าถึงข้อมูลส่วนบุคคลที่ระบุตัวตนได้ (PII) ของลูกค้า และไม่พบหลักฐานว่าผู้ประสงค์ร้ายเคยใช้ประโยชน์จากจุดอ่อนนี้
การสืบสวนเริ่มต้นเมื่อวันที่ 25 สิงหาคม 2569 เมื่อ Antares ผู้ช่วยแฮ็กที่ขับเคลื่อนด้วย AI ของ Faav ค้นพบ Titan แม้หน้าเว็บอินเทอร์เฟซจะแสดงข้อความ “VPN REQUIRED” แต่ Antares กลับระบุพบ public API ที่โฮสต์ผ่าน Azure Cloud Services เอกสาร Swagger ที่เปิดอยู่ระบุ 4 เส้นทาง รวมถึง /v2/Query ที่รับ SQL ดิบ ประกอบกับหน้า Titan ปี 2566 ที่ถูกเก็บในคลังยังเผยนิยามตาราง 56 รายการ และค่า routing ชื่อ TestData ให้ข้อมูลเพียงพอที่นักวิจัยจะเริ่มทดสอบแบบควบคุมได้
รายละเอียดข่าว
เว็บไซต์ Cyber Security News รายงานเมื่อวันที่ 26 กันยายน 2569 ว่า นาย Faav นักวิจัยวัย 16 ปี ได้เปิดเผยช่องโหว่การยืนยันตัวตนในบริการ Titan Analytics ภายในของ Microsoft คำขอที่ไม่มี authorization header จะได้รับการตอบกลับด้วย HTTP 401 อย่างถูกต้อง แต่ตลอดสิบวันถัดมา Antares ได้ปรับแก้ค่า claim ใน JSON Web Token และศึกษาข้อความ error ของ Titan บริการนี้ตรวจสอบ tenant ID, audience, application ID และ user identity แต่กลับยังคงประมวลผล claim ที่ถูกแก้ไขต่อไปทั้งที่ลายเซ็นเดิมไม่เปลี่ยน พฤติกรรมนี้บ่งชี้ถึงความล้มเหลว นั่นคือ Titan ตรวจสิ่งที่ JWT อ้าง โดยไม่ยืนยันด้วยกระบวนการเข้ารหัสว่าใครเป็นผู้ออกโทเคน
จากนั้น Faav สร้างโทเคนสังเคราะห์ที่ตั้งค่า algorithm เป็น “none” และลายเซ็นว่างเปล่า ปรากฏว่า Titan ยอมรับ payload นั้นยังต้องมี user ที่ระบบรู้จัก และความพยายามแบบอัตโนมัติที่ใช้ User Principal Name รูปแบบอีเมลกลับล้มเหลว จุดพลิกเกิดขึ้นเมื่อ Faav ทบทวนใหม่ว่าระบบ backend อาจตีความฟิลด์ upn อย่างไร แล้วแทนที่มันด้วยคำว่า “admin” คราวนี้ Titan จับคู่ค่าดังกล่าวเข้ากับ local user ID 1 กำหนดบทบาท Admin ให้ และรัน SELECT 1 query ได้สำเร็จ
การสำรวจแบบจำกัดเปิดให้เห็นฐานข้อมูล metadata ของแพลตฟอร์ม Titan และสภาพแวดล้อมการวิเคราะห์อื่น ๆ ที่เชื่อมต่ออยู่ metadata ที่เข้าถึงได้มีรายงานว่ารวมถึงระเบียนบัญชีและอีเมลราว 25,000 รายการ, อีเมลพนักงาน 17,990 รายการ, ระเบียนองค์กรของพนักงาน 15,001 รายการ, การตั้งค่าฐานข้อมูล 355 รายการ, นิยาม SQL ของ virtual dataset 20,979 รายการ, dashboard 24,569 รายการ, chart 425,891 รายการ และนิยาม dataset 27,347 รายการ อีกทั้ง query แบบจำกัดหนึ่งแถวสองครั้งยังยืนยันว่าข้อมูลวิเคราะห์การค้นหาของ Bing เข้าถึงได้ โดย Faav ระบุว่าไม่มีการระบุตัวบุคคลใด และไม่มีการเชื่อมโยงระเบียนข้ามชุดข้อมูล
รายละเอียดช่องโหว่
เพื่อประเมินขนาดของการเปิดเผย นักวิจัยทดสอบค่า routing ที่เก็บในคลังทั้ง 56 ค่าด้วย SELECT 1 พบว่ายังใช้งานได้ 30 ค่า เส้นทางเหล่านั้น resolve ผ่าน 24 configuration ไปยังฐานข้อมูลวิเคราะห์ ClickHouse จำนวน 17 ตัว ครอบคลุมชื่อตารางที่ไม่ซ้ำกัน 9,863 ชื่อ ยอดจำนวนแถวคำนวณผ่านทั้ง system.tables.total_rows และ active system.parts ได้ผลลัพธ์เป็นค่าประเมิน 17,333,335,124,315 แถว ทั้งนี้ Faav เตือนว่าตัวเลขพื้นที่จัดเก็บนี้น่าจะรวมระเบียนย้อนหลัง ระเบียนที่ซ้ำ และระเบียนที่ derive ขึ้น จึงไม่ควรตีความว่าเป็นบุคคลจริง 17.3 ล้านล้านคนหรือระเบียนลูกค้าที่ถูกเปิดเผยจริง 17.3 ล้านล้านรายการ
รากของปัญหาอยู่ที่การยืนยัน claim เพียงอย่างเดียวไม่สามารถทำให้การยืนยันตัวตนแบบ JWT ปลอดภัยได้ แอปพลิเคชันต้องยืนยันลายเซ็นของทุกโทเคนด้วยกระบวนการเข้ารหัส ปฏิเสธโทเคนที่ไม่ลงลายเซ็น จำกัด algorithm ที่อนุญาต ตรวจสอบค่า issuer และ audience และหลีกเลี่ยงการจับคู่ claim ที่ผู้โจมตีควบคุมได้เข้ากับบัญชี local ที่มีสิทธิ์สูงโดยตรง ในกรณีของ Titan การขาดการตรวจลายเซ็นเพียงจุดเดียวก็ทำให้กลไกควบคุมการเข้าถึงหลายชั้นที่ทำงานได้ปกติหมดฤทธิ์ และเปลี่ยน public analytics endpoint ให้กลายเป็นประตูที่อาจนำไปสู่สภาพแวดล้อมข้อมูลขนาดมหาศาลของ Microsoft
ผลกระทบ
แม้ Faav จะย้ำว่าผลกระทบเป็นเชิงสมมติและไม่มีการเข้าถึงข้อมูล PII ของลูกค้าจริง แต่เคสนี้แสดงให้เห็นว่าความผิดพลาดในการออกแบบการยืนยันตัวตนเพียงจุดเดียวสามารถทำลายการควบคุมการเข้าถึงทั้งระบบได้ บริการวิเคราะห์ข้อมูลภายในที่เปิด API ออกสู่สาธารณะโดยตรวจแต่ claim ไม่ตรวจลายเซ็น จึงกลายเป็นช่องทางเข้าถึงข้อมูลจำนวนมหาศาลในทางทฤษฎี บทเรียนสำคัญสำหรับทีมพัฒนาคือ การพึ่งพา JWT โดยไม่ยืนยันลายเซ็นด้วยการเข้ารหัสอย่างเข้มงวด เท่ากับเปิดช่องให้ปลอมสิทธิ์ระดับผู้ดูแลระบบได้ ไม่ว่าจะมีการตรวจ tenant, audience หรือ application ID กี่ชั้นก็ตาม
คำแนะนำ
ทีมพัฒนาควรออกแบบระบบยืนยันตัวตนแบบ JWT ให้ยืนยันลายเซ็นของทุกโทเคนด้วยกระบวนการเข้ารหัสเสมอ ปฏิเสธโทเคนที่ไม่ลงลายเซ็นและโทเคนที่ตั้ง algorithm เป็น “none” กำหนดรายการ algorithm ที่อนุญาตให้ชัดเจน (allow-list) และตรวจสอบค่า issuer กับ audience ทุกครั้ง ที่สำคัญคือห้ามจับคู่ค่า claim ที่ผู้ใช้หรือผู้โจมตีควบคุมได้ เช่น ฟิลด์ upn เข้ากับบัญชี local ที่มีสิทธิ์สูงโดยตรง สำหรับบริการวิเคราะห์หรือ API ภายใน ควรจำกัดการเข้าถึงจากภายนอกและไม่เปิด endpoint ที่รับ SQL ดิบออกสู่อินเทอร์เน็ต ทั้งนี้ Faav รายงานช่องโหว่ไปยัง Microsoft Security Response Center เมื่อวันที่ 5 กันยายน (เคสหมายเลข 144051) Microsoft ปิด API endpoint เมื่อวันที่ 9 กันยายน และมอบเงินรางวัล 5,000 ดอลลาร์สหรัฐเมื่อวันที่ 17 กันยายน พร้อมประสานการเผยแพร่ข้อมูล
