{"id":26384,"date":"2026-09-18T20:32:12","date_gmt":"2026-09-18T12:32:12","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93572"},"modified":"2026-09-18T20:32:12","modified_gmt":"2026-09-18T12:32:12","slug":"cve-2026-93572","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93572","title":{"rendered":"CVE-2026-93572 &#8211; ## Summary\r\n\r\n`RedisArrayAggregator` recently added `maxElements` and `maxNestedArrayDepth"},"content":{"rendered":"<p>## Summary<\/p>\n<p>`RedisArrayAggregator` recently added `maxElements` and `maxNestedArrayDepth` limits to fix public Redis resource-exhaustion advisories. The limits are independent, but the allocator remains eager: every positive nested RESP array header creates `new ArrayList(length)` before any child element exists.<\/p>\n<p>With the default constructor, an attacker can send nested array headers with length `1,000,000` until the default nesting limit of `1024` is reached. This can reserve up to `1,024,000,000` child slots from roughly 12 KB of RESP input. This is backing capacity, not logical list size: `ArrayList(int)` constructs an empty list with the specified initial capacity.<\/p>\n<p>## Technical Details<\/p>\n<p>Current `decodeRedisArrayHeader(&#8230;)` checks the two limits independently:<\/p>\n<p>&#8220;`java<br \/>\nif (header.length() &gt; maxElements) {<br \/>\n    throw new CodecException(&#8220;this codec doesn&#8217;t support longer length than &#8221; + maxElements);<br \/>\n}<\/p>\n<p>if (depths.size() &gt;= maxNestedArrayDepth) {<br \/>\n    releaseAndClearDepths();<br \/>\n    throw new CodecException(&#8220;max nested array depth exceeded: &#8221;  + maxNestedArrayDepth);<br \/>\n}<br \/>\ndepths.push(new AggregateState((int) header.length()));<br \/>\n&#8220;`<\/p>\n<p>`AggregateState` i<\/p>\n","protected":false},"excerpt":{"rendered":"<p>## Summary<\/p>\n<p>`RedisArrayAggregator` recently added `maxElements` and `maxNestedArrayDepth` limits to fix public Redis resource-exhaustion advisories. The limits are independent, but the allocator rem<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-26384","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/26384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}