Security News

LXD and Incus: Six Advisories Trace How a Trusted Image Breaks Out

LXD Incus image vulnerabilities: six Critical, CVSS 9.9 advisories for malicious images and snapshots, reviewed 6 Nov 2026. Fix dates inside.

Brandefense logo 7 Min Read
A sealed grey industrial shipping container with one glowing red seam, a metaphor for a trusted container image that was not fully checked before use

LXD Incus image vulnerabilities reached GitHub’s Advisory Database on 6 November 2026, when GitHub finished reviewing six Critical advisories for the Go module behind Canonical’s LXD. Each one scores CVSS 3.1 9.9. Each says it was reported from a matching Incus security advisory, and each lists a fix already present in the canonical/lxd code.

The underlying CVE records are older than the 6 November date suggests. NVD published all six CVE numbers on 21 August 2026, describing the flaw as affecting Incus, not LXD, before specific Incus versions. GitHub’s Go module page for canonical/lxd reused those same CVE numbers this week and gave them a Critical score for the first time.

Both projects run system containers and virtual machines, and teams that host several tenants on one LXD or Incus server are the ones with the most to check here. A flaw that lets one tenant’s image or snapshot reach the host affects every other tenant on that server, not only the one who uploaded it.

Brandefense already covers a different LXD flaw, a certificate-chain authentication bypass, CVE-2026-112816. That issue is unrelated in mechanism to the six advisories below, but a team reviewing one LXD flaw should check both while it has the deployment open.

What the LXD Incus Image Vulnerabilities Have in Common

Four of the six advisories share one pattern. A container image, built and offered by whoever controls it, is something the daemon has to partly trust before it can fully check it. Each advisory shows a different point where that early trust went too far.

In one advisory, the daemon fetches an image from a remote server. It accepts a fingerprint the same server supplies and writes the file to disk before confirming that fingerprint is genuine. A crafted fingerprint can point the write outside the folder the daemon expects.

In two further advisories, a crafted image contains a symlink where the daemon expects a plain folder. Unpacking the image follows that symlink, so a file the daemon later opens inside the image lands somewhere else on the host instead.

In the last of the four, a command’s output is supposed to stay inside the running container’s own output folder. If an image replaces that folder with a symlink first, the output file is created at the symlink’s target instead.

How a Trusted Image Crosses the Line
How a Trusted Image Crosses the LineAttack path in 5 steps: 1, Crafted image or snapshot (Attacker), then offered to the daemon; 2, Daemon accepts it as trusted (Incus or LXD Daemon), then fingerprint or symlink not yet confirmed; 3, Content is unpacked or opened (Extraction Step), then processes the image; 4, A symlink or path escapes the expected folder (Extraction Step), then escapes; 5, A file lands outside the image’s own area (Host Filesystem).AttackerIncus or LXD DaemonExtraction StepHost Filesystemoffered to the daemonfingerprint or symlink no…processes the imageescapesCraftedimage or…Daemonaccepts it…Content isunpacked or…A symlink orpath escape…A file landsoutside the…
  1. Crafted image or snapshotAttackeroffered to the daemon
  2. Daemon accepts it as trustedIncus or LXD Daemonfingerprint or symlink not yet confirmed
  3. Content is unpacked or openedExtraction Stepprocesses the image
  4. A symlink or path escapes the expected folderExtraction Stepescapes
  5. A file lands outside the image’s own areaHost Filesystem

All four advisories, GHSA-pjff-c2wc-f6jm, GHSA-vghh-5rfx-xhq8, GHSA-jpf8-86f3-wp38 and GHSA-9j25-mm2h-2f76, say the result is arbitrary file read or write on the host. Each says that may lead on to command execution. We leave out the exact fields and paths the advisories use to do this on purpose.

A Restricted Project and a Backup Command: Two More Patterns

GHSA-47w9-6r3f-938g covers a different kind of boundary. An Incus or LXD project can be set to block certain low-level hardware options on the containers inside it. The advisory says that block is not re-checked against a snapshot that already carried one of those options before it moved into the restricted project.

Moving a snapshot between projects is a normal administrative action, not a bug by itself. The gap is that the restricted project trusts the snapshot’s own settings instead of re-applying its own rule when the snapshot is restored. A setting the project was built to block can still run.

GHSA-fmc8-p6q7-75cc covers the backup feature. A backup job lets the caller name the compression program to use. The advisory says the daemon checks only the first word of that setting against an allowed list, not anything added after it.

The extra, unchecked part of the setting reaches the compression program as further instructions. The advisory says a crafted setting can make that program write a file outside the backup, again as the daemon’s own user. We leave out the exact syntax the advisory uses to do this.

The Scores, the Advisories and the Fix Dates

GitHub’s score for every one of the six is CVSS 3.1 9.9, Critical, with network attack vector, low complexity and low privileges required. No CVSS 4.0 score appears in any of the six GHSA pages or in NVD. GitHub’s advisories list no known CVE field for the LXD-side entries themselves, but each one’s references point to the Incus-origin CVE record that NVD published on 21 August 2026.

CISA’s own decision records, attached to the NVD entries, add a detail the GHSA pages do not state directly. For CVE-2026-48769 (the remote-fingerprint advisory), CVE-2026-48751 (the restricted-project advisory) and CVE-2026-48749 (the rootfs-symlink advisory), CISA lists exploitation as poc. For CVE-2026-48755 (the backup advisory), CVE-2026-48752 (the templates-symlink advisory) and CVE-2026-48750 (the exec-output advisory), CISA lists exploitation as none.

Fix dates differ by advisory. GHSA-jpf8-86f3-wp38 lists a fix landing in canonical/lxd on 3 February 2026. GHSA-9j25-mm2h-2f76 lists 26 June 2026. The other four, GHSA-pjff-c2wc-f6jm, GHSA-47w9-6r3f-938g, GHSA-fmc8-p6q7-75cc and GHSA-vghh-5rfx-xhq8, list the same fix commit, dated 30 June 2026.

Two of the advisories name the LXD release that shipped the fix: LXD 5.0.7 LTS and LXD 5.21.5 LTS, both released on 1 July 2026. None of the six is in the CISA Known Exploited Vulnerabilities catalog, version 2026.11.06.

Advisory Pattern Fix landed in canonical/lxd
GHSA-pjff-c2wc-f6jm Remote image fingerprint trusted before the file write it names is checked 30 June 2026
GHSA-vghh-5rfx-xhq8 Symlink in an image’s rootfs folder followed during unpack 30 June 2026
GHSA-jpf8-86f3-wp38 Symlink in an image’s templates folder followed during unpack 3 February 2026
GHSA-9j25-mm2h-2f76 Symlink in an image’s exec-output folder followed when output is recorded 26 June 2026
GHSA-47w9-6r3f-938g Restricted project’s low-level block not re-applied to a restored snapshot 30 June 2026
GHSA-fmc8-p6q7-75cc Backup compression setting only partly checked before it reaches the compressor 30 June 2026

What to Check on Your LXD or Incus Hosts

Detecting a crafted image or snapshot from the host side alone is hard. The daemon’s own logs show the import or the restore step succeeding, the same as a normal one. The daemon believed the content was safe until the moment it acted on it.

That shifts the useful work earlier, to who is allowed to add an image source or push a snapshot in the first place. Each reporter is credited in the advisory itself, and GitHub lists the Incus maintainer as the coordinator for all six.

LXD Incus image vulnerabilities checklist
  1. Confirm your LXD build dateCheck whether your canonical/lxd deployment, container image or vendored copy predates the fix commits above, especially the 30 June 2026 batch.
  2. Move to a fixed LXD releaseLXD 5.0.7 LTS or 5.21.5 LTS or later carries the fixes GitHub names for those advisories, per the release pages.
  3. Review who can publish imagesThe four image-handling advisories all start with a crafted image or snapshot, so tighten who can add an image source or push a snapshot into your projects.
  4. Review restricted project settingsAfter upgrading, confirm a project’s low-level block still holds for every snapshot already stored, not only for new ones.

This pattern, a guest object that is trusted a little too early, also shows up in hypervisor escapes. See our page on the VMware ESXi sandbox escape, CVE-2025-22225. The restricted-project gap is a least privilege boundary that a snapshot’s own settings were able to cross.

Frequently Asked Questions.

Are the six LXD Incus image vulnerabilities new flaws?

The CVE numbers were published by NVD on 21 August 2026 for Incus. GitHub reviewed the matching canonical/lxd Go module advisories and gave them a Critical score on 6 November 2026.

What do the four image-handling advisories have in common?

Each one has the daemon trust part of a container image, a remote fingerprint or a symlink inside the image, before it fully checks that content, per the advisories.

Which LXD release fixes these flaws?

Two advisories name LXD 5.0.7 LTS and LXD 5.21.5 LTS, both released 1 July 2026. The other fix dates in canonical/lxd range from 3 February to 30 June 2026.

Are any of the six advisories listed as exploited?

CISA's decision records list exploitation as poc for three of the six and none for the other three. None of the six is in the CISA KEV catalog, version 2026.11.06.

Sources

  1. 1 GHSA-pjff-c2wc-f6jm, LXD arbitrary file write via a trusted image hash
  2. 2 GHSA-47w9-6r3f-938g, LXD restricted project bypass leading to command execution
  3. 3 GHSA-fmc8-p6q7-75cc, LXD argument injection in the backup compression algorithm
  4. 4 GHSA-vghh-5rfx-xhq8, LXD arbitrary file read and write via a rootfs symlink
  5. 5 GHSA-jpf8-86f3-wp38, LXD arbitrary file read and write via a templates symlink
  6. 6 GHSA-9j25-mm2h-2f76, LXD arbitrary file write via an exec-output symlink
  7. 7 LXD 5.0.7 LTS release notes
  8. 8 LXD 5.21.5 LTS release notes
Share