← Back to Feed CACHED · 2026-06-25 03:14:35 · CACHE_KEY tenable:152782
tenable:152782 · CWE-120 · Disclosed 2021-08-24

OpenSSL 1

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

A scary CVSS sticker slapped onto a code path almost no Western app actually executes

Tenable plugin 152782 covers two August 2021 OpenSSL flaws — CVE-2021-3711 (SM2 decryption buffer overflow, up to 62 bytes attacker-controlled) and CVE-2021-3712 (ASN.1 string out-of-bounds read, info-disclosure / DoS). Both affect OpenSSL 1.1.1 through 1.1.1k, plus the 1.0.2 branch up through 1.0.2y (premium support only). Fix lands in 1.1.1l / 1.0.2za, with distro backports in RHEL, Ubuntu, SUSE, and Debian shipped within days of the upstream advisory.

Vendor-aggregated severity is HIGH with NVD scoring 3711 at 9.8, and that number is what drives plugin 152782's noise. It does not survive contact with reality. CVE-2021-3711 only triggers in code paths that call EVP_PKEY_decrypt() on SM2 ciphertext from an attacker-controlled source — SM2 is the PRC national crypto standard and is essentially absent from Western web stacks, mail stacks, VPN stacks, and TLS terminators. CVE-2021-3712 needs an app that prints/processes ASN.1 strings from an attacker-supplied cert without using the safe accessors. Real-world exploitation: zero confirmed, not on CISA KEV, EPSS percentile floor.

"Two OpenSSL bugs that the world dressed up as 9.8 but exploit a Chinese-only cipher path and a niche cert-printing function. Downgrade."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Identify a service linking vulnerable OpenSSL 1.1.1 ≤ k

Attacker fingerprints the target via TLS handshake (nmap --script ssl-enum-ciphers, testssl.sh, JA3) or banner-grabs an HTTPS / SMTPS / IMAPS / OpenVPN endpoint. Library version is rarely advertised directly; the attacker correlates host OS build (e.g., RHEL 8.4 GA) with the OpenSSL shipped in that build.
Conditions required:
  • Reachable TLS-speaking service
  • Target running OpenSSL 1.1.1 through 1.1.1k or 1.0.2 through 1.0.2y unpatched
Where this breaks in practice:
  • Most enterprises patched OpenSSL within 30 days via OS package channel — RHSA-2021:3798, USN-5051-1, etc.
  • Version is inferred, not certain; wastes attacker time
Detection/coverage: Tenable 152782, Qualys QID 38826, OpenVAS 117171, testssl.sh --vulnerable
STEP 02

Reach an SM2-decrypting code path (CVE-2021-3711)

Attacker needs the target application to call EVP_PKEY_decrypt() with EVP_PKEY_SM2 keys against attacker-supplied ciphertext, then call it a second time with the undersized buffer. No mainstream TLS library, web server, mail server, or VPN exposes this path by default. The realistic target is a bespoke Chinese-market crypto application or a custom integration that explicitly opted into SM2.
Conditions required:
  • Application explicitly uses SM2
  • Application accepts attacker-controlled SM2 ciphertext
  • Two-call decryption pattern with caller-sized buffer
Where this breaks in practice:
  • SM2 is not enabled in nginx, Apache httpd, postfix, dovecot, OpenVPN, strongSwan, or curl default builds
  • Negligible Western-enterprise footprint
  • GM/T-compliant stacks are typically air-gapped or PRC-domestic
Detection/coverage: No public PoC weaponizing SM2 path; signature-based IDS will not see this
STEP 03

OR trigger ASN.1 string OOB read (CVE-2021-3712)

Attacker supplies a crafted X.509 certificate whose ASN.1 string fields are not NUL-terminated, then targets an application that calls X509_NAME_oneline(), X509_get1_email(), X509_get1_ocsp(), or prints names without using the length-aware accessors. Result is a crash (DoS) or up to a page of adjacent heap memory leaked — *not* arbitrary read-where-I-want.
Conditions required:
  • App parses untrusted X.509 (client-cert auth, S/MIME, OCSP responder, cert viewer)
  • App uses the deprecated string-printing functions
  • Attacker can deliver the cert (mutual TLS, signed email, manual import)
Where this breaks in practice:
  • Modern apps use X509_NAME_print_ex() with proper length handling
  • Server-side mTLS rare outside of zero-trust gateways and B2B APIs
  • Leak is bounded and adjacent only — keys must literally sit next to the parsed string in heap
Detection/coverage: WAFs / mail gateways with cert inspection (e.g., Mimecast, Proofpoint) catch malformed cert blobs but not specifically this
STEP 04

Convert leak/overflow to impact

For 3711, 62 bytes of attacker-chosen data into an adjacent heap region rarely yields reliable RCE without a heap-grooming primitive in the same process; in practice public PoCs stop at crash. For 3712, the disclosure is a needle-in-heap lottery — useful only if the process holds high-value secrets (private keys, session tokens) that happen to land near the OOB read window.
Conditions required:
  • Reliable heap layout in the victim process
  • High-value secret resident in process memory
Where this breaks in practice:
  • ASLR / heap randomization
  • PIE on all modern distros
  • No public RCE-grade PoC exists for either CVE as of mid-2026
Detection/coverage: EDR may catch the crash signal; no specific exploit signature in mainstream rulesets
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. Not on CISA KEV. No incident-response telemetry from Mandiant, CrowdStrike, or Unit 42 attributes intrusions to either CVE.
Public PoCCrash-only PoCs for CVE-2021-3712 exist in security-research gists; no weaponized RCE for CVE-2021-3711 is public. Reporter John Ouyang's writeup describes the primitive, not an exploit.
EPSSCVE-2021-3711: ~0.5% (≈25th percentile). CVE-2021-3712: ~0.3% (≈15th percentile). Both bottom-quartile.
KEV statusNot listed. Neither CVE has been added to CISA Known Exploited Vulnerabilities since 2021 disclosure.
CVSS vectors3711: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8) — assumes generic RCE. 3712: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H (7.4) — both overstate real impact path.
Affected rangesOpenSSL 1.1.11.1.1k; OpenSSL 1.0.21.0.2y (premium customers only). Default OS-shipped LibreSSL and BoringSSL forks are *not* affected.
Fixed versionsUpstream 1.1.1l / 1.0.2za. Distro backports: RHEL 8 openssl-1.1.1k-5.el8_5, Ubuntu 20.04 1.1.1f-1ubuntu2.8, Debian bullseye 1.1.1k-1+deb11u1, SUSE SLES15 SP3 backport, Alpine 3.14.2.
Exposure dataShodan still shows ~2.1M services advertising banners consistent with OpenSSL 1.1.1 ≤ k as of 2026, but most are embedded/IoT firmware — *not* a population SM2 ever traverses.
Disclosed2021-08-24 via OpenSSL Security Advisory.
ReporterJohn Ouyang (CVE-2021-3711). Ingo Schwarze of OpenBSD (CVE-2021-3712).
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.3/10)

Downgraded from HIGH to MEDIUM because the 9.8-rated path (CVE-2021-3711) only triggers in applications that explicitly use the SM2 cipher — a code path absent from every mainstream Western TLS, mail, VPN, and web server build. The decisive factor is near-zero reachable code path in a typical enterprise's OpenSSL deployment, not a friction or patchability argument.

HIGH Vendor severity overstates real-world impact
HIGH No in-the-wild exploitation across 5 years since disclosure
MEDIUM Distro backport coverage is complete for supported OS versions

Why this verdict

  • SM2 path is dead code in Western stacks — CVE-2021-3711's 9.8 assumes a generic memcpy overflow, but the SM2 decryption call site does not exist in nginx, Apache, postfix, dovecot, OpenVPN, strongSwan, curl, or any default OS-shipped TLS termination, so reachable population is a tiny fraction of the ~2M+ banner-matching hosts.
  • ASN.1 leak is bounded and probabilistic — CVE-2021-3712 yields ≤1 page of adjacent heap, not chosen-address read; reliable secret extraction requires mutual-TLS or S/MIME parsing in a long-lived process with predictable allocator layout.
  • Five years, zero KEV, EPSS bottom-quartile — no campaign, no PoC weaponization, no ransomware affiliate has built tooling, despite OpenSSL being one of the most-watched libraries on earth.
  • Role multiplier — TLS terminator / API gateway: The chain does not succeed. Default builds do not enable SM2; ASN.1 leak yields adjacent-heap bytes, not the server private key, with overwhelming probability.
  • Role multiplier — identity provider / PKI CA: ADCS, HashiCorp Vault PKI, smallstep, ADFS — none link against affected OpenSSL 1.1.1 SM2 paths; these stacks use Windows CNG or Go crypto, so the floor-raising role does not apply.
  • Role multiplier — VPN / network edge: FortiGate, PAN-OS, ASA, BIG-IP ship their own crypto builds and patched within their vendor cycles; even where 1.1.1 ≤ k is present, SM2 is not compiled in.
  • Role multiplier — embedded / IoT firmware: This is where most unpatched OpenSSL 1.1.1 ≤ k actually lives. Impact ceiling is device DoS or limited heap-leak from a TLS handshake, *not* fleet pivot — still MEDIUM, not HIGH.

Why not higher?

HIGH would require either (a) confirmed reachability in a default mainstream TLS stack, or (b) public weaponized PoC, or (c) KEV listing. None of those exist. The 9.8 NVD score scores the worst theoretical primitive, not the realistic exploit chain.

Why not lower?

LOW / IGNORE would require the bug to be unreachable everywhere. CVE-2021-3712 *is* reachable on any process that does mTLS with permissive cert printing — that's a non-zero population (zero-trust gateways, B2B APIs, OCSP responders, S/MIME-handling mail servers). MEDIUM keeps it on the patch backlog rather than the daily-emergency queue.

05 · Compensating Control

What to do — in priority order.

  1. Patch via OS package channel — All maintained distros backported the fix within days of August 2021 disclosure. Run yum update openssl / apt upgrade openssl / zypper update openssl across the fleet — this is the cheapest control. Within MEDIUM, no mitigation SLA applies; ride this into the standard 365-day noisgate remediation SLA window.
  2. Inventory SM2 usage explicitly — Grep build flags and binaries for SM2 symbol usage (nm -D libssl.so.1.1 | grep -i sm2, objdump -T … | grep SM2). If zero hits, CVE-2021-3711 is unreachable in your environment and you can deprioritize the 9.8 component of this plugin entirely.
  3. Audit mTLS-accepting services for cert-name printing — Check API gateways, OCSP responders, S/MIME mail relays for use of legacy X509_NAME_oneline() or X509_get1_email(). Migrating to X509_NAME_print_ex() neutralizes CVE-2021-3712 even on unpatched OpenSSL.
  4. Restart long-lived TLS processes after package updateyum update openssl does not restart linked processes. Use needs-restarting -r (RHEL), checkrestart (Debian), or lsof | grep libssl to find lingering vulnerable processes. Without restart, the patch is dormant on disk.
  5. Schedule replacement of OpenSSL 1.1.1 entirely — 1.1.1 went end of life on 2023-09-11. If you are still seeing 152782 in 2026, you are running EOL crypto. Move to OpenSSL 3.0 LTS or 3.2 within the noisgate remediation SLA of 365 days.
What doesn't work
  • Disabling TLS 1.3 — neither CVE is TLS-protocol-specific; both live in cert/cipher processing under any TLS version.
  • WAF rules — the trigger is in TLS handshake or certificate parsing, *below* the L7 inspection point on most WAF deployments.
  • Network ACLs — both bugs can be triggered by any peer that completes a TLS handshake; if you already let the peer connect, ACLs do nothing.
  • Disabling client-cert auth alone — only mitigates CVE-2021-3712 reachability in mTLS scenarios; does nothing for SM2 path or S/MIME / OCSP parsing.
06 · Verification

Crowdsourced verification payload.

Run this on each target Linux host as root or via your config-mgmt agent (Ansible become: true, Salt state.apply). Invoke as sudo ./check-openssl-1.1.1l.sh. It checks the system OpenSSL binary version and library, and reports whether SM2 support is even compiled in.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate verification — Tenable 152782 / CVE-2021-3711 + CVE-2021-3712
# Output: VULNERABLE | PATCHED | UNKNOWN
set -u

VULN=0
PATCHED=0
NOTE=""

# 1) Locate openssl binary
OSSL=$(command -v openssl || true)
if [[ -z "$OSSL" ]]; then
  echo "UNKNOWN: openssl binary not found on PATH"
  exit 2
fi

VER=$($OSSL version 2>/dev/null | awk '{print $2}')
echo "openssl reports: $VER"

# 2) Version comparison — only the 1.1.1 branch is in scope for this plugin
case "$VER" in
  1.1.1[a-k]|1.1.1)
    VULN=1
    NOTE="upstream 1.1.1<=k"
    ;;
  1.1.1[l-z]*|1.1.1[l-z])
    PATCHED=1
    NOTE="upstream >=1.1.1l"
    ;;
  3.*|1.0.2*)
    NOTE="out of plugin 152782 scope ($VER)"
    ;;
  *)
    NOTE="unrecognized version string"
    ;;
esac

# 3) Distro backport check — RHEL/CentOS
if command -v rpm >/dev/null 2>&1; then
  RPMVER=$(rpm -q --qf '%{VERSION}-%{RELEASE}\n' openssl-libs 2>/dev/null | head -1)
  echo "rpm openssl-libs: $RPMVER"
  # RHEL8 fixed in 1.1.1k-5.el8_5 ; RHEL7 fixed in 1.0.2k-22.el7_9
  if [[ "$RPMVER" =~ ^1\.1\.1k-[5-9] ]] || [[ "$RPMVER" =~ ^1\.1\.1k-[1-9][0-9] ]]; then
    PATCHED=1; VULN=0; NOTE="RHEL backport applied"
  fi
fi

# 4) Distro backport check — Debian/Ubuntu
if command -v dpkg-query >/dev/null 2>&1; then
  DEBVER=$(dpkg-query -W -f='${Version}\n' libssl1.1 2>/dev/null | head -1)
  echo "dpkg libssl1.1: $DEBVER"
fi

# 5) SM2 reachability check (CVE-2021-3711 only matters if SM2 linked)
LIBSSL=$(ldconfig -p 2>/dev/null | awk '/libcrypto.so.1.1/ {print $4; exit}')
if [[ -n "$LIBSSL" ]] && command -v nm >/dev/null 2>&1; then
  if nm -D "$LIBSSL" 2>/dev/null | grep -qi 'SM2\|sm2_'; then
    echo "SM2 symbols present in $LIBSSL — CVE-2021-3711 path is REACHABLE"
  else
    echo "SM2 symbols absent — CVE-2021-3711 path NOT reachable on this host"
  fi
fi

if (( PATCHED == 1 )); then
  echo "PATCHED ($NOTE)"; exit 0
elif (( VULN == 1 )); then
  echo "VULNERABLE ($NOTE)"; exit 1
else
  echo "UNKNOWN ($NOTE)"; exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This finding does not deserve emergency action. Verdict is MEDIUM with no mitigation SLA — go straight to the 365-day noisgate remediation SLA window and treat it as backlog hygiene. Monday morning: confirm your OS package channel pushed openssl-1.1.1k-5.el8_5 / 1.1.1f-1ubuntu2.8 / equivalent backport across the fleet, restart long-lived TLS-linking processes so they actually load the patched library, and add a ticket to migrate off OpenSSL 1.1.1 (EOL since 2023-09-11) to 3.0 LTS within the noisgate remediation SLA of ≤ 365 days. Do not let plugin 152782's 9.8 sticker burn a maintenance window that ProxyShell, Log4Shell, or your real KEV-listed exposures need more.

Sources

  1. Tenable plugin 152782
  2. OpenSSL Security Advisory 2021-08-24
  3. OpenSSL vulnerabilities index
  4. NVD — CVE-2021-3711
  5. NVD — CVE-2021-3712
  6. Debian security tracker — CVE-2021-3711
  7. Wiz vulnerability writeup — CVE-2021-3711
  8. CISA KEV catalog (verify not listed)
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.