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-61711

CVE-2026-61711: Sandbox Escape via Protobuf SecurityMode Enum Validation Bypass in Moby BuildKit

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 20, 2026·4 min read·43 visits

Executive Summary (TL;DR)

Moby BuildKit before v0.31.1 fails to validate protobuf SecurityMode enums, allowing invalid values to disable Seccomp and AppArmor security profiles on execution containers.

A detailed technical analysis of CVE-2026-61711, an input validation flaw in Moby BuildKit prior to version 0.31.1. The flaw allows unauthorized or custom frontends to construct build execution environments where Seccomp and AppArmor configurations are completely disabled by supplying an invalid protobuf enum index, resulting in an elevated kernel-level attack surface inside the build sandbox.

Vulnerability Overview

Moby BuildKit is a highly efficient toolkit designed to convert source code into build artifacts, acting as the backend framework for modern container development suites.

Prior to version 0.31.1, BuildKit contained a logical input validation flaw when deserializing structured gRPC message payloads that carry client-supplied execution directives.

Specifically, the integer value representing the SecurityMode parameter was parsed and accepted from the payload without validation against the known, approved set of Protocol Buffer (protobuf) enum constants.

This behavior exposes a local and network-adjacent attack surface where an execution instance can bypass default Linux security profiles without triggering the security authorization flags.

Root Cause Analysis

The root cause of the vulnerability resides in how BuildKit processes protobuf-defined integer enums during the construction of Open Container Initiative (OCI) runtime specifications.

Inside the module executor/oci/spec_linux.go, the function generateSecurityOpts employs a standard Go switch statement to evaluate the security requirements of a build instruction based on the parsed SecurityMode parameter.

The switch statement explicitly checks for SecurityMode_INSECURE (1) and SecurityMode_SANDBOX (0) but lacks a default handler or generic validation logic to capture integers outside of this range.

When a client submits a crafted request specifying an unmapped integer such as 2, the switch matches neither case, allowing execution flow to slide to the end of the block.

The routine then executes a default fallback statement return nil, nil, which hands back a null array of options alongside a null error state, causing the executor to proceed with no configuration profiles.

Code Analysis

The vulnerable path in the specification generator ignored non-conforming parameters, resulting in a silent failure to apply safety options:

// Vulnerable block in executor/oci/spec_linux.go
func generateSecurityOpts(mode pb.SecurityMode, apparmorProfile string, selinuxB bool) (opts []oci.SpecOpts, _ error) {
    if selinuxB && !selinux.GetEnabled() {
        return nil, errors.New("selinux is not available")
    }
    switch mode {
    case pb.SecurityMode_INSECURE:
        return []oci.SpecOpts{
            security.WithInsecureSpec(),
            oci.WithWriteableCgroupfs,
        }, nil
    case pb.SecurityMode_SANDBOX:
        // Standard sandbox configuration goes here
        if cdseccomp.IsEnabled() {
            opts = append(opts, withDefaultProfile())
        }
        return opts, nil
    }
    return nil, nil // Silent fall-through on unvalidated integers
}

To address this error, the developers created an input validator helper inside solver/pb/securitymode.go:

package pb
 
import "github.com/pkg/errors"
 
// Patched input validator helper
func ValidateSecurityMode(mode SecurityMode) error {
	switch mode {
	case SecurityMode_SANDBOX, SecurityMode_INSECURE:
		return nil
	default:
		return errors.Errorf("invalid security mode %d", mode)
	}
}

This validator function is now actively called at the entry point of the container initialization code, returning a termination error if any anomalous value is detected.

Exploitation Methodology

An attacker begins by preparing low-level builder (LLB) instructions containing a manual modification to the pb.Op structure, setting the SecurityMode property to 2.

The attacker requires permission to issue build instructions or solve requests to an open BuildKit gRPC TCP socket or local UNIX socket.

When BuildKit processes this gRPC request, it skips verification checks for administrative permissions because the value does not register as SecurityMode_INSECURE.

Consequently, the build container is deployed with no active Seccomp profile or AppArmor rules, allowing the container processes to issue raw system calls that would otherwise be blocked.

Technical Impact & Assessment

The successful exploitation of this vulnerability yields a build environment with a degraded security configuration.

While namespace isolation and standard administrative capabilities inside the container remain restricted, the complete removal of Seccomp system call profiling opens up kernel vulnerabilities.

This exposes the host kernel to validation errors, device drivers probing, and other system calls that increase the risk of an escape to the host node.

The CVSS v4.0 rating is calculated as 5.3 due to the low complexity of the request but the reliance on pre-existing gRPC channel authorization.

Remediation and Mitigation

The recommended approach to address the flaw is updating BuildKit installations to the verified release version 0.31.1.

In environments where updates cannot be deployed immediately, administrators must enforce local loopback binding or strict firewall controls on BuildKit gRPC TCP endpoints.

> [!NOTE] > Restricting standard access to socket-level communication paths prevents unauthenticated network-adjacent clients from transmitting arbitrary execution commands.

Official Patches

MobyBuildKit release notes

Fix Analysis (2)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N

Affected Systems

Moby BuildKit

Affected Versions Detail

Product
Affected Versions
Fixed Version
BuildKit
Moby
< 0.31.10.31.1
AttributeDetail
CWE IDCWE-20
Attack VectorNetwork (AV:N)
CVSS Score5.3
EPSS ScoreN/A
ImpactLow (Confidentiality, Integrity, Availability)
Exploit StatusNone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-20
Improper Input Validation

Improper Input Validation

Vulnerability Timeline

Security patches drafted and reviewed
2026-06-16
CVE-2026-61711 published and GHSA-7236-3392-c5c6 released
2026-08-19
BuildKit release v0.31.1 published
2026-08-19

References & Sources

  • [1]GitHub Security Advisory GHSA-7236-3392-c5c6
  • [2]CVE Record on cve.org

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

•2 minutes ago•CVE-2026-109619
9.2

CVE-2026-109619: Remote Code Execution in PHP Core via Stale Global State Memory Corruption (PHP2Shell)

CVE-2026-109619 (PHP2Shell) is a critical Use-After-Free vulnerability in the core PHP engine caused by improper global state cleanup during out-of-memory exception handling across persistent worker requests.

Alon Barad
Alon Barad
1 views•6 min read
•5 minutes ago•CVE-2026-113721
4.5

CVE-2026-113721: Unsafe Link Resolution in virtualenv File Generation

In Python virtualenv prior to version 21.14.9, activation script generators and configuration writers use Path.exists() before writing files. Because Path.exists() resolves symbolic links, it returns False for dangling symlinks. Consequently, virtualenv skips unlinking pre-planted symbolic links or hard links, writing data directly to target locations outside the intended virtual environment directory.

Amit Schendel
Amit Schendel
1 views•5 min read
•9 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
31 views•5 min read
•9 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
19 views•6 min read
•10 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
18 views•5 min read
•10 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
24 views•6 min read