CVE-2026-48749 Microsoft Sentinel · KQL

Detect CVE-2026-48749: Incus Arbitrary File Read/Write via rootfs Symlink in Malicious Image in Microsoft Sentinel

Detects exploitation of CVE-2026-48749, a critical vulnerability in Incus (github.com/lxc/incus/v7/cmd/incusd) versions prior to 7.2.0. Attackers can craft a malicious container image with symlinks in the rootfs/ directory that resolve to host filesystem paths, enabling arbitrary file read and write on the underlying host. This constitutes a container escape primitive and may lead to full host compromise. CVSS 9.9 with public PoC available.

MITRE ATT&CK

Tactic
Initial Access Persistence Privilege Escalation Defense Evasion

KQL Detection Query

Microsoft Sentinel (KQL)
kusto
let SuspiciousIncusPaths = dynamic(['/etc/passwd', '/etc/shadow', '/etc/sudoers', '/root/.ssh', '/var/lib/incus', '/run/incus']);
let IncusImageImport = ProcessEvents
| where TimeGenerated > ago(24h)
| where ProcessCommandLine has_any ('incus image import', 'incusd', 'incus launch', 'incus init')
| project TimeGenerated, DeviceName, AccountName, ProcessCommandLine, InitiatingProcessFileName;
let SymlinkActivity = DeviceFileEvents
| where TimeGenerated > ago(24h)
| where ActionType in ('FileCreated', 'FileModified')
| where FolderPath has 'rootfs'
| where FolderPath has_any ('/var/lib/incus', '/var/lib/lxc')
| project TimeGenerated, DeviceName, FolderPath, FileName, ActionType, InitiatingProcessFileName, InitiatingProcessCommandLine;
let HostFileAccess = DeviceFileEvents
| where TimeGenerated > ago(24h)
| where InitiatingProcessFileName in~ ('incusd', 'lxd')
| where FolderPath has_any (SuspiciousIncusPaths)
| project TimeGenerated, DeviceName, FolderPath, FileName, ActionType, InitiatingProcessFileName;
IncusImageImport
| join kind=leftouter (SymlinkActivity) on DeviceName
| union HostFileAccess
| summarize EventCount=count(), Actions=make_set(ActionType), Paths=make_set(FolderPath) by DeviceName, bin(TimeGenerated, 5m)
| where EventCount > 0
| extend AlertDetail = strcat('Potential CVE-2026-48749 exploitation: Incus rootfs symlink traversal detected on ', DeviceName)
| project TimeGenerated, DeviceName, AlertDetail, EventCount, Actions, Paths
critical severity medium confidence

Detects suspicious file access patterns from incusd process targeting host-sensitive paths, and monitors rootfs directory symlink creation during image import operations indicative of CVE-2026-48749 exploitation.

Data Sources

Microsoft Defender for EndpointMicrosoft SentinelDeviceFileEventsDeviceProcessEvents

Required Tables

DeviceFileEventsDeviceProcessEventsProcessEvents

False Positives & Tuning

  • Legitimate Incus image imports that include rootfs symlinks for valid bind-mount configurations
  • Administrative access to container storage paths by authorized infrastructure engineers
  • Backup or snapshot operations that traverse container rootfs directories
  • Incus upgrade or migration processes that touch host filesystem paths

Other platforms for CVE-2026-48749


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Create malicious Incus image with rootfs symlink targeting /etc/passwd

    Expected signal: auditd syscall events for symlink() within /var/lib/incus/*/rootfs/; file open events on host /etc/passwd initiated by incusd process; DeviceFileEvents showing incusd accessing /etc/passwd outside container namespace

  2. Test 2Exploit rootfs symlink for host SSH authorized_keys write

    Expected signal: File write event on host /root/.ssh/authorized_keys attributed to incusd or container init process; auditd records showing write() syscall to /root/.ssh/authorized_keys from incusd context; FIM alert on /root/.ssh/authorized_keys modification

  3. Test 3Read host /etc/shadow via rootfs symlink for credential harvesting

    Expected signal: File read event on host /etc/shadow initiated by incusd process context; auditd openat() syscall on /etc/shadow attributed to container namespace but resolved to host inode; audit log entry for privileged file access outside expected paths

Unlock Pro Content

Get the full detection package for CVE-2026-48749 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections