CVE-2023-40238 Overview
CVE-2023-40238 is a UEFI firmware vulnerability, part of the broader "LogoFAIL" vulnerability family, affecting the BmpDecoderDxe module in Insyde InsydeH2O UEFI firmware. This vulnerability allows attackers to exploit improper image parsing of crafted BMP logo files during the DXE (Driver Execution Environment) phase of UEFI boot, potentially leading to arbitrary memory writes and system compromise before the operating system loads.
The vulnerability stems from an integer signedness error when processing PixelHeight and PixelWidth values during RLE4/RLE8 compression handling in BMP image decoding. A malicious BMP image stored in the EFI System Partition (ESP) or firmware flash can trigger memory corruption, enabling persistent firmware-level attacks that survive OS reinstallation.
Critical Impact
This pre-boot vulnerability enables attackers to execute code at the UEFI level, bypassing Secure Boot protections and establishing persistent implants that cannot be detected or removed by traditional endpoint security solutions.
Affected Products
- Insyde InsydeH2O kernel 5.2 (before 05.28.47)
- Insyde InsydeH2O kernel 5.3 (before 05.37.47)
- Insyde InsydeH2O kernel 5.4 (before 05.45.47)
- Insyde InsydeH2O kernel 5.5 (before 05.53.47)
- Insyde InsydeH2O kernel 5.6 (before 05.60.47)
- Fujitsu Esprimo series (D556/2, D6011, D6012, D7010, D7011, D7012, D7013, D738, D757, D9010, D9011, D9012, D9013, D957, D958, and more)
- Fujitsu Lifebook series (U939, U9310, U9311, U9312, U9313x, U9413, U7310, U7311, U7312, U7313, and more)
- Fujitsu Celsius workstations (C780, J5010, J550/2, J580, M7010, W5010, W5011, W5012, W570, W580, H5511, H7510, H7613, H780, H980)
- Fujitsu Primergy servers (RX, TX, CX, BX, GX series)
- Fujitsu Primequest servers (3800B, 3800B2, 3800E, 3800E2, 4400E)
- Fujitsu Stylistic tablets (Q509, Q5010, Q739, Q7310, Q7311, Q7312)
Discovery Timeline
- December 7, 2023 - CVE-2023-40238 published to NVD
- December 31, 2025 - Last updated in NVD database
Technical Details for CVE-2023-40238
Vulnerability Analysis
The LogoFAIL vulnerability in BmpDecoderDxe exploits a fundamental flaw in how UEFI firmware parses BMP (bitmap) images used for boot logos. During system initialization, the DXE phase processes boot logo images before security controls like Secure Boot verification are fully active.
The BmpDecoderDxe driver improperly handles signed integer values when reading BMP header fields, specifically PixelHeight and PixelWidth. When processing RLE4 or RLE8 compressed BMP files, the driver fails to validate that these dimensions are positive values. An attacker can craft a malicious BMP file with negative height values, causing the decoder to calculate incorrect buffer sizes and memory offsets.
This integer signedness error results in the decoder writing decompressed pixel data to arbitrary memory locations, allowing an attacker to corrupt critical UEFI data structures or inject executable code into DXE driver memory space. Because this occurs before the operating system loads, the attack persists across reboots and OS reinstallations.
Root Cause
The root cause is an integer signedness error (CWE-312) in the BMP image parsing logic within the BmpDecoderDxe UEFI driver. The vulnerability occurs because:
- The BMP header PixelHeight field is stored as a signed 32-bit integer, where negative values indicate a top-down bitmap
- The decoder reads this field but uses it in unsigned arithmetic for buffer size calculations
- When a negative height value is interpreted as unsigned, it becomes an extremely large positive value
- RLE decompression writes data based on miscalculated offsets, resulting in out-of-bounds memory writes
- The lack of bounds checking allows controlled memory corruption at attacker-specified addresses
Attack Vector
This vulnerability requires local access to modify the boot logo image. An attacker with physical access or with sufficient privileges to write to the EFI System Partition can replace the legitimate boot logo with a crafted malicious BMP file. The attack proceeds as follows:
The attacker crafts a BMP file with manipulated PixelHeight and PixelWidth header values designed to trigger the integer signedness error. When placed in the appropriate firmware location or ESP, this malicious image is processed during the next boot cycle. The DXE driver's flawed RLE decompression writes attacker-controlled data to specific memory addresses, potentially overwriting function pointers or injecting shellcode. This enables arbitrary code execution at UEFI privilege level, which is higher than kernel ring-0.
The attack can be delivered through:
- Physical access to plant malicious boot images
- Malware with administrative privileges modifying the ESP
- Supply chain attacks embedding malicious logos in firmware updates
Detection Methods for CVE-2023-40238
Indicators of Compromise
- Unexpected modifications to BMP files in the EFI System Partition (/boot/efi or ESP volume)
- Changes to firmware boot logo configuration or NVRAM variables related to logo display
- Anomalous firmware behavior during POST or unexpected delays in the boot process
- Unauthorized modifications to UEFI firmware flash regions containing logo data
- Discrepancies between expected and actual firmware component hashes
Detection Strategies
- Deploy firmware integrity monitoring solutions to detect unauthorized changes to UEFI components and boot partition contents
- Implement file integrity monitoring on the EFI System Partition to alert on any BMP file modifications
- Use hardware-based firmware verification tools (such as Intel Boot Guard or AMD Hardware Validated Boot) to detect tampering
- Conduct periodic firmware hash verification against known-good baselines from vendor sources
- Monitor UEFI event logs for unusual DXE driver loading patterns or memory allocation anomalies
Monitoring Recommendations
- Enable UEFI Secure Boot logging and audit boot-time events through platform-specific tools
- Implement SentinelOne's firmware protection capabilities to monitor for pre-boot threats and unauthorized firmware modifications
- Regularly verify firmware versions against vendor-published security advisories from Insyde and affected OEMs
- Maintain an inventory of affected Fujitsu systems and track firmware update deployment status
How to Mitigate CVE-2023-40238
Immediate Actions Required
- Identify all systems using Insyde InsydeH2O firmware (particularly Fujitsu Esprimo, Lifebook, Celsius, Primergy, Primequest, and Stylistic products)
- Apply firmware updates from your hardware vendor that address CVE-2023-40238
- Verify Secure Boot is enabled and properly configured on all affected systems
- Restrict write access to the EFI System Partition to prevent unauthorized logo file modifications
- Implement physical security controls to prevent unauthorized access to affected systems
Patch Information
Insyde has released security updates addressing this vulnerability in the following firmware kernel versions:
- InsydeH2O kernel 5.2: Update to version 05.28.47 or later
- InsydeH2O kernel 5.3: Update to version 05.37.47 or later
- InsydeH2O kernel 5.4: Update to version 05.45.47 or later
- InsydeH2O kernel 5.5: Update to version 05.53.47 or later
- InsydeH2O kernel 5.6: Update to version 05.60.47 or later
Organizations should obtain firmware updates through their hardware vendor (Fujitsu, Lenovo, or other OEMs using InsydeH2O). Consult the Insyde Security Advisory SA-2023053 and the CERT Vulnerability Report VU#811862 for additional details. NetApp customers should refer to NetApp Security Advisory NTAP-20240105-0002.
Workarounds
- Enable and enforce UEFI Secure Boot to provide partial mitigation against unsigned firmware modifications
- Configure BIOS/UEFI password protection to prevent unauthorized firmware settings changes
- Disable custom boot logos if the firmware provides this option, forcing use of default embedded images
- Implement BitLocker with TPM and PCR validation to detect boot component changes and seal encryption keys to known-good firmware state
- Use hardware-enforced write protection for firmware regions where supported by the platform
# Verify Secure Boot status on Linux systems
mokutil --sb-state
# Check current firmware version on Linux
dmidecode -s bios-version
# List EFI System Partition contents to audit for suspicious files
ls -la /boot/efi/EFI/
# Monitor ESP for file changes (example using inotifywait)
inotifywait -m -r /boot/efi/ -e modify,create,delete
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


