CVE-2026-111458 PUBLISHED

ssldump Heap Buffer Overflow in FAN/1 X.509 Fingerprint Formatting

Assigner: CIRCL
Reserved: 16.10.2026 Published: 16.10.2026 Updated: 16.10.2026

The fanx_fingerprint function in ssl/sslxprint.c of ssldump allocates a heap buffer for formatting FAN/1 X.509 certificate fingerprints. The allocation size is computed as strlen(b64) + strlen(hex) + 31, but the format string "fan1:x509:server:passive:%s:sha256:%s" contains 33 fixed characters in addition to the two variable-length fields and a null terminator, requiring strlen(b64) + strlen(hex) + 34 bytes. This miscalculation results in a 3-byte heap-based buffer overflow on every invocation of the function with valid inputs. The overflow occurs because sprintf writes the full formatted string into the undersized heap buffer without bounds checking. An attacker who can supply a crafted pcap file containing a TLS X.509 certificate to a user running ssldump with FAN/1 fingerprinting enabled (for example with the -j -N options) can trigger the overflow. The resulting heap corruption may lead to denial of service through a crash or, in a worst-case scenario, arbitrary code execution in the context of the user running ssldump. The vulnerability is deterministic and requires no special privileges beyond the ability to provide input to the tool.

Metrics

CVSS Vector: CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS Score: 6.8

Product Status

Vendor adulau
Product ssldump
Versions Default: unaffected
  • affected from 0 to 1.9.0 (incl.)

Solutions

The fix replaces the hardcoded size calculation and unbounded sprintf with a two-step snprintf approach: first computing the exact required output length via snprintf(NULL, 0, format, b64, hex), then allocating precisely that length plus one byte for the null terminator via calloc, and finally writing the formatted string with a bounded snprintf. This eliminates the undersized allocation and guarantees the write never exceeds the allocated buffer.

Credits

  • Alexandre Dulaunoy remediation developer
  • https://github.com/TristanInSec finder

References

Problem Types

  • CWE-122 Heap-based Buffer Overflow CWE
  • CWE-787 Out-of-bounds Write CWE

Impacts

  • CAPEC-109 Buffer Overflow