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

CVE-2026-50559: Authentication and Authorization Bypass via Parser Differential in Quarkus

Alon Barad
Alon Barad
Software Engineer

Jul 30, 2026·6 min read·1 visit

Executive Summary (TL;DR)

Quarkus applications prior to 3.37.0 are vulnerable to an authentication bypass where encoded characters (%3B, %2F, %5C) prevent security filters from matching path-based policies, while downstream routers decode and execute the requests.

A critical authentication and authorization bypass vulnerability in the Quarkus Java framework exists due to a parser differential mismatch between the HTTP security policy layer and downstream handlers. By leveraging encoded reserved characters such as semicolons, slashes, and backslashes, attackers can bypass configured path-based security policies to gain unauthorized access to secure administrative endpoints and static resources.

Vulnerability Overview

The Quarkus Java framework uses a robust HTTP routing and policy architecture to protect endpoints from unauthorized access. Developers configure authorization boundaries using path-based rules defined under the application configuration namespace quarkus.http.auth.permission.*. These policies are evaluated by the security policy engine, centered around the class AbstractPathMatchingHttpSecurityPolicy, which inspects incoming requests to match them against the protected path declarations.

This architecture exposes a critical attack surface when there is an inconsistency in how different components normalize and parse HTTP request paths. The vulnerability identified as CVE-2026-50559 is a classic parser differential mismatch. The security layer evaluates paths using one normalization model, while downstream request-handling components (such as JAX-RS REST routers and Vert.x static resource handlers) normalize and resolve paths using a more permissive model.

By leveraging this parser mismatch, unauthenticated remote attackers can craft specific URI patterns that bypass configured path permissions entirely. When a request bypasses the security layer, it is subsequently routed to the target controller or filesystem endpoint, allowing unauthorized execution or retrieval. This security flaw is categorized under CWE-287 (Improper Authentication) and CWE-863 (Incorrect Authorization).

Root Cause Analysis

The root cause of CVE-2026-50559 lies in how the Quarkus security layer retrieves and processes the request path from Vert.x. Historically, the policy matcher evaluated permissions against the path returned by Vert.x's RoutingContext.normalizedPath() method. While this method performs standard path cleaning, its implementation follows RFC 3986, which decodes unreserved characters but leaves reserved characters percent-encoded.

This behavior means that critical reserved characters, such as semicolons (%3B), forward slashes (%2F), and backslashes (%5C), remain in their percent-encoded format in the string evaluated by the security policy matcher. The matching engine compares the exact encoded path (e.g., /api/admin%3Bparam/data) against configured paths like /api/admin/*. Because of the mismatch in the literal trailing string, the matcher fails to identify the request as matching a restricted path, permitting the request to pass.

Downstream routing components process the path differently. JAX-RS REST routers and Vert.x static file handlers execute subsequent passes of percent-decoding and path parsing. For instance, the REST routing layer decodes %3B to ;, extracts matrix parameters, and normalizes the target path to /api/admin/data. The static file handler decodes %2F to / and processes directory paths. This allows the request to execute on the secure endpoint without ever triggering the authorization controls.

Code Analysis of Vulnerability and Fix

Prior to the patch, the Quarkus security policy engine performed naive cleaning of the request path using HttpSecurityUtils.pathWithoutMatrixParams(). This method searched for a literal semicolon character (;) and stripped any trailing parameters. It failed to check for percent-encoded semicolons (%3B or %3b), leaving them intact during permission evaluation.

// Vulnerable pattern:
String requestPath = HttpSecurityUtils.pathWithoutMatrixParams(request.normalizedPath());

The maintainers resolved this vulnerability by replacing the naive logic with a centralized and rigorous normalizer HttpSecurityUtils.normalizePath(). This helper function is invoked globally by policy enforcers to resolve the parser differential before any permission matching occurs.

// Patched pattern:
String requestPath = HttpSecurityUtils.normalizePath(request.normalizedPath());

The implementation of normalizePath applies sequential decoding, sanitization, separator normalization, and relative path resolution to eliminate the parser differential. It uses a recursive percent-decoding loop to neutralize double-encoded bypass attempts, strips matrix parameters after ensuring all semicolons are decoded, removes raw null bytes to prevent truncation attacks, normalizes backslashes to forward slashes, and resolves relative dot segments.

public static String normalizePath(String path) {
    // Recursive percent decoding to neutralize nested encoding tricks
    while (path.indexOf('%') >= 0) {
        String decoded = decodePercent(path);
        if (decoded.equals(path)) {
            break;
        }
        path = decoded;
    }
    // Strip matrix parameters after the encoded semicolon is resolved
    path = pathWithoutMatrixParams(path);
    // Remove null bytes to counter raw C-style string termination exploits
    if (path.indexOf('\\0') >= 0) {
        path = path.replace("\\0", "");
    }
    // Normalize backslashes to forward slashes for unified cross-platform paths
    if (path.indexOf('\\\\') >= 0) {
        path = path.replace('\\\\', '/');
    }
    // Remove relative dot segments (. and ..)
    path = HttpUtils.removeDots(path);
    return path;
}

Exploitation and Attack Vectors

An attacker can exploit this vulnerability by executing crafted HTTP requests designed to bypass the path matching logic while resolving to the target secure endpoint downstream. The principal exploit vectors are split into matrix parameter smuggling, static resource bypasses, and double-encoding bypasses.

For a matrix parameter smuggling attack against JAX-RS controllers, the attacker issues a request to GET /api/admin%3Bbypass=true/data. The security layer evaluates the literal path /api/admin%3Bbypass=true/data and does not match the rule /api/admin/*. The JAX-RS router decodes the %3B, extracts the parameter, matches the path to the administrative endpoint, and returns the protected data.

To target static files, an attacker relies on the Vert.x static resource handler decoding behavior. If access is restricted to /static-secret.html, requesting GET /static-secret%2Fhtml or GET /static-secret%5Chtml bypasses the security layer because the literal path fails the authorization pattern match. The static handler decodes the delimiter and serves the contents of the target file.

Impact Assessment and Variant Analysis

The impact of CVE-2026-50559 is categorized as high, yielding a CVSS score of 7.5. The vulnerability permits unauthenticated, remote attackers to bypass authorization constraints. This allows full compromise of the application context, enabling unauthorized administrative actions, data exposure, or server-side request manipulation.

The exploit complexity is low, and the vulnerability requires no user interaction or specialized privileges. This makes it a high-value target for automated scanners and malicious actors seeking initial access into cloud-native environments built on Quarkus.

This vulnerability represents a complete bypass of the initial fix introduced for CVE-2026-39852. While the earlier fix successfully addressed literal semicolon stripping, it did not account for percent-encoded delimiters, double-encoded variations, or filesystem-specific separators. This highlights the danger of partial sanitization inside security filters.

Remediation and Mitigation Guidance

To remediate CVE-2026-50559, administrators and developers must upgrade their Quarkus dependencies to the patched release branches. The fix is included in versions 3.37.0, 3.36.3, 3.33.2.1, 3.27.4.1, and 3.20.6.2. Applications using older development releases must be upgraded immediately to prevent exploitation.

If immediate dependency updates are not possible, temporary mitigations can be implemented at the network perimeter. Web Application Firewalls (WAFs) and API Gateways should be configured with custom rules to reject URIs containing %3B, %3b, %2F, %2f, %5C, %5c, or double-encoded characters like %25. These edge devices must normalize paths prior to forwarding requests downstream.

Developers should enforce a defense-in-depth authorization architecture rather than relying solely on path-based security rules. Programmatic declarative annotations, such as @RolesAllowed, @Secured, or custom security interceptors applied directly to controller methods, provide strong protection. These programmatic controls do not depend on the HTTP path normalization layers, preventing routing-level bypasses.

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
EPSS Probability
0.46%

Affected Systems

Quarkus Java Framework
AttributeDetail
CWE IDCWE-287 / CWE-863
Attack VectorNetwork
CVSS v3.1 Score7.5 (High)
EPSS Score0.00463 (37.7th percentile)
ImpactAuthentication & Authorization Bypass
Exploit StatusProof of Concept (PoC) Available
CISA KEV StatusNot Listed
CWE-287
Improper Authentication

Vulnerability Timeline

Core fix commit 919b80017d85564143a845b38e9cca54aff5b3cc pushed by Quarkus maintainers
2026-05-11
Vulnerability published in GitHub Advisory Database (GHSA-qcxp-gm7m-4j5v)
2026-06-19
CVE-2026-50559 assigned
2026-06-19
NVD CVSS score and configuration mappings finalized
2026-07-24

More Reports

•10 minutes ago•GHSA-PC2W-4MQ8-32QW
6.5

GHSA-PC2W-4MQ8-32QW: Missing Human-Approval Gate in create_dynatrace_notebook

A logic vulnerability exists in @dynatrace-oss/dynatrace-mcp-server prior to version 1.8.7. The create_dynatrace_notebook tool lacks a human-approval gate, allowing an attacker to exploit indirect prompt injection to force the underlying LLM client to create persistent Dynatrace notebooks without the operator's consent.

Alon Barad
Alon Barad
0 views•8 min read
•about 2 hours ago•CVE-2026-11393
9.0

CVE-2026-11393: Code Injection via Improper Triple-Quote Escaping in AWS AgentCore CLI

A critical code injection vulnerability exists in @aws/agentcore CLI (AWS AgentCore CLI) during the Bedrock Agent import lifecycle. An authenticated remote attacker with permissions to configure Bedrock collaborator attributes can inject python code by embedding triple-double-quotes (""") inside the collaborationInstruction metadata field. The CLI formats this metadata directly into a Python docstring in a generated main.py file without adequate escaping, leading to arbitrary code execution when the imported agent is run or deployed.

Alon Barad
Alon Barad
2 views•8 min read
•about 3 hours ago•GHSA-WCHH-9X6H-7F6P
5.9

GHSA-WCHH-9X6H-7F6P: Cryptographic Vulnerabilities and Deprecation of Olm in matrix-commander

GHSA-WCHH-9X6H-7F6P documents the critical deprecation of the cryptographic library libolm (Olm) and its Python binding wrapper python-olm, which matrix-commander depended upon via its downstream client library matrix-nio. Multiple cryptographic vulnerabilities (timing leaks, side-channels, signature malleability, and protocol confusion) were disclosed in 2022 and 2024. Because libolm is unmaintained, Python clients using matrix-commander are considered cryptographically unsafe until migrating to vodozemac.

Amit Schendel
Amit Schendel
2 views•8 min read
•about 4 hours ago•CVE-2026-55651
7.1

CVE-2026-55651: Excessive Data Exposure and BOLA in Easy!Appointments Customer Search

An Excessive Data Exposure vulnerability in Easy!Appointments v1.5.2 allows low-privileged administrative users, such as restricted Providers and Secretaries, to harvest unique, stateless appointment hashes belonging to other providers. These hashes act as capability tokens, granting full authorization to reschedule, take over, or delete appointments via stateless endpoints, resulting in a complete Broken Object Level Authorization (BOLA) scenario.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 5 hours ago•CVE-2026-52840
2.7

CVE-2026-52840: Server-Side Request Forgery in Easy!Appointments CalDAV Connector

Easy!Appointments prior to version 1.6.0 is vulnerable to Server-Side Request Forgery (SSRF) within its CalDAV integration module. The system handles user-supplied URLs in the connection test endpoint without verifying host constraints or network schemes, allowing authenticated backend users to probe internal infrastructure.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 6 hours ago•CVE-2026-52839
3.3

CVE-2026-52839: Cross-Provider Appointment Injection and Authorization Bypass in Easy!Appointments

An authorization bypass and logical 'write-before-crash' vulnerability in Easy!Appointments versions prior to 1.6.0 allows authenticated users with the 'Provider' role to inject unauthorized bookings into foreign providers' schedules or reassign existing appointments via parameter manipulation on the 'store' and 'update' endpoints.

Alon Barad
Alon Barad
5 views•6 min read