Skip to main content

Netty OHTTP EUVDEUVD-2026-34308

| CVE-2026-48040 MEDIUM
Out-of-bounds Read (CWE-125)
2026-06-04 GitHub_M GHSA-32hf-8jw3-v4qq
6.8
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify OHTTP gateway running pre-0.0.22.Final under noUnsafe JVM config
  2. Delivery
    Send crafted OHTTP requests to trigger HPKE AEAD operation
  3. Exploit
    Fallback path resolves base ByteBuffer address without readerIndex/writerIndex offset
  4. Execution
    BoringSSL reads and writes adjacent pooled off-heap buffer memory
  5. Persist
    Extract HPKE key material from out-of-bounds read of adjacent buffer slot
  6. Impact
    Decrypt captured OHTTP sessions using disclosed key

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires two concurrent conditions: the target must be running netty-incubator-codec-ohttp prior to 0.0.22.Final, and the hosting JVM must be configured so that sun.misc.Unsafe is unavailable to Netty - specifically via the -Dio.netty.noUnsafe=true system property, a SecurityManager policy restricting Unsafe access, or use of a non-HotSpot JVM (e.g., GraalVM native image, IBM J9 in certain configurations). Without one of these JVM constraints, PooledDirectByteBuf.hasMemoryAddress() returns true and the vulnerable fallback path is never invoked. The CVSS PR:N vector confirms no authentication is required - any network-reachable attacker able to send HTTP requests to the OHTTP endpoint can trigger the bug. User interaction is not required (UI:N). The primary limiting factor is the non-default JVM configuration: while not common in standard production HotSpot deployments, it may appear in hardened environments, containerized workloads applying strict Unsafe restrictions, or environments running on alternative JVMs.

Impact

The CVSS 4.0 score of 6.8 (Medium) with vector AV:N/AC:L/AT:N/PR:N/UI:N reflects network-reachable, low-complexity exploitation with no authentication required, yielding VC:H and VA:H on the vulnerable system. However, the AT:N (No Attack Requirements) designation is in direct tension with the description's explicit prerequisite of a non-default JVM configuration: the vulnerable fallback path is only reached when the JVM is started with -Dio.netty.noUnsafe=true, when a SecurityManager restricts Unsafe access, or when running on a non-HotSpot JVM. On standard HotSpot deployments without these restrictions, hasMemoryAddress() returns true and the buggy fallback is never invoked, rendering the vulnerability unexploitable. This configuration dependency meaningfully narrows the real-world attack surface below what the raw CVSS vector implies. No EPSS score was included in the provided intelligence. The E:U CVSS modifier (Unexploited), the absence of a CISA KEV listing, and no public POC all confirm there is no evidence of active exploitation or weaponized code at time of analysis. Organizations running OHTTP gateways under Unsafe-restricted JVM configurations should treat this as high priority; standard HotSpot deployments without such restrictions face substantially lower practical risk.

Exploit ScenarioDerived

An attacker identifies an Oblivious HTTP gateway running netty-incubator-codec-ohttp prior to 0.0.22.Final on a JVM started with -Dio.netty.noUnsafe=true or a SecurityManager that blocks Unsafe. The attacker sends a stream of crafted OHTTP requests timed to coincide with legitimate concurrent OHTTP connections sharing the same Netty buffer pool arena. Because the HPKE AEAD operations receive the base address of pooled direct ByteBuffers instead of the correct offset address, BoringSSL reads key material and plaintext from adjacent buffer slots belonging to other connections; BoringSSL's zeroization of the output buffer on tag-verification failure then corrupts those adjacent slots, terminating the legitimate sessions. The leaked HPKE encryption key material disclosed through the out-of-bounds read allows the attacker to decrypt captured OHTTP traffic, directly defeating the anonymization Oblivious HTTP provides. No public POC exists at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 04, 2026

Incorrect native memory address resolution in Netty's Oblivious HTTP (OHTTP) BoringSSL JNI bridge allows unauthenticated remote attackers to corrupt memory belonging to concurrent connections and disclose the contents of adjacent pooled direct buffers - including HPKE encryption key material - on affected OHTTP gateways. The flaw exists in versions prior to 0.0.22.Final of netty-incubator-codec-ohttp and is only reachable when the JVM is configured to deny sun.misc.Unsafe access, causing the vulnerable fallback address-resolution path to activate. This directly undermines the confidentiality guarantees Oblivious HTTP is designed to provide; no public exploit code exists and the vulnerability is not listed in the CISA KEV catalog (CVSS 4.0 E:U).

RemediationAI

The vendor-released patch is version 0.0.22.Final; upgrade the netty-incubator-codec-ohttp Maven or Gradle dependency to 0.0.22.Final or later. The fix commit is at https://github.com/netty/netty-incubator-codec-ohttp/commit/7ad38d5cc2827af7e067e5c1e1ac37cd4566dad9 and the security advisory at https://github.com/netty/netty-incubator-codec-ohttp/security/advisories/GHSA-32hf-8jw3-v4qq. If immediate patching is not possible, a targeted workaround is to ensure the JVM hosting the OHTTP gateway does not use -Dio.netty.noUnsafe=true, does not apply a SecurityManager policy blocking Unsafe access, and runs on a standard HotSpot JVM - this prevents the fallback code path from activating entirely. Trade-off: removing these JVM restrictions may weaken other security controls if they were intentionally applied; evaluate whether Unsafe restrictions serve other hardening goals in your environment before removing them.

Affected VersionsENISA

netty-incubator-codec-ohttp < 0.0.22.Final

Affected Packages

maven io.netty.incubator:netty-incubator-codec-ohttp-hpke-native-boringssl fix: 0.0.22.Final
euvd netty_incubator_codec_ohttp fix: 0.0.22.Final

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in maven, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected library (CPE: cpe:2.3:a:netty:netty-incubator-codec-ohttp) implements Oblivious HTTP per RFC 9458 using BoringSSL's HPKE C implementation via JNI. Cryptographic operations require passing raw native (off-heap) memory addresses of Netty ByteBuf objects directly into BoringSSL's C routines. When hasMemoryAddress() returns true, Netty exposes the correct raw pointer; the vulnerability (CWE-125, Out-of-bounds Read - though the impact also encompasses out-of-bounds writes) lies in the fallback path that activates for PooledDirectByteBuf instances when sun.misc.Unsafe is unavailable: the old memory_address(buffer.internalNioBuffer(0, buffer.capacity())) call returned the base address of the underlying java.nio.ByteBuffer without adding the buffer's current readerIndex or writerIndex offset. BoringSSL AEAD seal/open operations therefore targeted position 0 of the underlying off-heap buffer rather than the actual data region, reading from and writing into adjacent pooled memory. The fix (commit 7ad38d5) introduces readerMemoryAddress() and writerMemoryAddress() helpers in BoringSSL.java that correctly add the buffer's current index before passing the address to JNI, and updates callers in BoringSSLAEADContext.java and BoringSSLCryptoOperation.java accordingly.

Know when Netty 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

Vendor (GitHub_M) PRIMARY 6.8 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N/E:U

Primary rating from Vendor (GitHub_M) · only source for this CVE.

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Patch available
Jun 04, 2026 - 19:01 EUVD
CVSS changed
Jun 04, 2026 - 18:22 NVD
6.8 (MEDIUM)
CVE Published
Jun 04, 2026 - 17:33 nvd
UNKNOWN (no severity yet)

DescriptionCVE.org

The netty incubator codec.bhttp is a java language binary http parser. The library implements Oblivious HTTP (RFC 9458) using BoringSSL's HPKE C library via JNI. When deriving native memory addresses for cryptographic operations versions prior to 0.0.22.Final provide a fallback path for direct ByteBufs that do not expose their memory address through hasMemoryAddress(). This fallback occurs when sun.misc.Unsafe is unavailable to Netty - for example, when the JVM is started with -Dio.netty.noUnsafe=true, when a SecurityManager restricts Unsafe access, or when running on non-HotSpot JVMs. In these configurations, Netty's default PooledByteBufAllocator returns PooledDirectByteBuf instances for which hasMemoryAddress() returns false. Under the enabling JVM configuration, an unauthenticated network attacker can cause the OHTTP gateway to corrupt memory belonging to other concurrent connections and disclose the contents of adjacent pooled direct buffers by triggering cryptographic operations with crafted OHTTP requests. The corruption occurs regardless of whether the AEAD tag verification succeeds, as BoringSSL zeroizes the output buffer on failure. The information disclosure path provides the attacker with the encryption key needed to extract the leaked data. This violates the confidentiality and integrity of all connections sharing the same Netty buffer arena. Version 0.0.22.Final fixes the issue.

Threat Intelligence Overview

EPSS Score
0.0%
Top 93% exploitable
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA CIRCL GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Total

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Netty

View all
CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2019-16869 HIGH POC
7.5 Sep 26

Netty before 4.1.42.Final mishandles whitespace before the colon in HTTP headers (such as a "Transfer-Encoding : chunked

CVE-2026-56820 CRITICAL POC
9.1 Jul 21

Certificate revocation-check bypass in the Netty network framework's OCSP client (io.netty:netty-handler-ssl-ocsp) affec

CVE-2024-36121 CRITICAL POC
9.1 Jun 04

netty-incubator-codec-ohttp is the OHTTP implementation for netty. Rated critical severity (CVSS 9.1), this vulnerabilit

CVE-2024-40642 HIGH POC
8.1 Jul 18

The netty incubator codec.bhttp is a java language binary http parser. Rated high severity (CVSS 8.1), this vulnerabilit

CVE-2025-24970 HIGH POC
7.5 Feb 10

Netty, an asynchronous, event-driven network application framework, has a vulnerability starting in version 4.1.91.Final

CVE-2026-59902 HIGH POC
7.5 Aug 17

Memory exhaustion in Netty's SctpMessageCompletionHandler (netty-transport-sctp) allows unauthenticated remote peers to

CVE-2026-55833 HIGH POC
7.5 Jul 20

Compression-amplification denial of service in the Netty network framework (versions prior to 4.1.136.Final and 4.2.16.F

CVE-2026-55831 HIGH POC
7.5 Jul 20

Memory-amplification denial of service in the Netty network framework (SPDY/3.1 codec) prior to 4.1.136.Final and 4.2.16

CVE-2026-56816 HIGH POC
7.5 Jul 21

Memory-exhaustion denial of service in Netty's HTTP/3 codec (Http3FrameCodec) affects all releases prior to 4.2.16.Final

CVE-2026-59903 HIGH POC
7.5 Aug 17

Netty's HTTP CORS handler silently rewrites the Vary response header to Vary: Origin in releases before 4.1.137.Final an

CVE-2026-48748 HIGH POC
7.5 Jun 12

Denial of service in the Netty HTTP/3 codec (io.netty:netty-codec-http3) prior to version 4.2.15.Final allows remote una

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy