Microsoft ได้ออก urgent hotfix MS11-100 KB2638420 และ KB2659883 หรือเรียกว่า out-of-band patch ออกมาวันที่ 29 ธันวาคม 2554 การวิเคราะห์ Hotfix นี้ ที่ถูกแล้วควรมี System Administrator ทำร่วมกับ Developer ที่ชำนาญเรื่อง .NET Framework แต่ผมเป็น System Administrator หากมีอะไรผิดพลาด ช่วยแนะนำด้วยครับ
ปัญหานี้พบบน .NET Framwork บน Windows ทุก Versions
Product ที่ได้รับผลกระทบคือ เครื่อง Web Server ที่ enable role IIS, มี .Net Framework 1 – 4 และปัญหานี้พบบน Windows ทุก versions ส่วน Version ของ .NET มีดังนี้
Microsoft .NET Framework 1.1 Service Pack 1
Microsoft .NET Framework 2.0 Service Pack 2
Microsoft .NET Framework 3.5 Service Pack 1
Microsoft .NET Framework 3.5.1
Microsoft .NET Framework 4
ใน Bulletin นี้ เป็นการแก้ไขปัญหา 4 เรื่องคือ
# |
ปัญหา |
ผลกระทบ |
ระดับความรุนแรง |
คำอธิบายแบบย่อ |
Workaround |
1 |
Collisions in HashTable May Cause DoS Vulnerability – CVE-2011-3414 |
Denial of Service | Important |
|
มี |
2 |
Insecure Redirect in .NET Form Authentication Vulnerability – CVE-2011-3415 |
Spoofing | Moderate |
|
มี |
3 |
ASP.Net Forms Authentication Bypass Vulnerability – CVE-2011-3416 |
Elevation of Privilege | Critical |
|
มี |
4 |
ASP.NET Forms Authentication Ticket Caching Vulnerability – CVE-2011-3417 |
Elevation of Privilege | Important |
|
มี |
จาก Vulnerability ทั้ง 4 ตัว มี 2 ตัวที่น่ากลัว ขอขยายความดังนี้
Collisions in HashTable May Cause DoS Vulnerability
- เกิดขึ้นตอนนี้ ASP.NET process ข้อมูลที่ POST มาจาก FORM แล้วเกิด Hash Collision
- หาก Attacker ส่ง crafted packet มาโจมตี ก็สามารถทำ denial of service บน web server
- ข้อมูลนี้ได้ถูกเปิดเผยต่อ public แต่ Microsoft ยังไม่ได้รับรายงานของการถูกโจมตี
- การใช้งาน Hash Function ที่มี Input ต่างกัน แต่มีค่า Hash เท่ากัน
เรียกว่า Hash Collision
Insecure Redirect in .NET Form Authentication Vulnerability
- ปัญหาเกิดจาก Function CopyStringToUnAllignedBuffer() ใน webengine4.dll ที่ถูกเรียกใช้ .NET framework
- Function LStrLenW ถูกใช้วัดความยามของ string
- ใน String จะถูกปิดท้ายด้วย terminating null, ตามปกติ Function LStrLenW ได้ถูกออกแบบให้ไม่นับ terminating null
- ถ้า String บังเอิญมี Null อยู่ด้วยมันก็นับแค่ Null ตัวแรก ทำให้คำนวณ Length ผิด
- ตัวที่อยู่ก่อน Null ก็ถูก copy ใส่ buffer
- Vulnerability นี้ ถูกใช้งาน Authentication bypass ใน
- การโจมตีต้องมีความรู้เรื่อง existing account name ที่จะ impersonate
- Microsoft ASP.NET membership system ใช้ Function FormsAuthentication.SetAuthCooke(username, false)
- การ Exploit ทำให้ attacker logon ด้วย user ที่อยู่ในระบบ แล้วได้สิทธิของ user เป้าหมาย เช่น admin
- ASP.NET membership ช่วยเรื่องการเก็บ user credential, authentication, create new user & password การทำงานมี Login control
ปัญหาที่มีผู้ใช้ได้รายงานหลังจากติดตั้ง MS11-100
มีผู้ที่เคยลง MS11-100 แล้วได้ Error “Operation is not valid due to the current state of the object.” It also says “[HttpException (0x80004005): The URL-encoded form data is not valid.]” ก็ขอให้การติดตั้ง Hotfix ทำตามกระบวนการ Change Management ที่เหมาะคือ ทดสอบจากระบบ Test ก่อนติดตั้งใน Production
Reference
- คำอธิบายของคำว่า Hash Collision (http://preshing.com/20110504/hash-collision-probabilities)
- Microsoft Security Bulletin MS11-100 – Critical (http://technet.microsoft.com/en-us/security/bulletin/ms11-100)
- Microsoft releases MS11-100 for ASP.NET DoS attack (http://www.net-security.org/secworld.php?id=12148)
- ASP.NET MS11-100: how can I change the limit on the maximum number of posted form values? (http://stackoverflow.com/questions/8684049/asp-net-ms11-100-how-can-i-change-the-limit-on-the-maximum-number-of-posted-for)
- Microsoft security bulletin MS11-100 breaking our site (http://forums.asp.net/t/1754512.aspx/1?Microsoft+security+bulletin+MS11+100+breaking+our+site)
- Microsoft emergency update to address hash collision attacks (http://searchsecurity.techtarget.com/news/2240113146/Microsoft-emergency-update-to-address-hash-collision-attacks)
- รายงาน Hash Collision Attack (http://www.nruns.com/_downloads/advisory28122011.pdf)
- SEC Consult SA-20111230-0 :: Critical authentication bypass in Microsoft ASP.NET Forms – CVE-2011-3416(http://seclists.org/fulldisclosure/2011/Dec/496)