← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
tenable:100634 · CWE-306 · Disclosed 2017-06-06

Redis Server Unprotected by Password Authentication

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

This is an unlocked server room door, not a zero-click wall-breach

Tenable plugin 100634 fires when a Redis service answers without requiring AUTH or ACL-based authentication. In practice, this affects any Redis deployment the scanner can reach that accepts unauthenticated commands, regardless of branch version; newer Redis releases added protected-mode, but that only helps when admins leave the safer defaults in place and do not bind broadly or disable the protection.

Tenable rates this plugin Critical, and that is too aggressive as a fleet-wide default. The real risk hinges on *who can reach port 6379 from where*: if it is internet-facing, this is absolutely a live-fire incident; if it is only reachable on an internal app segment, it is still bad but usually a post-initial-access lateral-movement problem rather than an enterprise-wide pre-auth internet RCE.

"Unauthenticated Redis is dangerous, but it is exposure-driven misconfiguration, not an automatic critical from every network."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Find a reachable Redis listener

The attacker uses commodity scanners such as zmap, masscan, or campaign tooling like RedisRaider to locate hosts speaking Redis on TCP/6379 or alternate ports. No exploit is needed yet; this is pure reachability and service fingerprinting.
Conditions required:
  • Redis TCP port is reachable from the attacker's network position
  • Security groups, firewalls, or network ACLs allow the connection
Where this breaks in practice:
  • Many enterprise Redis nodes are private-only and not internet-exposed
  • Redis protected-mode can block remote access when safer defaults remain intact
  • Some deployments bind only to loopback or a narrow application subnet
Detection/coverage: External ASM, Censys/Shodan-style exposure scans, and simple port inventory catch this step well; credentialed host scanners are not required.
STEP 02

Confirm no authentication gate

The attacker issues trivial commands with redis-cli such as PING, INFO, or KEYS * and watches for success instead of NOAUTH. This is exactly what the Tenable plugin is proving from the scanner's vantage point.
Conditions required:
  • Redis does not require AUTH or ACL login for the attacker's connection path
Where this breaks in practice:
  • Redis 6+ ACLs may still protect the instance even if legacy requirepass is not used
  • Middleboxes or service meshes may restrict who can actually reach the listener
Detection/coverage: Tenable 100634 detects this condition remotely. Nmap NSE and ad-hoc redis-cli checks can validate it quickly.
STEP 03

Abuse data-plane access

Once inside, the attacker can read, write, flush, and manipulate in-memory data directly, which is often enough for session theft, cache poisoning, tampering, or application outage. On exposed internet systems, this is the point where opportunistic cryptomining crews and botnets usually start.
Conditions required:
  • Unauthenticated command execution is allowed
  • The stored data has value or the application trusts Redis contents
Where this breaks in practice:
  • Some Redis instances only hold low-value cache data with short TTLs
  • Application impact varies sharply by workload: session store is worse than ephemeral cache
Detection/coverage: Application telemetry, Redis command auditing where available, and EDR on adjacent app servers may show anomalous FLUSH*, CONFIG, or bulk key activity.
STEP 04

Escalate to host persistence if the deployment is sloppy

Campaigns such as HeadCrab and RedisRaider weaponize Redis features like replication, CONFIG SET, cron-path writes, or module loading to pivot from data-store access into malware execution and persistence. This is the ugly case, but it is not guaranteed on every hit.
Conditions required:
  • Dangerous commands are permitted
  • Redis runs with filesystem or OS privileges that make cron/SSH/module abuse viable
  • The host is Linux-like or otherwise compatible with the attacker's persistence path
Where this breaks in practice:
  • Least-privilege service accounts, container hardening, read-only filesystems, and command restrictions often break the classic cron/authorized_keys path
  • Not every unauthenticated Redis instance can be converted into host-level code execution
Detection/coverage: EDR/runtime sensors are good at catching spawned shells, cron edits, dropped miners, and suspicious module loads; network-only scanners are weak once the attacker moves to the host layer.
03 · Intelligence Metadata

The supporting signals.

Vendor findingTenable plugin 100634 is currently labeled Critical, not High; it was published on 2017-06-06 and updated on 2022-04-11.
In-the-wild statusYes, actively abused when exposed. Public reporting from Aqua HeadCrab and Datadog RedisRaider shows opportunistic malware targeting publicly reachable unauthenticated Redis.
KEV statusNot applicable. This is a misconfiguration finding, not a specific CVE, so there is no CISA KEV entry tied to plugin 100634.
Proof-of-concept availabilityTrivial. Basic validation needs only redis-cli; no custom exploit is required. Full weaponization is already embedded in public threat writeups for HeadCrab and RedisRaider.
EPSSN/A. There is no CVE identifier for this plugin condition, so no FIRST EPSS score exists.
CVSS / vectorNo canonical CVSS vector. Tenable assigns plugin severity, but this is best treated as exposure-dependent unauthorized network access rather than a version-bound software flaw.
Affected versionsAny Redis deployment that accepts unauthenticated commands from the scanner path is affected. Redis protected-mode was introduced for newer branches, and Censys notes protection starts in versions 3.0.0+, but admins can still disable it or bind broadly.
Fixed versionNo patched build number. Durable remediation is configuration-based: require AUTH or Redis 6+ ACLs, keep protected-mode effective, and restrict network reachability.
Exposure telemetryCensys reported 350,675 internet-accessible Redis services across 260,534 hosts, with 39,405 not requiring authentication; in the United States, it observed 96,904 total Redis services and 5,108 unauthenticated.
Research / reportingRedis itself documents that it is designed for trusted environments and warns against direct internet exposure. Censys, Aqua, and Datadog all document real-world abuse of exposed Redis.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (8.3/10)

The decisive factor is attacker position: this finding only matters where the attacker can already reach Redis over the network, so exposure is the whole game. I kept it at HIGH because once that reachability exists, there is no exploit chain to build—unauthenticated access is immediate, and active criminal campaigns already capitalize on exactly this condition.

HIGH Downgrade from Tenable Critical to HIGH for default enterprise prioritization
HIGH Assessment that internet-exposed instances remain near-emergency risk
MEDIUM Host-level takeover likelihood on any given affected node

Why this verdict

  • Baseline down from Tenable Critical: this is a misconfiguration requiring network reachability, not a wormable product bug that self-executes across every deployment.
  • Exposure fraction matters: a large share of enterprise Redis nodes live on private app segments, so many 100634 hits imply post-initial-access lateral movement rather than unauthenticated internet compromise.
  • Immediate abuse once reachable: if an attacker can talk to the service, they can usually read or tamper with data right away with redis-cli; there is essentially zero exploit complexity at that point.
  • Active exploitation keeps it high: HeadCrab and RedisRaider show this condition is not theoretical, so I will not score it as medium backlog hygiene.
  • OS compromise is conditional, not automatic: classic cron, authorized_keys, replication, or module-loading abuse depends on command availability, runtime privileges, and filesystem conditions.

Why not higher?

I did not keep Tenable's Critical rating because the plugin does not prove internet exposure, and it does not prove guaranteed host-level code execution. In many enterprises, an attacker must already be on an internal network path to reach Redis at all, which compounds downward pressure on severity.

Why not lower?

I did not drop this to Medium because unauthenticated access to a live data store is still direct compromise of confidentiality and integrity from any reachable segment. Public threat reporting shows real, ongoing abuse of exposed Redis, so treating it as routine hardening would understate the operational risk.

05 · Compensating Control

What to do — in priority order.

  1. Block untrusted network paths — Restrict TCP/6379 and any nonstandard Redis ports to known application sources only. Because exposed Redis is actively exploited, deploy this immediately, within hours, rather than waiting for the normal HIGH-window.
  2. Enforce Redis authentication — Enable Redis 6+ ACLs where supported, or legacy requirepass where that is what the application stack uses, then retest from the same network path Nessus used. Apply this immediately, within hours on any externally reachable or shared-segment instance.
  3. Verify protected-mode and bind settings — Confirm Redis is not listening broadly with unsafe bind settings and that protected-mode has not been disabled in a way that defeats default safety rails. Do this within hours for internet-facing estates and within 30 days for the rest of the HIGH population.
  4. Constrain dangerous command paths — Use ACLs to remove or tightly limit high-risk capabilities such as CONFIG, replication control, MODULE, and script execution for application identities. Roll this out within 30 days to reduce the chance that a data-plane exposure turns into host persistence.
  5. Hunt for post-exploitation artifacts — Check affected Linux hosts for suspicious cron entries, altered Redis save directories, unexpected modules, miner processes, and unauthorized SSH keys. Prioritize this immediately, within hours for anything internet-exposed or recently reachable from untrusted networks.
What doesn't work
  • TLS alone does not solve this; it encrypts transport but does not add authorization if the server still accepts unauthenticated commands.
  • Upgrading Redis by itself does not fix the condition; there is no single patched version for missing authentication.
  • Assuming a host is 'internal only' does not help if flat east-west routing lets a post-compromise attacker reach 6379 from user or workload segments.
06 · Verification

Crowdsourced verification payload.

Run this from an auditor workstation or jump host on the same network path Nessus used, not just from localhost on the target, because reachability is the key risk variable. Invoke it as ./check_redis_noauth.sh 10.0.12.34 6379; it needs redis-cli installed and no special privileges.

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

set -u

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

if [[ -z "$HOST" ]]; then
  echo "UNKNOWN"
  exit 2
fi

if ! command -v redis-cli >/dev/null 2>&1; then
  echo "UNKNOWN"
  exit 2
fi

OUT="$(timeout "$TIMEOUT" redis-cli -h "$HOST" -p "$PORT" --raw PING 2>&1 || true)"

# Vulnerable: unauthenticated command execution succeeded.
if echo "$OUT" | grep -Eq '^PONG$'; then
  echo "VULNERABLE"
  exit 1
fi

# Patched / not exploitable from this vantage point.
if echo "$OUT" | grep -Eiq 'NOAUTH|WRONGPASS|NOPERM|Authentication required|DENIED Redis is running in protected mode'; then
  echo "PATCHED"
  exit 0
fi

# Connection/path ambiguity.
if echo "$OUT" | grep -Eiq 'Connection refused|Operation timed out|No route to host|Could not connect|Name or service not known'; then
  echo "UNKNOWN"
  exit 2
fi

# Fallback: try INFO to handle odd responses.
OUT2="$(timeout "$TIMEOUT" redis-cli -h "$HOST" -p "$PORT" --raw INFO server 2>&1 || true)"
if echo "$OUT2" | grep -Eiq '^redis_version:'; then
  echo "VULNERABLE"
  exit 1
fi
if echo "$OUT2" | grep -Eiq 'NOAUTH|WRONGPASS|NOPERM|Authentication required|DENIED Redis is running in protected mode'; then
  echo "PATCHED"
  exit 0
fi

echo "UNKNOWN"
exit 2
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, pull every 100634 hit and split the list into internet-facing, shared internal segment, and strictly private app-path Redis nodes. Because there is active exploitation evidence against exposed Redis, override the normal HIGH window in the noisgate mitigation SLA and patch / mitigate immediately, within hours: block untrusted network access, require authentication, and verify from the same path Nessus used; then complete durable configuration cleanup and standardization across the remaining affected estate within the noisgate remediation SLA of 180 days.

Sources

  1. Tenable Nessus Plugin 100634
  2. Redis official security documentation
  3. Redis official administration notes
  4. Censys exposed Redis analysis
  5. Aqua Security HeadCrab analysis
  6. Datadog Security Labs RedisRaider analysis
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.