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

CVE-2026-97335: Canonical LXD Auth Bypass Vulnerability

CVE-2026-97335 is an authorization bypass flaw in Canonical LXD that allows authenticated users to read storage volumes across projects. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-97335 Overview

CVE-2026-97335 is an incorrect authorization vulnerability [CWE-863] in Canonical LXD, the Linux container and virtual machine manager. The flaw resides in the custom storage volume creation endpoint. An authenticated client holding permission to create custom volumes in one project can copy, and thereby read, any custom storage volume from any other project on the server. The copy includes snapshots and volume configuration. The vulnerability affects LXD versions 5.0.0 and later and is fixed in 5.0.10, 5.21.8, and 6.10. Exploitation requires a crafted API request that specifies a source volume and source.project while omitting source.type.

Critical Impact

An authenticated low-privileged tenant can exfiltrate arbitrary custom storage volumes, snapshots, and configuration data from any project on a shared LXD server, breaking project-level isolation.

Affected Products

  • Canonical LXD 5.0.0 through 5.0.9 (fixed in 5.0.10)
  • Canonical LXD 5.21.x prior to 5.21.8 (fixed in 5.21.8)
  • Canonical LXD 6.x prior to 6.10 (fixed in 6.10)

Discovery Timeline

  • 2026-09-28 - CVE-2026-97335 published to the National Vulnerability Database
  • 2026-09-28 - Last updated in NVD database

Technical Details for CVE-2026-97335

Vulnerability Analysis

LXD organizes resources into projects to provide multi-tenant isolation on a single host. Custom storage volumes belong to a project and are expected to be accessible only to clients authorized within that project. The custom volume creation endpoint supports copying an existing volume by referencing a source. The authorization check on the source volume relies on the combination of fields in the request body, including source.type.

When a client submits a copy request that sets source.volume and source.project but omits source.type, the server fails to enforce the expected authorization check against the source project. The server proceeds to copy the referenced volume, along with its snapshots and configuration, into the attacker's project. The attacker then reads the copied data directly.

Root Cause

The root cause is incorrect authorization logic in the custom storage volume creation handler. The code path that evaluates whether the caller may read the source volume depends on fields that are optional in the request schema. Omitting source.type bypasses the project boundary check, violating the access control model that LXD projects are designed to enforce.

Attack Vector

Exploitation requires network access to the LXD API and authenticated credentials with permission to create custom volumes in at least one project. The attacker crafts a volume creation request against their own project, specifies the target volume name and source.project of another tenant, and omits source.type. The server copies the source volume into the attacker-controlled project, where its contents, snapshots, and configuration become readable. No user interaction is required, and the attack complexity is low.

No verified public proof-of-concept code is available at publication. Refer to the Canonical LXD GitHub Security Advisory GHSA-p456-92fx-44xh for the authoritative technical description.

Detect Identity Attacks the Moment Authentication Fails

Singularity™ Identity surfaces credential misuse, lateral movement, and privilege escalation in real time, so you can contain the breach before it spreads.

Stop Identity Attacks

Detection Methods for CVE-2026-97335

Indicators of Compromise

  • LXD API requests to the custom storage volume creation endpoint containing a source.volume and source.project field but no source.type field.
  • Audit log entries showing custom volume copy operations where the source project differs from the destination project.
  • Unexpected appearance of new custom storage volumes in a project whose names or configurations match volumes from other projects.

Detection Strategies

  • Parse LXD daemon logs for POST /1.0/storage-pools/<pool>/volumes requests and flag payloads where source.project is set and source.type is absent.
  • Correlate volume creation events across projects to identify cross-project source references that violate expected tenant boundaries.
  • Baseline normal custom volume creation patterns per project and alert on deviations in source project usage.

Monitoring Recommendations

  • Enable LXD API audit logging and forward events to a centralized SIEM for cross-project correlation.
  • Monitor storage pool growth per project and investigate sudden increases that could indicate bulk volume copying.
  • Track authentication and authorization decisions for the storage volume endpoints to identify abuse of low-privileged client certificates or tokens.

How to Mitigate CVE-2026-97335

Immediate Actions Required

  • Upgrade LXD to version 5.0.10, 5.21.8, or 6.10 or later, depending on the deployed release track.
  • Inventory all LXD servers hosting multi-project tenants and prioritize patching on hosts with untrusted or externally reachable API endpoints.
  • Review LXD audit logs for suspicious cross-project volume copy requests dating back to the deployment of any affected 5.0.0+ release.

Patch Information

Canonical has released fixed versions 5.0.10, 5.21.8, and 6.10. Full remediation details are published in the Canonical LXD GitHub Security Advisory GHSA-p456-92fx-44xh. Apply the appropriate fixed version for your release channel and restart the lxd service to load the patched binary.

Workarounds

  • Restrict custom storage volume creation permissions to trusted operators only until patching is complete.
  • Limit LXD API exposure to trusted management networks using firewall rules or TLS client certificate restrictions.
  • Where multi-tenant isolation is critical, consider temporarily hosting sensitive projects on dedicated LXD servers until all nodes are upgraded.
bash
# Verify installed LXD version and upgrade on Ubuntu via snap
lxd --version
sudo snap refresh lxd --channel=5.0/stable   # for the 5.0 LTS track
sudo snap refresh lxd --channel=5.21/stable  # for the 5.21 LTS track
sudo snap refresh lxd --channel=latest/stable # for the 6.x track
sudo systemctl restart snap.lxd.daemon
lxd --version

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

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.