This is a rusty spare key under the mat, not a kicked-in front door
This finding means a TLS service still negotiates 3DES or another 64-bit block cipher, which maps to SWEET32 / CVE-2016-2183. The weakness is not tied to one neat product range; it affects any server or client stack that still permits those legacy ciphers, and scanners usually flag suites like DES-CBC3-SHA. In OpenSSL, mitigation landed in 1.0.2i / 1.0.1u, and 1.1.0 disabled those DES-based suites by default.
The vendor baseline overstates operational risk. CVSS treats this like a simple network-reachable confidentiality bug, but the real exploit path usually needs attacker-in-the-middle visibility or browser foothold, an actual 3DES-negotiated session, a long-lived connection, repeated secret-bearing traffic, and massive data volume. That makes it a legitimate hardening issue and compliance blemish, but usually not an urgent enterprise patch-priority event.
4 steps from start to impact.
Find a TLS endpoint that still offers 3DES
nmap --script ssl-enum-ciphers, or sslyze and locate an endpoint that still accepts a 64-bit block cipher. This only proves the server is willing to talk legacy crypto; it does not prove a victim session will actually use it.- Network reachability to the TLS service
- Server still negotiates 3DES or another 64-bit block cipher
- Many modern services already disable 3DES by default
- A server offering 3DES is common; a real victim actually using it is much less common
nmap ssl-enum-ciphers, and sslyze all catch this reliably.Get a victim session to negotiate the weak suite
- Victim client still supports the weak suite
- Attacker can observe or influence the victim's network path, or has equivalent browser-side foothold
- Modern browsers, TLS libraries, and policy baselines often avoid 3DES
- TLS 1.3 and strong-suite preference erase the condition entirely
Keep the session alive and push huge traffic volume
- Long-lived TLS session under the same key
- Repeated secret-bearing plaintext such as cookies or auth headers
- Ability to generate and capture very large traffic volumes
- Session rekeying, connection churn, and short-lived application flows break the attack
- Many enterprise apps simply do not keep enough repeated traffic under one key
Recover plaintext and hijack the session
- Recovered plaintext includes an authentication token or other reusable secret
- The secret remains valid long enough to abuse
- Recovered data may be low value or quickly expired
- HttpOnly, short session lifetimes, and token rotation reduce usable impact
The supporting signals.
| Canonical issue | CVE-2016-2183 / SWEET32 — birthday attack against 64-bit block ciphers such as 3DES in TLS |
|---|---|
| Disclosure timeline | Research was publicly described on 2016-08-24 by Karthikeyan Bhargavan and Gaëtan Leurent; the CVE was published shortly after |
| Vendor baseline | Tenable plugin 42873 currently shows Plugin Severity: High, while its VPR risk factor is Medium (6.1) — that likely explains the user's "MEDIUM (?)" note |
| CVSS vs reality | CVSS 7.5 / CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N assumes easy remote exploitation, but the practical path usually needs MitM/browser foothold + long-lived high-volume traffic |
| In-the-wild status | Not in CISA KEV when checked, and I found no mainstream public reporting of active exploitation campaigns driving enterprise triage today |
| Proof-of-concept availability | Yes — the original researchers published the academic PoC path on sweet32.info and in the CCS paper; this is not a commodity one-shot RCE exploit |
| EPSS | A current public CVE feed snapshot shows roughly 40.99% EPSS / ~97th percentile for CVE-2016-2183; treat that as background threat telemetry, not as the main severity driver here because the exploit path is highly conditional |
| Affected version range | Broad and configuration-driven: any TLS service or client that still negotiates 3DES or another 64-bit block cipher. This is why the finding appears across appliances, Java stacks, OpenSSL consumers, and legacy embedded gear |
| Fixed / mitigated states | In OpenSSL, 1.0.2i and 1.0.1u moved DES-based suites out of HIGH, and 1.1.0 disabled them by default; many distros backported equivalent behavior |
| Exposure data | The original SWEET32 research estimated 3DES accounted for roughly 1–2% of mainstream browser HTTPS connections at disclosure. That shows real internet presence, but still a minority path, not broad default exposure |
noisgate verdict.
The decisive downgrade factor is attack-path friction: real SWEET32 exploitation usually requires a victim session that actually negotiates 3DES plus a long-lived, high-volume, repeated-secret traffic pattern. In enterprise terms, this is usually legacy crypto debt on exposed services, not an attacker's fastest route to compromise.
Why this verdict
- Start from 7.5, then cut hard for attacker position: practical exploitation normally needs MitM visibility or equivalent browser foothold, which implies a prior compromise stage or privileged network position that CVSS does not capture.
- Cut again because server support is not exploitability: Nessus proves the endpoint *offers* 3DES, but a real victim must also *negotiate* it. In modern estates, many clients prefer AES/TLS 1.2+ or TLS 1.3, which narrows reachable population sharply.
- Cut again for data-volume and session-lifetime requirements: the published HTTPS demo needed enormous traffic and a long-lived session with repeated secrets. That is real cryptographic weakness, but poor attacker ROI compared with phishing, token theft, or edge RCE.
Why not higher?
This is not a one-packet unauthenticated break. It does not hand over code execution, domain takeover, or trivial remote shell access, and the exploit chain depends on several compounding prerequisites that modern deployments often break naturally. That makes a HIGH or CRITICAL call inappropriate for most 10,000-host environments.
Why not lower?
It is still a real confidentiality weakness, not scanner theater. If you still expose legacy 3DES on internet-facing portals, old VPNs, or brittle embedded platforms, a determined attacker with the right position can exploit it. It also remains valid crypto-baseline debt and will keep tripping audits and external assessments.
What to do — in priority order.
- Disable 3DES and other 64-bit block ciphers — Remove
3DES/DES-CBC3-SHAand equivalent suites from server-side cipher policy wherever the platform allows it. For a LOW noisgate verdict there is no mitigation SLA; treat this as backlog hygiene and complete it in the next normal TLS-hardening change window. - Triage internet-facing and VPN endpoints first — If you cannot clean up everything at once, start with externally reachable web apps, load balancers, reverse proxies, and remote-access concentrators where victim traffic volume and attacker reachability are most plausible. For LOW, there is no special emergency deadline; fold it into routine exposure reduction work.
- Validate actual negotiation, not just library version — Re-test endpoints with handshake enumeration after each change because many products bundle their own TLS stack and ignore OS-level cipher settings. This matters more than package version alone because SWEET32 is fundamentally a negotiated-cipher problem.
- A WAF does not solve this; the weakness is in TLS cipher negotiation and bulk encrypted traffic, not HTTP request syntax.
- EDR on servers rarely helps; many affected assets are appliances or services where the important signal is the negotiated cipher, not endpoint process behavior.
- Upgrading only the base OS crypto policy may not clear the finding if the application ships its own OpenSSL, Java runtime, or embedded TLS library.
Crowdsourced verification payload.
Run this from an auditor workstation or jump host that can reach the target TLS service: ./check_sweet32.sh app.example.com 443. It needs no administrative privileges; nmap is preferred for accuracy, and the script falls back to openssl if nmap is unavailable.
#!/usr/bin/env bash
# check_sweet32.sh
# Detect whether a remote TLS service still negotiates 3DES / SWEET32-prone ciphers.
# Usage: ./check_sweet32.sh <host> [port]
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=usage error
set -u
HOST="${1:-}"
PORT="${2:-443}"
if [ -z "$HOST" ]; then
echo "UNKNOWN: usage: $0 <host> [port]"
exit 3
fi
# Prefer nmap because it enumerates server-accepted suites reliably.
if command -v nmap >/dev/null 2>&1; then
OUT="$(nmap -Pn --script ssl-enum-ciphers -p "$PORT" "$HOST" 2>/dev/null)"
if [ -z "$OUT" ]; then
echo "UNKNOWN: no output from nmap"
exit 2
fi
if echo "$OUT" | grep -Eiq '3des|des-cbc3|des-cbc'; then
echo "VULNERABLE"
exit 1
fi
if echo "$OUT" | grep -Eiq 'ssl-enum-ciphers|TLSv1\.[0-3]|ciphers'; then
echo "PATCHED"
exit 0
fi
echo "UNKNOWN: unable to interpret nmap output"
exit 2
fi
# Fallback to openssl s_client. This is less reliable on systems where legacy ciphers are unavailable.
if command -v openssl >/dev/null 2>&1; then
OUT="$(printf '' | openssl s_client -connect "${HOST}:${PORT}" -servername "$HOST" -tls1_2 -cipher 'DES-CBC3-SHA:@SECLEVEL=0' 2>/dev/null)"
if echo "$OUT" | grep -Eq 'Cipher is DES-CBC3-SHA|Cipher *: *DES-CBC3-SHA|New, .*DES-CBC3-SHA'; then
echo "VULNERABLE"
exit 1
fi
if echo "$OUT" | grep -Eq 'handshake failure|no cipher match|alert handshake failure|ssl handshake has read'; then
echo "PATCHED"
exit 0
fi
echo "UNKNOWN: openssl could not confirm whether 3DES is accepted"
exit 2
fi
echo "UNKNOWN: neither nmap nor openssl is installed"
exit 2
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.