ปัจจุบันเครื่อง Windows Server จะมี HTTP listener หรือ web server อยู่ด้วย (ไม่ได้จัดการโดย IIS Web server เหมือนแต่ก่อน) เพราะ Microsoft Windows มีงานหลายส่วนที่ทำผ่าน web เช่นการใช้ Remote admin ที่ทำผ่าน web ด้วย เป็นต้น ซึ่งปัจจุบัน Microsoft ได้สร้าง File HTTP.sys เพื่อด่านหน้าในการทำงานของ HTTP โดยมี IIS เป็น application หนึ่งที่มาเกาะกับ HTTP.sys อีกที ในการออกแบบ OS มี Mode การทำงาน 2 แบบคือ Kernel และ User Mode โดย Kernel จะเป็นส่วน Low Level ที่ System ใช้งานเพื่อ Support การทำงานของทุกส่วนใน Windows ในขณะที่ User Mode จะเป็นขอบเขตของ User แต่ละคนเท่านั้น เราจะพบว่า software ที่วางอยู่ใน Kernel มักเป็น core system ของ Windows เช่น driver ต่าง หรือ virtualization เป็นต้น การติดตั้ง HTTP.sys ใน Kernel จึงมีประโยชน์มากกว่า หน้าที่ของ HTTP.sys ใน Kernel คือ การเป็น Cache สำหรับ HTTP request และการจัด Request Queue ถ้าอยากรู้ว่าใครกำลังใช้ HTTP.sys ในเครื่องบ้านให้ใช้คำสั่งนั้นใน Command Windows
netsh http show servicestate
ปัญหาของ HTTP.sys และการโจมตี
เมื่อ HTTP.sys อยู่ใน Kernel แล้วมันเกิด Vulnerability ผลกระทบก็ต้องมากกว่า ปัญหาที่พบครั้งนี้คือการตรวจ HTTP Request ที่ใช้ Range ไม่เหมาะสม การทดสอบจะใช้ เครื่องมือชื่อ curl มีรูปแบบการ เรียก
HTTP
Curl –v http://servername/ -H “Host: servername” –H “Range: byte 0-18446744073709551615” –k
HTTPS
Curl –v https://servername/ -H “Host: servername” –H “Range: byte 0-18446744073709551615” –k
ถ้าเครื่องมีปัญหาจะได้ Return นี้
คำสั่ง Range ใน Request ถูกใช้ Download File หรือ Content แล้ว ทำให้ HTTP.sys อ่าน File มาเก็บลง Cache แล้วเอาค่า Range นี้อ่านข้อมูลจาก Cache อีกที
ปัญหาที่พบแล้วตอนนี้ คือ Denied of Service แต่ที่กลัวกันคือถ้ามีการต่อยอดไปได้ ถ้าไปอ่าน Memory ตรงอื่นมาได้จะเกิดอะไรขึ้น?
Windows ที่ได้รับผลกระทบจาก Vulnerability
WIndows Client: Windows 7,- Windows 8,- Windows 8.1
Windows Server: Windows Server 2008 R2,- Windows Server 2012,- Windows Server 2012 R2
การแก้ปัญหา
ต้องลง Hotfix MS15-034
Workaround
– ทำด้วยการ Disable IIS kernel caching ในหน้า IIS Admin