One small typo in Microsoft's code caused the security vulnerability that prompted Microsoft to release an out of sequence patch on Tuesday, it has emerged.
A rogue ampersand ("&") created a security hole in a the MSVidCtl ActiveX control that hackers began exploiting early this month. A blog posting on Microsoft's Security Development Lifecycle (SDL) by Michael Howard, a security program manager at Microsoft, explained that the minor typo corrupted the code used by the ActiveX control. This in turn created a buffer-overflow bug, he explains.
The extra ‘&’ character in the vulnerable code causes the code to write potentially untrusted data, of size cbSize, to the address of the pointer to the array, pbArray, rather than write the data into the array, and the pointer is on the stack. This is a stack-based buffer overrun vulnerability.
Microsoft's Visual Studio development tool uses the same Active Template Library (ATL) code, prompting Microsoft to issue an update for its coding tools at the same time as pushing out an update for IE.
Howard explained that the flaw was of a type that made it difficult to spot during code review. "In the SDL we require that teams fuzz their controls, but our fuzzing tools didn’t find this because the method in question requires a specially formed input stream that includes many sentinel bytes," Howard explained.
Microsoft plans to update its fuzzing tools so that they are better at detecting this kind of error. It will also mandate the use of newer ATL code.
The cause of the vulnerability was originally pinpointed by reverse engineer Thomas Dullien (aka Halvar Flake), chief exec of Zynamics, and security researcher Dennis Elser. A blog posting discussing the issue and its possible ramifications can be found here. As the researchers note, the flaw is particularly troublesome because third-party applications that make use of the buggy ATL library are also rendered vulnerable to attack. ®