CVE-2025-54288
NixOS vulnerability analysis and mitigation

Overview

CVE-2025-54288 is a source container identification vulnerability via command-line spoofing in the devLXD server of Canonical LXD, classified as an information spoofing flaw (CWE-290: Authentication Bypass by Spoofing). It affects LXD versions 4.0.0 through 5.21.3 and 6.1.0 through 6.4.x on Linux container platforms. The vulnerability was published on October 2, 2025, and was reported by GMO Flatt Security Inc. It carries a CVSS v3.1 base score of 6.8 (Medium) and a CVSS v4.0 base score of 5.1 (Medium) (GitHub Advisory, Github Advisory).

Technical details

The root cause lies in the findContainerForPID function in lxd/lxd/api_devlxd.go, which identifies the source container of a devLXD API request using a two-step process: first by reading /proc/<pid>/cmdline and checking for a process name starting with [lxc monitor], then by PID namespace comparison as a fallback. Because Linux allows any process to set an arbitrary process name (e.g., via exec -a in bash), an attacker with root privileges inside any container can spoof the [lxc monitor] process name and append a target container's projectName_containerName identifier, causing LXD to misidentify the requesting container. The fix requires verifying that the PID namespace of the process matches the PID namespace of the LXD host process before trusting cmdline-based identification (GitHub Advisory, Github Advisory).

Impact

Successful exploitation allows an attacker with root access inside one container to impersonate any other container on the same LXD host and retrieve its metadata (instance-id, local-hostname), configuration data (user.* and cloud-init.* keys including SSH keys and cloud-init user/vendor data), and device information via the devLXD API endpoints /1.0/meta-data, /1.0/config, /1.0/config/{key}, and /1.0/devices. In multi-project LXD environments, this enables cross-project information leakage, potentially exposing sensitive credentials or configuration secrets stored in container metadata. There is no integrity or availability impact, but the confidentiality breach could facilitate further lateral movement or privilege escalation within the container environment (GitHub Advisory).

Exploitability

A proof-of-concept exploit is publicly available in the GitHub security advisory, demonstrating the attack using a simple bash one-liner with exec -a to spoof the process name. There is no evidence of in-the-wild exploitation at this time, and no threat actor attribution has been reported. The EPSS score is approximately 0.064% (0.000360 per Feedly data), placing it in the 20th percentile for exploitation likelihood. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog (Github Advisory, GitHub Advisory).

Exploitation steps

  1. Prerequisite: Obtain root privileges within any LXD container on the target host (e.g., container EEEE) that has the devLXD socket (/dev/lxd/sock) accessible.
  2. Reconnaissance: Enumerate other containers running on the same LXD host by querying the devLXD API normally: curl --unix-socket /dev/lxd/sock http://lxd-host/1.0/meta-data to confirm access and identify the current container's identity.
  3. Identify target container: Determine the target container name and project name (e.g., DDDD in project test-project) through any available means (e.g., network scanning, shared storage artifacts, or prior reconnaissance).
  4. Spoof process name: Use bash's exec -a to rename the current process to [lxc monitor] and append the target container identifier in the format projectName_containerName as a proxy argument: bash -c "exec -a '[lxc monitor]' curl --unix-socket /dev/lxd/sock http://lxd-host/1.0/meta-data -x 'test-project_DDDD'"
  5. Retrieve target container data: The devLXD server's findContainerForPID function reads the spoofed cmdline, identifies the request as originating from container DDDD, and returns that container's metadata, configuration, or device information to the attacker.
  6. Expand access: Use retrieved secrets (SSH keys, cloud-init credentials, API tokens stored in user.* config keys) to pivot to other systems or escalate privileges (GitHub Advisory).

Indicators of compromise

  • Network: Unexpected or anomalous requests to the devLXD Unix socket (/dev/lxd/sock) from within containers, particularly to /1.0/meta-data, /1.0/config, or /1.0/devices endpoints for containers other than the requesting one.
  • Logs: LXD daemon logs showing container identity resolution for a container name that does not match the expected container for a given PID; repeated devLXD API requests from a single container querying metadata of multiple different containers.
  • Process: Processes inside containers with the name [lxc monitor] that are not actual LXC monitor processes (detectable by checking the PID namespace of the process against the host's LXD PID namespace); curl or similar tools spawned with spoofed process names via exec -a.
  • File System: Presence of scripts or tools inside containers designed to enumerate or query the devLXD API for other containers' metadata.

Mitigation and workarounds

Canonical has released patched versions LXD 5.21.4 (for the 5.21 series) and LXD 6.5 (for the 6.x series); the LXD 5.0 series is considered not critical and the 4.0 series is EOL — neither will receive patches. The fix modifies the findContainerForPID function to validate that the PID namespace of the process matches the PID namespace of the LXD host process before trusting cmdline-based container identification. As interim mitigations, administrators should restrict root access within containers, implement strict container isolation policies, monitor devLXD API access, and use network segmentation to limit container-to-container communication (GitHub Advisory, Github Advisory).

Community reactions

The vulnerability was reported by GMO Flatt Security Inc. and disclosed by Canonical on October 2, 2025, via the GitHub Security Advisory. Detection plugins have been published by Tenable (Nessus plugin IDs 269498, 270713, 271199) and Qualys (detection IDs 6271254, 6563561), indicating broad scanner coverage. Debian has issued security updates for the related incus package (DSA-6028-1), and Debian Backports published BSA-125 for incus as well, reflecting downstream impact on derivative projects (Github Advisory).

Additional resources


SourceThis report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-18713HIGH8.8
  • NixOS logoNixOS
  • i
NoNoAug 12, 2026
CVE-2026-18669HIGH8.8
  • NixOS logoNixOS
  • i
NoNoAug 12, 2026
CVE-2026-18235HIGH8.3
  • NixOS logoNixOS
  • i
NoNoAug 12, 2026
CVE-2026-17420MEDIUM6.3
  • NixOS logoNixOS
  • i
NoNoAug 12, 2026
CVE-2026-18250MEDIUM5
  • NixOS logoNixOS
  • i
NoNoAug 12, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management