← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
tenable:71049 · CWE-327 · Disclosed 2013-11-22

SSH Weak MAC Algorithms Enabled

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

This is an old lock cylinder on a steel door: bad practice, visible to auditors, but rarely the way intruders actually get in

This Tenable finding is not a software-version vulnerability; it is a configuration exposure. Plugin 71049 fires when an SSH server advertises MD5-based or 96-bit truncated MACs such as hmac-md5, hmac-md5-96, or hmac-sha1-96, and Tenable explicitly notes it checks the server options only, not a vulnerable package version. In practice, any SSH implementation or appliance config that still offers those MACs is in scope, so there is no universal affected version range and no single patched build to chase.

Tenable calling this LOW is basically right. The real-world attack requires an attacker to be on path to an SSH session and, in many environments, also depends on a client actually negotiating one of the weaker MACs instead of a stronger default like hmac-sha2-* or *[email protected]. That makes this a crypto hygiene / compliance issue first and an operational intrusion path only in narrower, already-bad conditions.

"Weak SSH MACs are mostly a hardening gap, not a breach path, unless an attacker is already on-path."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Enumerate the server's advertised MACs

An attacker or scanner connects to TCP/22 and asks what SSH algorithms the server supports. Commodity tooling like nmap with ssh2-enum-algos or ssh-audit will identify whether MD5 or 96-bit MACs are still enabled without authentication.
Conditions required:
  • SSH reachable from the attacker's network position
  • No network ACL blocking enumeration
Where this breaks in practice:
  • If SSH is management-only behind VPN, jump host, or private address space, the reachable population drops hard
  • This step proves exposure, not exploitability
Detection/coverage: Excellent coverage. Tenable plugin 71049, nmap --script ssh2-enum-algos, and ssh-audit all detect this remotely.
STEP 02

Gain an on-path position

To turn weak MAC support into something useful, the attacker usually needs a man-in-the-middle position on the same segment, gateway path, Wi-Fi, VPN edge, or other transit point. Generic MITM tooling such as bettercap exists, but the hard part is not the tool; it is owning the network position in the first place.
Conditions required:
  • Attacker already has local network presence, rogue infrastructure, or compromised transit
  • Target SSH traffic crosses that controlled path
Where this breaks in practice:
  • This is a post-initial-access or adjacent-network requirement
  • Modern enterprise segmentation, NAC, VPN design, and switch protections block this more often than scanner output suggests
Detection/coverage: Weak. The MAC finding itself does not reveal MITM activity; you need network telemetry, NAC alerts, ARP inspection, and switch/router logs.
STEP 03

Get a session to actually use the weaker MAC

Even if the server advertises weak MACs, many modern clients prefer stronger algorithms by default. The attacker needs a legacy client, manually weakened client config, or an environment where negotiated overlap makes the weaker MAC relevant.
Conditions required:
  • Client and server share at least one weak MAC
  • Client policy does not force stronger MACs first
Where this breaks in practice:
  • Allowing a weak MAC is not the same as selecting it during negotiation
  • OpenSSH defaults already prefer stronger *-etm and SHA-2 options
Detection/coverage: Partial. Host-side SSH debug logs and packet capture can show negotiated algorithms, but most vulnerability scanners do not verify which MAC was actually used in production sessions.
STEP 04

Abuse reduced integrity assurances

At that point the attacker is not getting a turnkey shell from a packet. The realistic downside is weakened transport integrity under narrow conditions, plus policy noncompliance and unnecessary legacy cryptography left exposed on a management service.
Conditions required:
  • Successful on-path access
  • Weak MAC actually negotiated
  • Attack conditions compatible with the negotiated algorithm and implementation behavior
Where this breaks in practice:
  • There is no broad, current, vendor-tracked exploit chain here like a KEV-listed RCE
  • Impact is much smaller than scanner phrasing often implies
Detection/coverage: Poor from vuln scanners alone. This is primarily assessed as a hardening gap unless paired with separate evidence of network interception or legacy client dependency.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo CISA KEV entry and no authoritative evidence of active mass exploitation tied to this Tenable plugin. This is a misconfiguration finding, not a tracked internet-fire CVE.
Proof-of-concept availabilityThere is no vuln-specific RCE PoC to prioritize here. Public tooling such as ssh-audit and nmap ssh2-enum-algos enumerate the exposure remotely.
EPSSNot applicable. EPSS is a CVE-based model; this finding has no CVE identifier.
KEV statusNot applicable / not listed. CISA's KEV catalog tracks exploited CVEs, and this plugin is a configuration issue rather than a CVE record.
CVSS / vectorNo vendor CVSS vector published on the Tenable plugin page. Tenable marks it simply as LOW.
Affected scopeAny SSH service that still advertises MD5 or 96-bit truncated MACs, including hmac-md5, hmac-md5-96, hmac-sha1-96, and related *[email protected] legacy forms where configured.
Fixed stateThere is no universal patched version. The secure state is a config change that removes weak MACs and leaves stronger options like hmac-sha2-256, hmac-sha2-512, and preferably *[email protected].
Exposure realityDetection is remote and cheap, but exploitation requires much more: reachable SSH, then an on-path attacker position, then a session that actually negotiates a weak MAC. That chain sharply narrows the real risk population.
Disclosure / publicationTenable published plugin 71049 on 2013-11-22. The plugin page currently shows it as updated on 2026-01-12.
Standards contextRFC 4253 defined hmac-md5 and truncated *-96 MACs historically, while modern OpenSSH docs recommend stronger defaults and note *-etm MACs are safer. NIST SP 800-131A also treats aging cryptography as carrying increasing risk over time.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to LOW (2.3/10)

The decisive factor is the attacker position requirement: this is usually only exploitable if the adversary is already on path to an SSH session. On top of that, merely advertising weak MACs does not mean they are negotiated, so the exposed population is materially smaller than the scan count.

HIGH Severity bucket remains LOW
HIGH This is a configuration finding, not a versioned software bug
MEDIUM Exact business risk depends on whether legacy clients still negotiate the weak MACs

Why this verdict

  • Downward pressure: requires on-path access. This is not unauthenticated remote code execution; it usually implies the attacker already controls a local segment, gateway path, Wi-Fi, or VPN transit.
  • Downward pressure: weak MACs may be enabled but never selected. Modern OpenSSH defaults prefer stronger SHA-2 and *-etm options, so many real sessions won't use the bad algorithms at all.
  • Downward pressure: no software flaw to weaponize at scale. Tenable explicitly says the plugin checks server options only, not vulnerable versions, and there is no CVE/KEV/EPSS signal amplifying urgency.

Why not higher?

If this were directly reachable internet infrastructure with a pre-auth remote exploit or reliable active exploitation evidence, the score would climb fast. But this finding needs multiple stacked prerequisites—reachability, on-path position, and negotiated use of the weaker MAC—which makes the real attack path much narrower than the crypto label alone suggests.

Why not lower?

It is still a legitimate security weakness on a management protocol, and auditors are right to push it out of the environment over time. Publicly reachable SSH, legacy SFTP integrations, and old network gear can still keep these MACs live longer than teams think, so this should remain on the hardening backlog rather than be dismissed entirely.

05 · Compensating Control

What to do — in priority order.

  1. Remove weak MACs from server config — Delete MD5 and truncated 96-bit MACs from sshd_config or the platform-specific SSH policy so the server cannot negotiate them. For a LOW verdict there is no mitigation SLA; treat this as backlog hygiene and complete it in the next normal SSH hardening cycle.
  2. Restrict SSH exposure — Limit SSH to admin networks, VPN, bastions, or allowlisted source ranges so casual internet enumeration cannot even reach the service. This reduces the reachable population immediately; for LOW, schedule it as part of routine access-control cleanup rather than emergency work.
  3. Standardize client/server crypto policy — Push a supported MAC allowlist to both servers and managed clients so legacy overlap does not silently keep weak algorithms negotiable. With a LOW verdict, handle this during your next baseline refresh and exceptions review.
  4. Validate negotiated algorithms on critical paths — For high-value bastions, SFTP gateways, and network gear, confirm what MACs are actually negotiated in live sessions instead of trusting scanner presence alone. That lets you identify the few systems where this finding is operationally real versus merely configurable.
What doesn't work
  • Simply updating unrelated packages does not fix this by itself; this is commonly a retained config choice, not a missing patch.
  • MFA helps authentication but does not change SSH MAC negotiation, so it does not remediate the cryptographic weakness.
  • EDR on the server will not prevent a weak MAC from being advertised or negotiated on the wire.
  • Rotating host keys is orthogonal; it changes server identity material, not the allowed MAC algorithm set.
06 · Verification

Crowdsourced verification payload.

Run this on the target Linux/macOS host that exposes SSH, preferably as root so sshd can fully evaluate the active configuration. Save as check_ssh_weak_macs.sh and run sudo bash check_ssh_weak_macs.sh /etc/ssh/sshd_config; it outputs VULNERABLE, PATCHED, or UNKNOWN and exits with 1, 0, or 2 respectively.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_ssh_weak_macs.sh
# Purpose: determine whether the local SSH server is configured to allow weak MD5 or 96-bit MAC algorithms.
# Exit codes:
#   0 = PATCHED
#   1 = VULNERABLE
#   2 = UNKNOWN

set -u

CFG="${1:-/etc/ssh/sshd_config}"

find_sshd() {
  if command -v sshd >/dev/null 2>&1; then
    command -v sshd
    return 0
  fi
  for p in /usr/sbin/sshd /usr/local/sbin/sshd /sbin/sshd; do
    if [ -x "$p" ]; then
      echo "$p"
      return 0
    fi
  done
  return 1
}

SSHD_BIN="$(find_sshd)" || {
  echo "UNKNOWN: sshd binary not found"
  exit 2
}

if [ ! -f "$CFG" ]; then
  echo "UNKNOWN: config file not found: $CFG"
  exit 2
fi

# Try to evaluate the effective server config. This handles Include directives and defaults better than raw parsing.
MACS_LINE=""
if MACS_LINE="$($SSHD_BIN -T -f "$CFG" 2>/dev/null | awk '/^macs /{print $2; exit}')"; then
  :
elif MACS_LINE="$($SSHD_BIN -G -f "$CFG" 2>/dev/null | awk '/^macs /{print $2; exit}')"; then
  :
else
  echo "UNKNOWN: could not evaluate active sshd configuration with '$SSHD_BIN -T' or '-G'"
  exit 2
fi

if [ -z "$MACS_LINE" ]; then
  echo "UNKNOWN: no effective MAC list returned by sshd"
  exit 2
fi

WEAK_REGEX='(^|,)(hmac-md5|hmac-md5-96|hmac-sha1-96|[email protected]|[email protected]|[email protected])(,|$)'

if echo "$MACS_LINE" | grep -Eq "$WEAK_REGEX"; then
  echo "VULNERABLE: weak MACs enabled -> $MACS_LINE"
  exit 1
fi

echo "PATCHED: no MD5 or 96-bit weak MACs found -> $MACS_LINE"
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: do not treat Tenable 71049 like a patch emergency. Triage it as SSH hardening backlog, confirm whether any public-facing bastions, SFTP gateways, or network devices still negotiate weak MACs with real clients, and then remove MD5 / 96-bit MACs during the next standards update. For a LOW verdict there is no mitigation SLA and noisgate mitigation SLA does not apply; this is backlog hygiene. Use the noisgate remediation SLA only as a soft planning reference here: clean it up with your normal config-baseline workstream rather than burning an outage window on it.

Sources

  1. Tenable plugin 71049
  2. IETF RFC 4253 SSH Transport Layer Protocol
  3. OpenBSD `sshd_config` manual
  4. NIST SP 800-131A Rev. 2
  5. `ssh-audit` GitHub repository
  6. Nmap `ssh2-enum-algos` script documentation
  7. CISA Known Exploited Vulnerabilities Catalog
  8. FIRST EPSS FAQ
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.