Back to Intelligence

CISA KEV Alert: CVE-2025-39964 and CVE-2026-53266 Linux Kernel Exploits — Detection and Remediation Guide

SA
Security Arsenal Team
September 18, 2026
13 min read

On September 18, 2026, CISA added two Linux kernel vulnerabilities to its Known Exploited Vulnerabilities (KEV) Catalog based on evidence of active exploitation in the wild: CVE-2025-39964, a race condition vulnerability, and CVE-2026-53266, an out-of-bounds write vulnerability. Both flaw classes are textbook local privilege escalation (LPE) primitives — exactly the kind of bugs threat actors chain after initial access to move from a low-privilege foothold to root.

Under Binding Operational Directive (BOD) 26-04, Federal Civilian Executive Branch (FCEB) agencies are required to prioritize rapid remediation of KEV-listed vulnerabilities. But make no mistake — this is not a federal-only problem. Linux underpins the majority of enterprise server fleets, cloud workloads, containers, network appliances, and embedded/OT systems. If attackers are burning these exploits in the wild, your internet-facing and internal Linux estate is in scope.

This post breaks down what we know, how to hunt for exploitation, and how to remediate at scale.


Technical Analysis

CVE-2025-39964 — Linux Kernel Race Condition

Race condition vulnerabilities in the Linux kernel occur when two or more threads or processes access shared kernel resources concurrently without proper locking or synchronization, creating a time-of-check to time-of-use (TOCTOU) window. In practical exploitation terms, an attacker with local code execution (even as an unprivileged user) wins the race to corrupt kernel state — typically achieving arbitrary memory manipulation, privilege escalation to UID 0, or kernel panic (denial of service).

Race conditions are attractive to sophisticated actors because:

  • They often bypass common mitigations like KASLR when chained with an info leak.
  • They can be triggered repeatedly until the race is won, making them reliable enough for operational use.
  • They require no user interaction and work from any local execution context — including web shells, compromised service accounts, and container escape chains.

CVE-2026-53266 — Linux Kernel Out-of-Bounds Write

An out-of-bounds (OOB) write occurs when kernel code writes data past the boundary of an allocated memory buffer. In kernel space, there is no memory safety net — an OOB write can corrupt adjacent kernel structures, overwrite function pointers or credential structures (struct cred), and yield direct privilege escalation or arbitrary code execution in ring 0.

OOB writes in the kernel are among the most reliably exploitable vulnerability classes. Attackers typically shape the heap layout (heap grooming) so that a target object lands adjacent to the vulnerable allocation, then trigger the write to overwrite it.

Exploitation Status

AttributeDetail
CVE-2025-39964Linux Kernel Race Condition — confirmed active exploitation, added to CISA KEV 2026-09-18
CVE-2026-53266Linux Kernel Out-of-Bounds Write — confirmed active exploitation, added to CISA KEV 2026-09-18
Attack vectorLocal — requires existing code execution foothold
ImpactPrivilege escalation to root, kernel code execution, denial of service
Federal mandateBOD 26-04 — FCEB agencies must remediate per KEV Catalog due dates

Critical context for defenders: KEV inclusion means these are not theoretical. Because both are local privilege escalations, the real-world attack chain almost certainly looks like this:

  1. Initial access via phishing, exposed service, web shell, or compromised container workload.
  2. Post-exploitation tooling dropped to the host.
  3. LPE exploit (CVE-2025-39964 or CVE-2026-53266) executed to gain root.
  4. Root-level persistence, EDR tampering, credential theft, or lateral movement.

This means your detection strategy must cover both the exploitation behavior itself and the pre/post-exploitation activity around it. Patch status alone is not an indicator of safety — assume any unpatched internet-facing or multi-tenant Linux host may already be compromised and hunt accordingly.

Affected Products and Scope

These are upstream Linux kernel vulnerabilities. Distribution-level impact varies by kernel version and vendor backport status. At the time of writing, consult:

Do not assume container workloads are safe — containers share the host kernel, and a kernel LPE executed inside a container is a container escape. Cloud VMs, Kubernetes nodes, hypervisor guests, and network/embedded appliances running affected kernels are all in scope.


Detection & Response

Detection of kernel LPE exploitation is behavior-driven. The exploit itself may be a compiled binary dropped to disk, but the reliable observables are what happens around it: unprivileged users suddenly executing from writable paths, unexpected setuid escalation, processes spawning root shells, and kernel-level anomaly messages in system logs.

Sigma Rules

YAML
---
title: Suspicious Execution From World-Writable Directory on Linux
title_note: Potential kernel LPE exploit staging (CVE-2025-39964 / CVE-2026-53266)
id: 9c1e4a77-2b3d-4f58-a912-7e6d5c8b3a01
status: experimental
description: Detects execution of binaries from world-writable or temporary directories commonly used to stage local privilege escalation exploits against the Linux kernel, such as those exploiting CVE-2025-39964 or CVE-2026-53266.
references:
  - https://www.cisa.gov/news-events/alerts/2026/09/18/cisa-adds-two-known-exploited-vulnerabilities-catalog
  - https://attack.mitre.org/techniques/T1068/
author: Security Arsenal
date: 2026/09/19
tags:
  - attack.privilege_escalation
  - attack.t1068
logsource:
  category: process_creation
  product: linux
detection:
  selection_path:
    Image|startswith:
      - '/tmp/'
      - '/var/tmp/'
      - '/dev/shm/'
      - '/run/shm/'
  filter_service_binaries:
    Image|startswith:
      - '/tmp/snap'
      - '/tmp/hsperfdata'
  condition: selection_path and not filter_service_binaries
falsepositives:
  - Legitimate installer or build tooling staging in /tmp during maintenance windows
  - DevOps automation (Ansible, Terraform provisioners) executing temporary scripts
level: high
---
title: Unprivileged User Spawning Root Shell on Linux
id: 4d8f2b16-7c9a-4e31-b805-2f7a9d6e1c44
status: experimental
description: Detects an interactive shell or interpreter spawned with elevated privileges, consistent with successful kernel privilege escalation via exploits such as CVE-2025-39964 (race condition) or CVE-2026-53266 (out-of-bounds write).
references:
  - https://www.cisa.gov/news-events/alerts/2026/09/18/cisa-adds-two-known-exploited-vulnerabilities-catalog
  - https://attack.mitre.org/techniques/T1068/
author: Security Arsenal
date: 2026/09/19
tags:
  - attack.privilege_escalation
  - attack.t1068
  - attack.execution
logsource:
  category: process_creation
  product: linux
detection:
  selection_shell:
    Image|endswith:
      - '/bash'
      - '/sh'
      - '/zsh'
      - '/dash'
  selection_root:
    User:
      - 'root'
      - 'uid=0'
  filter_parents:
    ParentImage|endswith:
      - '/sshd'
      - '/sudo'
      - '/su'
      - '/login'
      - '/systemd'
  condition: selection_shell and selection_root and not filter_parents
falsepositives:
  - Administrative scripts executed via cron or systemd units running as root
  - Configuration management agents (Chef, Puppet) spawning shells as root
level: critical
---
title: Kernel Exploit Artifact Compilation on Linux Host
id: 6b2c8e93-1d47-4a6f-9023-8e5b3d7c2f19
status: experimental
description: Detects on-host compilation of C source code by non-build users, a common pattern when attackers compile kernel privilege escalation exploits (e.g., CVE-2025-39964 or CVE-2026-53266 PoCs) directly on the target to match the running kernel.
references:
  - https://www.cisa.gov/news-events/alerts/2026/09/18/cisa-adds-two-known-exploited-vulnerabilities-catalog
  - https://attack.mitre.org/techniques/T1027/007/
author: Security Arsenal
date: 2026/09/19
tags:
  - attack.privilege_escalation
  - attack.t1068
  - attack.defense_evasion
logsource:
  category: process_creation
  product: linux
detection:
  selection_compilers:
    Image|endswith:
      - '/gcc'
      - '/cc'
      - '/clang'
      - '/g++'
  selection_args:
    CommandLine|contains:
      - ' -o /tmp/'
      - ' -o /dev/shm/'
      - '.c '
      - '-lpthread'
  filter_build_dirs:
    CommandLine|contains:
      - '/usr/src/'
      - '/opt/build'
      - 'make'
  condition: selection_compilers and selection_args and not filter_build_dirs
falsepositives:
  - Developers or build pipelines compiling on production hosts (should be prohibited by policy)
level: high

KQL Hunt Queries (Microsoft Sentinel / Defender)

These queries assume Linux syslog and audit data is ingested into Sentinel via the Syslog/CEF connectors or AMA. Run them across any Linux estate reporting to your workspace.

KQL — Microsoft Sentinel / Defender
// Hunt 1: Execution from world-writable paths on Linux hosts (LPE exploit staging)
// Relevant to CVE-2025-39964 / CVE-2026-53266 post-foothold exploitation
Syslog
| where TimeGenerated > ago(7d)
| where Facility in ("auth", "authpriv", "user", "audit") or SyslogMessage has_any ("execve", "EXECVE")
| where SyslogMessage has_any ("/tmp/", "/var/tmp/", "/dev/shm/", "/run/shm/")
| where SyslogMessage !has_any ("snap", "hsperfdata", "systemd", "ansible")
| extend HostName = tostring(HostName), Message = tostring(SyslogMessage)
| summarize ExecutionCount = count(), DistinctProcesses = dcount(ProcessName) by HostName, ProcessName, Message, bin(TimeGenerated, 1h)
| order by TimeGenerated desc;

// Hunt 2: Sudden root shell activity correlating with non-root parent processes
// Detects privilege transition consistent with successful kernel LPE
Syslog
| where TimeGenerated > ago(7d)
| where SyslogMessage has_any ("uid=0", "euid=0", "session opened for user root")
| where SyslogMessage !has_any ("sudo:", "su:", "sshd", "cron", "CRON", "systemd")
| summarize RootEvents = count(), Samples = make_list(SyslogMessage, 5) by HostName, bin(TimeGenerated, 1h)
| order by TimeGenerated desc;

// Hunt 3: Kernel error/anomaly messages — potential exploit crash artifacts or OOPS
// Race condition and OOB write attempts frequently leave kernel log noise before success
Syslog
| where TimeGenerated > ago(7d)
| where Facility == "kern"
| where SyslogMessage has_any ("BUG:", "Oops", "general protection fault", "kernel panic", "KASAN", "out-of-bounds", "use-after-free", "unable to handle kernel")
| summarize KernelAnomalies = count(), Samples = make_list(SyslogMessage, 3) by HostName, SeverityLevel, bin(TimeGenerated, 1h)
| order by KernelAnomalies desc;

// Hunt 4: Defender for Endpoint — process execution from writable dirs on Linux devices
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where FolderPath has_any ("/tmp/", "/var/tmp/", "/dev/shm/", "/run/shm/")
| where InitiatingProcessAccountName !in ("root", "system")
| summarize Count = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated)
  by DeviceName, FileName, FolderPath, SHA256, InitiatingProcessAccountName
| order by LastSeen desc;

Velociraptor VQL Hunt

Use this artifact to triage suspected hosts for exploit staging artifacts and unexpected privilege transitions.

VQL — Velociraptor
-- Hunt for LPE exploit staging and execution artifacts on Linux endpoints
-- Targets CVE-2025-39964 / CVE-2026-53266 post-exploitation behavior

-- 1. Recently created executables in world-writable directories
SELECT FullPath, Size, Mtime, Ctime, Mode.String AS Permissions
FROM glob(globs=['/tmp/**', '/var/tmp/**', '/dev/shm/**', '/run/shm/**'])
WHERE NOT IsDir
  AND Mode.String =~ 'x'
  AND Mtime > now() - 604800
ORDER BY Mtime DESC

-- 2. Processes running from suspicious paths or with mismatched privilege context
SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Exe =~ '^/(tmp|var/tmp|dev/shm|run/shm)/'
   OR CommandLine =~ '(/tmp/|/dev/shm/)[a-zA-Z0-9_.-]+'

-- 3. Audit kernel log artifacts indicative of exploitation attempts
SELECT FullPath, Size, Mtime
FROM glob(globs=['/var/log/kern.log*', '/var/log/messages*', '/var/log/audit/audit.log*'])
WHERE Mtime > now() - 604800

Remediation and Verification Script

Use the following Bash script to inventory kernel versions, check patch availability, and verify remediation across your Linux estate. It is distribution-aware and safe to run read-only (audit mode) before applying updates.

Bash / Shell
#!/usr/bin/env bash
# kernel-kev-audit.sh — Audit and remediate Linux kernel patch status
# Covers CISA KEV additions CVE-2025-39964 and CVE-2026-53266 (KEV date: 2026-09-18)
# Usage: sudo ./kernel-kev-audit.sh [--apply]
set -euo pipefail

APPLY=false
[[ "${1:-}" == "--apply" ]] && APPLY=true

echo "=== CISA KEV Kernel Audit: CVE-2025-39964 / CVE-2026-53266 ==="
echo "Host: $(hostname) | Date: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
echo
echo "[*] Running kernel: $(uname -r)"
echo "[*] Architecture:   $(uname -m)"

# --- Identify distribution ---
if [[ -f /etc/os-release ]]; then
  . /etc/os-release
  DISTRO="${ID}"
  echo "[*] Distribution:   ${PRETTY_NAME}"
else
  echo "[!] Cannot identify distribution. Manual review required."
  exit 1
fi

# --- Distribution-specific patch check ---
case "${DISTRO}" in
  ubuntu|debian)
    echo "[*] Checking for pending kernel security updates..."
    apt-get update -qq 2>/dev/null || true
    apt list --upgradable 2>/dev/null | grep -iE 'linux-image|linux-generic|linux-headers' || \
      echo "[+] No kernel updates pending (verify against vendor tracker for CVE status)."
    echo "[*] Ubuntu security status (if ubuntu-advantage-tools present):"
    command -v pro >/dev/null 2>&1 && pro security-status --esm-infra 2>/dev/null || true
    if [[ "${APPLY}" == true ]]; then
      echo "[*] Applying kernel updates..."
      DEBIAN_FRONTEND=noninteractive apt-get install --only-upgrade -y \
        linux-image-generic linux-headers-generic 2>/dev/null || \
      DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y
      echo "[!] REBOOT REQUIRED to load patched kernel."
    fi
    ;;
  rhel|centos|rocky|almalinux|fedora|amzn)
    echo "[*] Checking for pending kernel security updates..."
    yum updateinfo list security 2>/dev/null | grep -i kernel || \
      echo "[+] No kernel security advisories pending (verify against vendor tracker)."
    if [[ "${APPLY}" == true ]]; then
      echo "[*] Applying kernel updates..."
      yum update -y kernel kernel-core kernel-modules || dnf update -y kernel
      echo "[!] REBOOT REQUIRED to load patched kernel."
    fi
    ;;
  sles|opensuse*)
    echo "[*] Checking patches via zypper..."
    zypper list-patches --category security 2>/dev/null | grep -i kernel || \
      echo "[+] No kernel security patches pending."
    [[ "${APPLY}" == true ]] && zypper patch --category security -y && echo "[!] REBOOT REQUIRED."
    ;;
  *)
    echo "[!] Unsupported distro '${DISTRO}'. Verify kernel build date against vendor advisory manually."
    ;;
esac

echo
echo "=== Exposure Indicators (manual review) ==="
echo "[*] Containers sharing this kernel:"
command -v docker >/dev/null 2>&1 && docker ps --format '{{.Names}} ({{.Image}})' | head -20 || echo "    (docker not present)"
command -v kubectl >/dev/null 2>&1 && kubectl get pods -A --no-headers 2>/dev/null | wc -l | xargs echo "    k8s pods on node:" || true

echo "[*] Recent suspicious executions from writable paths (last 7 days, audit log):"
if [[ -f /var/log/audit/audit.log ]]; then
  grep -a 'type=EXECVE' /var/log/audit/audit.log 2>/dev/null | \
    grep -aE '/tmp/|/dev/shm/|/var/tmp/' | tail -20 || echo "    none found"
else
  echo "    (auditd not logging EXECVE — enable audit rules: -a always,exit -F arch=b64 -S execve -F dir=/tmp)"
fi

echo "[*] Recent kernel anomalies:"
(journalctl -k --since "7 days ago" 2>/dev/null || dmesg 2>/dev/null) | \
  grep -iE 'BUG:|Oops|general protection fault|out-of-bounds|KASAN' | tail -10 || echo "    none found"

echo
echo "[*] NOTE: Kernel updates are not active until reboot. Confirm post-reboot with: uname -r"
echo "[*] KEV reference: https://www.cisa.gov/known-exploited-vulnerabilities-catalog"
echo "[*] Alert: https://www.cisa.gov/news-events/alerts/2026/09/18/cisa-adds-two-known-exploited-vulnerabilities-catalog"

Operational note on reboots: kernel patches are dormant until the running kernel is replaced. If your organization uses live patching (Canonical Livepatch, Red Hat kpatch, SUSE kGraft, KernelCare), verify the specific CVE is covered by an available live patch module before relying on it as a workaround — and still schedule the reboot.


Remediation

Immediate Actions (24–72 hours)

  1. Inventory your kernel exposure. Enumerate every Linux host, VM, container node, and appliance, capturing uname -r. Map against your distribution's security tracker for CVE-2025-39964 and CVE-2026-53266 to determine affected versions and fixed releases. Prioritize internet-facing systems, multi-tenant hosts, Kubernetes nodes, and jump boxes.
  2. Patch and reboot. Apply vendor kernel updates per your distribution's advisory, then reboot to load the patched kernel. Verify post-reboot with uname -r and confirm against the vendor's fixed version listing.
  3. Hunt before and after patching. Because both CVEs are actively exploited LPEs, unpatched systems that were reachable or hosted untrusted code execution should be treated as potentially compromised. Run the KQL hunts and VQL artifact above; investigate any root-shell anomalies, writable-path executions, or kernel OOPS/BUG messages.
  4. Meet the BOD 26-04 deadline (federal agencies). FCEB agencies must remediate per the due date assigned in the KEV Catalog. Document remediation evidence — scanning reports showing patched kernel versions — for compliance reporting.

Compensating Controls (where patching is delayed)

  • Restrict local execution: enforce mount options noexec,nosuid,nodev on /tmp, /var/tmp, and /dev/shm where workload-compatible. This breaks the most common exploit staging pattern.
  • Remove compilers from production: uninstall gcc, clang, and build tooling from production servers to prevent on-host exploit compilation.
  • Enable and centralize auditd: capture execve syscalls and forward kernel facility logs to your SIEM — kernel exploit attempts (successful or not) frequently leave crash artifacts.
  • Harden container workloads: run containers as non-root, drop all capabilities, apply seccomp/AppArmor/SELinux enforcing profiles, and treat any kernel LPE as a full container-escape path.
  • Segment and monitor: isolate unpatched legacy systems behind strict network ACLs and elevate monitoring on any host that cannot be patched within the KEV window.

Reference Links

Bottom line: two Linux kernel privilege escalations are being actively exploited. The patch is the fix, but the hunt is the assurance. Patch fast, reboot, and verify nobody got there first.

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.