CISA published ICSA-26-293-01 covering six vulnerabilities in the HMS Networks PEAK-System PCAN Windows drivers — the kernel-mode CAN (Controller Area Network) device drivers used everywhere CAN bus hardware shows up: automotive test benches, industrial automation, medical devices, maritime systems, and OT lab environments. Every one of these flaws can be triggered to crash the Windows kernel — a blue screen on demand — and several of the weakness classes (out-of-bounds write, untrusted pointer dereference) are the exact primitives exploit developers use to escalate from a local foothold to kernel-level code execution.
Affected versions:
- PEAK-System Device Driver Setup <= 5.1.2.1151
- PCAN Windows CAN device drivers <= 5.1.2
CVEs assigned: CVE-2026-109576, CVE-2026-101103, CVE-2026-94188, CVE-2026-103672, CVE-2026-110322, CVE-2026-105960, with an aggregate CVSS v3 score of 7.1.
If you run engineering workstations, HMI hosts, test cells, or any Windows box with a PEAK PCAN-USB, PCAN-PCIe, or PCAN-PCI adapter attached, this advisory applies to you. Kernel-driver vulnerabilities in OT-adjacent tooling are not a theoretical nuisance — they are a reliable denial-of-service mechanism against systems that often control physical processes, and a privilege-escalation stepping stone for any attacker who has already landed on the host.
Technical Analysis
What Is Affected
PEAK-System Technik (now part of HMS Networks) produces the most widely deployed CAN interface hardware in the world. Their Windows driver package installs kernel-mode drivers (pcan_usb.sys, pcan_usbfd.sys, pcan_pci.sys, pcan_pcie.sys, pcan_isa.sys, pcan_dng.sys, and related modules) that expose IOCTL interfaces to user-mode applications such as PCAN-View, PCAN-Explorer, and countless custom engineering applications built on the PCAN-Basic API.
All driver package versions at or below 5.1.2.1151 (Device Driver Setup) / 5.1.2 (driver binaries) are vulnerable across the six CVEs.
Weakness Classes — Why This Matters
The advisory maps the six CVEs to five CWE classes:
| Weakness | Defensive Significance |
|---|---|
| Out-of-bounds Write (CWE-787) | Kernel memory corruption — classic path from local access to SYSTEM/kernel code execution |
| Classic Buffer Overflow (CWE-120) | Buffer copy without input size checking — exploitable via crafted IOCTL buffers |
| Improper Validation of Array Index (CWE-129) | Attacker-controlled index into kernel structures — read/write primitive |
| Untrusted Pointer Dereference (CWE-822) | Driver dereferences a pointer influenced by user-mode input — arbitrary kernel memory access |
| Improper Handling of Length Parameter Inconsistency (CWE-130) | Mismatched length fields in IOCTL/IRP handling — corruption or information leak |
How Exploitation Works (Defender's View)
These are local vulnerabilities. The attack chain is straightforward:
- Attacker (or malware) gains code execution on a Windows host that has a vulnerable PCAN driver installed — via phishing, a compromised engineering laptop, a malicious supplier tool, or lateral movement.
- The attacker opens a handle to the PCAN device object exposed by the driver and issues crafted IOCTL requests with malformed buffer lengths, invalid indices, or attacker-controlled pointers.
- The driver fails to validate the input and corrupts kernel memory — at minimum producing a BugCheck (BSOD), and in a weaponized scenario potentially yielding kernel-mode arbitrary write and full privilege escalation.
The CVSS 7.1 vector reflects the local attack vector with high availability impact. Do not let the "local" designation lower your priority: in OT and engineering environments, the hosts running CAN drivers are frequently shared, poorly segmented, domain-joined to flat networks, and running as local admin — exactly the conditions where a reliable kernel crasher becomes an operational weapon. An attacker who can BSOD a test-cell controller or an HMI on demand has a physical-process denial-of-service capability.
Exploitation Status
As of this writing there is no confirmed in-the-wild exploitation and the advisory is not yet listed in the CISA Known Exploited Vulnerabilities catalog. However, kernel-driver IOCTL fuzzing is a mature discipline, public research into PEAK driver attack surface exists, and six simultaneously disclosed memory-corruption CVEs in one driver package will attract reverse-engineering attention quickly. Treat the patch window as short.
Detection & Response
The most reliable pre-patch detection strategy has three prongs: (1) inventory — find every host with a vulnerable PCAN driver; (2) crash telemetry — alert on BugChecks referencing PEAK driver modules; (3) install monitoring — catch installation of legacy/vulnerable driver packages, which is also how an attacker might deliberately plant a vulnerable driver for a BYOVD-style attack.
Sigma Rules
---
title: Windows Kernel Crash Referencing PEAK PCAN Driver Module
id: 3f7a2b91-6c4d-4e8a-9b1f-2d5c7a9e0f31
status: experimental
description: Detects Windows BugCheck (BSOD) events or WER crash reports where the faulting module is a PEAK-System PCAN kernel driver, indicating possible exploitation of CVE-2026-109576, CVE-2026-101103, CVE-2026-94188, CVE-2026-103672, CVE-2026-110322, or CVE-2026-105960.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-293-01
author: Security Arsenal
date: 2026/01/20
tags:
- attack.impact
- attack.t1499
logsource:
product: windows
service: system
detection:
selection_provider:
Provider_Name:
- 'Microsoft-Windows-WER-SystemErrorReporting'
- 'Microsoft-Windows-Kernel-Power'
- 'BugCheck'
selection_module:
Message|contains:
- 'pcan_usb.sys'
- 'pcan_usbfd.sys'
- 'pcan_pci.sys'
- 'pcan_pcie.sys'
- 'pcan_isa.sys'
- 'pcan_dng.sys'
- 'pcan.sys'
condition: selection_provider and selection_module
falsepositives:
- Genuine driver instability on heavily loaded CAN test benches; investigate crash dumps to confirm root cause
level: high
---
title: PEAK PCAN Kernel Driver File Dropped or Replaced
id: 8b2e4c15-7d3a-4f6b-a2c8-1e9d5f3b7a42
status: experimental
description: Detects creation or modification of PEAK-System PCAN kernel driver files in the Windows drivers directory. May indicate installation of a vulnerable driver version (<=5.1.2) or a bring-your-own-vulnerable-driver (BYOVD) staging attempt leveraging CVE-2026-109576 and related CVEs.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-293-01
- https://attack.mitre.org/techniques/T1068/
author: Security Arsenal
date: 2026/01/20
tags:
- attack.privilege_escalation
- attack.t1068
logsource:
category: file_event
product: windows
detection:
selection:
TargetFilename|contains:
- '\System32\drivers\pcan_usb.sys'
- '\System32\drivers\pcan_usbfd.sys'
- '\System32\drivers\pcan_pci.sys'
- '\System32\drivers\pcan_pcie.sys'
- '\System32\drivers\pcan_isa.sys'
- '\System32\drivers\pcan_dng.sys'
filter_legit_installer:
Image|endswith:
- '\PCAN-Basic\Setup.exe'
- '\PeakOemDrv.exe'
condition: selection and not 1 of filter_legit_installer*
falsepositives:
- Legitimate PEAK driver installation or update by engineering staff; correlate with change management tickets
level: medium
---
title: Vulnerable PCAN Driver Package Installation via PnPUtil or Installer
id: 5c1d8f37-2a6b-4e9d-b3f7-8a4c6e1d9b53
status: experimental
description: Detects driver package staging or installation referencing PEAK-System PCAN drivers through pnputil, dpinst, or the PEAK setup executable, which may introduce vulnerable driver versions (<=5.1.2.1151) onto the system.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-293-01
author: Security Arsenal
date: 2026/01/20
tags:
- attack.persistence
- attack.t1547
logsource:
category: process_creation
product: windows
detection:
selection_image:
Image|endswith:
- '\pnputil.exe'
- '\dpinst.exe'
- '\PeakOemDrv.exe'
- '\PeakCpl.exe'
selection_cli:
CommandLine|contains:
- 'pcan'
- 'peak-system'
- 'peak system'
condition: all of selection_*
falsepositives:
- Scheduled driver deployment by engineering or IT; validate driver version post-install against 5.1.2.1151 baseline
level: medium
KQL — Microsoft Sentinel / Defender Hunting
This query inventories hosts with PCAN driver files, captures driver installation events, and surfaces kernel crash telemetry — the three signals that matter pre- and post-patch.
// Hunt: PEAK PCAN driver footprint, installation activity, and crash indicators (ICSA-26-293-01)
let PcanModules = dynamic(["pcan_usb.sys","pcan_usbfd.sys","pcan_pci.sys","pcan_pcie.sys","pcan_isa.sys","pcan_dng.sys","pcan.sys"]);
union isfuzzy=true
// 1. Driver files present on endpoints (vulnerable inventory)
(DeviceFileEvents
| where FileName has_any (PcanModules)
| where FolderPath has @"\System32\drivers"
| summarize FilesSeen = make_set(FolderPath), LastSeen = max(Timestamp) by DeviceName, FileName
| extend Signal = "PcanDriverFilePresent"),
// 2. Driver install/staging activity via pnputil/dpinst/PEAK setup
(DeviceProcessEvents
| where FileName in~ ("pnputil.exe","dpinst.exe","PeakOemDrv.exe","PeakCpl.exe")
| where ProcessCommandLine has_any ("pcan","peak")
| project Signal = "DriverInstallAttempt", TimeGenerated = Timestamp, DeviceName,
FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessAccountName),
// 3. Kernel crash / unexpected shutdown telemetry on hosts with PCAN drivers
(DeviceEvents
| where ActionType == "UnexpectedShutdown" or AdditionalFields has "BugCheck"
| project Signal = "KernelCrashTelemetry", TimeGenerated = Timestamp, DeviceName, ActionType, AdditionalFields),
// 4. Syslog-ingested OT jump hosts reporting BugCheck (CEF/syslog collectors)
(Syslog
| where SyslogMessage has_any (PcanModules) and SyslogMessage has "bugcheck"
| project Signal = "SyslogCrashRefPcan", TimeGenerated, HostName = Computer, SyslogMessage)
| sort by TimeGenerated desc
Velociraptor VQL — Endpoint Triage Hunt
Use this artifact across engineering workstation collections to enumerate installed PCAN driver files, their versions, and any crash dumps that reference the modules.
-- Hunt: Enumerate PEAK PCAN driver versions and associated crash dumps (ICSA-26-293-01)
LET drivers = SELECT FullPath, Size, Mtime,
parse_pe(File=FullPath).FileVersion AS FileVersion
FROM glob(globs="C:/Windows/System32/drivers/pcan*.sys")
LET minidumps = SELECT FullPath AS DumpPath, Mtime AS DumpTime, Size AS DumpSize
FROM glob(globs="C:/Windows/Minidump/*.dmp")
SELECT "DriverFile" AS ArtifactType, FullPath, FileVersion, Mtime, Size,
"" AS DumpPath, "" AS DumpTime
FROM drivers
WHERE FileVersion <= "5.1.2.1151" OR True
UNION ALL
SELECT "CrashDump" AS ArtifactType, "" AS FullPath, "" AS FileVersion,
"" AS Mtime, 0 AS Size, DumpPath, format(format="%v", args=DumpTime) AS DumpTime
FROM minidumps
Remediation / Verification Script
Run this on engineering workstations, HMIs, and test-cell hosts to inventory PCAN driver versions and flag anything at or below the vulnerable baseline. It does not remove drivers — CAN interfaces in production OT use should be patched during a maintenance window.
# ICSA-26-293-01 - PEAK PCAN driver inventory and vulnerability check
# Flags any installed PCAN driver <= 5.1.2.1151 as vulnerable
# Run as Administrator; safe for read-only inventory
$VulnerableBaseline = [version]"5.1.2.1151"
$DriverPath = "$env:SystemRoot\System32\drivers"
$Report = @()
# 1. Check on-disk PCAN driver binaries
$pcanDrivers = Get-ChildItem -Path $DriverPath -Filter "pcan*.sys" -ErrorAction SilentlyContinue
foreach ($drv in $pcanDrivers) {
$ver = [version]($drv.VersionInfo.FileVersion -replace '[^0-9\.]', '' -replace '\.{2,}', '.')
$status = if ($ver -le $VulnerableBaseline) { "VULNERABLE - patch required" } else { "Patched baseline met" }
$Report += [pscustomobject]@{
Host = $env:COMPUTERNAME
Driver = $drv.Name
Version = $ver
Status = $status
Modified = $drv.LastWriteTime
}
}
# 2. Check installed PEAK setup package via registry
$peakInstall = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -match "PCAN|PEAK" } |
Select-Object DisplayName, DisplayVersion, InstallDate
# 3. Check recent BugCheck events referencing PCAN modules (last 30 days)
$crashes = Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-WER-SystemErrorReporting'; StartTime=(Get-Date).AddDays(-30)} -ErrorAction SilentlyContinue |
Where-Object { $_.Message -match "pcan" } |
Select-Object TimeCreated, Message
# Output
Write-Host "=== PCAN Driver Inventory for $env:COMPUTERNAME ===" -ForegroundColor Cyan
$Report | Format-Table -AutoSize
Write-Host "=== Installed PEAK Packages ===" -ForegroundColor Cyan
$peakInstall | Format-Table -AutoSize
Write-Host "=== PCAN-Related Kernel Crashes (30 days) ===" -ForegroundColor Cyan
if ($crashes) { $crashes | Format-List } else { Write-Host "None found." }
$vulnFound = $Report | Where-Object { $_.Status -match "VULNERABLE" }
if ($vulnFound) {
Write-Warning "Vulnerable PCAN driver(s) detected. Download the updated Device Driver Setup from https://www.peak-system.com/ and deploy during the next maintenance window."
exit 1
} else {
Write-Host "No vulnerable PCAN drivers detected (or none installed)." -ForegroundColor Green
exit 0
}
Remediation
-
Patch immediately at the next maintenance window. Download the updated PEAK-System Device Driver Setup from the official HMS Networks / PEAK-System download portal (https://www.peak-system.com/) and the vendor security advisory referenced in CISA ICSA-26-293-01. Any package newer than 5.1.2.1151 remediates all six CVEs. Verify the driver binary version post-install with the script above.
-
Inventory first. CAN interfaces hide in places asset tools miss: lab benches, vehicle diagnostic carts, supplier-provided test rigs, embedded Windows IoT panels. Sweep for
pcan*.sysacross the estate, not just managed engineering workstations. -
Restrict local access on affected hosts until patched. Exploitation requires local code execution. Enforce least privilege (remove local admin), deploy application control (WDAC/AppLocker) on CAN-connected engineering hosts, and ensure these machines are not reachable via lateral-movement paths from general user VLANs.
-
Segment OT/engineering networks. Hosts with CAN hardware should sit in dedicated segments with strict east-west firewall rules. A kernel crasher is only useful to an attacker who can reach the host — deny them the reach.
-
Harden against BYOVD abuse. Because these drivers are legitimately signed, an attacker could deliberately install the vulnerable version to gain a kernel primitive. Block legacy PCAN driver versions via a WDAC driver blocklist or Microsoft's vulnerable driver blocklist, and alert on the installation detections above.
-
Monitor crash telemetry. Baseline BSOD frequency on CAN test benches now. A spike in BugChecks referencing PCAN modules on a specific host is your earliest exploitation indicator — feed it to the SOC as a high-priority alert, not a helpdesk ticket.
-
Coordinate with vendors and integrators. If PEAK hardware arrived bundled in a third-party test system or medical device, the integrator owns the driver update lifecycle. Open tickets referencing the six CVEs explicitly and demand patched packages in writing.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.