← Back to Feed CACHED · 2026-09-04 17:32:37 · CACHE_KEY CVE-2026-52924
CVE-2026-52924 · CWE-416 · Disclosed 2026-06-24

In the Linux kernel

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Like a booby-trapped lock on a door nobody installed — dangerous if you have it, but most buildings don't

CVE-2026-52924 is a use-after-free in the Linux kernel's SCTP (Stream Control Transmission Protocol) subsystem. When a remote peer sends a Stale Cookie ERROR during SCTP association setup, the kernel rolls the association back from COOKIE_ECHOED to COOKIE_WAIT. During this rollback, sctp_stream_update() frees the old stream table and installs a new one, but fails to invalidate cached pointers like stream->out_curr. Later dequeue operations (FCFS, RR, PRIO schedulers) dereference the stale pointer, crashing the kernel. Affected: all kernels prior to 7.1-rc7; backport fixes land in 5.10.259, 6.1.176, 6.12.94, and 7.0.13. The SCTP kernel module (sctp.ko) must be loaded for the vulnerability to be reachable.

The NVD vendor score of 9.8 CRITICAL (AV:N/AC:L/PR:N/UI:N) is misleading. Red Hat independently scored this 7.0 HIGH with AC:H and downgraded confidentiality and integrity to Low, reflecting the reality that exploitation requires a specific timing window during the stale cookie rollback sequence *and* that reliable code execution from this UAF is unproven. The primary confirmed impact is a kernel panic — a denial-of-service. The 9.8 assumes trivial exploitation and full CIA impact, which does not match the evidence. Red Hat's 7.0 is closer to reality, and even that may be generous given how rarely SCTP is deployed in enterprise environments.

"Kernel SCTP UAF is real but needs a loaded module most enterprises never touch — HIGH, not CRITICAL."
02 · The Attack Path

4 steps from start to impact.

STEP 01

SCTP module must be loaded on target

The sctp kernel module is not loaded by default on most enterprise Linux distributions (RHEL, Ubuntu, Debian). It is typically only present on telecom infrastructure (5G core, IMS, Diameter servers), some Kubernetes multi-homing configurations, or hosts explicitly configured for SCTP. Without the module loaded, the entire attack surface is absent.
Conditions required:
  • Target host has sctp.ko loaded
  • SCTP port is reachable from attacker network
Where this breaks in practice:
  • Vast majority of enterprise Linux hosts (~95%+) never load the SCTP module
  • Enterprise firewalls typically block SCTP protocol (IP protocol 132) at the perimeter
Detection/coverage: Run lsmod | grep sctp or check /proc/modules for sctp. Nessus plugin family 'Local Security Checks' will flag the kernel version.
STEP 02

Initiate SCTP association and trigger stale cookie

The attacker initiates an SCTP 4-way handshake (INIT → INIT-ACK → COOKIE-ECHO). They must cause the target to return a Stale Cookie ERROR for the COOKIE-ECHO chunk. This requires the cookie to expire during the handshake, which depends on timing and the server's cookie lifetime configuration. The attacker may need to delay the COOKIE-ECHO to force staleness.
Conditions required:
  • Network path allows SCTP packets to reach the target
  • Server SCTP cookie lifetime is short enough or attacker can delay sufficiently
Where this breaks in practice:
  • The timing window is tight — Red Hat rates this AC:H for good reason
  • Attacker cannot directly control server-side cookie expiration settings
Detection/coverage: SCTP association failures and repeated INIT sequences are visible in kernel audit logs and network IDS (Suricata has SCTP protocol decoders).
STEP 03

Trigger rollback with queued outbound data

The critical condition: user data must already be queued or bundled with the COOKIE-ECHO chunk when the stale cookie rollback occurs. During rollback from COOKIE_ECHOED to COOKIE_WAIT, sctp_stream_update() frees the old stream output table, but the scheduler's out_curr pointer still references freed memory. This is a race between data queuing and the rollback path.
Conditions required:
  • Application on the target has queued outbound SCTP data during the COOKIE-ECHO phase
  • Rollback and dequeue must interleave in the right order
Where this breaks in practice:
  • Requires specific application behavior on the target — not all SCTP applications queue data this early
  • Race condition makes exploitation non-deterministic
STEP 04

Kernel dereferences stale pointer — crash or worse

When the SCTP scheduler (FCFS, RR, or PRIO) next tries to dequeue a chunk, it follows the stale out_curr pointer into freed memory. The reliable outcome is a kernel panic (DoS). Theoretical code execution would require heap grooming to place attacker-controlled data in the freed slab — possible in principle for UAFs but undemonstrated for this specific bug. No public PoC achieves code execution.
Conditions required:
  • Steps 1-3 succeeded
  • For code execution: attacker must win heap spray race in kernel slab allocator
Where this breaks in practice:
  • Kernel ASLR (KASLR), SLAB_FREELIST_HARDENED, and CONFIG_INIT_ON_FREE_DEFAULT_ON on modern kernels make heap grooming extremely difficult
  • No public exploit or PoC exists demonstrating anything beyond DoS
Detection/coverage: Kernel oops/panic in sctp_stream_* functions is a clear indicator. kdump or crash logs will show the UAF.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNone observed. Not listed in CISA KEV. No reports from Mandiant, CrowdStrike, or other threat intel vendors as of 2026-09-05.
Proof-of-ConceptNo public PoC. No exploit code found on GitHub, Exploit-DB, or researcher disclosures. The bug was found via code audit / fuzzing during kernel development.
EPSS Score0.00344 (0.34%) — bottom quartile. FIRST model predicts very low probability of exploitation in the next 30 days.
CISA KEV StatusNot listed as of 2026-09-05.
NVD CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8). Red Hat disputes: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:H (7.0). The AC and CIA disagreement is significant — Red Hat's vector is more accurate.
Affected VersionsAll Linux kernels with SCTP support prior to 7.1-rc7 upstream. Essentially all stable branches until patched.
Fixed VersionsUpstream: 7.1-rc7 (commit e374b22e). Debian: 5.10.259-1 (bullseye), 6.1.176-1 (bookworm), 6.12.94-1 (trixie), 7.0.13-1 (sid). RHEL: under investigation.
Scanning / ExposureSCTP has minimal internet exposure. Shodan/Censys show very few SCTP services publicly reachable compared to TCP. SCTP is primarily used in telecom backhaul and internal Diameter/SS7 networks, not internet-facing services.
Disclosure Date2026-06-24 via upstream kernel mailing list.
ReporterDiscovered during kernel development / code review. No individual researcher credited in public advisories.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to HIGH (6.5/10)

The single most decisive factor is the high attack complexity combined with the SCTP module's narrow deployment footprint — fewer than 5% of enterprise Linux hosts load sctp.ko, and even on those hosts the stale-cookie race condition is non-trivial to trigger reliably. The vendor's 9.8 assumes trivial network exploitation with full CIA impact, which Red Hat's independent 7.0 assessment and the absence of any PoC or in-the-wild exploitation directly contradict.

HIGH Vulnerability existence and DoS impact
MEDIUM Code execution feasibility from this UAF
HIGH SCTP deployment rarity in enterprise environments

Why this verdict

  • Attack complexity is HIGH, not LOW. Red Hat independently rated AC:H because the stale cookie rollback must race with queued outbound data dequeue — a timing-dependent condition the attacker cannot fully control. The NVD AC:L rating is indefensible for this bug class.
  • SCTP module deployment is extremely narrow. In a typical 10,000-host enterprise fleet, fewer than 500 hosts (often zero) will have sctp.ko loaded. The module is not loaded by default on RHEL, Ubuntu, or Debian. This dramatically shrinks the reachable attack surface.
  • No PoC, no exploitation, rock-bottom EPSS. EPSS of 0.34% places this in the bottom quartile. Zero public exploit code exists. No threat actor has been observed targeting this bug. The theoretical-to-practical gap is wide.
  • Primary confirmed impact is DoS, not RCE. While UAFs *can* lead to code execution, this specific bug's heap layout and timing constraints make reliable exploitation for code execution speculative. Kernel hardening features (KASLR, slab freelist randomization, init-on-free) add further friction.
  • Role multiplier: On *telecom infrastructure* (5G core, IMS, Diameter) where SCTP is a core protocol, the blast radius of a kernel crash is service-level DoS affecting mobile subscribers — this is a high-value role and prevents downgrading below HIGH. On standard enterprise servers (web, app, DB tiers), SCTP is absent and the vuln is unreachable. On Kubernetes nodes using SCTP multihoming (rare), a kernel panic could disrupt container workloads but is contained to one node. The telecom use case — where SCTP is canonically deployed and the blast radius is carrier-grade service disruption — sets the floor at HIGH.

Why not higher?

CRITICAL would require either demonstrated code execution (there is none), active exploitation (there is none), or trivial exploitability on a broadly deployed component. SCTP's narrow footprint means the vast majority of Linux hosts are simply not vulnerable. The attack complexity is genuinely high, and the confirmed impact ceiling is DoS, not full system compromise.

Why not lower?

MEDIUM would undercount the risk to the telecom and carrier infrastructure segment where SCTP is a first-class protocol and kernel crashes cause real service outages. The bug *is* network-reachable without authentication, and UAFs in the kernel are inherently dangerous even when current exploitation is unproven — the primitive exists and could be weaponized. Red Hat's 7.0 confirms this belongs in the HIGH bucket.

05 · Compensating Control

What to do — in priority order.

  1. Unload and blacklist the SCTP kernel module on hosts that don't need it — Run modprobe -r sctp and add install sctp /bin/false to /etc/modprobe.d/disable-sctp.conf. This completely eliminates the attack surface. Deploy within 30 days per the noisgate mitigation SLA for HIGH. On hosts that *do* need SCTP, this is not an option — proceed to patching.
  2. Block SCTP at the network perimeter — Add firewall rules to drop IP protocol 132 (SCTP) at perimeter firewalls and host-based firewalls (iptables -A INPUT -p sctp -j DROP) for any host not explicitly requiring SCTP. This prevents remote exploitation from untrusted networks. Deploy within 30 days.
  3. Prioritize kernel patching on SCTP-enabled hosts — Identify hosts with sctp module loaded (lsmod | grep sctp fleet-wide) and fast-track kernel updates to fixed versions (6.1.176+, 6.12.94+, 7.0.13+). These hosts are your actual risk population. Target 30-day deployment for the mitigation, 180-day full remediation per noisgate SLA.
  4. Enable kernel hardening features — Ensure CONFIG_INIT_ON_FREE_DEFAULT_ON=y, KASLR enabled, and CONFIG_SLAB_FREELIST_HARDENED=y in your kernel config. These make UAF exploitation for code execution significantly harder, reducing the risk from DoS-only to even-less-likely-RCE.
What doesn't work
  • WAF / IDS signature-based blocking — SCTP is not HTTP. Web application firewalls do not inspect SCTP traffic. You need protocol-level firewall rules (IP proto 132), not application-layer inspection.
  • SELinux / AppArmor — These confine userspace processes, not kernel-level UAFs. The crash occurs in kernel context before any MAC policy is evaluated.
  • TCP SYN cookies or TCP hardening — SCTP is a separate transport protocol from TCP. TCP-level hardening has zero effect on SCTP association handling.
06 · Verification

Crowdsourced verification payload.

Run this script as root on each target Linux host to check whether the SCTP module is loaded and whether the running kernel version is patched. No arguments needed: sudo bash check_cve_2026_52924.sh. Works on RHEL, Debian, Ubuntu, and derivatives.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/bin/bash
# check_cve_2026_52924.sh — CVE-2026-52924 SCTP UAF checker
# Run as root on target Linux host
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

RESULT="UNKNOWN"
SCTP_LOADED=false

# Check if SCTP module is loaded or built-in
if lsmod 2>/dev/null | grep -q '^sctp '; then
  SCTP_LOADED=true
  echo "[!] SCTP module is LOADED — attack surface is present"
elif grep -q 'sctp' /proc/modules 2>/dev/null; then
  SCTP_LOADED=true
  echo "[!] SCTP module is LOADED — attack surface is present"
elif [ -f /boot/config-$(uname -r) ] && grep -q 'CONFIG_IP_SCTP=y' /boot/config-$(uname -r) 2>/dev/null; then
  SCTP_LOADED=true
  echo "[!] SCTP is compiled into the kernel (built-in) — attack surface is present"
else
  echo "[*] SCTP module is NOT loaded and not built-in — attack surface absent"
  echo "PATCHED (not applicable — SCTP not present)"
  exit 0
fi

# Get kernel version
KERNEL=$(uname -r)
echo "[*] Running kernel: $KERNEL"

# Extract version components
MAJOR=$(echo "$KERNEL" | cut -d. -f1)
MINOR=$(echo "$KERNEL" | cut -d. -f2)
PATCH=$(echo "$KERNEL" | sed 's/^[0-9]*\.[0-9]*\.//' | sed 's/[^0-9].*//')

# Check against known fixed versions
# Upstream: 7.1-rc7+
# Debian backports: 5.10.259+, 6.1.176+, 6.12.94+, 7.0.13+

check_fixed() {
  if [ "$MAJOR" -gt 7 ]; then
    return 0 # fixed
  elif [ "$MAJOR" -eq 7 ] && [ "$MINOR" -ge 1 ]; then
    return 0 # 7.1+ fixed
  elif [ "$MAJOR" -eq 7 ] && [ "$MINOR" -eq 0 ] && [ "$PATCH" -ge 13 ]; then
    return 0 # 7.0.13+ fixed
  elif [ "$MAJOR" -eq 6 ] && [ "$MINOR" -eq 12 ] && [ "$PATCH" -ge 94 ]; then
    return 0
  elif [ "$MAJOR" -eq 6 ] && [ "$MINOR" -eq 1 ] && [ "$PATCH" -ge 176 ]; then
    return 0
  elif [ "$MAJOR" -eq 5 ] && [ "$MINOR" -eq 10 ] && [ "$PATCH" -ge 259 ]; then
    return 0
  fi
  return 1
}

if check_fixed; then
  echo "PATCHED — kernel $KERNEL includes the fix for CVE-2026-52924"
  exit 0
else
  if [ "$SCTP_LOADED" = true ]; then
    echo "VULNERABLE — kernel $KERNEL is unpatched AND SCTP is active"
    exit 1
  else
    echo "VULNERABLE — kernel $KERNEL is unpatched (SCTP not loaded, but module could be loaded)"
    exit 1
  fi
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: First, run lsmod | grep sctp across your fleet to identify the hosts that actually have SCTP loaded — that's your real risk population, likely a small fraction of your 10,000 hosts. For any host *not* using SCTP, blacklist the module immediately (echo 'install sctp /bin/false' > /etc/modprobe.d/disable-sctp.conf) — this takes the CVE off the table entirely. For hosts that *require* SCTP (telecom, Diameter, some K8s configs), block external SCTP ingress at the firewall and schedule kernel patching to the fixed versions (6.1.176+, 6.12.94+, 7.0.13+) within the noisgate mitigation SLA of 30 days for HIGH-severity findings. Full fleet kernel remediation should complete within the noisgate remediation SLA of 180 days. There is no active exploitation and no PoC, so this is a scheduled patch, not an emergency — but don't let it slip past the 30-day mitigation window on your SCTP-enabled hosts.

Sources

  1. Red Hat CVE Page — CVE-2026-52924
  2. Debian Security Tracker — CVE-2026-52924
  3. Upstream Kernel Fix Commit
  4. BitNinja — CVE-2026-52924 Analysis
  5. NCA Saudi Arabia — Weekly Vulnerability Summary (June 21-27)
  6. HKCERT — Debian Linux Kernel Multiple Vulnerabilities
  7. TechVeda — Linux Kernel CVEs to Patch (Jun-Jul 2026)
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.