Today, I would like to present a detailed description of the CVE-2011-1281 vulnerability [1], which was reported by me several months ago and patched today, together with four other bugs marked as the Elevation of Privileges class, on the occasion of the monthly Microsoft Patch Tuesday cycle (see Microsoft Security Bulletin MS11-056, a summary of the flaws’ origin and severity). All of the issues were present in the Windows CSRSS (Client/Server Runtime Subsystem) component, already mentioned in several of my posts [2][3][4] and articles [5][6]. Some of these problems affected every edition of the Windows NT-family systems up to Windows 2008/7, while the remaining part was only present up to Windows Vista. The latter is primarily caused by the fact, that all of the flaws were found in the Console Management code present in winsrv.dll (one of the modules used by the Windows Subsystem). Due to some major architecture changes applied in Windows 7 [7], the console support was (almost) entirely moved from the privileged CSRSS process into CONHOST.EXE, running in the context of the local user.
The blog post is meant to open up a series of technical write ups, explaining the origin and exploitation process of all the CSRSS issues just fixed. Apart from five high-impact vulnerabilities, publically announced by Microsoft, I will also present two Denial of Service bugs, which can be used to generate an unhandled Access Violation exception, resulting in the CSRSS crash and a Blue Screen of Death. A complete list of the flaws to be discussed, together with their root cause is shown below:
CVE-2011-1281 |
CSRSS Local EOP AllocConsole Vulnerability |
Lack of Sanity Check |
CVE-2011-1282 |
CSRSS Local EOP SrvSetConsoleLocalEUDC Vulnerability |
Integer Signedness Error |
CVE-2011-1283 |
CSRSS Local EOP SrvSetConsoleNumberOfCommand Vulnerability |
Integer Signedness Error |
CVE-2011-1284 |
CSRSS Local EOP SrvWriteConsoleOutput Vulnerability |
Code Logic Error |
CVE-2011-1870 |
CSRSS Local EOP SrvWriteConsoleOutputString Vulnerability |
Integer Overflow |
DoS Vulnerability #1 |
– |
Invalid 16-bit Integer Wrap |
DoS Vulnerability #2 |
– |
Integer Signedness Error |
Read more