Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-62941

CVE-2026-62941: Incus Auth Bypass Vulnerability

CVE-2026-62941 is an authentication bypass flaw in Incus system container and virtual machine manager that allows dangerous configuration keys to bypass project restrictions during instance copying. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-62941 Overview

CVE-2026-62941 is an authorization bypass vulnerability in Incus, an open-source system container and virtual machine manager. The flaw affects all versions prior to 7.3.0. When a user copies an instance across projects, Incus evaluates the AllowInstanceCreation project restriction check before merging the source instance's configuration into the request. Dangerous configuration keys, including security.privileged, raw.lxc, and raw.apparmor, are merged after the authorization check passes. This ordering flaw allows an authenticated user to smuggle prohibited configuration into a target project. The issue is tracked as CWE-863: Incorrect Authorization and is patched in Incus 7.3.0.

Critical Impact

An authenticated user with cross-project copy permissions can bypass target project restrictions to create privileged containers, escape isolation, and gain host-level code execution.

Affected Products

  • Incus system container and virtual machine manager
  • All versions prior to 7.3.0
  • Deployments using multi-project isolation with restricted configuration policies

Discovery Timeline

  • 2026-08-21 - CVE-2026-62941 published to the National Vulnerability Database (NVD)
  • 2026-08-21 - Last updated in NVD database

Technical Details for CVE-2026-62941

Vulnerability Analysis

Incus supports project-scoped configuration restrictions that block dangerous keys such as security.privileged, raw.lxc, and raw.apparmor. Administrators rely on these restrictions to enforce multi-tenant isolation. The copy-across-projects workflow breaks this contract. Incus calls AllowInstanceCreation against the target project using only the caller-supplied request body. After the check succeeds, the daemon merges the source instance's stored configuration into the new instance. Prohibited keys inherited from the source project bypass the target project's policy entirely.

Root Cause

The root cause is an ordering defect in the authorization flow. The project restriction check runs against an incomplete configuration snapshot. Configuration merging happens after the decision, violating the check-then-use pattern required for authorization enforcement. This aligns with CWE-863: Incorrect Authorization, where the authorization logic evaluates the wrong state.

Attack Vector

An attacker requires network access to the Incus API and valid credentials with permission to copy instances between projects. The attacker prepares an instance in a source project that contains prohibited configuration, such as security.privileged=true or a raw.lxc override. The attacker then issues a copy request targeting a restricted project. The target project accepts the instance because the pre-merge check sees a clean configuration. Once the copied instance starts, the merged privileged configuration grants the attacker container escape primitives, host filesystem access, and code execution as root on the Incus host. Refer to the GitHub Security Advisory GHSA-mq9x-prm8-3vpw for the maintainer analysis.

Detection Methods for CVE-2026-62941

Indicators of Compromise

  • Instances in restricted projects that contain security.privileged, raw.lxc, raw.apparmor, or other keys prohibited by the project's restricted.* policy.
  • Audit log entries showing cross-project copy operations (POST /1.0/instances?target-project=) followed by successful starts of privileged workloads.
  • Unexpected container processes running with UID 0 mapped to host UID 0, or containers mounting host paths outside the project's allowed set.

Detection Strategies

  • Enumerate all instances across every project and compare their expanded configuration against each project's restricted.* keys, flagging any mismatch.
  • Correlate incusd API access logs for POST requests to the instances endpoint with a source.project value different from the target project.
  • Alert on new containers that set security.privileged=true or define raw.lxc or raw.apparmor after the CVE publication date.

Monitoring Recommendations

  • Forward Incus daemon logs and audit events to a centralized SIEM and retain them for post-incident review.
  • Monitor host-level telemetry for container escape behaviors such as unexpected mount syscalls, kernel module loads, or writes to /proc/sys from container processes.
  • Track Incus version inventory across the fleet and alert when any node reports a version below 7.3.0.

How to Mitigate CVE-2026-62941

Immediate Actions Required

  • Upgrade every Incus server to version 7.3.0 or later as soon as the patched build is available for your distribution.
  • Audit existing instances in restricted projects for prohibited configuration keys and delete or rebuild any instance that violates policy.
  • Revoke or scope down cross-project copy permissions for non-administrative identities until all nodes are patched.

Patch Information

Incus 7.3.0 resolves the vulnerability by evaluating AllowInstanceCreation against the fully merged configuration, ensuring the target project's restricted.* policy applies to inherited keys. Details are published in the Incus GitHub Security Advisory GHSA-mq9x-prm8-3vpw.

Workarounds

  • Disable cross-project instance copy for standard users by restricting the can_create_instances and can_manage_projects permissions through Incus role-based access control.
  • Prohibit security.privileged, raw.lxc, and raw.apparmor at the source project level as well, so no instance can carry these keys into a copy operation.
  • Isolate untrusted tenants on dedicated Incus hosts until the patch is deployed to eliminate the shared-host escape risk.
bash
# Configuration example: enforce restrictions on every project
incus project set default restricted=true
incus project set default restricted.containers.privilege=unprivileged
incus project set default restricted.containers.lowlevel=block
incus project set default restricted.containers.nesting=block

# Verify the current Incus version meets the fixed release
incus version | grep -E 'Server version: 7\.(3|[4-9]|[1-9][0-9])'

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.