Debian has issued security advisory DSA-6477-1 for the stable Trixie (13) release, patching multiple vulnerabilities in the Linux kernel that can lead to unauthorized privilege escalation, denial of service, and information disclosure. If you run Debian 13 on servers, workstations, containers' hosts, or embedded infrastructure, this is a patch-now advisory — local privilege escalation (LPE) kernel flaws are the second stage of nearly every modern intrusion chain, and leaving them unpatched hands attackers the keys after even the most trivial initial foothold.
What Happened
Debian's security team announced that several vulnerabilities were discovered in the Linux kernel shipped with the stable Trixie distribution. The issues span three impact classes:
- Privilege escalation — a local user (or an attacker with code execution as an unprivileged account, including inside a container sharing the host kernel) can gain elevated privileges, typically root.
- Denial of service — triggered conditions can crash or hang the kernel, taking down hosts, hypervisors, or network appliances.
- Information leaks — kernel memory disclosure flaws can expose sensitive data (credentials, key material, pointers that defeat KASLR) to unprivileged processes.
The fixes are available in kernel package version 6.12.107-1 for Trixie. Debian's advisory is published at DSA-6477-1 and tracked via the LinuxSecurity advisory mirror.
This matters because kernel LPEs are force multipliers. A web shell, a phished user, a compromised CI runner, or an escaped container is a nuisance until a local attacker escalates to root — then it becomes credential theft, lateral movement, EDR tampering, and ransomware staging. Patch cadence on kernel updates is one of the highest-leverage controls in your vulnerability management program.
Technical Analysis
Affected Products and Versions
| Item | Detail |
|---|---|
| Distribution | Debian 13 "Trixie" (stable) |
| Affected component | Linux kernel (6.12 LTS series) |
| Fixed version | 6.12.107-1 |
| Impact classes | Privilege escalation, denial of service, information disclosure |
| Attack vector | Local (requires an unprivileged execution context on the host or in a container sharing the kernel) |
Verify your exposure:
# Check the running kernel and installed kernel package version
uname -r
dpkg -l | grep linux-image
# Compare against the fixed release — anything below 6.12.107-1 on Trixie is vulnerable
apt-cache policy linux-image-amd64
How These Flaws Get Exploited (Defender's View)
Debian kernel security announcements bundle fixes from upstream stable releases. The exploitation pattern for this class of bug is consistent and well understood:
- Initial access via any low-privileged channel: a compromised service account, a vulnerable web application, a malicious package build, SSH with a weak credential, or a workload inside a container.
- LPE execution: the attacker drops and runs a local exploit binary (often compiled on-box with
gcc/ccto evade hash-based detection) targeting the kernel flaw to escalate to UID 0. - Post-exploitation: root enables persistence (systemd units, cron, LD_PRELOAD rootkits, kernel modules), credential harvesting from memory and disk, EDR/logging tampering, and pivoting.
Key exploitation prerequisites: local code execution and an unpatched kernel. There is no authentication barrier beyond having any shell on the box. Containerized workloads do not isolate against kernel bugs — every container on a host shares the same kernel, so a vulnerable Trixie host running Docker, containerd, or Kubernetes exposes all workloads on that node.
Exploitation Status
Debian's advisory does not attribute these fixes to a specific in-the-wild campaign, and the summary does not enumerate individual CVE identifiers. That said, treat bundled kernel LPE fixes as pre-emptive criticals: historically, a meaningful percentage of patched kernel LPEs see public proof-of-concept code or active exploitation within weeks of disclosure, because patch diffs give researchers and attackers a roadmap to the vulnerable code paths. Check the CISA Known Exploited Vulnerabilities catalog as individual CVEs from this rollup are published, and monitor the Debian security tracker for per-CVE mapping as it populates.
Detection & Response
Patching is the fix, but you should also hunt for the behavior that follows kernel exploitation — because any host that sat unpatched with an exposed attack surface may already have been used as a stepping stone. Focus on: unprivileged users spawning root shells, unexpected compilers on servers, new setuid binaries, and kernel module insertion outside of package management.
Sigma Rules
---
title: Unprivileged User Spawning Root Shell or Privilege Escalation Artifacts
id: 3f8a2c14-7b61-4e59-a2d3-9c1e5f7a8b02
status: experimental
description: Detects common post-exploitation patterns following a local privilege escalation on Linux, such as unprivileged service accounts spawning interactive shells, su/sudo abuse, or execution of binaries from world-writable paths consistent with compiled kernel LPE exploits.
references:
- https://linuxsecurity.com/advisories/debian/debian-dsa-6477-1-linux
- https://attack.mitre.org/techniques/T1068/
- https://attack.mitre.org/techniques/T1548/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.privilege_escalation
- attack.t1068
- attack.t1548
logsource:
category: process_creation
product: linux
detection:
selection_service_shell:
User|contains:
- 'www-data'
- 'wwwrun'
- 'apache'
- 'nginx'
- 'nobody'
- 'daemon'
- 'tomcat'
- 'jenkins'
Image|endswith:
- '/sh'
- '/bash'
- '/dash'
- '/zsh'
selection_tmp_exec:
CommandLine|contains:
- '/tmp/'
- '/dev/shm/'
- '/var/tmp/'
Image|startswith:
- '/tmp/'
- '/dev/shm/'
- '/var/tmp/'
condition: 1 of selection_*
falsepositives:
- Legitimate application drop scripts or CI jobs running from temporary directories
- Admin maintenance shells on service accounts
level: high
---
title: Kernel Module Loaded Outside Package Management
id: 8c4d1e72-3a95-4b08-b6f1-2d7e9a0c5f43
status: experimental
description: Detects insertion of kernel modules via insmod/modprobe executed outside of legitimate package installation or boot processes. Loadable kernel module rootkits are a common persistence mechanism after a successful kernel privilege escalation.
references:
- https://linuxsecurity.com/advisories/debian/debian-dsa-6477-1-linux
- https://attack.mitre.org/techniques/T1547/006/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.persistence
- attack.t1547.006
- attack.defense_evasion
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith:
- '/insmod'
- '/modprobe'
- '/kmod'
filter_pkgmgr:
ParentImage|endswith:
- '/dpkg'
- '/apt'
- '/apt-get'
- '/dkms'
- '/systemd'
condition: selection and not 1 of filter_*
falsepositives:
- Administrators manually loading vendor drivers or out-of-tree modules
- DKMS rebuilds during kernel updates (filter on dkms parent where possible)
level: medium
---
title: Compiler Execution on Server Workload Indicating On-Host Exploit Build
id: 5b2e7f09-1c48-4d3a-96e7-4f0a8b6c2d15
status: experimental
description: Detects gcc/cc/clang execution by non-developer or service accounts on production servers. Kernel LPE exploits are frequently compiled directly on the target host to match the running kernel version.
references:
- https://linuxsecurity.com/advisories/debian/debian-dsa-6477-1-linux
- https://attack.mitre.org/techniques/T1027/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.defense_evasion
- attack.t1027
- attack.privilege_escalation
- attack.t1068
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith:
- '/gcc'
- '/cc'
- '/clang'
- '/g++'
- '/make'
User|contains:
- 'www-data'
- 'nginx'
- 'apache'
- 'nobody'
- 'daemon'
- 'postgres'
- 'mysql'
- 'redis'
- 'tomcat'
falsepositives:
- Build servers and CI runners (scope these hosts out via asset tagging)
level: high
KQL — Microsoft Sentinel / Defender
Even for Linux fleets, Sentinel is a viable hunting plane when Syslog, auditd, or CEF forwarding is configured (or when Defender for Endpoint is deployed to Linux servers). The following query hunts for the post-exploitation behaviors above across both Syslog-ingested process events and Defender process telemetry.
// Hunt: post-LPE behavior on Debian/Linux hosts — service-account shells,
// execution from world-writable paths, and unexpected kernel module loads
let ServiceAccounts = dynamic(["www-data","nginx","apache","nobody","daemon","tomcat","jenkins","postgres","mysql","redis"]);
let ShellImages = dynamic(["/bin/sh","/bin/bash","/bin/dash","/bin/zsh","/usr/bin/bash","/usr/bin/zsh"]);
let SuspiciousPaths = dynamic(["/tmp/","/dev/shm/","/var/tmp/"]);
union isfuzzy=true
(
Syslog
| where TimeGenerated > ago(7d)
| where Facility =~ "authpriv" or ProcessName in~ ("sh","bash","dash","zsh","insmod","modprobe","gcc","cc","make")
| extend Msg = tostring(SyslogMessage)
| where Msg has_any (SuspiciousPaths)
or (ProcessName in~ ("insmod","modprobe") and Msg !has "dpkg")
| project TimeGenerated, Computer, ProcessName, Msg, Source = "Syslog"
),
(
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where DeviceName has_any ("debian","trixie") or true // remove device filter if fleet-wide
| extend InitiatingUser = tostring(InitiatingProcessAccountName)
| where
(InitiatingUser in~ (ServiceAccounts) and FileName in~ ("sh","bash","dash","zsh"))
or (ProcessCommandLine has_any (SuspiciousPaths) and FileName !in~ ("apt","dpkg"))
or (FileName in~ ("insmod","modprobe") and InitiatingProcessFileName !in~ ("dpkg","apt","apt-get","dkms"))
| project TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingUser, InitiatingProcessFileName, Source = "MDE"
)
| order by TimeGenerated desc
Tune the DeviceName has_any line to your naming convention or drop it for a fleet-wide sweep. Expect hits on build agents — exclude them by asset tag rather than deleting the logic.
Velociraptor VQL
If you have Velociraptor deployed across your Linux servers (or run it ad hoc during IR), this artifact hunts for the two most reliable forensic residues of kernel exploitation: newly written executable files in world-writable directories and suspicious setuid binaries that did not come from dpkg.
-- Hunt: artifacts of kernel LPE post-exploitation on Debian hosts
-- 1) Executables staged in world-writable paths (typical exploit droppers)
-- 2) Recently created setuid/setgid binaries (typical post-root backdoors)
SELECT FullPath, Size, Mtime, Ctime,
Mode.String AS Mode
FROM glob(globs=['/tmp/**','/dev/shm/**','/var/tmp/**'])
WHERE NOT IsDir
AND (Mode.String =~ 'x') -- any execute bit set
AND Mtime > now() - 604800 -- written in the last 7 days
UNION ALL
SELECT FullPath, Size, Mtime, Ctime,
Mode.String AS Mode
FROM glob(globs=['/**'])
WHERE NOT IsDir
AND (Mode.String =~ '4[0-7]{3}' OR Mode.String =~ '2[0-7]{3}') -- setuid/setgid
AND FullPath !~ '^/(usr/)?(bin|sbin|lib|libexec)/' -- exclude standard dirs
AND Mtime > now() - 604800
For breadth-first sweeps, constrain the second glob to directories you actually care about (e.g. /home/**, /opt/**, /srv/**, /usr/local/**) — a full-filesystem setuid sweep is expensive on large nodes.
Remediation and Verification Script
#!/usr/bin/env bash
# DSA-6477-1 verification and remediation for Debian 13 (Trixie)
# Run as root. Verifies codename, applies the kernel update, and confirms the fix.
set -euo pipefail
FIXED_VERSION="6.12.107-1"
# 1) Confirm this is a Trixie system
CODENAME=$(. /etc/os-release && echo "${VERSION_CODENAME:-unknown}")
if [ "$CODENAME" != "trixie" ]; then
echo "[WARN] This host reports codename '$CODENAME' — DSA-6477-1 targets Trixie. Check your dist's tracker."
fi
# 2) Refresh package metadata and upgrade the kernel packages
apt-get update
apt-get install -y --only-upgrade linux-image-amd64 linux-headers-amd64 2>/dev/null \
|| apt-get install -y --only-upgrade 'linux-image*'
# 3) Verify installed kernel package meets or exceeds the fixed version
INSTALLED=$(dpkg-query -W -f='${Version}' linux-image-amd64 2>/dev/null || echo "0")
if dpkg --compare-versions "$INSTALLED" ge "$FIXED_VERSION"; then
echo "[OK] Installed kernel package $INSTALLED >= $FIXED_VERSION (DSA-6477-1 remediated)"
else
echo "[FAIL] Installed kernel package $INSTALLED is BELOW $FIXED_VERSION — investigate apt sources/pinning"
exit 1
fi
# 4) The running kernel does not change until reboot — check if a reboot is pending
RUNNING=$(uname -r)
if [ -f /var/run/reboot-required ]; then
echo "[ACTION REQUIRED] Reboot pending. Running kernel: $RUNNING — schedule a reboot to activate the patched kernel."
cat /var/run/reboot-required.pkgs 2>/dev/null || true
else
echo "[INFO] Running kernel: $RUNNING"
fi
# 5) (Optional hardening) Restrict unprivileged user namespaces — a common LPE attack surface
# Only apply if your workloads do NOT rely on rootless containers/unprivileged namespaces.
# sysctl -w kernel.unprivileged_userns_clone=0
# echo 'kernel.unprivileged_userns_clone=0' > /etc/sysctl.d/90-disable-unpriv-userns.conf
Remediation
- Patch immediately. Update all Debian 13 (Trixie) systems to kernel package 6.12.107-1:
apt-get update && apt-get upgrade, then reboot. A patched-but-not-booted kernel leaves the host fully vulnerable — track reboots with/var/run/reboot-requiredor a fleet tool (needrestart, Ansible, or your config management stack). - Prioritize by exposure. Patch in this order: (a) internet-facing multi-tenant hosts and Kubernetes nodes, (b) jump boxes and hosts with broad interactive access, (c) internal servers, (d) workstations. Any host where an unprivileged principal can execute code is a candidate for escalation to root.
- Address the container blind spot. Kernel vulnerabilities cross container boundaries. Inventory container hosts running Trixie kernels and patch the host — rebuilding container images does nothing for kernel bugs.
- Consider attack-surface reduction where operationally safe. Disabling unprivileged user namespaces (
kernel.unprivileged_userns_clone=0) removes a large historical class of kernel LPE primitives, but it breaks rootless Podman/Docker and some sandboxing — test before deploying fleet-wide. Debian's newer releases gate this via AppArmor-based controls; review your policy before assuming coverage. - Hunt before you trust. Hosts that ran a vulnerable kernel with an exposed service should be swept with the detections above. Kernel LPE plus root means the attacker could have tampered with logs — if you find indicators, treat it as a full IR engagement, not a reimage-and-forget.
- Track the rollup. Monitor the Debian Security Tracker for per-CVE mappings as they are published, and cross-reference against the CISA KEV catalog. If any CVE from this bundle lands in KEV, federal-remediation deadlines apply and your SLA should compress accordingly.
- Fix the process, not just the host. Kernel rollups ship constantly. If this advisory caught you flat-footed, the gap is in patch orchestration: enroll Trixie hosts in unattended-upgrades for security updates (with reboot scheduling), and measure time-to-reboot as a first-class vulnerability management KPI alongside time-to-patch.
The full advisory text is available via the DSA-6477-1 announcement and Debian's security pages.
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.