Microsoft October Patch Tuesday มาแล้ว! ไม่แพตช์รอบนี้อาจถึงตาย

โดยปกตินั้นไอ-ซีเคียวจะมีการกระจายข่าวการอัปเดตประจำเดือนของแพตช์จากไมโครซอฟต์ในลักษณะของ "ข่าวสั้น" ซึ่งจะปรากฎทาง Blog และ Facebook แต่จากการประเมินแพตช์ในเดือนตุลาคม 2020 แล้ว เราตัดสินใจที่จะลงรายละเอียดให้ลึกกว่าเดิมด้วยความเชื่อที่ว่ามันอาจจะช่วยให้การแพตช์ได้รับความสนใจและถูกเห็นความสำคัญมากยิ่งขึ้นว่ามันอาจจะช่วยชีวิตเราได้ในอนาคตจริง ๆ

ในโพสต์นี้ทีมตอบสนองการโจมตีและภัยคุกคาม (Intelligent Response) จากบริษัท ไอ-ซีเคียว จำกัด จะขอสรุปแพตช์และช่องโหว่ซึ่งประกาศใหม่ รวมไปถึงลงรายละเอียดช่องโหว่ที่น่าสนใจอย่าง Bad Neighbor และช่องโหว่ RCE ใน SharePoint เพิ่มเติมครับ

Overview
CVE-2020-16898 "Bad Neighbor" Vulnerability
CVE-2020-16952 SharePoint RCE Vulnerability

Overview
ในรอบเดือนตุลาคม 2020 นี้ ไมโครซอฟต์มีการประกาศแพตช์มาซึ่งครอบคลุมช่องโหว่ 87 รายการ แยกตามกลุ่มผลิตภัณฑ์ของไมโครซอฟต์ดังนี้

กลุ่ม Windows กระทบ Windows 8.1, 8.1 RT, 10, Server 2012, 2016, 2019 มีทั้งหมด 53 ช่องโหว่
กลุ่ม Office, Office Service และ Office Web Apps มีทั้งหมด 23 ช่องโหว่
กลุ่ม Azure Functions มีทั้งหมด 2 ช่องโหว่
กลุ่ม Dynamics มีทั้งหมด 4 ช่องโหว่
กลุ่ม Exchange Server, Visual Studio, PowershellGet, .NET Framework และ Flash Player for Edge and IE มีทั้งหมดกลุ่มละ 1 ช่องโหว่

แยกทั้งหมด 87 ช่องโหว่และกลุ่มผลิตภัณฑ์ที่ได้รับแพตช์ด้านบน ทีมตอบสนองการโจมตีและภัยคุกคามขอสลับมาดูในมุมของผลกระทบจากช่องโหว่ (impact/severity) ซึ่งเป็นจะปัจจัยสำคัญในการทำ prioritization โดยช่องโหว่ที่ถูกระบุว่ามีผลกระทบที่สูงตามมาตรฐานของ CVSSv3 ทั้งหมด 5 อันดับแรก ซึ่งมีตามรายการดังนี้

CVE-2020-16898 "Bad Neighbor" เป็นช่องโหว่ remote code execution ใน Windows IPv6 stack (CVSSv3: 9.8)
CVE-2020-16891 เป็นช่องโหว่ remote code execution ใน Windows Hyper-V  (CVSSv3: 8.8)
CVE-2020-16911 เป็นช่องโหว่ remote code execution ใน Windows Graphics Device Interface (GDI) (CVSSv3: 8.8)
CVE-2020-16952 เป็นช่องโหว่ remote code execution ใน Windows SharePoint (CVSSv3: 8.6)
CVE-2020-16947 เป็นช่องโหว่ remote code execution ในซอฟต์แวร์ Microsoft Outlook (CVSSv3: 8.1)

แม้จะยังไม่มีการเผยแพร่ของโค้ดสำหรับโจมตีช่องโหว่ (exploit) ออกมา แต่มีการตรวจพบการใช้ช่องโหว่ 6 รายการจากทั้งหมด 87 รายการจากการโจมตีจริงแล้ว ซึ่งอาจแปลความหมายได้ว่ามีการโจมตีโดยใช้ช่องโหว่เกิดขึ้นก่อน และการตรวจจับการโจมตีนั้นนำไปสู่การค้นพบช่องโหว่ใหม่ ช่องโหว่ที่ถูกใช้ในการโจมตีจริงแล้ว ณ วันที่บทความนี้ถูกเขียน ได้แก่

CVE-2020-16937 เป็นช่องโหว่ information disclosure ใน .NET Framework
CVE-2020-16909 เป็นช่องโหว่ privilege escalation ใน Windows Error Reporting
CVE-2020-16901 เป็นช่องโหว่ information disclosure ใน Windows Kernel
CVE-2020-16938 เป็นช่องโหว่ information disclosure ใน Windows Kernel
CVE-2020-16908 เป็นช่องโหว่ privilege escalation ใน Windows Setup
CVE-2020-16885 เป็นช่องโหว่ privilege escalation ใน Windows Storage VSP Driver

CVE-2020-16898 "Bad Neighbor" Vulnerability
Vulnerability Details
ทีม McAfee Advanced Threat Research พบช่องโหว่ใน Windows IPv6 stack ซึ่งทำให้ผู้โจมตีสามารถส่งแพ็คเกตแบบพิเศษมายังเป้าหมายที่มีช่องโหว่ จากนั้นรันโค้ดที่เป็นอันตรายในระบบที่มีช่องโหว่ได้ทันที ช่องโหว่นี้มีคุณลักษณะ Wormable ซึ่งหมายถึงสามารถถูกใช้ในการแพร่กระจายของมัลแวร์แบบเวิร์มได้ เช่นเดียวกันช่องโหว่ EternalBlue ที่ถูกใช้โดย WannaCry

ช่องโหว่มีที่มาจากการที่ Windows TCP/IP stack จัดการแพ็คเกตจากโปรโตคอล ICMPv6 Router Advertisement ซึ่งมีการใช้ Option Type 25 (Recursive DNS Server Option) กับค่าในฟิลด์ length เป็นเลขคู่อย่างไม่เหมาะสม ในเบื้องหลังการทำงานซึ่งทำให้เกิดช่องโหว่ Windows มีการทำงานผิดพลาดในส่วนของการจัดการค่าในฟิลด์ length ให้สอดคล้องกับที่ระบุไว้ใน RFC 8106 ซึ่งค่าที่ฟิลด์ length ควรจะต้องเป็นเลขคี่ที่มีค่า 3 เป็นอย่างน้อย

เมื่อมีการส่งค่าในฟิลด์ length เป็นเลขคู่เข้ามา Windows TCP/IP stack จะการจองพื้นที่ในหน่วยความจำเล็กกว่าความเป็นจริงทั้งหมด 8 ไบต์ ซึ่งส่งผลให้เกิดเงื่อนไขของช่องโหว่ประเภท buffer overflow ซึ่งนำไปสู่การโจมตีแบบ denial of service และ remote code execution ได้

ทีม McAfee Advanced Threat Research ให้ความเห็นว่าช่องโหว่ Bad Neighbor จำเป็นจะต้องถูกใช้ร่วมกับช่องโหว่อื่นเพื่อให้สามารถนำไปใช้โจมตีได้จริง สอดคล้องกับทาง SophosLabs ซึ่งลงความเห็นการทำให้ช่องโหว่นำมาใช้เพื่อทำ remote code execution นั้นทำได้ยาก
Attack Surface
ช่องโหว่นี้กระทบ Windows 10 ตั้งแต่รุ่น 1709 จนถึง 2004 และ Windows Server 2019
Detection
ทีม McAfee Advanced Threat Research ให้ความเห็นว่าการตรวจจับการโจมตีช่องโหว่สามารถทำได้ง่ายโดยการตรวจสอบแพ็คเกต ICMPv6 ที่เข้ามาในระบบ โดยให้ตรวจสอบตามเงื่อนไขดังนี้

ตรวจหาแพ็คเกต ICMPv6 ที่มีการกำหนดฟิลด์ Type เป็น 134 ซึ่งหมายถึง Router Advertisement หรือไม่
ตรวจหาว่าการกำหนด ICMPv6 ฟิลด์ Option เป็น 25 ซึ่งหมายถึง Recursive DNS Server (RDNSS) หรือไม่
ตรวจสอบว่าในส่วน RDNSS option นี้มีการกำหนดในฟิลด์ length เป็นเลขคู่หรือไม่

หากแพ็คเกตมีลักษณะครบตามทั้ง 3 เงื่อนไข ให้ทำการบล็อคแพ็คเกตดังกล่าวทันทีเนื่องจากอาจเป็นไปได้ว่าเป็นความพยายามโจมตีช่องโหว่ Bad Neighbor

ทีม McAfee Advanced Threat Research ยังมีการเผยแแพร่ Suricata signature และ Lua script ในช่วยตรวจจับการพยายามโจมตีช่องโหว่เอาไว้ด้วยที่ advanced-threat-research/CVE-2020-16898
Mitigation
การลดผลกระทบหรือลดความเสี่ยงที่จะถูกโจมตีโดยช่องโหว่ Bad Neighbor มีได้หลายวิธีการ ได้แก่

ปิดการใช้งาน IPv6 ในเน็ตเวิร์คอินเตอร์เฟสที่ไม่มีความจำเป็นต้องใช้ (อาจส่งผลกระทบต่อบางฟีเจอร์ของระบบ)
บล็อคหรือดรอปแพ็คเกต IPv6 ที่มีคุณลักษณะที่ไม่จำเป็นต้องการใช้งานที่ network perimeter โดยเฉพาะอย่างยิ่ง ICMPv6 Router Advertisements
ในขณะนี้ Windows Defender และ Windows Firewall ยังไม่สามารถบล็อคการทดลองโจมตีด้วย Proof of Concept ได้

อาจเป็นไปได้ที่ผู้โจมตีมีการใช้วิธีการ tunneling ให้สามารถส่ง ICMPv6 ผ่าน IPv4 มาได้ด้วยเทคโนโลยีอย่าง 6to4 หรือ Teredo อย่างไรก็ตามยังไม่มีการตรวจสอบในประเด็นนี้ว่าสามารถทำได้จริงหรือไม่
CVE-2020-16952 SharePoint RCE Vulnerability
Vulnerability Details
ทีม Source Incite พบช่องโหว่ใน Windows SharePoint ซึ่งทำให้ผู้โจมตีสามารถรันโค้ดที่เป็นอันตรายในระบบด้วยสิทธิ์ของผู้ดูแลระบบได้ การโจมตีจะต้องมีการพิสูจน์ตัวตนก่อน ซึ่งหมายถึงว่าผู้โจมตีจะต้องมีบัญชีอยู่ในระบบก่อน

ช่องโหว่นี้เกิดขึ้นในคลาส Microsoft.