← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
tenable:26928 · CWE-327 · Disclosed 2007-10-08

SSL Weak Cipher Suites Supported

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is a modern front door that still accepts an old skeleton key for compatibility

Tenable plugin 26928 is not a single product CVE; it is a configuration finding that fires when a scanned TLS/DTLS service will still negotiate weak cipher suites. In practice that means any product or version on the affected port can be flagged if it accepts suites like RC4, 3DES, DES, NULL, EXPORT, or other low-strength combinations, even when the same service also offers strong TLS 1.2/1.3 ciphers.

Tenable's MEDIUM label is reasonable as generic crypto hygiene, but it overstates the operational urgency for most enterprises. Real abuse usually requires the attacker to be an active client using a legacy offer set or to hold an on-path/MITM position, and the usual outcome is a confidentiality downgrade rather than host compromise, so for a 10,000-host patch queue this belongs in LOW unless the service is internet-facing, business-critical, and intentionally supports legacy clients.

"Weak ciphers are hygiene debt, not an incident, unless an exposed endpoint still needs legacy crypto"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Enumerate the accepted cipher list

The attacker first confirms the target service will negotiate weak suites using tooling like nmap --script ssl-enum-ciphers, openssl s_client, or testssl.sh. This is commodity enumeration, and Tenable itself is effectively doing the same class of handshake probing.
Conditions required:
  • Network reachability to the TLS service
  • A listening TLS/DTLS port on the target
Where this breaks in practice:
  • None if the port is reachable; this is easy recon
  • Internal-only services already reduce exposed population materially
Detection/coverage: Excellent scanner coverage. Nessus, Nmap ssl-enum-ciphers, SSL Labs, and platform-native checks all detect this class well.
STEP 02

Gain a position that can actually force or use the weak suite

Enumeration is not impact. The attacker must either act as a client that deliberately offers legacy suites or obtain an on-path position with tools like bettercap, Ettercap, or a rogue proxy to influence downgrade behavior and observe traffic.
Conditions required:
  • Either direct client access to the service or on-path network position
  • The target protocol flow must allow the attacker to participate in or observe the handshake
Where this breaks in practice:
  • On-path access implies post-compromise, local network adjacency, or control of client routing
  • Modern browsers and OS crypto stacks often refuse or filter many weak suites by default
Detection/coverage: NDR, switch telemetry, ARP inspection, rogue proxy detection, and endpoint logs may catch MITM setup; direct client abuse is harder to distinguish from normal handshakes unless cipher telemetry is logged.
STEP 03

Negotiate the weak cipher

If the client and server both still support the legacy suite, the handshake can complete using the weaker option. This depends on the exact server configuration and client capabilities; Microsoft notes modern Schannel can filter RC4, DES, export, and null suites when strong crypto settings are used.
Conditions required:
  • The server must still allow the weak suite
  • The client stack must still be able to offer it
  • Protocol/version compatibility must align
Where this breaks in practice:
  • Many modern client libraries cannot or will not offer the weakest suites anymore
  • Servers that prefer strong suites and clients with sane defaults sharply limit practical downgrade paths
Detection/coverage: Usually weak unless you log negotiated cipher suites at the reverse proxy, load balancer, web server, or TLS terminator.
STEP 04

Turn weak crypto into useful access

The payoff is usually downgraded confidentiality or integrity for a session, not code execution. Named breaks such as SWEET32-style 64-bit block issues or deprecated RC4/MD5 usage are situational and often require favorable traffic volume, protocol behavior, or prolonged observation to become operationally useful.
Conditions required:
  • A specific exploitable weakness in the negotiated suite
  • Enough traffic or protocol context to extract value
  • Sensitive data traversing the weakened channel
Where this breaks in practice:
  • This is not a one-packet win and usually not a mass-exploitation path
  • Impact is session-level and data-path dependent, not host takeover
Detection/coverage: TLS downgrade visibility is uneven; packet captures, reverse-proxy logs, and SSL inspection tooling help, but many environments do not retain negotiated-cipher telemetry.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo direct active-exploitation signal found for this plugin finding. This is a misconfiguration class, not a named CVE with current campaign tracking.
Proof-of-concept availabilityCommodity enumeration exists everywhere via nmap ssl-enum-ciphers, openssl s_client, and testssl.sh; there is no single exploit repo because impact depends on the exact weak suite and traffic conditions.
EPSSN/A. FIRST EPSS scores published CVEs; Tenable 26928 is a configuration finding without a CVE identifier.
KEV statusNot KEV-listed / not applicable. CISA KEV tracks exploited CVEs, and this finding does not map to a single CVE.
Vendor CVSS5.3 with vector CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N from Tenable. That baseline assumes network reachability and low confidentiality impact, but it does not capture the real-world need for a legacy-capable client or on-path leverage.
Affected scopeAny TLS/DTLS service on any product/version that still negotiates low-strength suites on the scanned port. This is configuration-driven, not version-range-driven.
Fixed versionNo universal patched version exists. Remediation is a cipher-policy/configuration change in the application, TLS terminator, load balancer, or OS crypto policy; distro backports are irrelevant unless they change default cipher policy.
Scanning/exposure dataNo useful product-level Shodan/Censys/FOFA fingerprint exists because this spans many services and vendors. Exposure has to be measured per endpoint by cipher enumeration, not by product banner.
Disclosure timelineTenable published the plugin on 2007-10-08 and last updated it on 2021-02-03.
Reporting sourceThe NASL logic shows Tenable reports when cipher_report(..., eq:CIPHER_STRENGTH_LOW) finds supported low-strength suites, confirming this is a weak-cipher acceptance check, not a software-version vulnerability.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.2/10)

The decisive factor is attacker position and client capability friction: this is usually only useful if the attacker can negotiate legacy crypto directly or hold an on-path position. Without that, the finding is mostly exposure of old compatibility settings rather than a scalable internet exploit path.

HIGH This is a configuration finding rather than a version-specific CVE
HIGH The downgrade from vendor MEDIUM to LOW based on attacker-position friction
MEDIUM Exact operational risk on a given endpoint without the plugin's per-port cipher output

Why this verdict

  • Start from Tenable's 5.3 baseline, then subtract for attacker position. Real abuse commonly needs a malicious legacy-capable client or an on-path/MITM foothold, which is materially harder than a generic unauthenticated remote exploit.
  • Exposure population is much narrower than the plugin name suggests. 26928 fires on any reachable TLS service, including internal-only ports, admin planes, and compatibility listeners that are never exposed to arbitrary internet clients.
  • Blast radius is session confidentiality downgrade, not host compromise. Weak cipher acceptance is bad crypto hygiene, but by itself it does not give RCE, auth bypass, or domain-wide lateral movement.

Why not higher?

There is no KEV signal, no product-specific exploit chain, and no evidence that this finding alone is being mass-weaponized. Modern clients, load balancers, and OS crypto libraries also suppress many of the weakest suites by default, which breaks a lot of theoretical attack paths in practice.

Why not lower?

This is still a real security control gap, especially on internet-facing services or places where legacy clients are common. If the supported suite is truly broken (RC4, DES, NULL, EXPORT, weak MD5 constructions), an attacker with the right position can absolutely turn it into data exposure and compliance pain.

05 · Compensating Control

What to do — in priority order.

  1. Isolate legacy clients — Move any unavoidable legacy TLS support to a separate listener, VIP, or internal-only endpoint so the primary service can run a modern cipher set. For a LOW verdict there is no SLA (treat as backlog hygiene), but do it in the next scheduled TLS hardening cycle rather than leaving the exception on your main edge.
  2. Enforce strong cipher policy — Disable RC4, 3DES, DES, NULL, EXPORT, anonymous, and similarly weak suites in the application, reverse proxy, load balancer, or OS crypto policy, and prefer TLS 1.2/1.3 with modern AEAD suites. For a LOW verdict there is no SLA (treat as backlog hygiene), so fold this into standard config management instead of emergency patching.
  3. Log negotiated ciphers — Turn on TLS handshake telemetry at the edge so you can see whether weak suites are ever actually negotiated before and after cleanup. For a LOW verdict there is no SLA (treat as backlog hygiene), but this is the fastest way to separate dead config from real business dependency.
What doesn't work
  • A WAF does not fix weak TLS negotiation; this happens before HTTP policy enforcement matters.
  • Simply patching the OS often does not clear the finding if the application or load balancer still advertises legacy suites.
  • Replacing the certificate alone does not help; key material and PKI are separate from cipher-suite policy.
06 · Verification

Crowdsourced verification payload.

Run this from an auditor workstation or jump host with network reachability to the target service, not from the target itself. Invoke it as ./check_weak_tls.sh <host> <port> [sni], for example ./check_weak_tls.sh app01.example.com 443 app01.example.com; no root is required, but nmap should be installed for best results.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_weak_tls.sh
# Purpose: detect whether a remote TLS service still negotiates weak cipher suites
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN

set -u

HOST="${1:-}"
PORT="${2:-}"
SNI="${3:-${1:-}}"

if [[ -z "$HOST" || -z "$PORT" ]]; then
  echo "Usage: $0 <host> <port> [sni]"
  echo "UNKNOWN"
  exit 2
fi

have_cmd() { command -v "$1" >/dev/null 2>&1; }

# Prefer Nmap because it enumerates accepted suites directly.
if have_cmd nmap; then
  OUT="$(nmap -Pn -sV --script ssl-enum-ciphers -p "$PORT" --script-args tls.servername="$SNI" "$HOST" 2>/dev/null)"
  if [[ -z "$OUT" ]]; then
    echo "UNKNOWN"
    exit 2
  fi

  # Flag classic weak patterns commonly associated with Nessus 26928-style findings.
  if echo "$OUT" | grep -Eiq '(_3DES_|\b3DES\b|_RC4_|\bRC4\b|_DES_|\bDES\b|_NULL_|\bNULL\b|EXPORT|MD5 for message integrity|least strength: [C-F])'; then
    echo "VULNERABLE"
    exit 0
  fi

  if echo "$OUT" | grep -Eiq 'ssl-enum-ciphers:'; then
    echo "PATCHED"
    exit 1
  fi
fi

# Fallback to OpenSSL point checks if Nmap is unavailable.
if ! have_cmd openssl; then
  echo "UNKNOWN"
  exit 2
fi

FOUND=0
TESTED=0

probe() {
  local proto="$1"
  local cipher="$2"
  local out
  out="$(echo | openssl s_client -connect "${HOST}:${PORT}" -servername "$SNI" "$proto" -cipher "$cipher" -brief 2>/dev/null || true)"

  # OpenSSL may refuse local use of legacy ciphers; that means this probe is inconclusive, not safe.
  if echo "$out" | grep -Eiq 'no cipher match|unsupported protocol|wrong version number|unknown option'; then
    return 1
  fi

  TESTED=1
  if echo "$out" | grep -Eiq 'Protocol *:|Ciphersuite *:'; then
    FOUND=1
    return 0
  fi
  return 1
}

# Common weak suites; availability depends on local OpenSSL build.
for proto in -tls1 -tls1_1 -tls1_2; do
  for cipher in RC4-SHA RC4-MD5 DES-CBC3-SHA DES-CBC-SHA NULL-SHA NULL-MD5 EXP-RC4-MD5 ADH-AES128-SHA; do
    if probe "$proto" "$cipher"; then
      echo "VULNERABLE"
      exit 0
    fi
  done
done

if [[ "$TESTED" -eq 1 ]]; then
  echo "PATCHED"
  exit 1
fi

echo "UNKNOWN"
exit 2
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, separate internet-facing findings from internal-only noise and pull the actual negotiated cipher list for each flagged port before you burn patch time. For this LOW reassessment there is no noisgate mitigation SLA and no noisgate remediation SLA — treat as backlog hygiene: clean up edge-facing services in your next scheduled TLS hardening window, document justified legacy exceptions, and do not let this outrank real initial-access or active-exploitation items.

Sources

  1. Tenable plugin 26928
  2. Vulners mirror of Tenable NASL logic
  3. CISA Known Exploited Vulnerabilities Catalog
  4. FIRST EPSS FAQ
  5. Nmap ssl-enum-ciphers documentation
  6. OWASP Transport Layer Security Cheat Sheet
  7. Microsoft TLS Cipher Suites in Windows 11
  8. Red Hat guidance on weak/medium SSL cipher findings
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.