โดยปกตินั้นไอ-ซีเคียวจะมีการกระจายข่าวการอัปเดตประจำเดือนของแพตช์จากไมโครซอฟต์ในลักษณะของ "ข่าวสั้น" ซึ่งจะปรากฎทาง Blog และ Facebook แต่จากการประเมินแพตช์ในเดือนตุลาคม 2020 แล้ว เราตัดสินใจที่จะลงรายละเอียดให้ลึกกว่าเดิมด้วยความเชื่อที่ว่ามันอาจจะช่วยให้การแพตช์ได้รับความสนใจและถูกเห็นความสำคัญมากยิ่งขึ้นว่ามันอาจจะช่วยชีวิตเราได้ในอนาคตจริง ๆ
ในโพสต์นี้ทีมตอบสนองการโจมตีและภัยคุกคาม (Intelligent Response) จากบริษัท ไอ-ซีเคียว จำกัด จะขอสรุปแพตช์และช่องโหว่ซึ่งประกาศใหม่ รวมไปถึงลงรายละเอียดช่องโหว่ที่น่าสนใจอย่าง Bad Neighbor และช่องโหว่ RCE ใน SharePoint เพิ่มเติมครับ
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.SharePoint.WebPartPages.DataFormWebPart ช่องโหว่ทำให้ผู้โจมตีสามารถดึงข้อมูลจากไฟล์ web.config มาแสดงได้ผ่านการส่งโค้ดในลักษณะไฟล์ XSL ไปให้ฝั่งเซิร์ฟเวอร์ประมวลผล การได้ไฟล์ web.config จะทำให้ผู้โจมตีเข้าถึงค่า validate key ซึ่งสามารถนำมาใช้ในการสร้างข้อมูลแบบ serialized viewState ซึ่งจะนำไปใช้ในการทำ remote code execution ในขั้นตอนของ deserialization
ผู้ค้นพบช่องโหว่มีการอธิบายที่มาของช่องโหว่รวมไปถึงโค้ดสำหรับทดสอบช่องโหว่เอาไว้ โค้ด PoC ดังกล่าวจะทำการดึง validate key ออกมาจาก web.config และหากมีการติดตั้งโปรแกรม ysoserial.net อยู่ สคริปต์จะมีการสร้างแพ็คเกตเพื่อเรียกใช้คำสั่ง cmd /c ... โดยอัตโนมัติ
Attack Surface
ช่องโหว่นี้กระทบ Microsoft SharePoint Enterprise Server 2016, Microsoft SharePoint Foundation 2013 Service Pack 1 และ Microsoft SharePoint Server 2019
Detection
การตรวจจับการโจมตีสามารถทำได้อยู่ 3 ขั้นตอน คือการตรวจสอบเมื่อมีการพยายามเช็คเวอร์ชันของระบบว่ามีช่องโหว่หรือไม่, ขั้นตอนที่มีการส่ง XSL payload เข้ามาและขั้นตอนที่มีการส่ง serialized viewState เพื่อทำ RCE อย่างไรก็ตามการที่จะตรวจสอบตามเงื่อนไขได้ ส่วนที่ทำการตรวจสอบจะต้องมีคุณสมบัติในการจัดการใบรองรับและสามารถตรวจสอบเนื้อหาใน HTTP post ได้ ซึ่งเป็นไปได้ยากที่จะทำจริงในสภาพแวดล้อมที่ Windows SharePoint server ถูกใช้งาน
Mitigation
แพตช์!!!
References
- https://attackerkb.com/topics/17lFRTT1DO/cve-2020-16898-aka-bad-neighbor
- https://www.zdnet.com/article/microsoft-october-2020-patch-tuesday-fixes-87-vulnerabilities/
- https://www.mcafee.com/blogs/other-blogs/mcafee-labs/cve-2020-16898-bad-neighbor
- https://news.sophos.com/en-us/2020/10/13/top-reason-to-apply-october-2020s-microsoft-patches-ping-of-death-redux/
- https://srcincite.io/advisories/src-2020-0022/
- https://srcincite.io/pocs/cve-2020-16952.py.txt
You must be logged in to post a comment.