Skip to content

[Bug]: Possible BSOD caused by ProxyBridge bundled WinDivert64.sys during network packet handling #143

@mehradhm1

Description

@mehradhm1

Platform

Windows

ProxyBridge Version

3.2.0

OS and Version

Windows 11

Documentation

Code Review

  • I have gone through the code page

Describe the Bug

Hi,

I am reporting a reproducible BSOD issue that appears to be related to ProxyBridge’s bundled WinDivert driver.

While using ProxyBridge on Windows 11, my system crashed with a BSOD. This has happened more than once, and in previous troubleshooting we were able to trace the crash path back to the same WinDivert driver used by ProxyBridge. When ProxyBridge is not running, the system remains stable and I do not get these crashes. The crashes occur when ProxyBridge is active and handling/routing traffic.

ProxyBridge is installed here:

C:\Program Files\ProxyBridge\

The system crashed with:

KERNEL_SECURITY_CHECK_FAILURE (139)

WinDbg showed:

Arg1: 000000000000000e
FAST_FAIL_INVALID_REFERENCE_COUNT

The failure bucket was:

0x139_e_INVALID_REFERENCE_COUNT_NETIO!NetioDereferenceNetBufferListEx

The relevant stack trace was:

00 nt!KeBugCheckEx
01 nt!KiBugCheckDispatch+0x69
02 nt!KiFastFailDispatch+0xb2
03 nt!KiRaiseSecurityCheckFailure+0x368
04 NETIO!NetioDereferenceNetBufferListEx+0xf5
05 NETIO!NetioDereferenceNetBufferListChain+0x111
06 tcpip+0x462e9

After switching to the trap frame and checking the stack again, it still pointed to the same network path:

NETIO!NetioDereferenceNetBufferListEx+0xf5
NETIO!NetioDereferenceNetBufferListChain+0x111
tcpip+0x462e9

This suggests that a network buffer/reference count was corrupted before NETIO attempted to dereference it.

I then checked the loaded modules in the dump. Several network-related drivers were loaded, including:

NETIO.SYS
tcpip.sys
fwpkclnt.sys
wfplwfs.sys
WinDivert64.sys

WinDbg confirmed that WinDivert64.sys was loaded:

8: kd> lm m WinDivert*

start end module name
fffff80174700000 fffff8017471c000 WinDivert64 (deferred)

Then I checked the module details:

8: kd> lmvm WinDivert64

start end module name
fffff80174700000 fffff8017471c000 WinDivert64 (deferred)

Image path: WinDivert64.sys
Image name: WinDivert64.sys
Timestamp: Tue Sep 20 04:39:22 2022 (632912C2)
CheckSum: 0001D693
ImageSize: 0001C000
Mapping Form: Loaded

I then searched the system and confirmed that the loaded WinDivert64.sys belongs to ProxyBridge:

C:\Program Files\ProxyBridge\WinDivert64.sys

So the WinDivert driver active during the crash was ProxyBridge’s bundled driver.

This has been tested multiple times. When ProxyBridge is disabled or not running, the computer does not crash. When ProxyBridge is active and routing traffic, the system eventually crashes with the same type of network-stack BSOD. Based on that behavior, plus the dump analysis showing ProxyBridge’s bundled WinDivert64.sys loaded at the time of the crash, ProxyBridge/WinDivert appears to be the direct trigger.

The key points are:

  1. The BSOD happened in the Windows network stack.
  2. The bugcheck was KERNEL_SECURITY_CHECK_FAILURE (139).
  3. Arg1 was 0xe, meaning FAST_FAIL_INVALID_REFERENCE_COUNT.
  4. The failure happened in NETIO!NetioDereferenceNetBufferListEx.
  5. WinDivert64.sys was loaded in the crash dump.
  6. The loaded WinDivert64.sys came from C:\Program Files\ProxyBridge\WinDivert64.sys.
  7. The bundled WinDivert64.sys timestamp is from September 2022.
  8. The crash has happened multiple times while ProxyBridge was active.
  9. The system remains stable when ProxyBridge is not running.

This may indicate an issue with the bundled WinDivert version, or an incompatibility between ProxyBridge’s packet interception/routing logic and newer Windows 11 network stack behavior.

Failed to resolve hostname: localhost
SOCKS5 proxy: :0

Changing the proxy host from localhost to 127.0.0.1 fixed that issue and allowed ProxyBridge to initialize correctly without needing to manually click “Test Proxy Connection”.

Suggestions:

  • Consider updating the bundled WinDivert driver to the latest stable version.
  • Show the bundled WinDivert version in the UI or logs.
  • Log the exact WinDivert driver path being loaded.
  • Warn users if multiple WFP/network filtering drivers are detected.
  • Handle localhost resolution more safely during startup, or normalize localhost to 127.0.0.1 for local proxy use.
  • Add safer error handling or compatibility checks around WinDivert initialization and packet handling.

I can provide the minidump and additional WinDbg output if needed.

Additional Context

No response

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions