`io.netty.incubator:netty-incubator-codec-ohttp- hpke- classes- boringssl` expõe bytes de chave privada HPKE em bruto em representações de string e mensagens de erro. ` BoringSSLAsymetricCipherKeyPair.toString()` inclui o objeto de parâmetro de chave privada, e ` BoringSSLAsymetricKeyParameter.toString()` renderiza o array de bytes completo com ` Arrays.toString(bytes)`. Separadamente, a inicialização da chave nativa falhada inclui `Arrays.toString(privateKeyBytes)` na mensagem lançada `IllegalArgumentException`. Os aplicativos que registram objetos de par de chaves ou exceções podem persistir em material de chave privada nos registros. `codec- ohttp- hpke- classes-boringssl/src/main/java/io/netty/ incubator/codec/ hpke/boringssl/ BoringSSLAsymetricCipherKeyPair.java` renderiza material de chave privada através de ` toString()`: - `BoringSSLAsymetricCipherKeyPair.toString()` em linhas 72 - 78 concatena `"privateKey=" + privateKey`. - `privateKey` é um `BoringSSLAsymetricKeyParameter` criado com ` isPrivate=true` nas linhas 26 - 36.

`codec-ohttp-hpke-classes-boringssl/src/main/java/io/netty/incubator/codec/hpke/boringssl/BoringSSLAsymetricKeyParameter.java`, em seguida, renderiza todos os bytes. - `BoringSSLAsymetricKeyParameter.toString()` nas linhas 70 - 76 retorna `"bytes=" + Arrays.toString(bytes)` independentemente de ` isPrivate` ser verdade. Um caminho de erro separado no `codec-ohttp-hpke-classes-boringssl/src/main/java/io/netty/incubator/codec/hpke/boringssl/BoringSSL.java` também expõe bytes de chave privada fornecidos pelo chamador: - `EVP_HPKE_KEY_init_ or_throw(...)` nas linhas 228 - 232 lança `IllegalArgumentException("privateKeyBytes não contém uma chave privada válida: " + Arrays.toString(privateKeyBytes))` quando BoringSSL rejeita a chave.

Como os quadros de registro Java chamam geralmente `toString()` para objetos estruturados e persistem comumente mensagens de exceção, estes caminhos podem colocar material de chave privada completa da HPKE em registros ou telemetria. A verificação local segura foi realizada sem BoringSSL nativo compilando as classes Java relevantes e um tom nativo sem operação para a referência finalizadora não utilizada. A saída observada inclui o array de bytes de chave privada completo: ``` Texto BoringSSLAsymetricCipherKeyPair{privateKey=BoringSSLAsymetricKeyParameter{bytes=[ 1, 2, 3, 4 ], isPrivate=true}, publicKey=BoringSSLAsymetricKeyParameter{bytes=[ 5, 6, 7, 8 ], é Private=false}} ```.

Conceito de reprodutor mínimo no mesmo pacote. ``` pacote java io.netty.incubator.codec.hpke.boringssl; classe final pública VerifyPrivateKeyToString { público vazio estático principal(String[] args) { byte[] privateKey = novo byte[] { 1, 2, 3, 4 }; byte[] publicKey = novo byte[] { 5, 6, 7, 8 }; BoringSSLAsymetricCipherKeyPair par = novo BoringSSLAsymetricCipherKeyPair(privateKey, publicKey); System.out.println( pair.toString()); } } ``` O caminho do código é determinístico: os métodos de produção `toString()` concatenam o array de bytes de chave privada cru.

Se um par de chaves afetado ou exceção de inicialização for registrado, os registros de aplicativos contêm material de chave privada completo do HPKE. Qualquer pessoa com acesso a esses registros pode recuperar a chave. Dependendo da reutilização da chave e da retenção do log, isso pode comprometer: - confidencialidade das mensagens OHTTP criptografadas para a chave exposta; - expectativas de integridade/autenticação para mensagens futuras se a chave permanecer ativa; - resposta ao incidente e pressupostos de rotação da chave, porque os registros podem reter material chave muito tempo após a tecla in- memory ser rotada. ## Remediação sugerida. - Redact private key material in `BoringSSLAsymetric KeyParameter.toString()` quando `isPrivate` é verdadeiro, por exemplo `bytes= ` ou apenas tipo/longitude de tecla. - Redact `private Key` in `BoringSSLAsymetricCipherKeyPair.toString()`. - Remover `Arrays.toString(privateKeyBytes)` de `BoringSSL.EVP_HPKE_KEY_init_ or_throw()`; reporte apenas comprimento e metadados KEM. - Adicionar testes de regressão afirmando que `toString()' e mensagens de exceção não contêm valores de byte de tecla privada. - Considere a possibilidade de fazer classes de pares de chave evitar a implementação detalhada `toString()' para o material sensível inteiramente.

- `codec-ohttp-hpke-classes-boringssl/src/main/java/io/netty/incubator/codec/hpke/boringssl/BoringSSLAsymetricCipherKeyPair.java: 72 - 78 ` - `codec-ohttp-hpke-classes-boringssl/src/main/java/io/netty/incubator/codec/hpke/boringssl/BoringSSLAsymetricKeyParameter.java: 70 - 76 ` - `codec-ohttp-hpke-classes-boringssl/ src/main/java/io/netty/incubator/codec/hpke/boringssl/BoringSSL.java: 228 - 232 ` Registro de aconselhamento: GHSA- 2 mc 4 - j 865 - 9 q 4 r. Identificadores relacionados: CVE- 2026 - 61798. Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 20 T 18: 43: 17.000 Z e lista a sua última modificação como 2026 - 08 - 20 T 18: 43: 18.000 Z.

Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N. Informações sobre software e versão afetadas: Pacote Maven io.netty.incubator:netty-incubator-codec-ohttp-hpke-classes-boringssl — ECOSYSTEM: introduzido 0, corrigido 0.0.23.Final. Classificação e evidência: identificadores de fraqueza CWE- 200, CWE- 312, CWE- 532. O registro contém 3 suporte de referências nestes tipos: WEB, PACKAGE.