Researcher Finds New Class of Windows Vulnerabilities
A security researcher has discovered over 25 different potential vulnerabilities in Windows, including some that could lead to elevation of privileges.
The bugs impact the user interface win32 kernel (win32k) component that has been in the operating system for decades, and affect all versions of Windows, including Windows 10, because Microsoft keeps code backwards compatible.
In fact, the researcher tested the flaws on a guest account on the latest Windows Insider Preview, which was updated last in September 2019.
In a whitepaper (PDF) published this week, Israeli security researcher Gil Dabah focuses on the UI objects reference counting mechanism of the Handle Manager component, which is vulnerable to the new type of attack.
The research into these issues, Dabah says, is based on prior investigations on user-mode callback vulnerabilities, which are rooted in the fact that win32k was originally designed to run in user-mode, and only then moved to kernel. Leading to use-after-free (UAF) attacks, many of these bugs were addressed in recent years.
The newly discovered attacks target the manner in which object destruction works in win32k — objects can be linked in a way that allows for the destruction of victim objects when the target object is destroyed.
Essentially, the attack ensures that victim child windows are destroyed alongside the target window object. When a child window is created, the parent window is locked because the window creation calls back to user-mode, and is only freed if the creation succeeds (and the child window continues to be used).
“In our attack, we found a way to create a situation where the parent window will be gone (freed) in the ThreadUnlock function, that’s done simply by exploiting the fact that the kernel calls back to user-mode in the window creation routine and we destroy the parent window from user-mode, even though the parent window is locked,” the researcher explains.
The parent window is destroyed inside ThreadUnlock, which also destroys the child window, causing a UAF condition where a non-existent window object is used. An unprivileged attacker could eventually exploit this condition, Dabah notes.
“Unlike the prior research attacking technique -since there’s no callback to user-mode at the time the object is really freed, in order to be able to forge a replacement fake window object for the exploit to succeed, there’s a race condition between the time the window object was freed and the time it’s used once again,” he says.
In his research paper, Dabah not only describes how the attack works, but also provides information on the discovered vulnerabilities. He also published proof-of-concept (PoC) code targeting 13 of the 25 vulnerabilities. Eleven of the discovered vulnerabilities could be abused to escalate privileges.
The researcher explains that the TypeIsolation mitigation technique in Windows 10 makes exploitation of some of these issues more difficult, but notes that targeting older Windows iterations with the same object type is still fully viable.
Microsoft, he says, has already addressed some of these issues, but a wide mitigation has yet to be rolled out.