---
id: CVE-2026-111458
title: ssldump Heap Buffer Overflow in FAN/1 X.509 Fingerprint Formatting
summary: >-
  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:…
severity: medium
cvss: 6.8
cvssVector: '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'
cvssSource: cna
cwe:
  - CWE-122
  - CWE-787
vendor: adulau
product: ssldump
affected:
  - ssldump <= 1.9.0
published: '2026-10-16'
updated: '2026-10-16'
sourceUpdated: '2026-10-16T05:26:55.129Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-111458'
references:
  - url: >-
      https://github.com/adulau/ssldump/commit/8ad55683cc0186600c085d33be5a5b627db78467
    label: Security patch
tags:
  - cve.org
ingestedAt: '2026-10-16T06:00:00.397Z'
---

## Overview

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.

## Affected

- `ssldump <= 1.9.0`

## Remediation

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.
