CVE-2020-5953 Overview
CVE-2020-5953 is a privilege escalation vulnerability in the System Management Interrupt (SWSMI) handler of InsydeH2O UEFI Firmware. The vulnerability exists because the SWSMI handler dereferences a gRT (EFI_RUNTIME_SERVICES) pointer to call a GetVariable service that is located outside of System Management RAM (SMRAM). This flaw enables an attacker with local access and elevated privileges to achieve code execution in System Management Mode (SMM), effectively escalating privileges from ring 0 (kernel level) to ring -2 (the highest privilege level in x86 architecture).
Critical Impact
Successful exploitation allows attackers to execute arbitrary code at the SMM privilege level (ring -2), bypassing virtually all operating system security controls and potentially enabling persistent firmware-level implants that survive OS reinstallation.
Affected Products
- Insyde InsydeH2O (versions 5.12.09.0074, 5.23.04.0045, 5.23.45.0023, 5.33.15.0034, 5.34.03.0029, 5.42.03.0010)
- Siemens RUGGEDCOM APE1808
- Siemens SIMATIC Field PG M5 and M6
- Siemens SIMATIC IPC127E, IPC227G, IPC277G, IPC327G, IPC377G
- Siemens SIMATIC IPC427E, IPC477E, IPC477E Pro
- Siemens SIMATIC IPC627E, IPC647E, IPC677E, IPC847E
- Siemens SIMATIC ITP1000
Discovery Timeline
- 2022-02-03 - CVE-2020-5953 published to NVD
- 2025-11-04 - Last updated in NVD database
Technical Details for CVE-2020-5953
Vulnerability Analysis
This UEFI firmware vulnerability affects the System Management Mode (SMM) security boundary, which is one of the most privileged execution environments on x86 systems. SMM operates at ring -2, below the operating system kernel (ring 0), hypervisors (ring -1), and all user-space applications. The vulnerability arises from improper handling of memory references within the SWSMI handler code.
The core issue involves the SWSMI handler dereferencing the gRT pointer—which points to the EFI Runtime Services table—to invoke the GetVariable service. However, the gRT pointer references memory located outside the protected SMRAM region. Since SMRAM is hardware-protected from access by non-SMM code, referencing external memory from within SMM creates a security vulnerability where an attacker controlling that external memory can influence SMM execution.
This class of vulnerability is particularly dangerous because SMM has unrestricted access to all system memory and hardware, can bypass Secure Boot protections, and executes transparently to the operating system. Malicious code running in SMM can persist across OS reinstalls and remain undetected by traditional security software.
Root Cause
The root cause stems from a violation of SMM security best practices. The SWSMI handler fails to validate that pointers used within SMM execution context reference memory within the protected SMRAM boundary. By calling GetVariable through a gRT pointer that resides outside SMRAM, the handler creates a confused deputy scenario where external code can manipulate the service pointer to redirect execution to attacker-controlled code.
This represents a fundamental design flaw in the SMM handler implementation—trusted SMM code is relying on data structures that can be modified by less privileged code running at ring 0.
Attack Vector
The attack requires local access to the system with high privileges (typically kernel-level or administrator access). An attacker must first achieve ring 0 execution through another vulnerability or legitimate access. From there, the attacker can manipulate the gRT pointer or the associated GetVariable function pointer in external memory to point to malicious shellcode. When the vulnerable SWSMI handler is triggered, it dereferences this manipulated pointer and executes the attacker's code within the SMM context.
The attack flow involves:
- Gaining kernel-level (ring 0) access on the target system
- Locating the gRT pointer in memory outside SMRAM
- Modifying the GetVariable function pointer to reference attacker-controlled code
- Triggering the vulnerable SWSMI handler via a software interrupt
- Achieving code execution in SMM (ring -2)
Detection Methods for CVE-2020-5953
Indicators of Compromise
- Unexpected modifications to UEFI firmware regions or SPI flash contents
- Anomalous System Management Interrupt activity patterns detected through hardware performance counters
- Kernel-mode drivers attempting to read or write to EFI Runtime Services memory regions
- Unauthorized firmware update attempts or flash tool execution
Detection Strategies
- Deploy firmware integrity monitoring solutions that can detect unauthorized changes to UEFI firmware
- Monitor for suspicious kernel-mode driver loading that may indicate privilege escalation attempts
- Implement hardware-based attestation using TPM to verify firmware integrity at boot time
- Enable Secure Boot and monitor for attempts to disable or bypass it
Monitoring Recommendations
- Configure endpoint detection solutions to alert on suspicious SMI-related activity
- Establish baselines for legitimate firmware update processes and alert on deviations
- Monitor for tools commonly associated with firmware attacks such as Chipsec, UEFITool, or custom SMM exploit frameworks
- Enable boot-time integrity logging where supported by hardware
How to Mitigate CVE-2020-5953
Immediate Actions Required
- Inventory all systems using InsydeH2O UEFI firmware and affected Siemens products
- Apply firmware updates from device manufacturers that incorporate the fix for CVE-2020-5953
- Restrict physical and administrative access to affected systems until patches can be applied
- Enable Secure Boot and configure UEFI write protections where available
Patch Information
Insyde has released firmware updates addressing this vulnerability across affected InsydeH2O versions. Siemens has published security advisory SSA-306654 with specific remediation guidance for their industrial products. Organizations should obtain patched firmware from their system OEM, as UEFI firmware is typically distributed through the hardware vendor rather than directly from Insyde. Additional vendor guidance is available through CERT Vulnerability ID #796611 and the NetApp Security Advisory NTAP-20220222-0005.
Workarounds
- Implement strict access controls to prevent unauthorized kernel-mode code execution on affected systems
- Deploy hardware-based security features such as Intel Boot Guard where available to establish a hardware root of trust
- Use endpoint protection solutions capable of monitoring firmware-level activity
- Isolate affected industrial control systems on segmented networks with strict ingress/egress controls
# Example: Check current UEFI firmware version on Linux systems
dmidecode -t bios | grep -E "Vendor|Version|Release"
# Verify Secure Boot status
mokutil --sb-state
# Check for InsydeH2O BIOS presence
dmidecode -s bios-vendor | grep -i insyde
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

