WinPcap NPF.SYS Local Privilege Escalation Vulnerability
10 Jul. 2007
WinPcap is "a software package that facilitates real-time link-level network access for Windows-based operating systems. It is used by a wide range of open-source projects including Wireshark". Local exploitation of an input validation vulnerability within the NPF.SYS device driver of WinPcap allows attackers to execute arbitrary code in kernel context.
* Wireshark version 0.99.5 with NPF.SYS version 18.104.22.1685
* Wireshark version 0.99.5 with NPF.SYS version 4.0.1 or newer
The vulnerability specifically exists due to insufficient input validation when handling the Interrupt Request Packet (Irp) parameters passed to IOCTL 9031 (BIOCGSTATS). By passing carefully chosen parameters to this IOCTL, an attacker can overwrite arbitrary kernel memory.
Exploitation allows attackers to execute arbitrary code in kernel context.
The vulnerable device driver is loaded when WinPcap is initialized. This driver can be set to load on start-up depending on a choice made at installation time. This is not the default setting.
In a default installation, the device driver is not loaded until an Administrator utilizes a WinPcap dependent application. Once they do, it will become accessible to normal users as well. When a program using this driver exists, it is not unloaded. Attackers will continue to have access until the driver is manually unloaded.
If the option to allow normal user access was chosen at installation time, attackers will always have access to this device driver. Consequently, a local attacker without administrator privileges would have access to sniff, as well as exploit this vulnerability.
The WinPcap Team has addressed this vulnerability by releasing version 4.0.1 of the WinPcap software. For more information, see the following URL: http://www.winpcap.org/misc/changelog.htm