CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-53657

CVE-2026-53657: Privilege Escalation via Overly Permissive Unix Domain Socket in Lima Guest Agent

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 14, 2026·9 min read·3 visits

Executive Summary (TL;DR)

Lima guest agent socket `/run/lima-guestagent.sock` is created with 0777 permissions under QEMU, enabling unprivileged local users to execute arbitrary commands as root via a Confused Deputy tunnel to privileged sockets like D-Bus.

CVE-2026-53657 is a local privilege escalation vulnerability in Lima (lima-vm/lima) affecting versions prior to 2.1.3 when configured with the QEMU driver. The guest agent daemon, running as root, creates its communication socket `/run/lima-guestagent.sock` with world-writable permissions (0777). This allows unprivileged local users to command the agent to establish arbitrary tunnels, including to privileged local UNIX sockets (like D-Bus). Because the target daemon authenticates the incoming connection using the credentials of the root-owned guest agent (via SO_PEERCRED), unprivileged users can perform root operations, resulting in complete guest VM compromise.

Vulnerability Overview

Lima is an open-source virtual machine manager designed to run Linux virtual machines and container environments, primarily on macOS systems. The utility automates the provisioning of core guest services such as containerd and nerdctl to provide developers with a local container workspace. To coordinate system configurations, port forwarding, and network rules, Lima runs a specialized guest daemon known as lima-guestagent inside the virtual environment.

The lima-guestagent process executes with elevated root privileges within the guest kernel space. This design allows the agent to execute low-level operations such as modifying IPTables rules, managing networking interfaces, and establishing local port-forwarding mappings on behalf of the host machine. When Lima is configured with the QEMU virtualization driver, communications between the host and guest agent are facilitated via a UNIX domain socket designated as /run/lima-guestagent.sock.

The vulnerability, registered as CVE-2026-53657, stems from insecure Discretionary Access Control (DAC) permissions assigned to this Unix domain socket file during initialization. In affected versions of Lima, the socket was created with world-writable file permissions (0o777). This configuration creates an exposed attack surface by allowing any local, unprivileged process executing within the guest virtual machine to read from and write to the socket, bypassing standard access control controls.

The resulting impact is local privilege escalation from any standard guest VM user to the root user. Because the guest agent possesses tunneling capabilities, an unprivileged user can leverage the agent to route traffic to administrative control points. This allows malicious actors to execute arbitrary code or alter administrative system settings with full root-level execution privileges.

Root Cause Analysis

The primary technical defect behind CVE-2026-53657 lies in the insecure permissions set during the initialization sequence of the UNIX domain socket. In Go-based daemons, the standard socket instantiation process involves calling net.Listen followed by adjusting the permissions of the resulting file path on the filesystem. The lima-guestagent implementation explicitly adjusted the socket file permissions to 0o777 (world-readable and world-writable), exposing the socket interface to all security contexts inside the VM.

While the socket was meant to allow communication between the host and the guest VM's admin process, setting the permissions to 0o777 ignores local privilege boundaries. Any unprivileged process or container running within the guest can establish a direct local connection to the socket file. This introduces a structural vulnerability because the daemon exposes general-purpose socket tunneling functions designed to forward connections to arbitrary addresses inside the VM.

This architecture results in a classic Confused Deputy vulnerability. When an unprivileged client instructs the root-privileged lima-guestagent to connect to another internal UNIX socket, the guest agent carries out the connection request. When the target service verifies the identity of the incoming connection using the kernel-level SO_PEERCRED socket option, it sees the connection originating from the root user (UID 0), the actual owner of the guest agent process.

The local kernel authenticates the connection as originating from the root user because the credential checking mechanism evaluates the socket-endpoint owner, not the cascading chain of callers. Consequently, the target service grants full administrative authority to the connection. This bypasses the local authorization barriers, allowing an unprivileged user inside the guest VM to manipulate privileged system services such as systemd or D-Bus.

Code Analysis & Patch Diff

The remediation of CVE-2026-53657 involved replacing the unrestricted 0o777 socket permission logic with a mechanism that transfers file ownership to the primary non-root user and restricts access to user-only read/write (0o600). This ensures only authorized administrators or the primary user who initiated the virtual machine can interact with the guest agent's socket.

Analyzing the code changes in cmd/lima-guestagent/daemon_linux.go shows how the parameter list was updated to track the socket owner UID. The newly added --socket-owner parameter specifies which unprivileged user should hold exclusive rights to the control interface:

// cmd/lima-guestagent/daemon_linux.go
 
	daemonCommand.Flags().Duration("tick", 3*time.Second, "Tick for polling events")
	daemonCommand.Flags().Int("vsock-port", 0, "Use vsock server instead a UNIX socket")
	daemonCommand.Flags().String("virtio-port", "", "Use virtio server instead a UNIX socket")
+	daemonCommand.Flags().Int("socket-owner", 0, "UID of the main user that owns the UNIX socket (0 for root)")
	return daemonCommand

The socket setup routine was updated to conditionally execute the os.Chown system call before restricting the filesystem permissions. By transferring ownership of the socket file to the non-root primary user, the daemon can strictly enforce 0o600 permissions while maintaining compatibility with host-to-guest port-forwarding tools:

// cmd/lima-guestagent/daemon_linux.go
 
			return err
		}
-		if err := os.Chmod(socket, 0o777); err != nil {
+		// The daemon runs as root (for iptables), but the host connects to the
+		// socket as the main user over an SSH local-forward. Hand the socket to
+		// that user so 0600 restricts access to the main user rather than root.
+		if socketOwner > 0 {
+			if err := os.Chown(socket, socketOwner, -1); err != nil {
+				return err
+			}
+		}
+		if err := os.Chmod(socket, 0o600); err != nil {
			return err
		}
		l = socketL

Additionally, the template scripts inside pkg/cidata/cidata.TEMPLATE.d/boot.Linux/25-guestagent-base.sh were updated to populate the --socket-owner argument with ${LIMA_CIDATA_UID}, which represents the UID of the primary user provisioned by cloud-init during VM startup. This change ensures that the guest agent socket is dynamically locked down to the owner of the VM instance.

Exploitation & Attack Path Analysis

Exploitation of CVE-2026-53657 requires local access within the guest virtual machine. An attacker must have established a low-privilege execution context inside the VM, such as an unprivileged user shell or a compromised application running in a non-root container container. The attack is entirely local and does not require host-level access to initiate.

First, the attacker identifies the presence of the world-writable socket at /run/lima-guestagent.sock. Because the socket is created with permission mask 0o777, standard unprivileged utilities like socat, nc.openbsd, or custom python scripts can open a stream connection directly to it. No authentication handshake is enforced by the guest agent daemon prior to handling client tunnel directives.

Once connected, the attacker utilizes the tunneling protocol supported by lima-guestagent to request a proxy connection to /run/dbus/system_bus_socket. The guest agent receives this request and, running under root privileges, establishes the outbound connection to the D-Bus socket. Since the D-Bus daemon verifies peer credentials via the SO_PEERCRED socket option, the operating system kernel verifies that the process initiating the connection is indeed lima-guestagent (UID 0), granting root-level access to the D-Bus system bus.

Through this established channel, the attacker can transmit D-Bus control commands to systemd-logind, systemd-networkd, or other system administration services running on the VM. This enables the execution of arbitrary administrative actions, such as spawning new shell processes with root privileges or modifying boot configurations. This completely compromises the security boundary inside the virtual machine.

Impact Assessment

The direct security consequence of CVE-2026-53657 is a complete compromise of the privilege isolation boundaries within the guest virtual machine. While the CVSS evaluation assigned a High Privileges Required (PR:H) metric, this corresponds to the administrative role of the host operator managing the VM launcher, whereas any standard local user inside the guest can execute the exploit to scale their permissions to root.

Once root execution is achieved inside the guest VM, the attacker gains full control over the local operating system, including the ability to inspect running container memory, modify kernel parameters, and extract sensitive API credentials or SSH keys stored within the virtual disk. In multi-tenant environments or shared container workspaces, this vulnerability invalidates security assurances between distinct user containers.

Furthermore, because Lima is commonly used to run developer container runtimes with direct host mount sharing, a compromise of the guest VM significantly escalates the risk of a container escape to the host macOS system. While a VM boundary still exists, possessing root-level control over the kernel driving the hypervisor client simplifies host-to-guest file system manipulation and exploitation of potential hypervisor vulnerabilities.

To date, there are no documented instances of CVE-2026-53657 being exploited in the wild, nor have any weaponized automated exploits been released publicly. The EPSS score remains low at 0.00129, reflecting the local nature of the vulnerability and the requirement for an active local footprint inside a Lima-managed virtual machine.

Detection & Remediation

Detecting vulnerable installations involves auditing the file system permissions of the active socket within the running guest virtual machine. Security administrators should execute a standard file status inquiry to evaluate the owner and permission flags of the target path:

# Audit the guest agent socket permissions
stat -c "%a %U %G" /run/lima-guestagent.sock

If the returned output is 777 root root, the virtual machine is vulnerable and open to exploitation by local users. If the output is configured as 600 <username> root, the socket has been successfully restricted to the owner of the virtual machine and is secure against unauthorized local access.

To remediate the vulnerability permanently, users must upgrade their local installation of Lima to version 2.1.3 or later on the host machine. Upgrading the host application updates the embedded provisioning scripts, ensuring that newly deployed guest agents run with the correct --socket-owner parameter and execute the socket handoff logic.

In environments where immediate software upgrades are not feasible, administrators can apply a temporary mitigation by manually reconfiguring the socket ownership inside the guest. Running the following sequence as root restricts unauthorized access, although the change may be reverted if the guest daemon restarts:

# Identify the primary VM user's UID (e.g., 1000) and restrict permissions
chown 1000:root /run/lima-guestagent.sock
chmod 0600 /run/lima-guestagent.sock

Fix Analysis (3)

Technical Appendix

CVSS Score
8.2/ 10
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
0.13%
Top 97% most exploited

Affected Systems

Lima (lima-vm/lima) under QEMU driver

Affected Versions Detail

Product
Affected Versions
Fixed Version
Lima
Lima Project
< 2.1.32.1.3
AttributeDetail
CWE IDCWE-276, CWE-668
Attack VectorLocal (AV:L)
CVSS v3.18.2 (High)
EPSS Score0.00129
ImpactPrivilege Escalation to root inside the Guest VM
Exploit Statuspoc/conceptual (none weaponized)
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1222File and Directory Permissions Modification
Defense Evasion
T1005Data from Local System
Collection
CWE-276
Incorrect Default Permissions

The product, helper, or setup script initializes resources with permissions that are more permissive than necessary, allowing unauthorized actors to access or modify those resources.

Vulnerability Timeline

Official fixes are committed to the repository
2026-06-16
GitHub Security Advisory and CVE published
2026-07-10
Lima v2.1.3 containing the patch is released
2026-07-10

References & Sources

  • [1]GHSA-2j9v-p4xj-cjw2: Privilege Escalation in lima-guestagent
  • [2]Lima Release v2.1.3
  • [3]NVD CVE-2026-53657 Detail
  • [4]CVE-2026-53657 Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•CVE-2026-53653
8.7

CVE-2026-53653: Unauthenticated Denial of Service via Unbounded Image Derivative Dimensions in Grav CMS

Grav CMS prior to version 1.7.53 and 2.0.0-rc.8 is vulnerable to an unauthenticated remote denial of service (DoS) vulnerability. By supplying crafted query parameters with extremely large dimensions to image assets, remote unauthenticated attackers can force the server to allocate massive amounts of system memory, leading to kernel Out-Of-Memory (OOM) termination of web worker processes.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 3 hours ago•CVE-2026-10740
5.3

CVE-2026-10740: Denial of Service in s2n-quic CryptoStream Reassembly

An unauthenticated Denial of Service vulnerability exists in the s2n-quic library's CryptoStream reassembler due to a lack of buffer limits on out-of-order cryptographic frames. An attacker can transmit a crafted CRYPTO frame with an extremely high offset and nominal payload, forcing the receiver to execute unbounded memory allocations and causing service crashes.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 4 hours ago•CVE-2026-55153
7.1

CVE-2026-55153: JNDI Injection and Deserialization Gadget Abuse in mchange-commons-java

A JNDI Injection and Deserialization Gadget vulnerability exists in mchange-commons-java prior to version 0.6.0. The com.mchange.v2.naming.JavaBeanObjectFactory component permits arbitrary class instantiation and setter invocation, allowing attackers to perform Server-Side Request Forgery (SSRF) and remote class loading.

Alon Barad
Alon Barad
6 views•5 min read
•about 5 hours ago•GHSA-8RW6-P7M8-63JP
6.5

GHSA-8RW6-P7M8-63JP: Array Element-Level SELECT Permissions Leak in SurrealDB

SurrealDB versions supporting element-level SELECT permissions on arrays are vulnerable to a logical authorization bypass. Due to an index-shifting error during array filtration, restricted elements can skip permission checks and leak to unauthorized record users.

Alon Barad
Alon Barad
5 views•6 min read
•1 day ago•CVE-2026-12243
7.5

CVE-2026-12243: Incomplete Path Traversal Validation and Percent-Encoding Bypass in NLTK

CVE-2026-12243 is a path traversal vulnerability in the Natural Language Toolkit (NLTK) version 3.9.4. The flaw exists because the input validation routine fails to account for percent-encoded directory traversal sequences like '..%2f' before passing them to urllib.request.url2pathname(), which decodes them into active traversal sequences.

Amit Schendel
Amit Schendel
5 views•8 min read
•1 day ago•CVE-2026-73654
8.5

CVE-2026-73654: Prototype Pollution in Trigger.dev leading to Cascading Denial of Service

CVE-2026-73654 is a high-severity prototype pollution vulnerability in Trigger.dev. The flaw occurs during the handling of run-metadata updates through the PUT /api/v1/runs/:runId/metadata endpoint. Because user-supplied keys are parsed directly by the @jsonhero/path library without sanitization, an authenticated attacker with low privileges can pollute the global Object.prototype. This causes database queries via Prisma ORM to fail validation and induces unhandled exceptions in the Prometheus metrics client, resulting in a process-wide denial of service.

Alon Barad
Alon Barad
11 views•6 min read