CVE-2026-13732

Summary

A flaw was found in GDB's STABS debug format parser. The read_member_functions() function in gdb/stabsread.c contains a linked list removal bug in the code that separates destructor and non-destructor member functions of C++ classes. The bug causes the destructor entries to remain in the main function list while the list length counter is decremented, resulting in an out-of-bounds write when the function list is copied to its final allocated array. An attacker can craft an ELF binary with malicious .stab and .stabstr sections that triggers this out-of-bounds write when a user opens the file in GDB and performs any symbol-inspection operation such as setting a breakpoint. The inferior process does not need to be executed. Under controlled conditions, this was demonstrated to achieve execution of arbitrary commands within the GDB process.

Affected Software

VendorProductVersion RangeStatus

Weaknesses

  • CWE-787: Out-of-bounds Write

Workarounds

The following practices would help for avoiding exposure and mitigate this flaw:

  • Do not open untrusted or unknown ELF binaries in GDB without first stripping debug sections. Use objcopy --remove-section=.stab --remove-section=.stabstr <binary> before debugging.
  • Use readelf -S <binary> | grep stab to check for the presence of STABS sections before opening a binary in GDB. Legitimate modern binaries use DWARF, not STABS.
  • Consider using LLDB or other debuggers that do not support STABS for analysis of untrusted binaries.
  • For automated environments (CI, test farms) that invoke GDB on potentially untrusted binaries, run GDB in a sandboxed or containerized environment with restricted filesystem access.
  • GDB 17+ deprecates STABS support but still parses it. GDB 18 (expected late 2026/2027) will remove STABS support entirely.
  • GCC removed STABS emitting in GCC 13 (2023), so legitimately compiled binaries from recent GCC versions will not contain STABS data.

References