← Back to Feed CACHED · 2026-09-17 10:14:49 · CACHE_KEY tenable:305204
tenable:305204 · CWE-416 · Disclosed 2026-04-07

OpenSSL 1.1.1 < 1.1.1zg Multiple Vulnerabilities

ASSESSED — NOISGATE
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A loaded gun in a locked display case — the scariest CVE here requires a config almost nobody runs

This Tenable plugin bundles four CVEs fixed in OpenSSL 1.1.1zg (April 7 2026). The headline issue is CVE-2026-28387, a use-after-free / double-free in DANE TLSA-based server authentication that can theoretically reach RCE (CVSS 8.1). The remaining three — CVE-2026-28388, CVE-2026-28389, and CVE-2026-28390 — are all NULL-pointer-dereference crashes (DoS only) in delta CRL and CMS EnvelopedData processing, rated Low by OpenSSL itself. Affected versions span all OpenSSL 1.1.1 releases prior to 1.1.1zg, as well as 3.0 < 3.0.20, 3.3 < 3.3.7, 3.4 < 3.4.5, 3.5 < 3.5.6, and 3.6 < 3.6.2.

Tenable inherits the CVSS 8.1 from CVE-2026-28387 and stamps the whole plugin HIGH, but the vendor severity overstates real-world risk significantly. CVE-2026-28387 requires the *client* application to perform DANE TLSA validation with both PKIX and DANE-TA certificate usages enabled simultaneously — a configuration so rare that RFC 7672 explicitly advises SMTP MTAs to treat PKIX usages as 'unusable'. The three DoS CVEs require the application to call CMS_decrypt() or process delta CRLs on attacker-controlled input, which limits the blast radius to S/MIME gateways or CRL-consuming PKI components. OpenSSL 1.1.1 has been EOL since September 2023; only premium-support customers and OS-vendor backports receive these fixes.

"Bundle severity is driven by a DANE TLSA use-after-free that almost nobody enables"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Identify OpenSSL 1.1.1 target acting as DANE TLSA client

The attacker must find a service that uses OpenSSL 1.1.1 < 1.1.1zg as a TLS *client* and has DANE TLSA verification enabled with both PKIX-TA/PKIX-EE and DANE-TA usages configured. This is an extraordinarily narrow filter — DANE adoption itself is low, and dual-usage configuration is even rarer.
Conditions required:
  • Target runs OpenSSL 1.1.1 < 1.1.1zg
  • Target application performs DANE TLSA validation
  • Both PKIX and DANE-TA certificate usages are enabled
Where this breaks in practice:
  • DANE TLSA adoption is minimal outside a handful of European MTAs
  • RFC 7672 recommends SMTP MTAs treat PKIX usages as unusable, so compliant implementations are not vulnerable
  • No scanner or fingerprint can remotely detect DANE TLSA client configuration
STEP 02

Publish crafted TLSA DNS records

The attacker must control DNS responses for the target domain, publishing a TLSA RRset that contains both PKIX-TA/PKIX-EE and DANE-TA record types. This requires either DNS hijacking, BGP hijack of the authoritative zone, or ownership of the target domain's DNSSEC-signed zone.
Conditions required:
  • Attacker controls DNS responses for the destination domain
  • TLSA RRset includes both PKIX and DANE-TA records
Where this breaks in practice:
  • DNSSEC validation (common in DANE-using environments) blocks spoofed records
  • Requires either domain ownership or upstream DNS compromise
Detection/coverage: DNSSEC monitoring and DNS query logging would flag anomalous TLSA record changes
STEP 03

Client connects and triggers use-after-free

When the vulnerable client connects to the attacker-controlled server and processes the crafted TLSA RRset during certificate matching, the use-after-free / double-free is triggered. This can corrupt memory, crash the process, or theoretically allow code execution in the context of the client application.
Conditions required:
  • Client initiates outbound TLS connection to attacker-controlled server
  • Client processes the mixed PKIX+DANE-TA TLSA records
Where this breaks in practice:
  • Exploitation of use-after-free for code execution requires heap grooming specific to the target's allocator and OpenSSL build
  • Crash (DoS) is far more likely than reliable RCE
  • No public PoC or weaponized exploit exists
Detection/coverage: Process crash monitoring; core dump analysis showing OpenSSL DANE code path
STEP 04

CMS/CRL DoS path (alternative, lower impact)

For CVE-2026-28388/28389/28390, the attacker sends a crafted CMS EnvelopedData message or delta CRL to an application that processes untrusted CMS or CRL data. The NULL-pointer dereference crashes the application before any cryptographic operation. Impact is limited to denial of service.
Conditions required:
  • Target application calls CMS_decrypt() on untrusted input, OR processes untrusted delta CRLs
  • Attacker can deliver crafted CMS/CRL data to the application
Where this breaks in practice:
  • Most TLS server deployments never call CMS_decrypt() — this affects S/MIME gateways, CMS-based protocols, or PKI infrastructure specifically
  • Crash is easily recoverable with process restart
Detection/coverage: Application crash logs; S/MIME gateway error monitoring
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNone observed. Not listed on CISA KEV. No campaigns reported.
Proof of ConceptNo public PoC exists for any of the four CVEs. The DANE TLSA chain is complex to reproduce.
EPSSCVE-2026-28387: 0.67% (49th percentile) — below the median exploitation probability
KEV StatusNot listed. No CISA KEV entry as of 2026-09-17.
CVSS VectorCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H (8.1) — the AC:H is doing heavy lifting; real-world complexity is even higher than CVSS captures
Affected VersionsOpenSSL 1.1.1 – 1.1.1zf, 3.0.0 – 3.0.19, 3.3.0 – 3.3.6, 3.4.0 – 3.4.4, 3.5.0 – 3.5.5, 3.6.0 – 3.6.1
Fixed Versions1.1.1zg (premium support only), 3.0.20, 3.3.7, 3.4.5, 3.5.6, 3.6.2. Distro backports: check RHEL, Ubuntu, SUSE advisories.
Exposure DataOpenSSL 1.1.1 remains widely deployed per Censys/Shodan (~millions of hosts), but DANE TLSA client usage is negligible — Shodan DANE TLSA tags show <10,000 servers globally advertising DANE, and client-side is unmeasurable.
Disclosure Date2026-04-07 (coordinated release with OpenSSL advisory)
Reported ByOpenSSL project internal and community contributors. No specific researcher credited publicly for CVE-2026-28387.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.5/10)

The single most decisive factor is the vanishingly narrow attack surface: CVE-2026-28387's chain requires dual PKIX+DANE-TA client-side TLSA validation, a configuration so uncommon that fewer than 0.1% of OpenSSL deployments are plausibly exposed. The remaining three CVEs are vendor-rated Low (DoS-only NULL derefs) and cannot elevate the bundle above the headline issue's effective risk.

HIGH Affected version identification and fix availability
HIGH No in-the-wild exploitation or public PoC
MEDIUM DANE TLSA deployment prevalence estimate (based on public DNS/Shodan data, not enterprise telemetry)

Why this verdict

  • DANE TLSA prerequisite eliminates >99.9% of the attack surface. The headline CVE requires client-side DANE TLSA with dual PKIX+DANE-TA usages — a configuration almost no enterprise deploys, and one that RFC 7672 explicitly discourages for SMTP.
  • Three of four CVEs are DoS-only NULL derefs rated Low by the vendor. These require the application to process attacker-controlled CMS or delta CRL data, limiting scope to S/MIME gateways and PKI infrastructure.
  • No PoC, no exploitation, sub-median EPSS. At 0.67% EPSS (49th percentile), the exploitation probability is below average. No weaponized tooling exists.
  • Role multiplier: OpenSSL is ubiquitous in high-value roles (edge appliances, identity providers, hypervisors), but the DANE TLSA code path is *not triggered* in standard TLS server or client operation. The chain does NOT succeed against a typical web server, load balancer, IdP, or hypervisor — only against a DANE TLSA-validating client. The CMS DoS path could theoretically hit S/MIME gateways or PKI/CA infrastructure, but impact is DoS (recoverable crash), not compromise. The floor does not trigger because the vulnerable code path is not exercised in canonical high-value deployments.
  • AC:H in CVSS underrepresents real complexity. The attacker must control DNS (or the destination domain's TLSA records) AND the target must have the rare dual-usage config. This is multiple independent low-probability conditions compounding.

Why not higher?

Despite OpenSSL's ubiquity, the DANE TLSA prerequisite is not a standard TLS configuration — it is a specialized DNS-based authentication extension used by a tiny fraction of deployments. Elevating to HIGH would require evidence that a material fraction of enterprise OpenSSL installations enable dual-usage DANE TLSA validation, and no such evidence exists. The three DoS CVEs are vendor-rated Low and cannot justify HIGH on their own.

Why not lower?

The theoretical impact of CVE-2026-28387 is full RCE via use-after-free in a network-facing context with no authentication required. While the preconditions are extremely narrow, the consequences if met are severe. The CMS DoS CVEs also have a non-trivial attack surface in S/MIME-processing environments. Dropping to LOW would understate the residual risk for the small population of DANE-enabled deployments.

05 · Compensating Control

What to do — in priority order.

  1. Audit for DANE TLSA client usage — Search your codebase and configurations for SSL_dane_enable(), SSL_dane_tlsa_add(), or Postfix/Exim DANE settings. If no application uses DANE TLSA client validation, CVE-2026-28387 does not apply to your environment. Complete this audit within the noisgate 365-day remediation window.
  2. Disable dual PKIX+DANE-TA certificate usages — If DANE TLSA is in use, configure the client to use only DANE-TA(2) and DANE-EE(3) usages, not PKIX-TA(0) or PKIX-EE(1). This eliminates the vulnerable code path. RFC 7672 already recommends this for SMTP.
  3. Restrict CMS processing to trusted input — For CVE-2026-28389/28390, ensure CMS_decrypt() is only called on authenticated or trusted CMS messages. S/MIME gateways should validate sender identity before CMS decryption.
  4. Upgrade OpenSSL to a supported branch — OpenSSL 1.1.1 has been EOL since September 2023. Migrate to 3.0.x (LTS, supported until Sept 2026) or 3.4.x/3.5.x for long-term support. This is a strategic remediation item within the noisgate 365-day remediation window.
What doesn't work
  • WAF / IDS signatures — these CVEs are triggered in TLS handshake internals (DANE) or encrypted CMS payloads, not in HTTP request bodies. No WAF can inspect or block the attack.
  • Network segmentation alone — CVE-2026-28387 targets outbound TLS connections from the vulnerable client, so blocking inbound traffic does not help.
  • Upgrading to 1.1.1zg on public OpenSSL — 1.1.1zg is only available via premium support or OS-vendor backports. You cannot download it from openssl.org without a support contract.
06 · Verification

Crowdsourced verification payload.

Run this script on each target host to check the installed OpenSSL version. Requires shell access (no root needed). Example: bash check_openssl_cve2026.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/bin/bash
# OpenSSL 1.1.1zg vulnerability check
# Checks for CVE-2026-28387, CVE-2026-28388, CVE-2026-28389, CVE-2026-28390
# Run on target host. No root required.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

OPENSSL_BIN=$(command -v openssl 2>/dev/null)
if [ -z "$OPENSSL_BIN" ]; then
  echo "UNKNOWN - openssl binary not found in PATH"
  exit 2
fi

VERSION_STRING=$($OPENSSL_BIN version 2>/dev/null)
if [ $? -ne 0 ]; then
  echo "UNKNOWN - failed to execute openssl version"
  exit 2
fi

echo "Detected: $VERSION_STRING"

# Check if this is OpenSSL 1.1.1
if echo "$VERSION_STRING" | grep -qE 'OpenSSL 1\.1\.1'; then
  # Extract the letter suffix (e.g., 'zf', 'zg', 'w')
  SUFFIX=$(echo "$VERSION_STRING" | sed -n 's/.*OpenSSL 1\.1\.1\([a-z]*\).*/\1/p')
  
  # 1.1.1zg and later are patched
  # Compare lexicographically: zg, zh, zi... are patched
  if [ -z "$SUFFIX" ]; then
    # Base 1.1.1 with no suffix - vulnerable
    echo "VULNERABLE - OpenSSL 1.1.1 (no patch suffix) is affected"
    exit 1
  fi
  
  # zg = patched. Anything before zg = vulnerable.
  # Letters: a-z = 1.1.1a through 1.1.1z, then za-zf = vulnerable, zg+ = patched
  if echo "$SUFFIX" | grep -qE '^z[g-z]'; then
    echo "PATCHED - OpenSSL 1.1.1$SUFFIX is >= 1.1.1zg"
    exit 0
  else
    echo "VULNERABLE - OpenSSL 1.1.1$SUFFIX is below 1.1.1zg"
    exit 1
  fi

# Check if this is OpenSSL 3.0.x
elif echo "$VERSION_STRING" | grep -qE 'OpenSSL 3\.0\.'; then
  MINOR=$(echo "$VERSION_STRING" | sed -n 's/.*OpenSSL 3\.0\.\([0-9]*\).*/\1/p')
  if [ "$MINOR" -ge 20 ] 2>/dev/null; then
    echo "PATCHED - OpenSSL 3.0.$MINOR >= 3.0.20"
    exit 0
  else
    echo "VULNERABLE - OpenSSL 3.0.$MINOR < 3.0.20"
    exit 1
  fi

# Check 3.3.x, 3.4.x, 3.5.x, 3.6.x
elif echo "$VERSION_STRING" | grep -qE 'OpenSSL 3\.[3456]\.'; then
  BRANCH=$(echo "$VERSION_STRING" | sed -n 's/.*OpenSSL 3\.\([0-9]*\)\.\([0-9]*\).*/\1/p')
  PATCH=$(echo "$VERSION_STRING" | sed -n 's/.*OpenSSL 3\.\([0-9]*\)\.\([0-9]*\).*/\2/p')
  case "$BRANCH" in
    3) FIXED=7 ;;
    4) FIXED=5 ;;
    5) FIXED=6 ;;
    6) FIXED=2 ;;
    *) echo "UNKNOWN - unrecognized branch 3.$BRANCH"; exit 2 ;;
  esac
  if [ "$PATCH" -ge "$FIXED" ] 2>/dev/null; then
    echo "PATCHED - OpenSSL 3.$BRANCH.$PATCH >= 3.$BRANCH.$FIXED"
    exit 0
  else
    echo "VULNERABLE - OpenSSL 3.$BRANCH.$PATCH < 3.$BRANCH.$FIXED"
    exit 1
  fi

else
  echo "UNKNOWN - not an affected OpenSSL branch ($VERSION_STRING)"
  exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This plugin bundles one theoretically severe but practically unreachable use-after-free (DANE TLSA dual-usage config) with three low-severity DoS crashes. At a noisgate-reassessed MEDIUM, there is no mitigation SLA — go straight to the 365-day remediation window by patching OpenSSL or migrating off the EOL 1.1.1 branch. Your immediate Monday-morning action is a 30-minute audit: grep your fleet for DANE TLSA client usage (SSL_dane_enable, Postfix smtp_tls_dane, Exim DANE settings). If you find none — and you almost certainly won't — document that CVE-2026-28387 is not exploitable in your environment and deprioritize this plugin behind anything with active exploitation. For the longer term, use the 365-day window to complete your OpenSSL 1.1.1 → 3.x migration, which addresses this plugin and the underlying EOL risk in one move.

Sources

  1. Tenable Plugin 305204
  2. OpenSSL 1.1.1 Vulnerability List
  3. CVE-2026-28387 — Snyk
  4. CVE-2026-28387 — Red Hat
  5. CVE-2026-28389 — SentinelOne
  6. IBM Security Bulletin (CVE-2026-28387/28388/28389/28390)
  7. OpenSSL 1.1.1 EOL Announcement
  8. CISA KEV Catalog
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.