`RedisArrayAgregator` elimina o estado agregado parcial retido quando o limite `maxNestedArrayDepth` é ultrapassado, mas não elimina o mesmo estado quando o limite `maxElements' do irmão é ultrapassado. Um par pode iniciar um array de REEE válido, enviar uma criança de corda de volume, e enviar um cabeçalho de array aninhado mais do que o configurado `maxElements`. Netty lança uma exceção de decodificador, mas o agregado parcial existente permanece retido no manipulador. Se o aplicativo deixar o canal vivo após a exceção, as mensagens posteriores ainda serão consumidas no agregado pré- erro. O PoV fornecido prova tanto a referência ‘ByteBuf` retenção e a continuação do estado do analisador estável. ## Detalhes Técnicos. `RedisArrayAgregator.decode(...)` mantém mensagens não- array antes de adicioná- las a `profundities.peek(.children'. Em `decodeRedisArrayHeader(...), o ramo `header.length() > maxElements` lança imediatamente:.

```java se (header.length() > maxElements) { lançar novo CodecException("este codec não suporta comprimento maior do que " + maxElements); } ``` O branch imediatamente a seguir ninhado- profundidade limpa o estado agregado antes de jogar: ```java se (profunditys.size() >= maxNestedArrayDepth) { releaseAndClearDepths(); lance novo CodecException("máx profundidade do array anidadada excedida: " + maxNestedArrayDepth); } ````.

A limpeza faltante no primeiro ramo deixa as crianças retidas e o estado agregado alcançable após a exceção. Coloque o `RedisArrayAgregatorIncompletoCleanupPovTest.java` fornecido em. `codec-redis/src/test/java/io/netty/handler/codec/redis/` ``` peixe./mvnw -pl codec-redis -am -Dtest=RedisArrayAgregatorIncompletoCleanupPovTest -Dsurefire.failIfNoSpecifiedTests=false -DskipNativeTests -DskipAutobahnTests test ```. A suíte de testes inclui:.

- ativador do RESP serializado através de `RedisDecoder`, `RedisBulkStringAgregator` e `RedisArrayAgregator`; - prova direta de refcount que os máximos elementos não sobrecarregam a criança retenida imediatamente; - prova de continuação pós- exceção que o agregado estável consome uma mensagem posterior; - controles de profundidade ninhada que limpam o mesmo estado agregado parcial. Todos os cinco testes passam na atual ` 4.2 `, ` 4.2.15. Final` e ` 4.1.135.Final`. Para os condutores de codec Redis que continuam após exceções de codec, um par não autêntico pode manter o estado agregado controlado pelo atacante vivo em uma exceção de limite de segurança. Isto pode pin de buffers agrupados até que o canal se feche/ remova ou até que uma mensagem posterior complete o agregado estável.

`RedisBulkStringAgregator` permite strings de volume até `RedisConstants.REDIS_MESSAGE_MAX_LENGTH` (` 512 MB`), para que a criança retenção possa ser grande em implantações que agregam fluxos Redis não confiados. Aplicações que fecham sempre o canal ou removem o manipulador em exceções de decodificador irão desencadear a limpeza existente; o problema é a limpeza imediata faltante no caminho de falha de elementos máximos enquanto o manipulador permanece instalado. Chame `releaseAndClearDepths()` antes de jogar do ramo de máximos elementos. Considere aplicar a mesma limpeza a todas as saídas de erros não recuperadas de `decodeRedisArrayHeader(...)` que podem ocorrer enquanto `profundidades' não estão vazias.

Pacote/ Versões afetados. `io.netty:netty-codec-redis` - atual 4.2 ` Cabeça de ramo ' 7 bae 566 a 93 e 69409697 fe 57 Fa 807910 ba 5 c 9720 e` - ` 4.2.15. Final` em ` a 41 f 7 b 289 ce 1 ` - ` 4.1.135. Final` no ` f 05 f 765 d 8146 ` Isto difere dos avisos públicos do Redis codec porque ele se reproduz nas suas etiquetas patcheadas:.

- ` GHSA- 5 w 86 - c 3 rq-vjj 7 ` - ` GHSA- 3244 - j 874 - rhc 2 ` / ` CVE- 2026 - 44250 ` - ` GHSA- 6 jv 9 - x 5 w 9 - 2 ccm` / ` CVE- 2026 - 48006 ` - ` GHSA- 6 ghj-frrj-jjj 3 ` / ` CVE- 2026 - 44890 ` ## Por que isso não é um comportamento pretendido. O documento de documentos da API pública `RedisArrayAgregator` como agregando partes do `RedisMessage' em `ArrayRedisMessage' e documentar um `CodecException` quando um cabeçalho de array excede `maxElements'. Eles não documentam o estado agregado parcial pré- exceção após esse limite de incêndios. O ramo adjacente de profundidade ninhada já chama `releaseAndClearDepths()` antes de jogar. O ramo de elementos máximos é o ramo de agregação- limite de irmãos, mas joga sem limpeza. O atual sistema de limpeza do ciclo de vida do Netty adicionou explicitamente o comportamento de lançamento para falhas de arranjo ninhado e remoção do manipulador, deixando o ramo de falhas de elementos máximos como um caminho de limpeza perdido.

Registro de aconselhamento: GHSA- p 9 jm-q 85 p-. 7 Mcp. Identificadores relacionados: CVE- 2026 - 56818. Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 07 T 17: 16: 13.000 Z e lista a sua última modificação como 2026 - 08 - 07 T 17: 16: 13.000 Z. Gravidade: MODERAR. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L.

Software afetado e informações de versão: Pacote Maven io.netty:netty-codec-redis — ECOSISTEM: introduzido 0, corrigido 4.1.136.Final. Pacote Maven io.netty:netty-codec-redis — ECOSISTEM: introduzido 4.2.0 - Final, consertado 4.2.16.Final. Classificação e evidência: identificadores de fraqueza CWE- 401, CWE- 703. O registro contém 5 suporte de referências nestes tipos: WEB, PACKAGE.