CVE-2026-19651

Authorization Bypass
Affects
Quarkus
in
Quarkus
No items found.
Versions
<3.39.2

Patch Available.

Exclamation circle icon
Patch Available

This Vulnerability has been fixed in the Never-Ending Support (NES) version offered by HeroDevs.

Overview

Quarkus is a Kubernetes-native Java framework optimized for cloud-native applications, containers, and serverless workloads. It builds on standard libraries (Jakarta EE, Eclipse Vert.x, Hibernate, Netty) and compiles to both JVM and GraalVM native images for fast startup and low memory use. The quarkus-spring-web extension provides a Spring Web compatibility layer, translating Spring MVC controller annotations such as @RestController, @RequestMapping, @RequestParam and @RequestHeader into their Jakarta REST equivalents so that Spring-style controllers can run on the Quarkus REST (RESTEasy Reactive) stack.

An Authorization Bypass vulnerability (CVE-2026-19651) has been identified in the Spring Web compatibility layer for Quarkus REST, which allows attackers to supply values for HTTP request headers through the URL query string, defeating header values that an application expects a reverse proxy or gateway to set, overwrite or strip.

Per OWASP: Access control enforces policy such that users cannot act outside of their intended permissions. Failures typically lead to unauthorized information disclosure, modification, or destruction of all data or performing a business function outside the user's limits.

This issue affects the Spring Web compatibility layer of Quarkus.

Details

Module Info

Vulnerability Info

This High-severity vulnerability is found in the io.quarkus:quarkus-spring-web package in the Spring Web compatibility layer for the Quarkus REST (RESTEasy Reactive) stack of Quarkus.

When the extension processes a Spring MVC controller, it walks each handler method parameter and rewrites the Spring annotation into the equivalent Jakarta REST parameter annotation. Every annotation is mapped to its matching parameter source except one: @RequestHeader is translated to the query-parameter binding that @RequestParam uses, so the value is read from the query string instead of from the HTTP request header.

DotName jaxRsAnnotation;
if (annotationName.equals(REQUEST_PARAM)) {
    jaxRsAnnotation = REST_QUERY_PARAM;
} else if (annotationName.equals(REQUEST_HEADER)) {
    jaxRsAnnotation = REST_QUERY_PARAM;
} else if (annotationName.equals(COOKIE_VALUE)) {
    jaxRsAnnotation = REST_COOKIE_PARAM;
} else {
    jaxRsAnnotation = REST_MATRIX_PARAM;
}

The consequence is that the value a controller reads from a @RequestHeader-annotated parameter never comes from the request headers at all. A remote caller can populate it simply by appending a query parameter of the same name to the request URL, and the real header of that name is ignored entirely.

This breaks a common deployment assumption. Applications frequently rely on infrastructure in front of the service to authenticate the caller and inject trusted headers, such as an identity or tenant header written by a gateway, or to strip client-supplied spoofing headers at the edge. Because the edge only inspects and rewrites headers, it has no reason to filter the query string, so an attacker-supplied query parameter passes straight through and is delivered to the controller as though it were the sanitized header. Any authorization, tenancy or trust decision the controller makes from that parameter is therefore made on fully attacker-controlled input. The same mapping also means genuinely header-driven behavior silently fails to see real headers.

The mis-mapping is limited to the Quarkus REST (RESTEasy Reactive) stack, which is the default REST stack in current Quarkus releases. Controllers running on the classic RESTEasy stack resolve @RequestHeader through a different code path and honor header semantics correctly.

Mitigation

Only recent versions of Quarkus are community-supported. The 2.16.x and 3.20.x lines were already End-of-Life when this CVE was published and will not receive public updates to address this issue. Quarkus LTS releases are maintained for 12 months from release; see the project's LTS release policy.

Users of the affected components should apply one of the following mitigations:

  • Upgrade Quarkus to a currently supported release that contains the fix.
  • Leverage a commercial support partner like HeroDevs for post-EOL security support.

Credits

Vulnerability Details
Severity
Level
CVSS Assessment
Low
>=0 <4
Medium
>=4 <6
High
>=6 <8
Critical
>=8 <10
High
ID
CVE-2026-19651
PROJECT Affected
Quarkus
Versions Affected
<3.39.2
NES Versions Affected
Published date
September 17, 2026
≈ Fix date
September 17, 2026
Category
Authorization Bypass
Vex Document
Download VEXHow do I use it?
Sign up for the latest vulnerability alerts fixed in
NES for Quarkus
Rss feed icon
Subscribe via RSS
or

By submitting the form I acknowledge receipt of our Privacy Policy.

Thanks for signing up for our Newsletter! We look forward to connecting with you.
Oops! Something went wrong while submitting the form.