<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Mon, 28 Sep 2026 07:45:09 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-42583 — Netty: Lz4FrameDecoder resource exhaustion</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-42583</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; netty, io.netty netty-codec, io.netty netty-codec-compression&lt;/p&gt;
&lt;p&gt;Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final and 4.1.133.Final, Lz4FrameDecoder allocates a ByteBuf of size decompressedLength (up to 32 MB per block) before LZ4 runs. A peer only needs a 21-byte header plus compressedLength payload bytes - 22 bytes if compressedLength == 1 - to force that allocation. This vulnerability is fixed in 4.2.13.Final and 4.1.133.Final.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; netty, io.netty netty-codec, io.netty netty-codec-compression&lt;/p&gt;
&lt;p&gt;Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final and 4.1.133.Final, Lz4FrameDecoder allocates a ByteBuf of size decompressedLength (up to 32 MB per block) before LZ4 runs. A peer only needs a 21-byte header plus compressedLength payload bytes - 22 bytes if compressedLength == 1 - to force that allocation. This vulnerability is fixed in 4.2.13.Final and 4.1.133.Final.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-42583</guid>
    </item>
    <item>
      <title>GHSA-mj4r-2hfc-f8p6 — Netty Lz4FrameDecoder is vulnerable to resource exhaustion</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-mj4r-2hfc-f8p6</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Maven: io.netty:netty-codec-compression, Maven: io.netty:netty-codec&lt;/p&gt;
&lt;p&gt;### Summary
Lz4FrameDecoder allocates a ByteBuf of size `decompressedLength` (up to 32 MB per block) before LZ4 runs. A peer only needs a 21-byte header plus `compressedLength` payload bytes - 22 bytes if `compressedLength == 1` - to force that allocation.&lt;/p&gt;
&lt;p&gt;### Details
io.netty.handler.codec.compression.Lz4FrameDecoder#decode
Header fields are trusted for sizing. On the compressed path, after `readableBytes &amp;gt;= compressedLength`, the decoder does `ctx.alloc().buffer(decompressedLength, decompressedLength)` then decompresses.&lt;/p&gt;
&lt;p&gt;### PoC
The test below demonstrates how an attacker sending 22 bytes will force the server to allocate 32MB&lt;/p&gt;
&lt;p&gt;```java
    @Test
    void test() throws Exception {
        EventLoopGroup workerGroup = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
        try {
            AtomicReference&amp;lt;Throwable&amp;gt; serverError = new AtomicReference&amp;lt;&amp;gt;();
            CountDownLatch latch = new CountDownLatch(1);&lt;/p&gt;
&lt;p&gt;ServerBootstrap server = new ServerBootstrap()
                    .group(workerGroup)
                    .channel(NioServerSocketChannel.class)
                    .childHandler(new ChannelInitializer&amp;lt;SocketChannel&amp;gt;() {
                        @Override
                        protected void initChannel(SocketChannel ch) {
                            ch.pipeline()
                                    .addLast(new Lz4FrameDecoder())
                                    .addLast(new ChannelInboundHandlerAdapter() {…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Maven: io.netty:netty-codec-compression, Maven: io.netty:netty-codec&lt;/p&gt;
&lt;p&gt;### Summary
Lz4FrameDecoder allocates a ByteBuf of size `decompressedLength` (up to 32 MB per block) before LZ4 runs. A peer only needs a 21-byte header plus `compressedLength` payload bytes - 22 bytes if `compressedLength == 1` - to force that allocation.&lt;/p&gt;
&lt;p&gt;### Details
io.netty.handler.codec.compression.Lz4FrameDecoder#decode
Header fields are trusted for sizing. On the compressed path, after `readableBytes &amp;gt;= compressedLength`, the decoder does `ctx.alloc().buffer(decompressedLength, decompressedLength)` then decompresses.&lt;/p&gt;
&lt;p&gt;### PoC
The test below demonstrates how an attacker sending 22 bytes will force the server to allocate 32MB&lt;/p&gt;
&lt;p&gt;```java
    @Test
    void test() throws Exception {
        EventLoopGroup workerGroup = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
        try {
            AtomicReference&amp;lt;Throwable&amp;gt; serverError = new AtomicReference&amp;lt;&amp;gt;();
            CountDownLatch latch = new CountDownLatch(1);&lt;/p&gt;
&lt;p&gt;ServerBootstrap server = new ServerBootstrap()
                    .group(workerGroup)
                    .channel(NioServerSocketChannel.class)
                    .childHandler(new ChannelInitializer&amp;lt;SocketChannel&amp;gt;() {
                        @Override
                        protected void initChannel(SocketChannel ch) {
                            ch.pipeline()
                                    .addLast(new Lz4FrameDecoder())
                                    .addLast(new ChannelInboundHandlerAdapter() {…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-mj4r-2hfc-f8p6</guid>
    </item>
  </channel>
</rss>
