Finding TLS 1.1 enabled in 2025 is like spotting a side door with an old lock that most burglars won't bother with unless they're already inside
Tenable plugin 157288 flags any remote service that will still negotiate TLS 1.1. This is not a product-specific bug and not a CVE; the affected "version range" is simply any endpoint, appliance, middleware stack, or web service configuration that still accepts TLS 1.1. Tenable's own description says the server accepts TLS 1.1 and that TLS 1.1 lacks support for modern recommended cipher constructions such as AEAD/GCM, while RFC 8996 formally deprecated TLS 1.0 and 1.1 in March 2021.
Vendor MEDIUM overstates the operational risk for most enterprises. Supporting TLS 1.1 is usually a configuration hygiene and compliance problem, not a clean initial-access exploit path: an attacker still needs a reachable TLS service plus either a legacy-only client population or an on-path downgrade opportunity, and even then TLS 1.1 alone typically does not yield code execution, auth bypass, or straightforward host takeover. The real exception is internet-facing business-critical endpoints where legacy protocol support widens attack surface and creates compatibility/compliance exposure at scale.
4 steps from start to impact.
Enumerate servers that still speak TLS 1.1
zgrab2, sslyze, or testssl.sh to find services willing to negotiate TLS 1.1. This step is cheap and fully remote, but it only discovers a deprecated protocol state, not a compromise by itself.- Target service is reachable from the attacker's network position
- The service actually negotiates TLS 1.1 rather than only advertising TLS generally
- A large share of enterprise findings are internal-only management planes, printers, middleware, or legacy app listeners that are not internet-reachable
- If the service also supports TLS 1.2/1.3, many modern clients will never use TLS 1.1 in practice
nmap --script ssl-enum-ciphers, sslyze, and testssl.sh all detect this reliably.Force or entice a TLS 1.1 negotiation
mitmproxy/custom TLS interception to push negotiation toward older protocol behavior. RFC 8996 explicitly prohibits fallback to TLS 1.0/1.1, so modern stacks are supposed to resist exactly this pattern.- Attacker has on-path position, or controls a legacy client/integration that can still use TLS 1.1
- No modern policy or reverse proxy forces TLS 1.2+ before traffic reaches the backend
- Requires attacker position beyond unauthenticated remote scanning in many real deployments
- Browsers and major vendors have disabled or deprecated TLS 1.0/1.1 by default, shrinking the reachable client population
Pair the legacy protocol with weaker crypto paths
- The server and client agree on legacy-compatible ciphers or insecure surrounding configuration
- There is another practical weakness to exploit besides the mere presence of TLS 1.1
- TLS 1.1 support alone does not imply exploitable ciphers or break confidentiality on demand
- Many modern deployments still present sane certificates and stronger suites even when legacy protocol support remains enabled for compatibility
Translate crypto weakness into business impact
- Service protects sensitive credentials or data in transit
- The weak protocol state is on a path that attackers can actually influence
- No direct RCE, privilege escalation, or default credential bypass flows from this finding alone
- Blast radius is often limited to the specific listener or virtual host still accepting TLS 1.1
The supporting signals.
| In-the-wild status | No public active exploitation evidence as a standalone issue. This is a deprecated protocol condition, not a named exploit campaign or CVE. |
|---|---|
| Proof-of-concept availability | Commodity validation tools exist — testssl.sh, sslyze, zgrab2, nmap ssl-enum-ciphers — but there is no standalone exploit chain because TLS 1.1 support by itself is not a host-compromise primitive. |
| EPSS | N/A. FIRST EPSS is published for CVEs, and plugin 157288 is not tied to a CVE. |
| KEV status | N/A. CISA KEV tracks exploited CVEs; this finding is a protocol-configuration issue and is therefore not KEV-listed. |
| Vendor severity / score | Tenable marks it MEDIUM with CVSS v3 6.5 and vector CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N based on manual scoring. |
| CVSS interpretation | High attack complexity is the tell. Even Tenable's own vector admits exploitation is not straightforward; that is exactly why this should be scored down in enterprise patch queues. |
| Affected range | Any service configuration that still negotiates TLS 1.1 — web servers, load balancers, app servers, embedded devices, Java stacks, Schannel-backed Windows services, and legacy appliances. |
| Fixed state | Disable TLS 1.1 and retain TLS 1.2/1.3. There is usually no single patched software version; this is commonly a protocol-policy or reverse-proxy setting. Microsoft notes TLS 1.0/1.1 are already disabled across Microsoft 365 products and are being disabled by default in Windows 11/Windows Server Insider releases in 2024. |
| Exposure / scanning reality | Mozilla reported in May 2019 that only just over 8,000 of the Tranco top 1,000,000 sites still lacked TLS >=1.2 support. That points to a shrinking internet-facing population; in enterprise programs today, many remaining hits are internal legacy services or appliances. |
| Disclosure / provenance | Tenable published plugin 157288 on 2022-04-04 and last updated it on 2024-05-14. The protocol itself was formally deprecated by the IETF in RFC 8996 in March 2021. |
noisgate verdict.
The decisive factor is that TLS 1.1 support is usually not an initial-access exploit path; it normally requires either an on-path attacker or a legacy client population before the weakness matters. Without active exploitation evidence, KEV pressure, or a chained crypto flaw, this is primarily exposure debt on a specific listener rather than a high-probability compromise event.
Why this verdict
- Requires more than reachability: discovery is easy, but harmful abuse usually needs an on-path position, downgrade opportunity, or legacy client behavior.
- Not a CVE and no KEV/EPSS pressure: there is no evidence this finding alone is being weaponized at scale as a primary intrusion vector.
- Exposure population is narrow and shrinking: major vendors and browsers have moved to TLS 1.2+ by default, which sharply reduces real-world negotiation of TLS 1.1.
- Blast radius is listener-specific: even when present, the issue is generally confined to one service endpoint or appliance configuration rather than whole-host takeover.
Why not higher?
There is no direct path here to RCE, auth bypass, or privilege escalation. The protocol state mostly becomes dangerous when stacked with separate weaknesses or when deployed on a highly exposed edge service where an attacker can realistically force legacy negotiation.
Why not lower?
It is still a real security signal, especially on internet-facing endpoints, regulated environments, and customer login/payment paths. Deprecated protocol support expands downgrade surface, causes compatibility failures with modern clients, and often coexists with broader TLS hygiene problems that deserve cleanup.
What to do — in priority order.
- Prioritize public edge listeners first — Triage findings by exposure: internet-facing VIPs, external partner gateways, and authentication endpoints first; internal-only appliance listeners later. For a LOW verdict there is no SLA (treat as backlog hygiene), so do this during normal backlog review and change planning.
- Terminate legacy backends behind a modern proxy — If the backend cannot drop TLS 1.1 yet, place it behind a load balancer or reverse proxy that enforces TLS 1.2/1.3 externally and tightly scopes backend reachability. For LOW, there is no mitigation SLA; use the next standard engineering window rather than emergency change.
- Constrain who can reach the service — Use ACLs, firewall policy, VPN gating, or management-plane segmentation so only the minimum required client set can hit the legacy listener. This reduces the chance that an attacker can even reach the protocol downgrade surface; for LOW, handle as backlog hygiene.
- Audit adjacent TLS weaknesses — Pair this finding with cipher-suite, certificate, HSTS, and mutual-auth checks because the real risk usually comes from the combination. Schedule this in the normal hardening program since LOW carries no emergency mitigation or remediation SLA.
- Simply enabling TLS 1.2/1.3 without disabling TLS 1.1 does not clear the exposure; the old protocol remains negotiable.
- EDR does not meaningfully reduce the protocol risk because the issue sits in transport negotiation, not malware execution on the endpoint.
- Certificate renewal alone does not help; a fresh cert on a TLS 1.1 listener is still a TLS 1.1 listener.
Crowdsourced verification payload.
Run this from an auditor workstation or jump host that can reach the target service, not on the target server itself. Invoke it as ./check_tls11.sh example.com 443 or ./check_tls11.sh 10.10.10.20 8443 app.example.com; it needs openssl installed and no special privileges beyond network access to the target port.
#!/usr/bin/env bash
# check_tls11.sh
# Test whether a remote service will negotiate TLS 1.1.
# Usage:
# ./check_tls11.sh <host> <port> [sni]
# Examples:
# ./check_tls11.sh example.com 443
# ./check_tls11.sh 10.0.0.15 8443 app.example.com
# Exit codes:
# 0 = VULNERABLE (TLS 1.1 negotiated)
# 1 = PATCHED (TLS 1.1 not negotiated)
# 2 = UNKNOWN (connection/problem determining state)
set -u
HOST="${1:-}"
PORT="${2:-}"
SNI="${3:-${1:-}}"
TIMEOUT_BIN="timeout"
if [[ -z "$HOST" || -z "$PORT" ]]; then
echo "UNKNOWN - usage: $0 <host> <port> [sni]"
exit 2
fi
if ! command -v openssl >/dev/null 2>&1; then
echo "UNKNOWN - openssl not found"
exit 2
fi
if ! command -v "$TIMEOUT_BIN" >/dev/null 2>&1; then
TIMEOUT_BIN=""
fi
CMD=(openssl s_client -connect "${HOST}:${PORT}" -servername "$SNI" -tls1_1 -brief)
if [[ -n "$TIMEOUT_BIN" ]]; then
OUTPUT=$( { "$TIMEOUT_BIN" 10 "${CMD[@]}"; } < /dev/null 2>&1 )
RC=$?
else
OUTPUT=$( { "${CMD[@]}"; } < /dev/null 2>&1 )
RC=$?
fi
# Successful negotiation indicators vary a bit by OpenSSL build.
if echo "$OUTPUT" | grep -Eqi 'Protocol *: *TLSv1\.1|CONNECTION ESTABLISHED|Cipher is|Ciphersuite:'; then
echo "VULNERABLE - server negotiated TLS 1.1 on ${HOST}:${PORT}"
exit 0
fi
# Common failure patterns when TLS 1.1 is disabled or unsupported.
if echo "$OUTPUT" | grep -Eqi 'alert protocol version|wrong version number|unsupported protocol|no protocols available|handshake failure|tlsv1 alert protocol version'; then
echo "PATCHED - TLS 1.1 negotiation failed on ${HOST}:${PORT}"
exit 1
fi
# Timeouts and network failures are not proof of patch state.
if [[ $RC -ne 0 ]]; then
echo "UNKNOWN - connection failed or result inconclusive for ${HOST}:${PORT}"
exit 2
fi
echo "UNKNOWN - unable to determine TLS 1.1 support for ${HOST}:${PORT}"
exit 2
If you remember one thing.
Sources
- Tenable Nessus Plugin 157288
- RFC 8996 - Deprecating TLS 1.0 and TLS 1.1
- Microsoft Learn - TLS 1.0 and TLS 1.1 deprecation in Windows
- Mozilla Hacks - It's the Boot for TLS 1.0 and TLS 1.1
- Mozilla Hacks - TLS 1.0 and 1.1 Removal Update
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS FAQ
- Tenable Connect - Severity Update on TLS Version 1.1 Protocol Detection
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.