<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 00:48:48 +0000</lastBuildDate>
    <item>
      <title>bdu:2026-07537</title>
      <link>https://vulnerability.circl.lu/vuln/bdu:2026-07537</link>
      <description>bdu:2026-07537</description>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/bdu:2026-07537</guid>
    </item>
    <item>
      <title>fkie_cve-2026-34177</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-34177</link>
      <description>&lt;p&gt;Canonical LXD versions 4.12 through 6.7 contain an incomplete denylist in isVMLowLevelOptionForbidden (lxd/project/limits/permissions.go), which omits raw.apparmor and raw.qemu.conf from the set of keys blocked under the restricted.virtual-machines.lowlevel=block project restriction. A remote attacker with can_edit permission on a VM instance in a restricted project can inject an AppArmor rule and a QEMU chardev configuration that bridges the LXD Unix socket into the guest VM, enabling privilege escalation to LXD cluster administrator and subsequently to host root.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Canonical LXD versions 4.12 through 6.7 contain an incomplete denylist in isVMLowLevelOptionForbidden (lxd/project/limits/permissions.go), which omits raw.apparmor and raw.qemu.conf from the set of keys blocked under the restricted.virtual-machines.lowlevel=block project restriction. A remote attacker with can_edit permission on a VM instance in a restricted project can inject an AppArmor rule and a QEMU chardev configuration that bridges the LXD Unix socket into the guest VM, enabling privilege escalation to LXD cluster administrator and subsequently to host root.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-34177</guid>
    </item>
    <item>
      <title>GHSA-fm2x-c5qw-4h6f — LXD: VM lowlevel restriction bypass via raw.apparmor and raw.qemu.conf</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-fm2x-c5qw-4h6f</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/canonical/lxd&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `isVMLowLevelOptionForbidden` function in `lxd/project/limits/permissions.go` is missing `raw.apparmor` and `raw.qemu.conf` from its hardcoded forbidden list. A user with `can_edit` permission on a VM instance in a restricted project can combine these two omissions to bridge the LXD unix socket into the guest VM and gain full cluster administrator access. This bypasses the `restricted.virtual-machines.lowlevel=block` project restriction, which is the security control specifically designed to prevent raw config injection.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;### Affected code&lt;/p&gt;
&lt;p&gt;The enforcement point for VM lowlevel restrictions is `isVMLowLevelOptionForbidden` at `lxd/project/limits/permissions.go:924-926`:&lt;/p&gt;
&lt;p&gt;```go
func isVMLowLevelOptionForbidden(key string) bool {
    return slices.Contains([]string{&amp;#34;boot.host_shutdown_timeout&amp;#34;, &amp;#34;limits.memory.hugepages&amp;#34;, &amp;#34;raw.idmap&amp;#34;, &amp;#34;raw.qemu&amp;#34;}, key)
}
```&lt;/p&gt;
&lt;p&gt;This list is missing two security-critical config keys:&lt;/p&gt;
&lt;p&gt;- **`raw.apparmor`** -- allows injecting arbitrary AppArmor rules into the QEMU process confinement profile
- **`raw.qemu.conf`** -- allows injecting arbitrary sections into the QEMU configuration file&lt;/p&gt;
&lt;p&gt;The container equivalent (`isContainerLowLevelOptionForbidden` at line 916) correctly includes `raw.apparmor` in its forbidden list.&lt;/p&gt;
&lt;p&gt;### Attack mechanism&lt;/p&gt;
&lt;p&gt;Both `raw.apparmor` and `raw.qemu.conf` are valid VM config keys (defined in `lxd/instance/instancetype/instance.go`). When a restricted user sets them on a VM in a project with `restric…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/canonical/lxd&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `isVMLowLevelOptionForbidden` function in `lxd/project/limits/permissions.go` is missing `raw.apparmor` and `raw.qemu.conf` from its hardcoded forbidden list. A user with `can_edit` permission on a VM instance in a restricted project can combine these two omissions to bridge the LXD unix socket into the guest VM and gain full cluster administrator access. This bypasses the `restricted.virtual-machines.lowlevel=block` project restriction, which is the security control specifically designed to prevent raw config injection.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;### Affected code&lt;/p&gt;
&lt;p&gt;The enforcement point for VM lowlevel restrictions is `isVMLowLevelOptionForbidden` at `lxd/project/limits/permissions.go:924-926`:&lt;/p&gt;
&lt;p&gt;```go
func isVMLowLevelOptionForbidden(key string) bool {
    return slices.Contains([]string{&amp;#34;boot.host_shutdown_timeout&amp;#34;, &amp;#34;limits.memory.hugepages&amp;#34;, &amp;#34;raw.idmap&amp;#34;, &amp;#34;raw.qemu&amp;#34;}, key)
}
```&lt;/p&gt;
&lt;p&gt;This list is missing two security-critical config keys:&lt;/p&gt;
&lt;p&gt;- **`raw.apparmor`** -- allows injecting arbitrary AppArmor rules into the QEMU process confinement profile
- **`raw.qemu.conf`** -- allows injecting arbitrary sections into the QEMU configuration file&lt;/p&gt;
&lt;p&gt;The container equivalent (`isContainerLowLevelOptionForbidden` at line 916) correctly includes `raw.apparmor` in its forbidden list.&lt;/p&gt;
&lt;p&gt;### Attack mechanism&lt;/p&gt;
&lt;p&gt;Both `raw.apparmor` and `raw.qemu.conf` are valid VM config keys (defined in `lxd/instance/instancetype/instance.go`). When a restricted user sets them on a VM in a project with `restric…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-fm2x-c5qw-4h6f</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-34177</title>
      <link>https://vulnerability.circl.lu/vuln/ubuntu-cve-2026-34177</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:24.04:LTS: incus&lt;/p&gt;
&lt;p&gt;Canonical LXD versions 4.12 through 6.7 contain an incomplete denylist in isVMLowLevelOptionForbidden (lxd/project/limits/permissions.go), which omits raw.apparmor and raw.qemu.conf from the set of keys blocked under the restricted.virtual-machines.lowlevel=block project restriction. A remote attacker with can_edit permission on a VM instance in a restricted project can inject an AppArmor rule and a QEMU chardev configuration that bridges the LXD Unix socket into the guest VM, enabling privilege escalation to LXD cluster administrator and subsequently to host root.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:24.04:LTS: incus&lt;/p&gt;
&lt;p&gt;Canonical LXD versions 4.12 through 6.7 contain an incomplete denylist in isVMLowLevelOptionForbidden (lxd/project/limits/permissions.go), which omits raw.apparmor and raw.qemu.conf from the set of keys blocked under the restricted.virtual-machines.lowlevel=block project restriction. A remote attacker with can_edit permission on a VM instance in a restricted project can inject an AppArmor rule and a QEMU chardev configuration that bridges the LXD Unix socket into the guest VM, enabling privilege escalation to LXD cluster administrator and subsequently to host root.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ubuntu-cve-2026-34177</guid>
    </item>
  </channel>
</rss>
