/

CVE-2026-115376

Severity:

HIGH RISK

(7.7)

Authorization Bypass (CWE-284) in Incus Custom Volumes

CVE-2026-115376

Deferred

Vulnerability type

Category:

Authorization Bypass

CWE:

CWE-284

Impact:

Cross-project data disclosure

Severity:

HIGH RISK

(7.7)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Incus contains an authorization bypass in the custom volumes API that can allow a project-restricted client to copy volumes from another project by omitting the source type.

An attacker with access to the affected API may read other projects' volumes, snapshots, and configuration when the request's project context is not enforced correctly.

Incus contains an authorization bypass in the custom volumes API that can allow a project-restricted client to copy volumes from another project by omitting the source type.

An attacker with access to the affected API may read other projects' volumes, snapshots, and configuration when the request's project context is not enforced correctly.

Affected context

The issue occurs in Incus deployments where project-restricted clients can access the custom volumes endpoint and the request handler accepts an omitted source.type value. Under those conditions, authorization checks may fail to bind the requested source volume to the caller's permitted project, allowing resources from a chosen project to be copied or exposed.

The issue occurs in Incus deployments where project-restricted clients can access the custom volumes endpoint and the request handler accepts an omitted source.type value. Under those conditions, authorization checks may fail to bind the requested source volume to the caller's permitted project, allowing resources from a chosen project to be copied or exposed.

Exploit preconditions

  • Attack surface: Incus API custom volumes endpoint
  • Required access: An authenticated client with project-restricted access
  • Trigger point: A crafted POST request that omits source.type and specifies a source project
  • Why exploitation is possible: The request is processed without correctly enforcing the source resource's project authorization, allowing cross-project volume operations
  • Attack surface: Incus API custom volumes endpoint
  • Required access: An authenticated client with project-restricted access
  • Trigger point: A crafted POST request that omits source.type and specifies a source project
  • Why exploitation is possible: The request is processed without correctly enforcing the source resource's project authorization, allowing cross-project volume operations

Why this happens

The underlying bug is an authorization decision based on incomplete or ambiguous request attributes. When source.type is omitted, the endpoint can follow a code path that does not consistently validate whether the selected source volume belongs to a project the caller may access.

This maps to CWE-284: Improper Access Control, in which a protected resource or operation is not adequately constrained by the caller's permissions and resource ownership.

The underlying bug is an authorization decision based on incomplete or ambiguous request attributes. When source.type is omitted, the endpoint can follow a code path that does not consistently validate whether the selected source volume belongs to a project the caller may access.

This maps to CWE-284: Improper Access Control, in which a protected resource or operation is not adequately constrained by the caller's permissions and resource ownership.

Potential impact

  • An attacker may copy volumes belonging to other projects.
  • Sensitive data stored in volumes may be disclosed.
  • Snapshots and associated configuration may be exposed.
  • Unauthorized copies could persist beyond the original access request.
  • Project isolation may be weakened, enabling broader information gathering.
  • An attacker may copy volumes belonging to other projects.
  • Sensitive data stored in volumes may be disclosed.
  • Snapshots and associated configuration may be exposed.
  • Unauthorized copies could persist beyond the original access request.
  • Project isolation may be weakened, enabling broader information gathering.

General mitigation guidance

Mitigation generally focuses on making authorization decisions independent of optional or ambiguous request fields.

Common defensive patterns include:

  • Require explicit, validated source types and reject incomplete requests by default.
  • Re-check source-project ownership and caller permissions for every volume and snapshot operation.
  • Apply deny-by-default authorization at the API and storage layers.
  • Treat project identifiers supplied by clients as untrusted selectors rather than proof of access.
  • Minimize service and project privileges so a compromised client cannot access unrelated resources.
  • Add regression tests for omitted fields, cross-project identifiers, and alternate request paths.

Mitigation generally focuses on making authorization decisions independent of optional or ambiguous request fields.

Common defensive patterns include:

  • Require explicit, validated source types and reject incomplete requests by default.
  • Re-check source-project ownership and caller permissions for every volume and snapshot operation.
  • Apply deny-by-default authorization at the API and storage layers.
  • Treat project identifiers supplied by clients as untrusted selectors rather than proof of access.
  • Minimize service and project privileges so a compromised client cannot access unrelated resources.
  • Add regression tests for omitted fields, cross-project identifiers, and alternate request paths.

How teams detect issues like this

Organizations can look for:

  • Static analysis and code review findings where authorization depends on optional fields or implicit defaults.
  • API handlers that construct resource queries from client-supplied project identifiers before performing permission checks.
  • Tests that cover only valid request shapes and omit malformed or incomplete authorization inputs.
  • Audit logs showing project-restricted identities copying volumes or snapshots across project boundaries.
  • Policy checks requiring explicit resource ownership validation for every cross-resource operation.

Automated API security testing and authorization-focused review tools can help identify inconsistent enforcement across request variants.

Organizations can look for:

  • Static analysis and code review findings where authorization depends on optional fields or implicit defaults.
  • API handlers that construct resource queries from client-supplied project identifiers before performing permission checks.
  • Tests that cover only valid request shapes and omit malformed or incomplete authorization inputs.
  • Audit logs showing project-restricted identities copying volumes or snapshots across project boundaries.
  • Policy checks requiring explicit resource ownership validation for every cross-resource operation.

Automated API security testing and authorization-focused review tools can help identify inconsistent enforcement across request variants.

Sources

SourceLink
github.comgithub.com/lxc/incus/security/advisories/GHSA-jh4v-j34r-2mgh
vulncheck.comvulncheck.com/advisories/incus-7.0.1-before-7.0.2-and-7.2.0-before-7.5.0-project-restriction-bypass-via-custom-volume-copy

Frequently asked

questions

It may be exploitable through the Incus API when that API is reachable by a client who has valid, project-restricted access.

No. The described attack requires access sufficient to submit requests to the custom volumes endpoint, but not necessarily unrestricted administrative privileges.

Reject incomplete source specifications and enforce source-project authorization for every volume, snapshot, and configuration access before performing the copy operation.

Use deny-by-default authorization, treat all client-supplied resource identifiers as untrusted, and test equivalent requests with omitted, alternate, or ambiguous fields.

It may be exploitable through the Incus API when that API is reachable by a client who has valid, project-restricted access.

No. The described attack requires access sufficient to submit requests to the custom volumes endpoint, but not necessarily unrestricted administrative privileges.

Reject incomplete source specifications and enforce source-project authorization for every volume, snapshot, and configuration access before performing the copy operation.

Use deny-by-default authorization, treat all client-supplied resource identifiers as untrusted, and test equivalent requests with omitted, alternate, or ambiguous fields.

Find out what's already
exploitable in your codebase.