Description
libdwarf through 2.3.3 contains a heap out-of-bounds read vulnerability in dwarf_debug_addr_table() that omits the table starting offset when validating .debug_addr unit length. Attackers can supply a crafted object file with a non-zero offset table, causing dwarf_debug_addr_by_index() to read past the heap buffer, disclosing adjacent heap bytes or crashing consumers.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| davea42 | libdwarf | ≤ 2.3.3 | — |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | dwarfutils | No fix yet | — |
| Debian 13 | dwarfutils | No fix yet | — |
| Debian 12 | dwarfutils | No fix yet | — |
Azure Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Azure Linux 3 | libdwarf | No fix yet | — |
References
- GitHub Issue #336 issue-tracking
- https://github.com/davea42/libdwarf-code product
- https://github.com/davea42/libdwarf-code/commit/71f04013ddc2a3c88b9e25a4162ee2824741b593 patch
- https://github.com/davea42/libdwarf-code/blob/v2.3.3/src/lib/libdwarf/dwarf_debugaddr.c#L175-L216 technical-description
- https://hackmd.io/@haindpwn/libdwarf-debug-addr-table-section-offset-oob-read third-party-advisory
- VulnCheck Advisory: libdwarf through 2.3.3 Heap Out-of-Bounds Read via dwarf_debug_addr_table third-party-advisory