Skip to main content

netty-incubator-codec-bhttp CVE-2026-63124

HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-08-20 https://github.com/netty/netty-incubator-codec-ohttp GHSA-8cfx-wx3q-mh5q
7.5
CVSS 3.1 · GitHub Advisory
View

Attack ChainAIDerived

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

  1. Recon
    Identify BHTTP/OHTTP Netty endpoint
  2. Delivery
    Craft four-byte known-length field section
  3. Exploit
    Deliver crafted BHTTP request over network
  4. Install
    readFieldLine() returns null without consuming bytes
  5. C2
    while loop subtracts zero indefinitely
  6. Execute
    Netty event-loop thread pinned
  7. Impact
    Availability denied for all co-scheduled channels

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

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

Exploitation Conditions

The target must be running a Netty pipeline that processes Binary HTTP (RFC 9292) messages using BinaryHttpParser or BinaryHttpDecoder from io.netty.incubator:netty-incubator-codec-bhttp version 0.0.22.Final or earlier, with JVM assertions disabled (the production default, as assertions are not activated by -ea in standard server deployments). No authentication is required per CVSS PR:N - any network peer that can deliver BHTTP bytes to the endpoint can trigger the hang. A second exploitation path exists when the application uses the OHTTP stack: any peer with a valid OHTTP key and the ability to send encrypted OHTTP messages can trigger the inner BHTTP parser hang after successful decryption, meaning authentication at the OHTTP envelope level does not prevent exploitation. The limiting factor is that the application must specifically have opted into Binary HTTP or OHTTP processing, which is not a default Netty configuration and represents a narrow deployment set.

Impact

The CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H scores 7.5 and accurately reflects the threat model: the trigger payload is a structurally valid BHTTP message requiring no privileges, no user interaction, and only low attack complexity because the boundary condition is deterministic and reproducible with a four-byte field section. A publicly available proof-of-concept is included in the GitHub advisory (GHSA-8cfx-wx3q-mh5q), which significantly lowers the bar for exploitation; any operator running this library should treat that PoC as equivalent to a weaponizable script. No EPSS score was provided in the source data, so exploitation probability cannot be quantified from that signal; however, the combination of a network-accessible vector, no authentication requirement, and a published PoC places this in a category that warrants urgent patching regardless of EPSS. The vulnerability is not listed in the CISA KEV catalog at time of analysis, so confirmed active exploitation in the wild is not established. The Netty event-loop threading model amplifies the impact: a single pinned I/O thread degrades availability for all channels multiplexed on that loop, not just the attacking connection. The OHTTP secondary path is notable because it implies that even endpoints that validate outer OHTTP tokens before passing decrypted content to the inner BHTTP parser remain vulnerable to authenticated-but-malicious peers. The scope is limited by the library's current deployment footprint, which is niche.

Exploit ScenarioDerived

An attacker sends a minimal valid Binary HTTP request to any Netty endpoint that passes input through BinaryHttpParser or BinaryHttpDecoder - for example, a four-byte known-length field section encoding a single header 'a: b'. Because a public proof-of-concept exists in the advisory, constructing this payload requires no specialized knowledge. The parser thread enters an infinite loop, permanently occupying the Netty event-loop worker responsible for that channel and degrading or eliminating service for all other connections sharing that event loop.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

AnalysisAIv1 – Aug 20, 2026

Infinite parse loop in netty-incubator-codec-bhttp's BinaryHttpParser allows any remote peer capable of sending Binary HTTP input to permanently pin a Netty event-loop thread, causing denial of service. The flaw exists in versions up to and including 0.0.22.Final and is triggered by a structurally valid known-length field section whose last field line ends exactly at the declared section boundary - no malformed framing is required. A public proof-of-concept is included in the GHSA advisory, and the condition is also reachable through the OHTTP inner parser after successful decryption, meaning authenticated OHTTP peers are a second exploitation path.

RemediationAI

The primary fix is to upgrade to io.netty.incubator:netty-incubator-codec-bhttp version 0.0.23.Final, released at https://github.com/netty/netty-incubator-codec-ohttp/releases/tag/netty-incubator-codec-parent-ohttp-0.0.23.Final. This version addresses the boundary condition in readFieldLine() so that a complete field line ending exactly at the known field-section boundary is accepted rather than causing the parser to stall. If an immediate upgrade is not possible, enabling JVM assertions (-ea flag) will cause the assert read > 0 guard at BinaryHttpParser.java:622 to throw an AssertionError and terminate the loop - this prevents the infinite loop but will crash the Netty channel handling that connection, which may itself be disruptive in high-throughput environments. A network-layer workaround of blocking or rate-limiting BHTTP/OHTTP traffic upstream is possible but has significant trade-offs since it disables the legitimate functionality the library provides. The vendor's suggested code-level remediation (treating readFieldLine() returning null as incomplete input and adding a no-progress runtime guard) is the correct long-term fix and is implemented in 0.0.23.Final.

Affected Packages

maven io.netty.incubator:netty-incubator-codec-bhttp fix: 0.0.23.Final

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in maven

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

Technical ContextAI · show details

Binary HTTP (RFC 9292) is a binary framing format for HTTP messages. The affected library, io.netty.incubator:netty-incubator-codec-bhttp (CPE: pkg:maven/io.netty.incubator:netty-incubator-codec-bhttp), is an incubator module for the Netty async networking framework. The parser class BinaryHttpParser.java reads known-length field sections in a while loop (line 619) that decrements a fieldSectionLength counter by the number of bytes consumed per iteration. The inner function readFieldLine() uses the boundary check 'if (sumBytes >= in.readableBytes()) return null' (lines 678-681), which causes it to return null without advancing the buffer read position when the last field line fills the remaining readable slice exactly. The while loop then computes a zero-byte progress delta, which the assert at line 622 would catch - but JVM assertions are disabled by default in production, so the guard is silently skipped and the loop runs indefinitely. CWE-400 (Uncontrolled Resource Consumption) is the root cause class: unbounded CPU time is consumed on a single Netty I/O thread with no timeout or progress guard. The same BinaryHttpParser is invoked by the OHTTP stack after decrypting an outer OHTTP envelope, meaning the attack surface extends to any OHTTP endpoint built on this library.

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

GitHub Advisory PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Network-reachable parser requiring no authentication; deterministic one-packet trigger; impact is exclusively availability via thread exhaustion with no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionGitHub Advisory

Summary

io.netty.incubator:netty-incubator-codec-bhttp can enter a non-terminating parse loop when a known-length Binary HTTP field section ends exactly after a complete field line. A remote peer that can send Binary HTTP input to a Netty pipeline using BinaryHttpParser / BinaryHttpDecoder can use a tiny malformed request or response to keep the parsing thread busy indefinitely, causing denial of service.

Details

In codec-bhttp/src/main/java/io/netty/incubator/codec/bhttp/BinaryHttpParser.java, readFieldSection(...) tracks the remaining field-section length in fieldSectionLength, then repeatedly calls readFieldLine(...) until the length reaches zero:

  • readFieldSection(...) parses the known-length field section and enters while (fieldSectionLength != 0) at BinaryHttpParser.java:619.
  • Inside the loop, it records readableBytes, calls readFieldLine(...), computes read = readableBytes - in.readableBytes(), asserts read > 0, and subtracts read from fieldSectionLength at BinaryHttpParser.java:620-625.
  • readFieldLine(...) returns null without consuming bytes when the field line ends exactly at the end of the readable slice because it uses if (sumBytes >= in.readableBytes()) return null after adding the value length (BinaryHttpParser.java:678-681).
  • With JVM assertions disabled (the production default), assert read > 0 is not active. The parser therefore subtracts zero forever and never returns.

The boundary condition is reachable with a valid known-length field section containing exactly one complete field line and no extra byte after that line. Example field section: length 4, then name length 1, name a, value length 1, value b.

Proof of concept

Safe local verification performed in this repository:

  1. Compile the module and classpath:
bash
./mvnw -q -pl codec-bhttp -am compile test-compile
./mvnw -q -pl codec-bhttp dependency:build-classpath -Dmdep.outputFile=/tmp/codec-bhttp-cp.txt
printf '%s' "codec-bhttp/target/classes:$(cat /tmp/codec-bhttp-cp.txt)" > /tmp/codec-bhttp-run-cp.txt
  1. Compile and run this minimal verifier with production-style assertions disabled:
java
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.incubator.codec.bhttp.BinaryHttpParser;
import io.netty.incubator.codec.bhttp.VarIntCodecUtils;
import java.nio.charset.StandardCharsets;

public final class VerifyBhttpHang {
  private static void writeAscii(ByteBuf out, String value) {
    VarIntCodecUtils.writeVariableLengthInteger(out, value.length());
    out.writeCharSequence(value, StandardCharsets.US_ASCII);
  }
  public static void main(String[] args) {
    ByteBuf buffer = Unpooled.buffer();
    VarIntCodecUtils.writeVariableLengthInteger(buffer, 0); // known-length request
    writeAscii(buffer, "GET");
    writeAscii(buffer, "https");
    writeAscii(buffer, "example.com");
    writeAscii(buffer, "/");
    VarIntCodecUtils.writeVariableLengthInteger(buffer, 4); // field section length
    writeAscii(buffer, "a");
    writeAscii(buffer, "b");
    new BinaryHttpParser(8192).parse(buffer, false);
    System.out.println("returned");
  }
}

Execution result observed locally:

text
timeout 3 java -cp "/tmp:$(cat /tmp/codec-bhttp-run-cp.txt)" VerifyBhttpHang
exit=124

Exit code 124 from timeout confirms the parser did not return within three seconds. When assertions are enabled by Surefire, the same payload fails at BinaryHttpParser.java:622 (assert read > 0), confirming the non-progress condition.

Impact

A peer that can deliver crafted BHTTP bytes can cause the parser to loop forever. In Netty deployments this can pin the event-loop thread or worker responsible for the channel, reducing or eliminating availability for other channels on the same event loop. Through OHTTP, the same parser is used after successful decryption of protected payloads, so authenticated/decryptable OHTTP peers can trigger the same condition in the inner BHTTP parser.

Suggested remediation

  • Treat readFieldLine(...) == null as incomplete input and return null from readFieldSection(...) instead of continuing.
  • Replace boundary checks in readFieldLine(...) that require an extra byte after a complete field line. A complete field line ending exactly at the known field-section boundary should be accepted.
  • Add a production runtime guard that throws a controlled decoder exception if a parser loop iteration makes no progress.
  • Add regression tests with JVM assertions disabled for known-length header and trailer field sections that end exactly at the field-section boundary.

References

  • codec-bhttp/src/main/java/io/netty/incubator/codec/bhttp/BinaryHttpParser.java:619-625
  • codec-bhttp/src/main/java/io/netty/incubator/codec/bhttp/BinaryHttpParser.java:678-681
  • RFC 9292: Binary Representation of HTTP Messages

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 maven packages depend on io.netty.incubator:netty-incubator-codec-bhttp (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.0.23.Final.

Executive ViewAI

Why It Matters

Netty-incubator-codec-bhttp versions up to 0.0.22.Final contain a denial-of-service vulnerability that allows remote attackers to permanently hang application event-loop threads, disrupting service availability. This unauthenticated vulnerability requires no special privileges and can be triggered by any network peer sending specially crafted Binary HTTP input.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: implement network-level rate limiting and connection timeouts; add Web Application Firewall (WAF) rules to block requests with structurally valid Binary HTTP frames at section boundaries; configure application connection-per-IP limits and parse operation timeouts; segment affected systems from untrusted networks; establish continuous monitoring of GHSA-wfm5-6pj7-mh74 for vendor patch release.

Threat Intelligence Overview

Prevalence
Low
experimental Netty incubator library, narrow BHTTP/OHTTP adoption
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
3 sources
Confidence: Low
NVD CVE.org GHSA GitHub

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 HIGH
CISA KEV No
Public POC Yes
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Out-of-Cycle
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Affected Products (CPE)GitHub Advisory

pkg:maven/io.netty.incubator:netty-incubator-codec-bhttp

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

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