SecurityWeek recently reported that critical vulnerabilities have been discovered in Belgium's electronic identity (eID) software — the middleware and viewer applications installed on the machines of roughly 2 million Belgian citizens, government employees, and businesses that rely on the national eID card for authentication, digital signatures, and access to government services.
This is not a niche problem. National eID middleware sits at an unusually privileged intersection: it parses attacker-controllable data from physical smartcards, it runs on endpoints that authenticate to tax portals, health systems, and notarial services, and it is installed by default on a huge, largely unmanaged user base. A critical flaw in this stack is a supply-chain-scale concern for any organization operating in Belgium or interoperating with Belgian identity infrastructure.
From a defender's perspective, the immediate priorities are: confirm whether eID middleware/viewer components are present in your estate, force updates to the patched release, and hunt for exploitation indicators — particularly the eID software spawning unexpected child processes or crashing during document/card parsing. This post breaks down the threat, the attack surface, and concrete detection and remediation guidance.
Technical Analysis
What Is Affected
The flaws affect the Belgian eID software stack distributed by Fedict (the Belgian Federal Public Service for Policy and Support / BOSA), which includes:
- The eID middleware — the PKCS#11 / minidriver components and background services that read the Belgian eID card, handle PIN operations, and expose identity certificates to browsers and applications.
- The eID Viewer application — the desktop utility citizens use to read card contents, view identity data, verify signatures, and validate documents.
These components are installed on Windows, macOS, and Linux systems. The exposure spans home users, municipal and federal government workstations, hospitals, law firms, notaries, and any enterprise that integrated eID-based authentication into its workflows.
How the Vulnerability Class Works (Defender's View)
While the public reporting focuses on the severity and the population at risk rather than full exploitation detail, the vulnerability class described is consistent with what security research against national eID stacks has historically uncovered: unsafe parsing of card-presented or document-embedded data.
The attack surface works like this:
- Attacker-controllable input reaches a privileged parser. The eID viewer and middleware parse binary structures from the smartcard and from signed identity documents. A maliciously crafted card, a tampered document, or manipulated data presented to the viewer can trigger memory corruption or unsafe deserialization in the parsing path.
- Code execution in the user's context. Successful exploitation of critical parsing flaws in this class typically yields arbitrary code execution under the logged-in user's session — the same session used to authenticate to government portals and sign legally binding documents.
- The trust model is the real casualty. Beyond a simple foothold, compromise of the eID stack undermines the integrity of digital signatures and authentication events that Belgian law treats as legally equivalent to handwritten signatures. Post-exploitation, an attacker controlling the middleware session can potentially interact with the inserted card — signing or authenticating as the victim while the card is present and the PIN is cached.
Exploitation Requirements and Status
Exploitation of this vulnerability class generally requires one of the following:
- Convincing a victim to open a crafted document in the eID Viewer (social engineering), or
- Presenting a malicious/tampered smartcard or card-emulation device to a reader on the target machine, or
- Supplying crafted data through an application that invokes the middleware's parsing functions.
As of publication, the flaws have been responsibly disclosed and a fixed release of the eID software has been made available through official Belgian government channels. There is no confirmed widespread in-the-wild exploitation reported at this time — but given the installed base of ~2 million systems and the public disclosure, defenders should assume working exploits will circulate. Treat this as patch-and-hunt, not patch-and-relax.
Detection & Response
The highest-fidelity detection strategy for this threat class is behavioral: the eID Viewer and middleware should never spawn child processes, write executables, or establish unusual outbound connections. Any such activity is a strong exploitation indicator.
Sigma Rules
---
title: Belgian eID Software Spawning Child Process
title: Belgian eID Software Spawning Child Process
id: 3b7f2a91-4c6d-4e58-9a21-7f0c1d5e8b34
status: experimental
description: Detects the Belgian eID Viewer or middleware processes spawning child processes, which may indicate exploitation of parsing vulnerabilities in the eID software stack.
references:
- https://www.securityweek.com/critical-flaws-discovered-in-belgian-eid-software-used-by-2-million-people/
- https://attack.mitre.org/techniques/T1203/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1203
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\eidviewer.exe'
- '\beidgui.exe'
- '\beidviewer.exe'
- '\beidmdrv.dll'
filter_legit:
Image|endswith:
- '\msiexec.exe'
condition: selection_parent and not filter_legit
falsepositives:
- Rare installer or updater child processes during legitimate software updates
level: high
---
title: eID Viewer Followed by Script or Shell Execution
title: eID Viewer Followed by Script or Shell Execution
id: 8c1d4e62-7a3b-49f0-b56c-2e9a1f6d7c05
status: experimental
description: Detects command shells, script interpreters, or LOLBins launched as descendants of Belgian eID software, consistent with post-exploitation after memory corruption in the eID parsing path.
references:
- https://www.securityweek.com/critical-flaws-discovered-in-belgian-eid-software-used-by-2-million-people/
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1059
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\eidviewer.exe'
- '\beidgui.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
condition: selection_parent and selection_child
falsepositives:
- None expected in normal eID software operation
level: critical
---
title: eID Software Writing Executable Content to User-Writable Paths
title: eID Software Writing Executable Content to User-Writable Paths
id: 5f2e9b48-1d7c-4a36-8e91-4b0d6c3a9f27
status: experimental
description: Detects Belgian eID viewer or middleware processes dropping executable files to user-writable directories, a common payload-delivery behavior after successful exploitation of document parsing flaws.
references:
- https://www.securityweek.com/critical-flaws-discovered-in-belgian-eid-software-used-by-2-million-people/
- https://attack.mitre.org/techniques/T1203/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1203
logsource:
category: file_event
product: windows
detection:
selection_image:
Image|endswith:
- '\eidviewer.exe'
- '\beidgui.exe'
selection_target:
TargetFilename|contains:
- '\AppData\Local\Temp\'
- '\AppData\Roaming\'
- '\Users\Public\'
TargetFilename|endswith:
- '.exe'
- '.dll'
- '.bat'
- '.ps1'
- '.js'
condition: selection_image and selection_target
falsepositives:
- eID software self-update mechanisms writing to temporary locations (verify against signed update packages)
level: high
These rules are deliberately narrow. The eID Viewer and middleware have a well-defined behavioral profile — they read cards, render identity data, and exit. Child process creation is anomalous almost by definition, which is exactly the kind of high-signal rule a SOC should want.
KQL Hunt (Microsoft Sentinel / Defender)
The following query hunts across endpoints for any process execution chain rooted in Belgian eID software, joined with network activity to catch post-exploitation beacons:
// Hunt: Belgian eID software spawning unexpected child processes or making network connections
let eidProcesses = dynamic(["eidviewer.exe", "beidgui.exe", "beidviewer.exe"]);
let suspiciousChildren = DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName has_any (eidProcesses)
| where FileName !in~ ("msiexec.exe", "conhost.exe")
| project ChildTime=TimeGenerated, DeviceName, DeviceId, ChildProcess=FileName,
ChildCommand=ProcessCommandLine, ChildPath=FolderPath, AccountName, InitiatingProcessFileName;
let eidNetwork = DeviceNetworkEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName has_any (eidProcesses)
| where RemoteIP !startswith "10." and RemoteIP !startswith "192.168." and RemoteIP !startswith "172.16."
| project NetTime=TimeGenerated, DeviceName, DeviceId, RemoteUrl, RemoteIP, RemotePort, InitiatingProcessFileName;
suspiciousChildren
| join kind=leftouter eidNetwork on DeviceId, $left.ChildTime >= $right.NetTime
| project ChildTime, DeviceName, ChildProcess, ChildCommand, AccountName, RemoteUrl, RemoteIP, RemotePort
| order by ChildTime desc
Tune the msiexec.exe/conhost.exe exclusions to match the observed update behavior of your deployed eID version. If your estate collects Sysmon/CEF from Linux hosts (the eID middleware also ships for Debian/Ubuntu and Fedora), adapt via the Syslog or CommonSecurityLog tables keyed on process name beidgui or eid-viewer.
Velociraptor VQL
For DFIR teams running Velociraptor, this artifact sweeps for live exploitation indicators — suspicious descendants of eID processes and recently dropped executables near eID install paths:
-- Hunt for exploitation indicators around Belgian eID software
-- Suspicious child processes of the eID viewer/middleware
SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Ppid IN (
SELECT Pid FROM pslist()
WHERE Name =~ '(?i)eidviewer|beidgui|beid'
)
AND Name =~ '(?i)cmd|powershell|pwsh|wscript|cscript|mshta|rundll32|regsvr32'
-- Secondary: executables recently written to user-writable paths on hosts with eID software installed
SELECT FullPath, Size, Mtime, Ctime
FROM glob(glob='C:/Users/*/AppData/{Local/Temp,Roaming}/**/*.exe')
WHERE Mtime > (now() - 1209600)
ORDER BY Mtime DESC
LIMIT 500
Scope the second artifact to hosts confirmed to run the eID stack (check for C:\Program Files (x86)\Belgium Identity Card or equivalent) to keep the result set manageable.
Remediation & Verification Script
The following PowerShell script inventories the installed Belgian eID middleware version, flags unpatched installations, and optionally triggers a remediation workflow. Adjust $MinimumSafeVersion to the fixed release published on the official Belgian eID portal at the time you deploy it:
# Belgian eID Middleware Inventory & Remediation Verification
# Run elevated. Audit mode by default; use -Remediate to uninstall outdated versions.
param(
[switch]$Remediate
)
# Set this to the patched release from https://eid.belgium.be (verify current version at deploy time)
$MinimumSafeVersion = [version]"5.1.0"
$results = @()
$uninstallKeys = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
$eidApps = Get-ItemProperty $uninstallKeys -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -match 'Belgium|eID|Beid' }
if (-not $eidApps) {
Write-Host "[+] No Belgian eID software detected on this host." -ForegroundColor Green
exit 0
}
foreach ($app in $eidApps) {
$installed = $null
[void][version]::TryParse($app.DisplayVersion, [ref]$installed)
$vulnerable = ($installed -eq $null) -or ($installed -lt $MinimumSafeVersion)
$status = if ($vulnerable) { "VULNERABLE / OUTDATED" } else { "OK" }
Write-Host ("[*] {0} v{1} -> {2}" -f $app.DisplayName, $app.DisplayVersion, $status) -ForegroundColor ($vulnerable ? 'Red' : 'Green')
$results += [pscustomobject]@{
Product = $app.DisplayName
Version = $app.DisplayVersion
Vulnerable = $vulnerable
UninstallString = $app.UninstallString
}
if ($vulnerable -and $Remediate) {
Write-Host "[!] Removing outdated eID software. Install the patched release from https://eid.belgium.be afterward." -ForegroundColor Yellow
if ($app.UninstallString -match 'msiexec') {
$guid = ($app.PSChildName)
Start-Process msiexec.exe -ArgumentList "/x $guid /qn /norestart" -Wait
}
}
}
# Check for suspicious recent child-process artifacts left in eID install directory
$eidPath = "${env:ProgramFiles(x86)}\Belgium Identity Card"
if (Test-Path $eidPath) {
$recent = Get-ChildItem $eidPath -Recurse -Include *.exe,*.dll -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) } |
Where-Object { -not (Get-AuthenticodeSignature $_.FullName).Status -eq 'Valid' }
if ($recent) {
Write-Host "[ALERT] Unsigned/recently modified binaries in eID directory — investigate for tampering:" -ForegroundColor Red
$recent | ForEach-Object { Write-Host " $($_.FullName)" }
}
}
$results | Export-Csv -Path ".\eid_inventory_$(hostname).csv" -NoTypeInformation
For Linux deployments (Belgian government and enterprise Linux workstations commonly run the .deb/.rpm middleware packages):
#!/bin/bash
# Belgian eID middleware version check for Debian/Ubuntu and RHEL/Fedora
# Compare installed version against the patched release from https://eid.belgium.be
MIN_SAFE="5.1.0"
if command -v dpkg >/dev/null 2>&1; then
INSTALLED=$(dpkg-query -W -f='${Version}' eid-mw 2>/dev/null)
elif command -v rpm >/dev/null 2>&1; then
INSTALLED=$(rpm -q --queryformat '%{VERSION}' eid-mw 2>/dev/null)
else
echo "[+] No supported package manager found"; exit 0
fi
if [ -z "$INSTALLED" ]; then
echo "[+] eID middleware not installed"; exit 0
fi
echo "[*] Installed eID middleware version: $INSTALLED"
if [ "$(printf '%s\n%s\n' "$MIN_SAFE" "$INSTALLED" | sort -V | head -n1)" != "$MIN_SAFE" ]; then
echo "[ALERT] Outdated eID middleware — update immediately via your package manager or https://eid.belgium.be"
exit 1
else
echo "[+] Version OK"
fi
# Flag unexpected child processes of running eID viewer (live exploitation indicator)
EID_PID=$(pgrep -f 'beidgui|eid-viewer' | head -n1)
if [ -n "$EID_PID" ]; then
CHILDREN=$(ps --ppid "$EID_PID" -o comm= 2>/dev/null)
if [ -n "$CHILDREN" ]; then
echo "[ALERT] eID viewer has child processes — possible exploitation: $CHILDREN"
fi
fi
Remediation
-
Update the eID software immediately. Download the latest patched middleware and viewer exclusively from the official Belgian government portal at https://eid.belgium.be. Do not source installers from third-party mirrors — an identity stack is a prime candidate for trojanized-repackage attacks during exactly this kind of news cycle.
-
Inventory first. Many enterprises don't know eID middleware is installed — it arrives via OEM images, departmental one-offs, and home-working setups that later VPN into corporate. Run the inventory script above across the estate, and query your EDR/software inventory for
beid,eidviewer, andBelgium Identity Cardartifacts. -
Prioritize high-trust workstations. Notaries, municipal service desks, HR/payroll systems that sign with eID, and any host with a permanently attached card reader should be patched within 24–72 hours, ahead of the general fleet.
-
Hunt before you trust. Patching closes the hole going forward; it does nothing for systems already compromised. Deploy the Sigma rules and run the KQL/VQL hunts across at least the past 14–30 days before declaring the issue closed.
-
Revisit the trust boundary. Consider application control policies (WDAC/AppLocker) that restrict what eID software may spawn, and segment card-reader workstations from sensitive internal resources where operationally feasible. On Linux, SELinux/AppArmor confinement of the middleware is worth the effort on high-value hosts.
-
User awareness. Warn users against opening unsolicited identity documents, signature-verification requests, or "updated eID software" emails. The disclosure window is peak season for phishing campaigns impersonating Fedict/BOSA.
-
Monitor official channels. Track advisories from the Centre for Cybersecurity Belgium (CCB — https://ccb.belgium.be) and the official eID portal for follow-up guidance, additional patched builds, or confirmed exploitation reporting.
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.