← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
tenable:69551 · CWE-326 · Disclosed 2013-09-03

SSL Certificate Chain Contains RSA Keys Less Than 2048 bits

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

This is a rusted padlock on a side gate, not someone already inside the datacenter

Tenable plugin 69551 fires when a TLS service presents at least one X.509 certificate in the served chain with an RSA key shorter than 2048 bits. In practice that usually means a legacy leaf or intermediate certificate; Tenable explicitly notes it does not flag root certificates under 2048 bits when they were issued before 2010-12-31, because those old trust anchors were grandfathered by the public-web rules.

Tenable's LOW rating is basically right. This is a real cryptographic weakness and a standards/compliance problem, but it is not a modern mass-exploitation primitive: the attacker still needs an active interception position, a way to redirect clients, or an expensive/specialized path to abuse the weak key. Browser and platform distrust of sub-2048-bit certs further reduces real-world exploitability, although it increases the chance of outages and audit findings.

"Weak RSA in a cert chain is a cleanup job, not a fire drill."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Enumerate the weak chain with openssl or zgrab2

The attacker first connects to the target TLS service and inspects the served certificate chain. Any RSA key under 2048 bits in the leaf or intermediate chain is immediately visible from the handshake and is trivial to inventory at scale with standard TLS scanning tools.
Conditions required:
  • Network reachability to the TLS service
  • The service actually presents the weak certificate during handshake
Where this breaks in practice:
  • Many enterprises only expose these services internally, which already implies post-initial-access attacker position
  • Modern scanners find this easily, so defenders usually know about it before an attacker needs to
Detection/coverage: Excellent coverage. Nessus, nmap NSE, testssl.sh, sslscan, zgrab2, and most ASM products detect this reliably.
STEP 02

Gain a man-in-the-middle or redirection position with mitmproxy/rogue AP/BGP hijack

A weak certificate by itself does not hand over the service. To get value, the attacker generally needs to sit in-path, redirect victims to a fake endpoint, or otherwise control where clients connect so a forged or cloned certificate can be used.
Conditions required:
  • Attacker can intercept traffic, poison DNS, hijack routing, or lure clients to a lookalike endpoint
  • Victims trust the presented chain and do not pin the certificate
Where this breaks in practice:
  • This is a major real-world brake: it usually requires internal network presence, Wi-Fi adjacency, upstream control, or another prior compromise stage
  • Certificate pinning, HSTS, VPNs, and managed trust stores reduce viable victim populations
Detection/coverage: Weak cert scanners do not see this step. Detection shifts to DNS monitoring, NAC, rogue AP detection, BGP monitoring, and TLS inspection logs.
STEP 03

Exploit the weak key material with cryptanalysis or key compromise tooling

If the weak cert is 1024-bit RSA, a well-resourced attacker may attempt factorization or leverage separate private-key theft to impersonate the service. The served certificate weakness matters because once the private key is available, the attacker can terminate TLS as the victim service.
Conditions required:
  • The weak key is actually the active leaf or a meaningful intermediate
  • Attacker has sufficient compute/resources or an alternate path to the private key
Where this breaks in practice:
  • This is the biggest downgrade pressure on severity: breaking sub-2048 RSA in the real world is not a commodity attacker workflow
  • If the weak key is an internal cert on a forgotten appliance, the blast radius is narrow even if compromise succeeds
  • Many clients already reject these chains, limiting the number of exploitable victims
Detection/coverage: No scanner can prove active cryptanalysis. Detection is indirect: key reuse anomalies, unexpected certificate fingerprints, and TLS telemetry mismatches.
STEP 04

Impersonate the service and harvest sessions or credentials

With a usable private key and a traffic position, the attacker can stand up a spoofed endpoint and attempt credential capture or session interception. Impact is usually confidentiality/integrity against the specific service, not broad host takeover.
Conditions required:
  • Victims connect to the attacker-controlled endpoint
  • Applications do not hard-fail on trust or pinning errors
Where this breaks in practice:
  • Even successful exploitation typically stays scoped to one service or trust domain
  • This does not directly yield code execution or privilege escalation on the server
Detection/coverage: Watch for duplicate cert fingerprints on unexpected IPs, certificate transparency anomalies for public certs, and user reports of trust warnings.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo CISA KEV entry and no meaningful evidence of this being used as a standalone modern intrusion vector. This is primarily a legacy crypto hygiene issue, not a weaponized bug class.
Proof-of-concept availabilityDiscovery is trivial with openssl, sslscan, testssl.sh, nmap, or zgrab2. What is not commodity is turning a 1024-bit or otherwise undersized RSA cert into practical enterprise compromise.
EPSSN/Ano CVE identifier, so FIRST EPSS does not apply.
KEV statusN/Ano CVE identifier, so CISA KEV does not apply.
Vendor severity vs realityTenable marks plugin 69551 as LOW. That is the right bucket because the exploit chain requires attacker position plus cryptographic or key-compromise leverage, not just network reachability.
Affected scopeAny TLS service that serves a leaf or intermediate RSA certificate under 2048 bits. Tenable states pre-2010-12-31 root anchors are exempt from this specific finding logic.
Fixed stateReissue the offending certificate or chain component with RSA 2048+ or ECDSA, then redeploy the complete chain. There is no software patch level here; this is a PKI artifact replacement.
Exposure prevalencePublic-web prevalence is low and getting lower. F5's 2021 scan of the top 1 million sites found only 0.3% using 1024-bit RSA certificates, which says this is now mostly a legacy edge-case population.
Standards and client behaviorNIST SP 800-131A treats RSA <2048 as disallowed for generation/use cases, while Chromium and Mozilla have spent years deprecating or distrusting such chains. That cuts exploit reliability but raises compatibility and audit risk.
Disclosure / provenanceTenable published plugin 69551 on 2013-09-03 and updated it on 2018-11-15. The finding is grounded in CA/B Forum minimums and browser ecosystem deprecation of weak RSA certificates.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to LOW (2.4/10)

The decisive factor is that this weakness usually needs an active interception/redirection position before it becomes useful to an attacker. On top of that, the reachable population is small and shrinking because modern clients and public PKI rules have been pushing sub-2048-bit RSA out of circulation for years.

HIGH Severity bucket for the generic finding
MEDIUM Impact variance by whether the weak key is leaf vs intermediate and public vs internal

Why this verdict

  • Requires more than reachability: seeing a weak cert is easy; abusing it typically needs MITM, redirection, or another prior-compromise stage.
  • Narrow exposed population: public-facing sub-2048-bit RSA certs are now uncommon, and many findings are on internal appliances, old middleware, or management planes.
  • Blast radius is service-scoped: even a successful abuse path usually enables impersonation of one TLS endpoint or trust path, not remote code execution across the estate.

Why not higher?

This is not a one-packet internet-to-root problem. There is no commodity attacker workflow where simply finding this issue on a host predictably yields server compromise, and modern browsers/platforms already distrust much of this weak-cert population.

Why not lower?

It is still a real cryptographic weakness, not a false positive by default. If the weak key is on a business-critical auth portal, B2B endpoint, or sensitive internal service, the confidentiality and trust implications are real enough that it should stay above IGNORE.

05 · Compensating Control

What to do — in priority order.

  1. Limit exposure — Restrict the affected TLS service to trusted networks, VPN users, or administrative jump paths where possible. For a LOW verdict there is no SLA (treat as backlog hygiene), so apply this during normal change windows if the service is more exposed than it should be.
  2. Pin or tightly manage trust where feasible — Use certificate pinning, private trust stores, or strict enterprise trust policy for sensitive internal apps so a forged or swapped certificate is less likely to be accepted. For LOW, fold this into normal engineering backlog rather than emergency change activity.
  3. Monitor certificate fingerprints — Baseline the presented leaf and intermediate fingerprints and alert on changes from unexpected IPs or load balancers. This gives you a fighting chance to spot impersonation without waiting for user trust-warning tickets.
  4. Queue PKI replacement — Generate a replacement cert using RSA 2048+ or ECDSA, validate the full served chain, and retire the old keypair. For LOW, there is no hard mitigation deadline; handle it as planned certificate-maintenance work.
What doesn't work
  • A WAF does not fix a weak certificate key; this is below the HTTP layer.
  • Disabling TLS 1.0/1.1 alone does not help if the served certificate itself still uses an undersized RSA key.
  • Changing cipher suites without reissuing the certificate does not change the RSA key length in the chain.
06 · Verification

Crowdsourced verification payload.

Run this from an auditor workstation or scan node that can reach the target TLS service. Invoke it as ./check_weak_rsa_cert.sh example.com 443; it needs only network access to the target and local openssl, no admin privileges.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_weak_rsa_cert.sh
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -u

HOST="${1:-}"
PORT="${2:-443}"
TMPDIR="$(mktemp -d 2>/dev/null || mktemp -d -t weakrsa)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT

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

if ! command -v openssl >/dev/null 2>&1; then
  echo "UNKNOWN - openssl not found"
  exit 2
fi

CHAIN_FILE="$TMPDIR/chain.pem"
if ! timeout 15 openssl s_client -connect "${HOST}:${PORT}" -servername "$HOST" -showcerts </dev/null >"$CHAIN_FILE" 2>/dev/null; then
  echo "UNKNOWN - TLS connection failed to ${HOST}:${PORT}"
  exit 2
fi

awk 'BEGIN{c=0} /-----BEGIN CERTIFICATE-----/{c++} c>0{print > sprintf("'"$TMPDIR"'/cert_%02d.pem", c)} /-----END CERTIFICATE-----/{next}' "$CHAIN_FILE"

shopt -s nullglob
CERTS=("$TMPDIR"/cert_*.pem)
if [ ${#CERTS[@]} -eq 0 ]; then
  echo "UNKNOWN - no certificates parsed from handshake"
  exit 2
fi

found_vuln=0
found_cert=0

for cert in "${CERTS[@]}"; do
  if ! subj="$(openssl x509 -in "$cert" -noout -subject 2>/dev/null)"; then
    continue
  fi
  found_cert=1

  pubinfo="$(openssl x509 -in "$cert" -pubkey -noout 2>/dev/null | openssl pkey -pubin -text -noout 2>/dev/null)"
  if echo "$pubinfo" | grep -qi 'RSA Public-Key\|Public-Key: ([0-9]\+ bit)'; then
    bits="$(echo "$pubinfo" | sed -n 's/.*Public-Key: (\([0-9][0-9]*\) bit).*/\1/p' | head -n1)"
    if [ -n "$bits" ]; then
      echo "INFO - $subj - RSA ${bits} bits"
      if [ "$bits" -lt 2048 ]; then
        found_vuln=1
      fi
    else
      echo "INFO - $subj - RSA key present but size parse failed"
    fi
  else
    algo_line="$(echo "$pubinfo" | head -n1 | tr -d '\r')"
    echo "INFO - $subj - non-RSA or unparsed key (${algo_line:-unknown})"
  fi

done

if [ "$found_cert" -eq 0 ]; then
  echo "UNKNOWN - certificates were present but could not be decoded"
  exit 2
fi

if [ "$found_vuln" -eq 1 ]; then
  echo "VULNERABLE"
  exit 1
else
  echo "PATCHED"
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: validate whether the weak key is on the leaf cert actually served to users or just a legacy chain component, then scope whether the service is public-facing, internal-only, or admin-only. Because this lands LOW, the noisgate mitigation SLA and noisgate remediation SLA do not impose a deadline here — treat it as backlog hygiene, document the exposure, and fold certificate reissuance into the next normal PKI maintenance window rather than disrupting production for an emergency patch cycle.

Sources

  1. Tenable plugin 69551
  2. Tenable PCI analogue plugin 73459
  3. NIST SP 800-131A Rev. 2
  4. CA/Browser Forum Baseline Requirements
  5. Chromium intent to remove support for RSA keys smaller than 2048 bits
  6. Mozilla Security Blog: Phasing out Certificates with 1024-bit RSA Keys
  7. F5 Labs 2021 TLS Telemetry Report
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.