← Back to Feed CACHED · 2026-06-30 20:01:27 · CACHE_KEY CVE-2023-32255
CVE-2023-32255 · CWE-772 · Disclosed 2025-08-03

Kernel: memory leak via ksmbd session setup request with unknown ntlmssp message type

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

A faucet that drips a few bytes every time a stranger knocks on the SMB door

CVE-2023-32255 is a memory leak in the Linux kernel's ksmbd in-kernel SMB3 server. When a client sends an SMBv2 SESSION_SETUP request carrying an NTLMSSP blob with an *unknown* message type, ksmbd's smb2_sess_setup() path allocates the user-session structure but fails to free it on the unexpected-type error branch. The flaw is reachable pre-authentication and affects mainline Linux kernels prior to 6.3.2, where commit town fixed the leak. Every malformed setup wastes a small slab allocation; repeated requests eventually exhaust kernel memory and hang or panic the host.

Red Hat and SUSE both rate this MEDIUM/5.3 and that's about right. The vector is correct — network-reachable, no auth, no UI — but the impact is availability-only, and only against the comparatively rare deployment that runs ksmbd (most Linux file servers still run Samba in userspace). The vendor score is honest; we're downgrading further to LOW because the exposed population is tiny and there is no path to RCE or data exposure.

"Unauthenticated ksmbd memory leak — slow-drip DoS, but only matters if you actually run ksmbd exposed. Almost nobody does."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Reach an exposed ksmbd listener

Attacker needs TCP/445 reachable to a Linux host running the in-kernel ksmbd server (CONFIG_SMB_SERVER=y, ksmbd.mountd running). This excludes the dominant Samba (userspace smbd) population entirely.
Conditions required:
  • Target runs Linux kernel <6.3.2 with ksmbd module loaded
  • TCP/445 reachable from attacker network position
Where this breaks in practice:
  • ksmbd usage is a rounding error vs. Samba in production fleets
  • Internet-exposed SMB is blocked by every competent perimeter; Shodan shows <5k Linux SMB hosts of any flavor
Detection/coverage: Nessus 176700, Qualys QID 757865, OpenSCAP oval:com.redhat.rhsa rules cover kernel versions.
STEP 02

Send malformed NTLMSSP SESSION_SETUP

Using a tweaked impacket smbclient or a 30-line Python over smbprotocol, the attacker sends an SMB2 SESSION_SETUP request whose security blob is valid GSS-API/NTLMSSP but carries a MessageType field that is neither NEGOTIATE(1), CHALLENGE(2), nor AUTHENTICATE(3). No public weaponized PoC tool is named in advisories; trivial to construct.
Conditions required:
  • Ability to speak SMB2 wire protocol
  • Ability to forge NTLMSSP message header
Where this breaks in practice:
  • No drop-in Metasploit/Nuclei module exists
  • Per-request leak is bytes-scale; takes sustained traffic to matter
Detection/coverage: Suricata/Zeek SMB anomaly rules flag malformed NTLMSSP types; volumetric SMB to a file server is independently suspicious.
STEP 03

Drip-loop to exhaust kernel slab

Attacker loops the malformed request — thousands to millions of times — to accumulate orphaned ksmbd_session allocations in kernel slab. Eventually kmalloc fails, oom-killer triggers, or the host hangs. No code execution, no data read, no lateral movement.
Conditions required:
  • Sustained network access to the listener
  • No upstream rate-limit on port 445
Where this breaks in practice:
  • IPS, connection-rate limits, fail2ban-style controls trivially break the loop
  • Reboot fully restores; no persistence
Detection/coverage: Standard host memory-pressure alerts (Prometheus node_exporter, Datadog, Splunk UF) fire long before exhaustion.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. No GreyNoise tag, no vendor IR reporting, no ransomware affiliate use.
KEV statusNot listed on CISA KEV as of 2026-07-01.
EPSS0.00453 (~0.5%) — bottom-quartile likelihood of exploitation in the next 30 days.
Public PoCNo weaponized public PoC repo; root-cause patch is in mainline Linux commit fixing smb2_sess_setup() leak. Reachable via impacket with minor protocol tweak.
CVSS vectorAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L — network, no auth, low availability impact only. No confidentiality or integrity loss.
Affected versionsLinux kernels with ksmbd enabled prior to 6.3.2. Backports: RHEL 9.x kernel-5.14.0-362+, SUSE SLE15-SP5 kernel-5.14.21-150500, Ubuntu 22.04 linux-image-5.15.0-91+, Debian 12 linux-6.1.55-1+.
Fixed inLinux 6.3.2 mainline; distro backports per above.
Exposure dataShodan: ~4,300 hosts globally fingerprinting as Linux SMB on 445; ksmbd-specific fingerprint is a subset and uncommon in enterprise. Censys shows similarly thin footprint.
DisclosureGHSA-3hjh-cjx8-8c83 published 2025-08-03; underlying fix landed in mainline May 2023.
ReporterReported via the Linux kernel ksmbd subsystem maintainers (Namjae Jeon / Steve French upstream).
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.5/10)

The decisive factor is blast radius limited to availability-only with a vanishingly small exposed population — ksmbd is rarely deployed in production vs. Samba userspace, and the bug yields no code execution, no data exposure, and no privilege escalation. CVSS:A:L on a niche component does not warrant MEDIUM treatment at fleet scale.

HIGH impact ceiling (DoS-only, no RCE path)
HIGH patch availability across major distros
MEDIUM installed-base estimate for ksmbd vs. Samba

Why this verdict

  • Availability-only impact: the CVSS vector explicitly zeros confidentiality and integrity. The worst-case outcome is a kernel OOM on a file server — recoverable by reboot, no lateral pivot.
  • Tiny installed base: ksmbd shipped as a kernel module only since 5.15 and is not the default Linux file-sharing stack. The overwhelming majority of Linux SMB servers in enterprise run userspace Samba and are unaffected.
  • Role multiplier — file server tier: even on a high-traffic ksmbd file server, the chain ends in *file-service unavailability for that host*, not domain compromise, data egress, or supply-chain pivot. No high-value role (IdP, CA, hypervisor, EDR, CI/CD, backup) runs ksmbd.
  • Friction stacking: internet-exposed SMB is independently a perimeter failure; on internal networks, segmentation and SMB rate-limits break the drip loop trivially.
  • No exploitation pressure: EPSS 0.45%, not KEV-listed, no public weaponized tooling, no IR reporting after 11 months of public disclosure.

Why not higher?

MEDIUM (vendor baseline) would imply a 30-day mitigation clock is warranted at fleet scale. With ksmbd's near-zero enterprise penetration and the strictly availability-only impact, that clock would burn defender attention for a vuln that cannot escalate beyond a recoverable reboot. No KEV, no PoC weaponization, no role multiplier — none of the upgrade triggers fire.

Why not lower?

IGNORE would be wrong because the bug *is* pre-auth reachable on any host that actually runs ksmbd, and once a defender confirms ksmbd is in use the standard kernel-patch cadence absolutely applies. We keep it on the backlog rather than dismissing it.

05 · Compensating Control

What to do — in priority order.

  1. Inventory ksmbd usage across the Linux fleet — Run lsmod | grep ksmbd and systemctl is-active ksmbd across the fleet via your config-management plane (Ansible, Salt, Puppet) within the next sprint. Most hosts will return nothing — those are out of scope. No mitigation SLA applies at LOW, so this is hygiene-paced.
  2. Block TCP/445 at the perimeter (already table stakes) — Confirm edge firewalls and cloud SGs drop inbound 445/tcp. This is standing policy regardless of CVE; verify, do not deploy fresh. Treat as a quarterly attestation item.
  3. On confirmed ksmbd hosts, schedule kernel update to distro-patched build — For hosts that *do* run ksmbd, queue the kernel update into your standard monthly patch ring. No emergency rollout — fold into the next maintenance window within the noisgate remediation SLA of 365 days.
  4. Enable host memory-pressure alerting on ksmbd file servers — If you can't patch immediately, an alert at 80% kernel slab usage gives you operator warning long before OOM. Wire to Prometheus/Datadog/Splunk and route to the storage on-call.
What doesn't work
  • SMB signing / encryption: the leak triggers in session setup *before* the signing context is established; signing policy does not block the malformed NTLMSSP message type.
  • Authentication requirements / restrictAnonymous: the bug is reachable pre-auth in the SESSION_SETUP exchange itself; requiring credentials does not gate the vulnerable code path.
  • WAF / reverse proxy: SMB is not HTTP; L7 web controls have no visibility into the SMB2 NTLMSSP blob.
  • EDR on the file server: the leak is in kernel slab inside the SMB protocol handler — there is no userspace process behavior for EDR to flag until the OOM-killer fires.
06 · Verification

Crowdsourced verification payload.

Run this on each Linux host as root (or via your config-mgmt agent): sudo ./check-cve-2023-32255.sh. It checks whether ksmbd is even present, and if so whether the running kernel is at or above the distro-patched build.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check-cve-2023-32255.sh
# Outputs: VULNERABLE | PATCHED | UNKNOWN | NOT_APPLICABLE
set -u

ks_loaded=0
ks_service=0

if lsmod 2>/dev/null | grep -qw ksmbd; then ks_loaded=1; fi
if systemctl is-active --quiet ksmbd 2>/dev/null; then ks_service=1; fi
if [ -e /sys/module/ksmbd ]; then ks_loaded=1; fi

if [ $ks_loaded -eq 0 ] && [ $ks_service -eq 0 ]; then
  echo "NOT_APPLICABLE: ksmbd module not loaded and service inactive"
  exit 0
fi

KVER=$(uname -r)
MAJ=$(echo "$KVER" | cut -d. -f1)
MIN=$(echo "$KVER" | cut -d. -f2)
PATCH=$(echo "$KVER" | cut -d. -f3 | cut -d- -f1)

# Mainline: fixed in 6.3.2
if [ "$MAJ" -gt 6 ] || { [ "$MAJ" -eq 6 ] && [ "$MIN" -gt 3 ]; } || \
   { [ "$MAJ" -eq 6 ] && [ "$MIN" -eq 3 ] && [ "$PATCH" -ge 2 ]; }; then
  echo "PATCHED: kernel $KVER >= 6.3.2 mainline"
  exit 0
fi

# Distro backport detection
if command -v rpm >/dev/null 2>&1; then
  PKG=$(rpm -q --qf '%{VERSION}-%{RELEASE}\n' kernel 2>/dev/null | tail -1)
  case "$PKG" in
    5.14.0-362*|5.14.0-37*|5.14.0-4*|5.14.0-5*) echo "PATCHED: RHEL backport $PKG"; exit 0 ;;
    5.14.21-150500*|5.14.21-1506*) echo "PATCHED: SUSE backport $PKG"; exit 0 ;;
  esac
elif command -v dpkg >/dev/null 2>&1; then
  PKG=$(dpkg -l 'linux-image-*' 2>/dev/null | awk '/^ii/{print $3}' | tail -1)
  echo "UNKNOWN: Debian/Ubuntu kernel $PKG — cross-reference USN/DSA for CVE-2023-32255 fix"
  exit 2
fi

echo "VULNERABLE: ksmbd present on kernel $KVER, no patched build detected"
exit 1
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: do not panic-patch this. Run the verification script across your Linux fleet to enumerate where ksmbd is actually loaded — for >95% of shops the answer will be 'nowhere,' and you can close the ticket. For the residual ksmbd hosts, the noisgate mitigation SLA does not apply at LOW (no 3- or 30-day clock); confirm TCP/445 is firewalled at the perimeter as standing policy and enable kernel memory-pressure alerting as a stopgap. Roll the patched distro kernel into your normal monthly maintenance ring within the noisgate remediation SLA of 365 days — no exception process needed. If the EPSS climbs above 1% or a weaponized PoC drops, re-baseline.

Sources

  1. GHSA-3hjh-cjx8-8c83
  2. NVD — CVE-2023-32255
  3. Red Hat Security Advisory tracker
  4. SUSE CVE database
  5. Ubuntu CVE tracker
  6. Debian Security Tracker
  7. Linux ksmbd subsystem documentation
  8. CISA KEV catalog
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.