Windows Metafile vulnerability
The Windows Metafile vulnerability—also called the Metafile Image Code Execution and abbreviated MICE—is a security vulnerability in the way some versions of the Microsoft Windows operating system handled images in the Windows Metafile format. It permits arbitrary code to be executed on affected computers without the permission of their users. It was discovered on December 27, 2005, and the first reports of affected computers were announced within 24 hours. Microsoft released a high-priority update to eliminate this vulnerability via Windows Update on January 5, 2006. Attacks using this vulnerability are known as WMF exploits.
The vulnerability was located in gdi32.dll and existed in all versions of Microsoft Windows from Windows 3.0 to Windows Server 2003 R2. However, attack vectors only exist in NT-based versions of Windows. Exploits taking advantage of the vulnerability on Windows NT-based systems facilitated the propagation of various types of malware, typically through drive-by downloads.
Due to extreme impact, this bug won the 2007 Pwnie Award for "Mass 0wnage" and "Breaking the Internet".
Affected systems
All versions of the Microsoft Windows operating system support the Windows Metafile graphics standard. All versions from Windows 3.0 to Windows Server 2003 R2 contain this security flaw. However, Windows NT 4.0 and Windows XP, unless patched, are more vulnerable than earlier versions because their default installation enables Windows Metafile code execution, the source of the vulnerability. Later versions of Windows do not have this vulnerability.According to computer security expert Steve Gibson, Windows NT 4 is vulnerable to known exploits if image preview is enabled. Windows operating systems that do not have image preview enabled or that have hardware-based Data Execution Prevention active for all applications should not be susceptible to this exploit.
Operating systems other than Windows are not directly affected. However, a non-Windows system could become vulnerable if it runs software to view Windows WMF files. This could include software that incorporates or clones Windows' native Graphics Device Interface Dynamic-link library or that run Windows or Windows programs through an emulator or compatibility layer. A Unix-like system that uses Wine to emulate Windows, for example, could be exploited. Gibson wrote the program MouseTrap, which his company distributes as freeware, to detect Windows Metafile vulnerability in systems running Windows and Windows emulators.
The vulnerability
According to assessments by F-Secure, the vulnerability is an inherent defect in the design of WMF files, because the underlying architecture of such files is from a previous era, and includes features which allow actual code to be executed whenever a WMF file opens. The original purpose of this was mainly to handle the cancellation of print jobs during spooling.According to Secunia, "The vulnerability is caused due to an error in the handling of Windows Metafile files containing specially crafted
SETABORTPROC
'Escape' records. Such records allow arbitrary user-defined function to be executed when the rendering of a WMF file fails." According to the Windows 3.1 SDK documentation, the SETABORTPROC
escape was obsoleted and replaced by the function of the same name in Windows 3.1, long before the WMF vulnerability was discovered. However the obsoleted escape code was retained for compatibility with 16 bit programs written for Windows 3.0. This change happened at approximately the same time as Microsoft was creating the 32 bit reimplementation of GDI for Windows NT, and it is likely that the vulnerability occurred during this effort.The 'Escape' mechanism in question allows applications to access output device features not yet abstracted by GDI, such as hardware accelerated Bézier curves, encapsulated postscript support, etc. This is done by passing an opcode, a size and a pointer to some data to the call, which will usually just pass it on to the driver. Because most Escape calls produce actual graphics, the general escape mechanism is allowed in metafiles with little thought originally given to the possibility of using it for things like SETABORTPROC, modern non-vulnerable metafile interpreters now checks the opcode against a blacklist or whitelist, while keeping the full set of opcodes available to regular code that calls the GDI escape functions directly.
It is worth noting that 16 bit Windows was immune to the vulnerability because the pointer specified in the metafile can only point to data within the metafile, and 16 bit Windows always had a full no-execute-data enforcement mandated by the segmented architecture of 16 bit protected mode. Windows NT for CPU architectures other than 32 bit x86 required return-oriented programming to exploit because those architectures had the no-execute functionality missing from older x86 processors.
The vulnerability is in the Common Vulnerabilities and Exposures database, US-CERT reference and Microsoft Knowledge Base Article . It was first observed in the wild by researchers at Sunbelt Software on December 28, 2005 and announced publicly by the company's president Alex Eckelberry.
Propagation and infection
Computers can be affected via the spread of infected e-mails which carry the hacked WMF file as an attachment. Infection may also result from:- Viewing a website in a web browser that automatically opens WMF files, in which case any potential malicious code may be automatically downloaded and opened. Internet Explorer, the default Web browser for all versions of Microsoft Windows since 1996 through Windows 10, does this.
- Previewing an infected file in Windows Explorer.
- Viewing an infected image file using some vulnerable image-viewing programs.
- Previewing or opening infected emails in older versions of Microsoft Outlook and Outlook Express.
- Indexing a hard disk containing an infected file with Google Desktop.
- Clicking on a link through an instant messaging program such as Windows Live Messenger, AOL Instant Messenger or Yahoo! Messenger.
According to assessments from the McAfee antivirus company, the vulnerability has been used to propagate the Bifrost backdoor trojan horse. Other forms of malware have also exploited the vulnerability to deliver various malicious payloads.
McAfee claims that the first generation of such exploits had been encountered by more than 6% of their customer base by 31 December 2005.
Official patch
released an official patch to address the problem on 5 January 2006. This patch may be applied in lieu of other corrective measures.The official patch is available for Windows 2000, Windows XP and Microsoft Windows Server 2003. Windows NT 4 and other older operating systems did not receive a patch as they were no longer supported by Microsoft by then. Steve Gibson stated in his Security Now! podcast #20, that his company Gibson Research Corporation would make a patch available for Windows 9x systems if Microsoft did not. After further research, Steve Gibson stated, in a later Security Now! podcast #23, that Windows 9x and ME are not vulnerable and do not need patching. Windows 9x/ME users can run his Mouse Trap utility to see this for themselves.
A free downloadable patch for Windows NT has been provided by Paolo Monti from Future Time, the Italian distributor of Eset's NOD32 anti-virus system. The patch works on older operating systems, but it is supplied without warranty.
There have been reports of the official patch being automatically installed even when Windows Automatic Update is configured to ask before installing automatically downloaded updates. This causes an automatic reboot, which can cause loss of data if the user has a program open with unsaved changes.
Other corrective measures
These measures are of historical interest only on systems updated on or after 5 January 2006.Workaround
As a workaround before a patch was available, on 28 December 2005 Microsoft advised Windows users to unregister the dynamic-link library file shimgvw.dll which invokes previewing of image files and is exploited by most of these attacks. The DLL can be re-registered after patching by runningregsvr32.exe shimgvw.dll
. This workaround blocks a common attack vector but does not eliminate the vulnerability.Third-party patch
A third party patch was released by Ilfak Guilfanov on 31 December 2005 to temporarily disable the vulnerable function call in gdi32.dll. This unofficial patch received much publicity due to the unavailability of an official one from Microsoft, receiving the recommendation of SANS Institute Internet Storm Center and F-Secure. Because of the large amount of publicity, including being indirectly slashdotted, Guilfanov's website received more visitors than it could cope with, and was suspended on 3 January 2006; the patch was still available for download from a number of mirrors including the Internet Storm Center website.Guilfanov's website went back online on 4 January in a much-reduced state. No longer providing the patch on-site due to bandwidth issues, the provided a list of mirrors where a user could download the patch and the associated vulnerability-checker, and the MD5 checksum for the file, so that it could be checked that a downloaded file was probably genuine.
After Microsoft released its patch, Guilfanov withdrew his.
Risk reduction techniques
Microsoft says its patch removes the flawed functionality in GDI32 that allowed the WMF vulnerability. For computers running an unpatched version of Windows, a defence in depth approach was recommended, to mitigate the risk of infection. Various sources have recommended mitigation efforts that include:- Making use of hardware-enforced Data Execution Prevention effective for all applications.
- Set the default WMF application to be one not susceptible to infection, such as Notepad.
- Do not use Internet Explorer, or at least turn off downloads by setting the default security settings to high.
- Keep all anti-virus software up-to-date. Consider frequent manual updates.
- Block all WMF files on the network perimeter by file-header filtering.
- Making use of users accounts that are configured with only the user rights that are required.
- Disable image loading in Internet Explorer and all other browsers.
- Disable image loading in Outlook Express.
- Disable hyperlinks in MSN Messenger.
- Disable the Indexing Service on Windows 2000, Windows XP and Windows Server 2003.
- Disable Desktop Search applications such as Google Desktop or Windows Desktop Search until the problem is corrected.