CVE-2026-33711
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-33711 is a local privilege escalation vulnerability in Incus, a system container and virtual machine manager, affecting all versions prior to 6.23.0. The flaw exists in the VM screenshot API, which writes temporary files to predictable paths under /tmp (e.g., /tmp/incus_screenshot_<instance_id>), enabling a local attacker to pre-place symlinks that redirect file truncation and ownership changes to arbitrary host files. It was discovered by the team at 7asecurity, disclosed on March 26, 2026, and fixed in version 6.23.0. The vulnerability carries a CVSS v3.1 base score of 7.8 (High) and a CVSS v4.0 base score of 4.7 (Medium) (GitHub Advisory, Red Hat Bugzilla).

Technical details

The root cause is improper symlink resolution before file access (CWE-61 / CWE-59): the incusd daemon constructs a temporary screenshot file path using a deterministic format (/tmp/incus_screenshot_%d based on instance ID) in the world-writable /tmp directory, without using secure temporary file creation primitives. When a VGA screenshot is requested, the daemon calls os.Create() on this predictable path, applies Chmod(0o600), then calls Chown() to transfer ownership to the unprivileged VM UID before invoking the QEMU Machine Protocol Screendump command with the same mutable pathname. If an attacker pre-places a symlink at that path pointing to an arbitrary host file, the daemon will truncate and reassign ownership of that target file instead. Exploitation requires that the Linux kernel's protected_symlinks feature (/proc/sys/fs/protected_symlinks) be set to 0, which is non-default but possible on hardened or custom-configured systems (GitHub Advisory).

Impact

A successful exploit allows a low-privileged local attacker to truncate arbitrary root-owned files and reassign their ownership to the unprivileged VM UID (incus), resulting in high integrity and availability impact. Practical consequences include destruction of sensitive credentials or configuration files, corruption of startup or service files enabling persistence, and further local privilege escalation on the host. Confidentiality impact is limited, as the attack does not directly expose file contents, but the ability to alter ownership of security-relevant paths can facilitate follow-on attacks (GitHub Advisory, Red Hat Bugzilla).

Exploitability

A detailed proof-of-concept (PoC) with step-by-step commands is publicly available in the official security advisory, demonstrating how to truncate and change ownership of arbitrary files on a vulnerable system (GitHub Advisory). The CVSS v4.0 exploit maturity is rated PROOF_OF_CONCEPT. There is no evidence of in-the-wild exploitation at this time, and the vulnerability is not listed in the CISA KEV catalog. The EPSS score is approximately 0.013% (0th percentile), reflecting low near-term exploitation probability. Exploitation requires local access, low privileges, and the non-default kernel configuration of protected_symlinks=0.

Exploitation steps

  1. Verify precondition: On the target Incus host, confirm that kernel symlink protection is disabled: cat /proc/sys/fs/protected_symlinks must return 0. If not already disabled (requires root), set it with echo 0 > /proc/sys/fs/protected_symlinks.
  2. Identify target instance ID: Determine the numeric instance ID of a running Incus VM on the host (e.g., by querying incus info <vm-name> or inspecting Incus database), as the predictable path is /tmp/incus_screenshot_<ID>.
  3. Select a target file: Choose a sensitive root-owned file to truncate and hijack ownership of (e.g., /root/shadow_trap, /etc/shadow, or a service configuration file).
  4. Pre-place symlinks: As a low-privileged local user, create symlinks across a range of likely instance IDs pointing to the target file:
    for i in $(seq 1 100); do ln -sf /root/shadow_trap /tmp/incus_screenshot_$i; done
  5. Trigger the screenshot API: Request a VGA screenshot via the Incus API, causing incusd to open the predictable path, apply Chmod and Chown, and invoke QEMU's screendump:
    incus query -X GET "/1.0/instances/lpe-vm/console?project=default&type=vga" > /dev/null
  6. Verify impact: Inspect the target file to confirm it has been truncated to zero bytes and its ownership reassigned to the unprivileged VM UID:
    ls -l /root/shadow_trap && stat /root/shadow_trap
    Expected result: file size is 0, owner is incus (UID 100000) (GitHub Advisory).

Indicators of compromise

  • File System: Presence of symlinks at /tmp/incus_screenshot_* pointing to files outside /tmp, especially to sensitive paths like /etc/shadow, /root/, or service configuration files; root-owned files with unexpected zero size and ownership changed to the incus user (UID 100000).
  • Logs: Incus daemon logs (incusd) showing screenshot API requests (/1.0/instances/<name>/console?type=vga) followed by errors such as Failed taking screenshot: Failed to connect to QEMU monitor, which may indicate a symlink was followed but QEMU could not write to the redirected path.
  • Process: Unexpected chown or chmod operations on files outside /tmp originating from the incusd process, observable via auditd or inotifywait monitoring on sensitive directories.
  • Network: Unusual or repeated API calls to the Incus console endpoint (/1.0/instances/*/console) with type=vga from low-privileged users or automated scripts (GitHub Advisory).

Mitigation and workarounds

Upgrade Incus to version 6.23.0 or later, which fixes the issue by creating temporary screenshot files securely in a daemon-controlled directory rather than using predictable /tmp paths (GitHub Advisory). As a workaround on systems that cannot immediately upgrade, ensure the Linux kernel's protected_symlinks feature is enabled (the default on most distributions): verify with cat /proc/sys/fs/protected_symlinks — a value of 1 blocks this attack. To make this persistent, add fs.protected_symlinks = 1 to /etc/sysctl.conf and apply with sysctl -p. Restricting local user access to the Incus API (e.g., limiting who can invoke incus query or access the Incus socket) also reduces exposure.

Community reactions

The vulnerability was discovered and reported by the security research team at 7asecurity and was remediated by Incus maintainer stgraber in version 6.23.0 (GitHub Advisory). Red Hat tracked the issue as a high-severity bug in their Bugzilla system (Red Hat Bugzilla). openSUSE issued a security announcement covering the update, and Fedora also released updated packages addressing this CVE. No significant broader media coverage or notable social media discussion has been observed beyond standard vulnerability tracking channels.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

sid

incus: 6.0.6-2

Fixed

trixie

incus

Affected

Ubuntu

Unknown

bionic (esm-infra)

lxd

Not Affected

devel

incus

Unknown

focal (esm-apps)

lxd

Not Affected

noble

incus

Unknown

noble (esm-apps)

incus

Unknown

resolute

incus

Unknown

resolute (esm-apps)

incus

Unknown

xenial (esm-infra-legacy)

lxd

Not Affected

SourceThis report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-86993MEDIUM5.9
  • NixOS logoNixOS
  • n8n
NoYesSep 08, 2026
CVE-2026-86996MEDIUM5.3
  • NixOS logoNixOS
  • n8n
NoYesSep 08, 2026
CVE-2026-86995MEDIUM5.3
  • NixOS logoNixOS
  • n8n
NoYesSep 08, 2026
CVE-2026-86994MEDIUM5.3
  • NixOS logoNixOS
  • n8n
NoYesSep 08, 2026
CVE-2026-86085MEDIUM5.1
  • NixOS logoNixOS
  • n8n
NoYesSep 08, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management