ในงานBlack Hat Asia 2021 Palo Alto แจ้งเตือนช่องโหว่ใหม่ใน Microsoft IIS และ SQL Server ทำให้ถูกโจมตีระบบฐานข้อมูลได้จากระยะไกล และยังไม่มี Patch แก้ไขอย่างเป็นทางการ

ในงาน Black Hat Asia 2021 หน่วยงานผู้เชี่ยวชาญด้านความปลอดภัยของ Palo Alto ชื่อ Unit 42 ได้เผยแพร่ข้อมูลเกี่ยวกับวิธีการโจมตีด้วย SQL Injection ไปยังช่องโหว่ของ Microsoft Jet Database Engine ส่งกระทบต่อ Microsoft IIS และ SQL Server ทำให้สามารถได้รับสิทธิที่เป็น System Privilege โดยทาง Microsoft ได้ออก Patch เพื่อลดความเสี่ยงจากการโจมตีนี้ด้วยการปรับแต่งค่า Configure Default ที่ทำให้เกิดช่องโหว่ แต่ทางทีมงานของ Unit 42 แนะนำให้ลดความเสี่ยงโดยการปิดใช้งานการเข้าถึงฐานข้อมูลจากระยะไกล เพื่อไม่ให้มีการเรียกใช้งาน Access Connectivity Engine (ACE) และ Microsoft Jet Red Database Engine (MS Jet Red) ซึ่งเป็นกลไกการจัดการฐานข้อมูล โดยระหว่างนี้ทาง Microsoft และ Unit 42 กำลังอยู่ระหว่างการจัดทำ Patch ที่สมบูรณ์มากยิ่งขึ้นในการแก้ไขช่องโหว่ดังกล่าว

Attack Surface

การโจมตีนี้เกิดจากการเรียกใช้งานฐานข้อมูลระยะไกลที่รองรับใน Microsoft Jet Database Engine รวมถึง MS Jet Red และ Access Connectivity Engine ผู้โจมตีจะสามารถเข้าถึงฐานข้อมูลและเรียกใช้งาน SQL Query ตลอดจนสามารถเปลี่ยน SQL Statement ได้ตามที่ต้องการ

ทีม Unit 42 ได้แสดงตัวอย่างในการโจมตีทั้งหมด 2 ตัวอย่าง ตัวอย่างหนึ่งในนั้นแสดงให้เห็นว่าผู้โจมตีสามารถเรียกใช้ SQL Queries จากไฟล์ Database ที่ได้นำไปใส่ในฐานข้อมูลซึ่งจะส่งผลกระทบต่อการทำงานของ IIS และ SQL Server

การค้นหา SQL บนไฟล์ฐานข้อมูลบนเซิร์ฟเวอร์ของผู้โจมตีจากระยะไกล เมื่อไฟล์ฐานข้อมูลที่ถูกต้อง ถูก แทนที่ด้วยไฟล์ฐานข้อมูลที่มีรูปแบบไม่ถูกต้อง การเรียกใช้คำสั่ง SQL กับไฟล์นั้นอาจทำลายเงื่อนไขเบื้องต้นของโค้ด Microsoft Jet/ACE ทำให้เกิดช่องโหว่ใน Jet จำนวนมาก การโจมตีทั่วไปคือ SQL injection or ad hoc scenarios ใน 2 ตัวอย่างนี้ผู้โจมตีสามารถใช้คำสั่ง SQL บนฐานข้อมูลที่มีรูปแบบผิดปกติใน IIS และ SQL Server

ช่องโหว่ Jet จะส่งผลกระทบต่อ IIS และ SQL Server ในรายละเอียด ผู้ใช้สามารถกำหนดฐานข้อมูลระยะไกลเมื่อดำเนินการค้นหา SQL บนตาราง โดยเพิ่มเส้นทางฐานข้อมูลก่อนตารางใน MS Jet และใช้ OPENDATASOURCE, OPENROWSET หรือ addlinkedserver ใน ACE ดังแสดงในรูปที่ 1

รูปที่ 1. การเข้าถึงฐานข้อมูลระยะไกล SQL ใน Access และ SQL Server

รูปที่ 1. การเข้าถึงฐานข้อมูลระยะไกล SQL ใน Access และ SQL Server

ภายใน MS Jet และ ACE CreateFile ถูกเรียกให้เปิดไฟล์ฐานข้อมูลระยะไกลใน IIS และ SQL Server เนื่องจาก input path ของฐานข้อมูลระยะไกลเป็น UNC ทั้ง Server Message Block (SMB) และ Web-based Distributed Authoring and Versioning (WebDAV) จะถูกใช้เพื่อเปิดฐานข้อมูลระยะไกล ดังแสดงในรูปที่ 2

รูปที่ 2 คุณลักษณะที่ซ่อนอยู่สำหรับ CreateFile(UNC) ใน IIS และ SQL Server

รูปที่ 2 คุณลักษณะที่ซ่อนอยู่สำหรับ CreateFile(UNC) ใน IIS และ SQL Server

การใช้ SQL injection หรือ ad hoc scenarios เป็นเพียง 2 สถานการณ์การโจมตีในทำนองเดียวกัน IIS และ SQL Server เป็นเพียงเหยื่อทั้งสองที่อาจเกิดขึ้นได้ ส่วนประกอบใดๆ ที่สนับสนุน MS Jet และ ACE บน Windows อาจมีช่องโหว่ ตราบใดที่ส่วนประกอบนั้นอนุญาตให้ผู้ใช้ดำเนินการค้นหาใดๆ บนฐานข้อมูลที่ควบคุมได้ด้วย MS Jet และ ACE

 

ช่องโหว่ใน IIS และ SQL Server

การเข้าถึงฐานข้อมูลระยะไกลช่วยให้ผู้โจมตีสามารถแทนที่ฐานข้อมูลที่ถูกต้องด้วยฐานข้อมูลที่มีรูปแบบไม่ถูกต้อง จากการวิจัยของ Unit 42 การเปลี่ยนฐานข้อมูลเป็นหนึ่งในกุญแจสำคัญในการค้นหาช่อง โหว่ใน MS Jet และ ACE และ Unit 42 ได้ค้นพบช่องโหว่ประมาณ 100 รายการใน MS Jet และ ACE ดัง แสดงในรูปที่ 3 ส่วนใหญ่สามารถใช้เพื่อโจมตี IIS และ SQL Server ภายใต้การใช้ SQL injection or ad hoc scenarios

รูปที่ 3 ช่องโหว่ 100 MS Jet

รูปที่ 3 ช่องโหว่ 100 MS Jet

ในการนำเสนอ Unit 42 ได้พิสูจน์ว่าการเปลี่ยนแปลงเพียงไบต์เดียวในไฟล์ฐานข้อมูลสามารถนำไปสู่ช่องโหว่ของ MS Jet ดังแสดงในรูปที่ 4

รูปที่ 4 การเปลี่ยนแปลงหนึ่งไบต์ของฐานข้อมูล

รูปที่ 4 การเปลี่ยนแปลงหนึ่งไบต์ของฐานข้อมูล

 

Microsoft Patch

ด้วยการอัปเดต Patch Tuesday สำหรับ Windows ที่เผยแพร่ในเดือนพฤษภาคม 2021 Microsoft ได้รับการขึ้นทะเบียนช่องโหว่ดังกล่าว CVE-2021-28455 ให้กับการค้นพบของ Unit 42 และการแก้ไขการโจมตี ใหม่ที่ค้นพบนี้ Unit  42  แนะนำให้ผู้ใช้ปิดใช้งานการเข้าถึงฐานข้อมูลระยะไกลในส่วนประกอบ MSJet และ ส่วนประกอบ ACE แทนที่จะแก้ไขทุกช่องโหว่ของ JET

ดังที่เราเห็นในรูปที่ 5 มีฟิลด์ใหม่ที่ offset 904h ในโครงสร้าง rgtib (แสดงโดย ebx register) สำหรับ การเข้าถึงฐานข้อมูลระยะไกล มันถูกตั้งค่าเป็น 1 ตามค่าเริ่มต้นในฟังก์ชัน _ltibAllocate ซึ่งหมายความว่าจะเปิดใช้งานตามค่าเริ่มต้น

รูปที่ 5. ตั้งค่าเริ่มต้นสำหรับฟิลด์ใหม่ Allow Query Remote Tables ในโครงสร้าง rgtib

รูปที่ 5. ตั้งค่าเริ่มต้นสำหรับฟิลด์ใหม่ Allow Query Remote Tables ในโครงสร้าง rgtib

จากนั้น ฟังก์ชัน UtilRegQueryValue2 จะถูกเรียกในฟังก์ชัน ErrReadRegistry เพื่อรับค่าของ registrykey – AllowQueryRemoteTables – ภายใต้รายการ registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\engines หลังจากนั้นจะเก็บค่าลงในฟิลด์ AllowQueryRemoteTables ของโครงสร้าง rgtib ที่แสดงในรูปที่ 6

รูปที่ 6 รับฟิลด์ AllowQueryRemoteTables จาก registry ในฟังก์ชัน UtilRegQueryValue2

รูปที่ 6 รับฟิลด์ AllowQueryRemoteTables จาก registry ในฟังก์ชัน UtilRegQueryValue2

หลังจากนั้น สองฟังก์ชัน (_ErrGetOutputDatabaseId และ _ErrQEMCompileQuery) จะตรวจสอบฟิลด์

AllowQueryRemoteTables ในโครงสร้าง rgtib (แสดงโดย ecx register) ดังภาพที่ 7 แสดงให้เห็น

รูปที่ 7 ตรวจสอบฟิลด์ AllowQueryRemoteTables ในโครงสร้าง rgtib

รูปที่ 7 ตรวจสอบฟิลด์ AllowQueryRemoteTables ในโครงสร้าง rgtib

ดังที่เห็นในรูปที่ 8 หากฟิลด์ AllowQueryRemoteTables ถูกตั้งค่าเป็น 0 ฟังก์ชัน _ErrGetOutputDatabaseId จะส่งคืนข้อผิดพลาด และฟังก์ชัน ErrTryOpenDatabase จะไม่ถูกเรียกใช้เพื่อเปิดไฟล์ฐานข้อมูลไม่ว่าไฟล์ฐานข้อมูลจะเป็นไฟล์ระยะไกลหรือในเครื่องก็ตาม สิ่งนี้ช่วยลดการโจมตีการเข้าถึง ฐานข้อมูลระยะไกลได้อย่างมีประสิทธิภาพ

รูปที่ 8 ตรวจสอบฟิลด์ AllowQueryRemoteTables ในฟังก์ชัน _ErrGetOutputDatabaseId

รูปที่ 8 ตรวจสอบฟิลด์ AllowQueryRemoteTables ในฟังก์ชัน _ErrGetOutputDatabaseId

อย่างไรก็ตามในการปิดใช้งานการเข้าถึงฐานข้อมูลระยะไกล ผู้ใช้จำเป็นต้องเพิ่ม registry ชื่อ  AllowQueryRemoteTables ใน registry ที่เกี่ยวข้องและตั้งค่า dword เป็น 0

บทสรุป

IIS และ SQL Server เป็นตัวอย่างของส่วนประกอบพื้นฐานในระบบของ Microsoft ที่มีการใช้อย่าง แพร่หลาย Microsoft Jet Database Engine ซึ่งประกอบด้วย MS Jet และ ACE ก็มีการใช้งานมากว่า 20 ปี ดังนั้นการที่ระบบจะมีการค้นพบช่วงโหว่และถูกโจมตีก็เป็นเรื่องที่เป็นไปได้

เพื่อการใช้งานที่ปลอดภัย INETMS แนะนำให้ลูกค้าปฏิบัติตามคำแนะนำของ Microsoft และปิดใช้งานการเข้าถึง ฐานข้อมูลระยะไกลเพื่อลดการโจมตีที่รุนแรงนี้ สิ่งนี้สามารถช่วยป้องกันผู้โจมตีจากการใช้ช่องโหว่ของ Jet เพื่อ compromise IIS และ SQL Server ได้

เอกสารอ้างอิง

https://unit42.paloaltonetworks.com/iis-and-sql-server/

https://unit42.Palo Altonetworks.com/about-unit-42/