Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain previously-valid signed OAuth2 token
-
DeliveryPresent expired float-exp token to broker
-
Exploitis_integer guard skips expiry validation
-
ExecutionBroker accepts stale token, timer never fires
-
ImpactRetain unauthorized messaging access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
|
| Exploitation Conditions | Requires the RabbitMQ OAuth2 auth backend (rabbitmq_auth_backend_oauth2) to be enabled AND the configured identity provider to emit the JWT 'exp' claim as a JSON float (fractional NumericDate) rather than an integer - an uncommon configuration, as mainstream IdPs emit integer exp values. The attacker must also possess a previously-valid, correctly signed token, since jose_jwt:verify still validates the signature. These preconditions (non-default float-exp IdP behavior plus possession of a signed token) sharply limit real-world exploitability despite the network-reachable vector; brokers on default integer-exp IdPs or without the OAuth2 backend are unaffected. |
| Impact | This is a genuine but conditional authentication weakness that is overstated by its raw score in most real deployments. The provided CVSS 4.0 vector (6.3, AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N) correctly encodes the core limiter as AT:P (attack requirement present) rather than baking it into complexity - that requirement is the linchpin, because the description states the IdP must emit 'exp' as a JSON float, which is uncommon since mainstream identity providers emit integer NumericDate values. No EPSS score, no CISA KEV listing, and no public POC were supplied, so exploitation signals are absent; per policy this is treated as 'no public exploit identified at time of analysis.' The technical impact is limited (VC:L/VI:L, no availability impact): a stale-but-signed token is accepted and connections never time out, yielding continued messaging access rather than a fresh privilege gain. Net: a real correctness/session-expiration bug worth patching on OAuth2-backed brokers, but low practical priority given the non-default float-exp precondition and the requirement that the attacker already hold a previously-valid signed token. Note the tag 'Information Disclosure' is a loose fit - the flaw is fundamentally CWE-613 insufficient session expiration / expired-credential acceptance, though a stale token does grant read access, so the C:L component is defensible. |
| Exploit ScenarioDerived | In an environment where RabbitMQ uses the OAuth2 auth backend and the configured IdP issues tokens with a fractional (float) 'exp' claim, a user whose token has expired - or an attacker who captured that previously-valid signed token - presents it to the broker. Because the is_integer(Exp) guard falls through for float values, both the login-time expiry check and the mid-connection disconnect timer are skipped, so the expired token is accepted and the session never times out. No public exploit code is known; exploitation hinges on the uncommon float-exp IdP behavior and possession of a valid signed token. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Expired OAuth2 JWT access tokens are accepted indefinitely by RabbitMQ 4.2.0 through 4.2.8 and 4.3.0 through 4.3.2 when the rabbitmq_auth_backend_oauth2 backend is enabled and the identity provider emits the JWT 'exp' claim as a fractional (float) JSON number rather than an integer. Because the Erlang code guards expiry parsing with is_integer(Exp), both the login-time expiry check and the mid-connection disconnect timer silently fall through for float exp values, so an attacker holding a previously issued, correctly signed token can authenticate with it long after it has expired and keep connections open without being disconnected. The CVSS 4.0 base score is 6.3, but exploitability is sharply conditional - a non-default IdP behavior plus possession of a valid signed token - and no public exploit code has been identified at time of analysis; the issue is fixed in RabbitMQ 4.2.9 and 4.3.3.
RemediationAI
Vendor-released patch: upgrade to RabbitMQ 4.2.9 (https://github.com/rabbitmq/rabbitmq-server/releases/tag/v4.2.9) or 4.3.3 (https://github.com/rabbitmq/rabbitmq-server/releases/tag/v4.3.3), which change the is_integer(Exp) guards to is_number(Exp) with truncation so fractional NumericDate values are validated normally; the corresponding commits are d10a369a96658d0fba1050bd43c732e58fcf28fd and f189a8824c9efbce46bd9438fcdbda4521cfc923. If upgrading is not immediately possible, first confirm whether the identity provider actually emits a fractional exp: query the IdP's JWT configuration or decode a live token's 'exp' claim with a JWT inspection tool, since an integer exp means the code path is not reachable and no mitigation is required. If the IdP does emit float exp, reconfigure it to issue integer NumericDate values where the option exists (some IdPs expose a timestamp-precision setting) - this is the least disruptive workaround with no functional side effects on RabbitMQ. Alternatively, accept the risk only as a compensating control by disabling the OAuth2 backend and falling back to an internal or LDAP-based auth backend, noting that this changes the authentication architecture and loses OAuth2 token scopes and per-vhost authorization mapping. Reducing token TTLs does not mitigate the flaw because expiry is never evaluated for float exp. Restricting AMQP/management listener exposure to trusted networks reduces the attack surface but does not remove the weakness, since an attacker who can already reach the broker with a stolen signed token retains persistent access. Revoking or rotating all outstanding OAuth2 tokens and signing keys at the IdP after patching is advisable to invalidate any token that may have been reused past expiry.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
RabbitMQ's OAuth2 resource-server plugin (deps/rabbitmq_auth_backend_oauth2/src/rabbit_auth_backend_oauth2.erl) validates JWT access tokens presented by clients as passwords. In affected releases, two functions - validate_token_expiry/1 and expiry_timestamp/1 (the latter feeding update_state for mid-connection re-authentication timers) - match the 'exp' claim with the Erlang guard 'when is_integer(Exp)' and fall through to ok/never clauses for any non-integer value. JWT parsing is delegated to the jose library, and jose_jwt:verify only validates the cryptographic signature, not the exp claim, so no other layer enforces expiry. RFC 7519 NumericDate values are permitted to be fractional, but mainstream identity providers (Keycloak, Okta, Azure AD, Auth0) emit integer exp values, which is why the flaw stayed latent; an IdP that emits a float exp causes RabbitMQ to accept an already-expired token at login and to never schedule the disconnect timer, leaving sessions alive indefinitely. The root cause class is CWE-613 (Insufficient Session Expiration). The upstream fix replaces the is_integer/1 guards with is_number/1 and truncates the fractional value to whole seconds before comparison, and adds a unit test (test_token_expiration_with_float_exp) that asserts an expired float exp is refused and a future float exp yields the correct numeric expiry_timestamp.
Know when Rabbitmq gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
AC:H because it needs the uncommon float-exp IdP configuration; PR:N as the token itself is the credential; C:L/I:L for stale-token messaging access, no availability impact.
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
RabbitMQ is a messaging and streaming broker. From 4.2.0 until 4.2.9 and 4.3.3, OAuth2 isinteger(Exp) guard skips token-expiry checks for float exp. validatetokenexpiry/1 (lines 208-214) and expirytimestamp/1 (138-144) both guard with 'when isinteger(Exp)' and fall through to ok/never for float values. josejwt:verify validates only the signature, not exp. With float exp, no expiry validation occurs anywhere in the If the IdP emits exp as a JSON float (RFC 7519 permits fractional NumericDate), both the login-time expiry check and the mid-connection disconnect timer are silently skipped , an already-expired token is accepted, and connections never time OAuth2 backend enabled IdP emits float exp (uncommon; mainstream IdPs emit integers) Attacker possesses a previously-valid signed. This issue is fixed in versions 4.2.9 and 4.3.3.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Sensitive credential disclosure in RabbitMQ affects installations running the management plugin with OAuth 2 configured
Pivotal RabbitMQ, versions 3.7.x prior to 3.7.21 and 3.8.x prior to 3.8.1, and RabbitMQ for Pivotal Platform, 1.16.x ver
Denial of service in the RabbitMQ Java client library (com.rabbitmq:amqp-client ≤ 5.30.0) allows a malicious or compromi
An issue was discovered in Pivotal RabbitMQ 3.x before 3.5.8 and 3.6.x before 3.6.6 and RabbitMQ for PCF 1.5.x before 1.
Parsing desynchronization in the RabbitMQ amqp091-go AMQP 0.9.1 client library before 1.13.0 lets a malicious or comprom
RabbitMQ's amqp091-go Go client library, in all versions before 1.13.0, builds TLS configuration from amqps:// URIs with
RabbitMQ is a multi-protocol messaging broker. Rated medium severity (CVSS 5.4), this vulnerability is remotely exploita
RabbitMQ brokers that use the OAuth2 plugin can silently fall back to disabled TLS certificate verification when no CA b
Silent AMQP 0.9.1 metadata corruption in the RabbitMQ amqp091-go Go client library prior to 1.13.0 lets an application t
TLS client-authentication bypass in the RabbitMQ trust-store plugin lets a remote unauthenticated attacker whose forged
TLS certificate validation is completely bypassed in the RabbitMQ Java client library (`com.rabbitmq:amqp-client`) prior
Denial of service in the official RabbitMQ Go client library amqp091-go (versions prior to 1.13.0): a malicious, comprom
Same weakness CWE-613 – Insufficient Session Expiration
View allSame technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Module for Server Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server 15 SP7 | Affected |
| SUSE Linux Enterprise Server 15 SP7 | Affected |
| SUSE Linux Enterprise Server 16.0 | Affected |
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| openSUSE Leap 16.0 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP6 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP5 | Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Affected |
| SUSE Enterprise Storage 7 | Affected |
| SUSE Enterprise Storage 7.1 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP2 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP3 | Affected |
| SUSE Linux Enterprise Real Time 15 SP2 | Affected |
| SUSE Linux Enterprise Real Time 15 SP3 | Affected |
| SUSE Linux Enterprise Real Time 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP2 | Affected |
| SUSE Linux Enterprise Server 15 SP2-BCL | Affected |
| SUSE Linux Enterprise Server 15 SP2-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP3 | Affected |
| SUSE Linux Enterprise Server 15 SP3-BCL | Affected |
| SUSE Linux Enterprise Server 15 SP3-LTSS | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Affected |
| SUSE Manager Proxy 4.1 | Affected |
| SUSE Manager Proxy 4.2 | Affected |
| SUSE Manager Proxy 4.3 | Affected |
| SUSE Manager Proxy LTS 4.3 | Affected |
| SUSE Manager Retail Branch Server 4.1 | Affected |
| SUSE Manager Retail Branch Server 4.2 | Affected |
| SUSE Manager Retail Branch Server 4.3 | Affected |
| SUSE Manager Retail Branch Server LTS 4.3 | Affected |
| SUSE Manager Server 4.1 | Affected |
| SUSE Manager Server 4.2 | Affected |
| SUSE Manager Server 4.3 | Affected |
| SUSE Manager Server LTS 4.3 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
| openSUSE Leap 15.6 | Affected |
| SUSE Linux Enterprise Server for NVIDIA 16.1 | Affected |
EUVD-2026-87158
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB