☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N 🐛 CWE-126
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-52878

CVE-2024-52878 Security Advisory in Insyde
📅 PUBLISHED: 2025-05-15 00:00 UTC 🔄 UPDATED: 2026-08-21 19:32 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.29%
👁️
0.29% probability
7.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1204.002
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: < 05.29.50 (kernel 5.2), < 05.38.50 (kernel 5.3), < 05.46.50 (kernel 5.4), < 05.54.50 (kernel 5.5), < 05.61.50 (kernel 5.6), < 05.70.50 (kernel 5.7)
CVSS VECTOR BREAKDOWN 0.0
AV: L Attack Vector Local
AC: L Attack Complexity Low
PR: H Privileges Required High
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-52878 is a buffer over-read vulnerability in the InsydeH2O UEFI firmware kernel, specifically within the VariableRuntimeDxe driver. The flaw resides in the VariableServicesSetVariable() function, which is callable from both the UEFI runtime services (gRT->SetVariable()) and SMM (System Management Mode) via SmmSetSensitiveVariable() or SmmInternalSetVariable(). The function uses StrSize(), StrLen(), and StrCmp() on variable name strings without proper bounds checking, leading to a potential buffer over-read. This can allow an attacker with local access or the ability to execute code in the UEFI environment to read sensitive memory contents, potentially leaking secrets or aiding in further exploitation. The vulnerability affects multiple kernel versions (5.2 through 5.7) and requires a firmware update to patch.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a firmware-level issue in InsydeH2O, a UEFI BIOS implementation used by various hardware vendors. The supply chain risk is significant because the vulnerable firmware is embedded in devices at manufacturing time, and end-users must rely on their device manufacturer (OEM) to provide and apply the patched firmware update.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, which is likely a placeholder or unassigned. Based on the vulnerability characteristics, a reasonable CVSS v3.1 vector would be:

  • Attack Vector (AV): Local (L) - Requires local access to the system.
  • Attack Complexity (AC): Low (L) - No special conditions beyond being able to call the vulnerable function.
  • Privileges Required (PR): High (H) - Requires privileged access (e.g., kernel-mode or SMM code execution) to trigger the vulnerable code path.
  • User Interaction (UI): None (N) - No user interaction needed beyond initial compromise.
  • Scope (S): Unchanged (U) - The vulnerability does not cross a trust boundary.
  • Confidentiality (C): High (H) - Can lead to reading sensitive memory.
  • Integrity (I): None (N) - No direct write capability.
  • Availability (A): None (N) - No direct denial of service.

Estimated CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N Estimated Base Score: 4.4 (Medium)

Threat Level: Medium. The vulnerability requires high privileges to exploit, but if achieved, it can leak sensitive data from firmware memory, including cryptographic keys or other secrets.

Deep Dive & Mechanics

The vulnerability is a classic buffer over-read in the UEFI firmware's variable services. The VariableServicesSetVariable() function is responsible for setting UEFI variables. It receives a variable name as a Unicode string. The function uses:

  • StrSize() to determine the size of the variable name in bytes.
  • StrLen() to get the length in characters.
  • StrCmp() to compare variable names.

The issue is that these functions assume the input string is null-terminated and within a valid buffer. If an attacker can provide a malformed variable name (e.g., a string that is not properly null-terminated or has a length that exceeds the actual buffer), the functions will read beyond the intended memory region, causing a buffer over-read. This can leak adjacent memory contents.

The vulnerable code path is reachable from:

  1. UEFI Runtime Services: gRT->SetVariable() can be called by an OS kernel driver or UEFI application.
  2. SMM (System Management Mode): SmmSetSensitiveVariable() or SmmInternalSetVariable() can be called from SMM code, which runs at the highest privilege level.

An attacker who has already achieved code execution in the UEFI environment (e.g., via a bootkit or compromised driver) can exploit this to read sensitive data from firmware memory, such as Secure Boot keys, TPM secrets, or other configuration data.

Vulnerable vs. Patched Code

The vulnerable code is in the VariableServicesSetVariable() function. The patched code likely adds bounds checking before calling StrSize(), StrLen(), and StrCmp().

Vulnerable Code (Conceptual):

EFI_STATUS
VariableServicesSetVariable (
  IN CHAR16    *VariableName,
  IN EFI_GUID  *VendorGuid,
  IN UINT32    Attributes,
  IN UINTN     DataSize,
  IN VOID      *Data
  )
{
  UINTN  NameSize;
  UINTN  NameLen;

  // No bounds check on VariableName
  NameSize = StrSize (VariableName);  // Potential over-read
  NameLen = StrLen (VariableName);    // Potential over-read

  if (StrCmp (VariableName, L"SomeName") == 0) { // Potential over-read
    // ...
  }
  // ...
}

Patched Code (Conceptual):

EFI_STATUS
VariableServicesSetVariable (
  IN CHAR16    *VariableName,
  IN EFI_GUID  *VendorGuid,
  IN UINT32    Attributes,
  IN UINTN     DataSize,
  IN VOID      *Data
  )
{
  UINTN  NameSize;
  UINTN  NameLen;

  // Add bounds check: ensure VariableName is within a valid buffer
  if (!IsBufferValid (VariableName, MAX_VARIABLE_NAME_SIZE)) {
    return EFI_INVALID_PARAMETER;
  }

  NameSize = StrSize (VariableName);
  NameLen = StrLen (VariableName);

  if (StrCmp (VariableName, L"SomeName") == 0) {
    // ...
  }
  // ...
}

The patch adds a validation function (e.g., IsBufferValid()) to ensure the input string pointer points to a valid, properly sized buffer before performing string operations.

Exploitation & Lab Setup

Red Team

Objective: Exploit the buffer over-read to leak sensitive firmware memory.

Prerequisites:

  • Local access to the target system.
  • Ability to execute code in the UEFI environment (e.g., via a bootkit or compromised UEFI driver).
  • Knowledge of the vulnerable firmware version.

Exploitation Steps:

  1. Identify Target: Confirm the system uses a vulnerable InsydeH2O kernel version (5.2 to 5.7).
  2. Gain UEFI Code Execution: Use a separate vulnerability or physical access to load a malicious UEFI driver or bootkit.
  3. Trigger the Vulnerability: Call gRT->SetVariable() with a crafted VariableName that is not null-terminated or has a length exceeding the buffer. For example:
    CHAR16 MaliciousName[10] = { 'T', 'e', 's', 't', 0 }; // Intentionally short buffer
    // But pass a pointer that claims a larger size
    gRT->SetVariable (MaliciousName, &gVendorGuid, 0, 0, NULL);
    
    The StrSize() and StrLen() functions will read beyond the 10-character buffer, leaking adjacent memory.
  4. Capture Leaked Data: The leaked data may appear in the return value or be observable via side effects (e.g., in the UEFI variable store). Use a debugger or memory dump to capture the over-read contents.
  5. Analyze Leaked Data: Extract secrets such as Secure Boot keys, TPM hashes, or other firmware configuration data.

Proof-of-Concept (PoC) Code:

// PoC: Trigger buffer over-read in VariableServicesSetVariable
#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>

EFI_STATUS
EFIAPI
UefiMain (
  IN EFI_HANDLE        ImageHandle,
  IN EFI_SYSTEM_TABLE  *SystemTable
  )
{
  EFI_STATUS Status;
  CHAR16     VariableName[4] = { 'A', 'B', 'C', 0 }; // Small buffer
  EFI_GUID   VendorGuid = { 0x12345678, 0x1234, 0x1234, { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0 } };

  // Call SetVariable with a small buffer - StrSize/StrLen will over-read
  Status = gRT->SetVariable (VariableName, &VendorGuid, 0, 0, NULL);
  if (EFI_ERROR (Status)) {
    Print (L"SetVariable failed: %r\n", Status);
  }

  return EFI_SUCCESS;
}

Blue Team

Objective: Detect and prevent exploitation of the buffer over-read.

Detection:

  • Monitor for unusual calls to gRT->SetVariable() from non-standard UEFI drivers or bootkits.
  • Use firmware integrity monitoring tools (e.g., CHIPSEC) to detect unauthorized UEFI code execution.
  • Look for memory access patterns that indicate over-reads (e.g., repeated reads from adjacent memory regions).

Prevention:

  • Apply the firmware patch from the OEM as soon as possible.
  • Enable Secure Boot and TPM to prevent unauthorized UEFI code execution.
  • Use hardware-based attestation (e.g., Intel Boot Guard) to verify firmware integrity.
  • Restrict physical access to systems to prevent bootkit installation.

Indicators of Compromise (IOCs)

  • File Hashes: No specific file hashes available.
  • Network Indicators: None (local vulnerability).
  • Registry/Configuration: Unauthorized UEFI variables or modified Secure Boot databases.
  • Memory Artifacts: Presence of unexpected UEFI drivers or bootkits in firmware memory.
  • Behavioral: Unusual calls to SetVariable with malformed variable names.

Detection Engineering

YARA Rule

rule CVE_2024_52878_Buffer_Overread {
   meta:
      description = "Detects potential exploitation of CVE-2024-52878 in InsydeH2O firmware"
      author = "Valters IT"
      date = "2025-04-10"
      reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-52878"
   strings:
      $s1 = "VariableServicesSetVariable" ascii wide nocase
      $s2 = "StrSize" ascii wide nocase
      $s3 = "StrLen" ascii wide nocase
      $s4 = "StrCmp" ascii wide nocase
   condition:
      all of ($s*) and #s1 > 0
}

Sigma Rule

title: Potential Exploitation of CVE-2024-52878 - Buffer Over-read in InsydeH2O
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects calls to SetVariable with malformed variable names that may trigger a buffer over-read.
author: Valters IT
date: 2025-04-10
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2024-52878
logsource:
    product: windows
    service: uefi
detection:
    selection:
        EventID: 1  # Example: UEFI variable modification event
        VariableName|contains: 
            - 'A'  # Placeholder for malformed name patterns
    condition: selection
falsepositives:
    - Legitimate firmware updates
level: high

Suricata Rule

alert ip any any -> any any (msg:"CVE-2024-52878 - Potential Buffer Over-read in InsydeH2O"; content:"|00 00|"; depth:2; offset:0; classtype:attempted-recon; sid:1000001; rev:1;)

Note: This is a placeholder rule. Real detection would require UEFI-specific protocol analysis.

Remediation & Mitigation

Immediate Actions:

  1. Apply Firmware Update: Contact the device OEM and apply the patched firmware version:
    • Kernel 5.2: Update to version 05.29.50 or later.
    • Kernel 5.3: Update to version 05.38.50 or later.
    • Kernel 5.4: Update to version 05.46.50 or later.
    • Kernel 5.5: Update to version 05.54.50 or later.
    • Kernel 5.6: Update to version 05.61.50 or later.
    • Kernel 5.7: Update to version 05.70.50 or later.
  2. Enable Secure Boot: Ensure Secure Boot is enabled to prevent unauthorized UEFI code execution.
  3. Restrict Physical Access: Limit physical access to systems to prevent bootkit installation.

Long-Term Mitigations:

  • Implement firmware integrity monitoring (e.g., using CHIPSEC or Intel Boot Guard).
  • Use hardware-backed attestation (TPM 2.0) to verify firmware integrity at boot.
  • Regularly audit UEFI variables for unauthorized modifications.
  • Educate users on the risks of physical attacks and bootkits.

Valters IT Signature:
This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.com.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

InsydeH2O
Insyde firmware
UEFI firmware
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-52878/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.