Portwell Engineering Toolkits Driver Arbitrary Physical Memory R/W LPE (CVE-2026-3437)
by tihomirocrew · 2026-07-05
- Severity
- High
- CVE
- CVE-2026-3437
- Category
- binary
- Affected product
- Portwell Engineering Toolkits driver, portwell.sys (v4.8.2)
- Affected versions
- Portwell Engineering Toolkits v4.8.2
- Disclosed
- 2026-07-05
- Patch status
- unpatched
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-06 |
| Author / Researcher | tihomirocrew |
| CVE / Advisory | CVE-2026-3437 |
| Category | binary |
| Severity | High |
| CVSS Score | Not specified in source |
| Status | PoC |
| Tags | byovd, windows-driver, kernel, lpe, physical-memory, ioctl, privilege-escalation |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Portwell Engineering Toolkits driver, portwell.sys (v4.8.2) |
| Versions Affected | Portwell Engineering Toolkits v4.8.2 |
| Language / Platform | C++ (Windows, native), targets the portwell.sys kernel driver via DeviceIoControl |
| Authentication Required | Local-only |
| Network Access Required | No |
Summary
portwell.sys, a legitimately signed driver shipped with Portwell Engineering Toolkits v4.8.2, exposes IOCTL handlers that let any local user-mode process read and write arbitrary physical memory via MmMapIoSpace, with no validation of the caller-supplied physical address, width, or size. The PoC opens a handle to the \\.\PORTWELL_0_1 device and issues the IOCTL_READ_PHYS (0xEA606450) and IOCTL_WRITE_PHYS (0xEA60A454) codes to read and then overwrite a physical memory location, demonstrating the classic “Bring Your Own Vulnerable Driver” (BYOVD) primitive that can be chained into full SYSTEM/kernel compromise.
Vulnerability Details
Root Cause
The driver’s IRP_MJ_DEVICE_CONTROL dispatch routine maps attacker-controlled physical addresses via MmMapIoSpace and performs the requested read/write without verifying that the address, width, or size are within any safe or expected range.
Attack Vector
- Install/load the legitimately signed but vulnerable
portwell.sysdriver (classic BYOVD prerequisite). - Open a handle to the device object at
\\.\PORTWELL_0_1from an unprivileged user-mode process. - Send
IOCTL_READ_PHYSwith an attacker-chosen physical address to read arbitrary physical memory. - Send
IOCTL_WRITE_PHYSwith an attacker-chosen physical address and data to write arbitrary physical memory. - Use the read/write primitive to locate and patch kernel structures (e.g., token privileges) to escalate to SYSTEM.
Impact
A local, low-privileged attacker who can load the driver gains an arbitrary physical memory read/write primitive, enabling local privilege escalation to SYSTEM/kernel and full system compromise.
Environment / Lab Setup
Target: Windows host with portwell.sys (Portwell Engineering Toolkits v4.8.2) loaded
Attacker: Windows C++ toolchain (MSVC/CMake) to build and run entry.cpp against the loaded driver
Proof of Concept
PoC Script
See
entry.cpp,portwell.hpp, andCMakeLists.txtin this folder.
| |
The compiled executable opens a handle to the Portwell device, reads a 32-bit value from physical address 0x1000, overwrites it with 0x1337 via write_phys, then reads it back to confirm the arbitrary physical write succeeded.
Detection & Indicators of Compromise
Signs of compromise:
- Presence and loading of
portwell.syson systems where Portwell Engineering Toolkits is not an expected/installed vendor utility - Unusual user-mode processes opening handles to
\\.\PORTWELL_0_1and issuing IOCTL codes0xEA606450/0xEA60A454 - Unexplained privilege escalation events or token manipulation shortly after driver load
Remediation
| Action | Detail |
|---|---|
| Primary fix | No vendor patch confirmed as of 2026-07-05 — monitor for advisory; block via Microsoft’s vulnerable driver blocklist (HVCI/WDAC) where possible |
| Interim mitigation | Add portwell.sys to a driver blocklist/deny policy, restrict driver-loading privileges, and enable HVCI/WDAC to prevent untrusted vulnerable drivers from loading |
References
Notes
Mirrored from https://github.com/tihomirocrew/cve-2026-3437 on 2026-07-05.
| |