← Back to Feed CACHED · 2026-09-15 10:28:10 · CACHE_KEY tenable:178475
tenable:178475 · CWE-606 · Disclosed 2023-07-19

OpenSSL 1.1.1 < 1.1.1v Multiple Vulnerabilities

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

Like a doorbell that jams if you hold the button — annoying, not dangerous

CVE-2023-3446 and CVE-2023-3817 are algorithmic complexity bugs in OpenSSL's DH_check(), DH_check_ex(), and EVP_PKEY_param_check() functions. When these functions process a crafted DH key with an excessively large p or q parameter, they enter a computationally expensive loop that can cause significant delays. The impact is purely denial-of-service — no memory corruption, no code execution, no data leak. Affected versions: OpenSSL 1.1.1 through 1.1.1u (fixed in 1.1.1v, released July 2023). The same bugs affected OpenSSL 3.0.x and 3.1.x lines and were fixed in their respective releases.

The vendor's MEDIUM / CVSS 5.3 rating is generous for the real-world risk here. Even the CVSS vector acknowledges only Low availability impact (A:L), meaning partial degradation rather than a full crash. Tenable's own VPR engine scored this at 1.2 (Low) — among the lowest possible — reflecting zero exploitation activity, no weaponized PoC, and a very narrow trigger path. Most production TLS servers never call DH_check() on untrusted input during normal handshake flows; the function is primarily used in key-generation and parameter-validation utilities. The vendor MEDIUM overstates the operational risk.

"DoS-only DH parameter bug with no real-world exploitation — noise, not signal."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Identify target using OpenSSL DH parameter validation

The attacker needs a service endpoint that accepts externally supplied DH parameters and validates them using DH_check(), DH_check_ex(), or EVP_PKEY_param_check(). Standard TLS handshakes with static server DH params do NOT trigger this path. Custom key-exchange implementations or certificate validation tools that parse untrusted DH params are required.
Conditions required:
  • Target application calls DH_check() on attacker-controlled input
  • OpenSSL < 1.1.1v (or < 3.0.10, < 3.1.2)
Where this breaks in practice:
  • Most TLS servers use ECDHE, not finite-field DH
  • DH_check() is rarely invoked on untrusted parameters in production flows
  • Applications using ephemeral DH generate params internally, not from external input
Detection/coverage: Tenable plugin 178475 detects the vulnerable OpenSSL version. Qualys QID 379878 covers the same.
STEP 02

Craft oversized DH parameter payload

The attacker constructs a DH key or parameter set with an excessively large p value (CVE-2023-3446) or q value (CVE-2023-3817). No special tooling is needed — OpenSSL command-line tools can generate arbitrarily large DH params. The crafted payload is sent to the target endpoint.
Conditions required:
  • Network reachability to the target service
  • The service accepts and parses the crafted DH parameters
Where this breaks in practice:
  • WAFs and protocol-level input validation may reject oversized payloads
  • TLS libraries typically enforce maximum parameter sizes during handshake
STEP 03

Trigger CPU-bound loop in DH_check

The target application's call to DH_check() enters a computationally expensive primality-testing loop on the oversized parameter. The thread or process servicing this request stalls for an extended period. Impact is CPU consumption and request latency — not a crash or memory corruption. The service degrades but typically recovers when the check completes or times out.
Conditions required:
  • Steps 1 and 2 successful
Where this breaks in practice:
  • Impact is A:L (partial degradation), not full service outage
  • Multi-threaded or async servers may only block one worker
  • Rate limiting or connection timeouts bound the blast radius
  • Attacker must sustain malicious requests to maintain degradation
Detection/coverage: Anomalous CPU spikes on the OpenSSL-consuming process. Standard APM and process monitoring will flag the spike.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. Not listed in CISA KEV. No known campaigns targeting these CVEs.
Proof-of-conceptNo weaponized PoC available. Crafting oversized DH params is trivial with openssl dhparam, but no exploit tooling or Metasploit module exists.
EPSS (CVE-2023-3446)6.53% probability of exploitation in 30 days — 93rd percentile. Elevated percentile driven by OpenSSL's ubiquity, not actual exploitation signals.
EPSS (CVE-2023-3817)3.05% — 87th percentile.
KEV statusNot listed. Neither CVE appears in the CISA Known Exploited Vulnerabilities catalog.
CVSS vectorCVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L — Network-accessible, no auth required, but only *Low* availability impact. Zero confidentiality or integrity impact.
Affected versionsOpenSSL 1.1.1 through 1.1.1u, OpenSSL 3.0.0 through 3.0.9, OpenSSL 3.1.0 through 3.1.1. Also affects 1.0.2 (premium support only).
Fixed versions1.1.1v (2023-08-01), 3.0.10 (2023-08-01), 3.1.2 (2023-08-01). Distro backports: RHEL 8/9, Ubuntu 20.04/22.04, Debian 11/12 patched via OS packages.
Exposure dataOpenSSL powers ~70% of internet-facing TLS endpoints. However, the *vulnerable code path* (DH_check on untrusted input) is exercised by a vanishingly small fraction of deployments.
Disclosure & creditCVE-2023-3446 reported via OSSfuzz on 2023-06-25, disclosed 2023-07-19. CVE-2023-3817 disclosed 2023-07-31 as an incomplete-fix follow-up. OpenSSL 1.1.1 reached end of life 2023-09-11no further public patches.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.0/10)

The single most decisive factor is the DoS-only impact ceiling combined with an exceptionally narrow trigger path — the vulnerable DH_check() function is almost never called on attacker-controlled input in production TLS deployments. Tenable's own VPR of 1.2 corroborates that real-world risk is well below the CVSS 5.3 label.

HIGH Vulnerability technical details and affected versions
HIGH Absence of exploitation in the wild and KEV status
MEDIUM Fraction of deployments actually calling DH_check() on untrusted input

Why this verdict

  • DoS-only, Low availability impact: The CVSS vector itself rates availability as A:L — partial degradation, not service crash. No path to code execution, data exfiltration, or privilege escalation exists.
  • Narrow trigger path: The vulnerable functions (DH_check, DH_check_ex, EVP_PKEY_param_check) are parameter-validation utilities. Standard TLS handshake flows using ECDHE — which dominate modern deployments — never invoke them on external input.
  • Zero exploitation evidence: No KEV listing, no known campaigns, no weaponized PoC, and VPR 1.2 (among the lowest possible scores). Three years post-disclosure with no exploitation activity is a strong negative signal.
  • Role multiplier: OpenSSL runs on network edge appliances (F5, Citrix, HAProxy), identity providers, and CI/CD infrastructure. In *all* these high-value roles, the impact ceiling remains DoS — not compromise, not lateral movement, not data theft. A DoS against a load balancer is operationally disruptive but does not meet the floor criteria of domain takeover, fleet compromise, or supply-chain pivot. The floor rule does not apply.

Why not higher?

To warrant MEDIUM, we'd need either active exploitation, a realistic path to service-level outage (A:H), or evidence that a meaningful fraction of deployments call DH_check() on untrusted parameters. None of these conditions hold. The VPR 1.2 is the market's clearest signal that this is background noise.

Why not lower?

We don't drop to IGNORE because OpenSSL 1.1.1 is end-of-life since September 2023 — any host still running it has a broader hygiene problem, and this finding serves as a useful signal to drive migration. The CVEs are also real bugs with a theoretically exploitable path, even if impractical.

05 · Compensating Control

What to do — in priority order.

  1. Prioritize migration off OpenSSL 1.1.1 entirely — OpenSSL 1.1.1 has been EOL since September 2023. These specific CVEs are low-risk, but the branch receives no new security patches. Treat this finding as a migration trigger toward OpenSSL 3.x. No mitigation SLA for LOW — treat as backlog hygiene, but the EOL status should elevate migration priority in your roadmap.
  2. Audit application code for DH_check() on untrusted input — Grep your codebase and vendor configurations for calls to DH_check(), DH_check_ex(), or EVP_PKEY_param_check() that operate on externally supplied parameters. If none exist (likely), this CVE is not reachable in your environment.
  3. Enforce ECDHE-only cipher suites — Disable finite-field DH key exchange in TLS configurations (DHE-* cipher suites). This eliminates the DH parameter exchange path entirely and is a best practice regardless of this CVE.
  4. Apply OS vendor backport patches — RHEL, Ubuntu, Debian, and SUSE all shipped backported fixes. If you can't migrate to OpenSSL 3.x yet, apply your distro's patched 1.1.1 package as an interim step.
What doesn't work
  • WAF rules — These CVEs don't exploit HTTP-layer input. The DH parameter exchange happens at the TLS layer, below where a WAF operates.
  • Rate limiting alone — While rate limiting bounds sustained DoS, the root issue is algorithmic complexity in a single request's processing, not volume-based flooding.
06 · Verification

Crowdsourced verification payload.

Run this on each target host to check the installed OpenSSL version. Requires read access to the openssl binary (no root needed). Example: bash check_openssl_dh.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/bin/bash
# noisgate verification for Tenable 178475
# CVE-2023-3446 / CVE-2023-3817 — OpenSSL DH_check DoS
# Run on target host. No root required.

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=$($OPENSSL_BIN version 2>/dev/null)
if [ $? -ne 0 ]; then
  echo "UNKNOWN — failed to query openssl version"
  exit 2
fi

echo "Detected: $VERSION"

# Extract version string
if echo "$VERSION" | grep -qE 'OpenSSL 1\.1\.1[a-u]?[ -]'; then
  # Matches 1.1.1 through 1.1.1u (letters a-u)
  echo "VULNERABLE — $VERSION is affected by CVE-2023-3446 / CVE-2023-3817"
  echo "NOTE: OpenSSL 1.1.1 reached end-of-life on 2023-09-11"
  exit 1
elif echo "$VERSION" | grep -qE 'OpenSSL 1\.1\.1[v-z]'; then
  echo "PATCHED — $VERSION includes fixes for CVE-2023-3446 / CVE-2023-3817"
  echo "WARNING: OpenSSL 1.1.1 is still end-of-life. Plan migration to 3.x."
  exit 0
elif echo "$VERSION" | grep -qE 'OpenSSL 3\.[0-9]'; then
  echo "PATCHED — $VERSION (OpenSSL 3.x branch). Verify >= 3.0.10 or >= 3.1.2 for full fix."
  exit 0
else
  echo "UNKNOWN — version string not recognized: $VERSION"
  exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is backlog hygiene, not an emergency. The noisgate reassessed verdict is LOW, which carries no mitigation SLA — go straight to the remediation window and treat this as a scheduled task. The real action item is migrating off OpenSSL 1.1.1 entirely, which has been end-of-life for three years. Use this Tenable finding as leverage to fund and schedule that migration within your noisgate remediation SLA for LOW (backlog). If your scanner is lighting up thousands of hosts with this plugin, the signal isn't "patch these two DoS bugs" — it's "you have a dead crypto library across your fleet." Prioritize OpenSSL 3.x migration over chasing these specific CVEs.

Sources

  1. Tenable Plugin 178475
  2. OpenSSL 1.1.1 Vulnerabilities
  3. OpenSSL 1.1.1 EOL Announcement
  4. CVE-2023-3446 — NVD
  5. CVE-2023-3817 — NVD
  6. Red Hat CVE-2023-3817
  7. OpenSSL 1.1.1 Release Notes
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.