Resumo da vulnerabilidade. `com.rabbitmq.client.Confiar emTudoTrustManager` aceita qualquer certificado TLS (incluindo cadeias nulas) e é usado como o gerenciador de confiança padrão ao chamar `ConnectionFactory.useSslProtocol()` sem argumentos. Combinado com a verificação do nome de máquina sendo desativada por padrão, isto permite ataques triviais do homem no meio. ## Componentes Afectados. - `com.rabbitmq.client.Confiar em TudoTrustManager` — aceita qualquer certificado - `com.rabbitmq.client.ConnectionFactory.useSslProtocol()` — usa Confiar em TudoTrustManager - Verificação do nome de hospedeiro desativada por padrão (` habilitarHostnameVerification()` deve ser chamada explicitamente) - `com.rabbitmq.client.ConnectionFactory.getPasssword()` — retorna texto simples sem redação - Porta padrão 5672 (texto em plano) com PLAIN SASL — credenciais enviadas sem encriptação ## POC (Verificado no Java 21, amqp-cliente 5.25.0 ). ```java // TrustEverythingTrustManager aceita qualquer certificado, incluindo null TrustEverythingTrustManager tm = novo TrustEverythingTrustManager(); tm. checkServerConfiance(null, "RSA"); // Nenhuma exceção — aceita null cert chain tm.getAcceptedEmissores(); // retorna array vazio — confia em todas as CAs.
// ConexãoFabrica de Fábrica de Fábrica de Fábrica = nova ConexãoFábrica(); fabric.useSslProtocol(); // Usa Confiança em TudoConfiançaGestão interna // habiliteHostnameVerification() NÃO chamado por padrão // Fábrica de exposição credencial.setPassword("secret_password_ 123 "); fabric.getPassword(); // retorna "secret_password_ 123 " — nenhuma redação // O padrão de fabric.getPort(); // 5672 (texto em plano, não 5671 /TLS).
// PLAIN SASL envia credenciais de texto claro PlainMechanism pm = novo PlainMechanism(); // handleChallenge() envia nome de usuário+password em texto claro ``` 1. **MITM**: O atacante apresenta um certificado auto-assinado → "Confiar em TudoConfiar emManager` aceita-o → todo o tráfego de RabbitMQ interceptado 2. ** Roubo de credenciais**: Porta de texto plano padrão ( 5672 ) + PLAIN SASL = credenciais legíveis na rede 3. ** Revinding DNS**: Nenhuma verificação do nome de máquina → registro do DNS do atacante → MITM sem Cert 4. ** Exposição de loging**: `getPassword()` retorna texto simples → credenciais em logs/pilhas de traços ## Sugerido Correção 1. Apagar o ` Confiar em TudoTrustManager` — nunca deve ser usado na produção 2. `useSslProtocol()` deve usar a loja de confiança padrão do JVM, não Confiar em Tudo 3. Habilitar a verificação do nome do host por padrão 4. Redigitar senha em `getPassword()` ou remover o getter público 5. Avisar quando usar PLAIN SASL sem TLS.
Registro de aconselhamento: GHSA- 5 m 9 f- rphj- c 435. Identificadores relacionados: CVE- 2026 - 63336. Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 18 T 16: 32: 59.000 Z e lista a sua última modificação como 2026 - 08 - 18 T 16: 32: 59.000 Z. Gravidade: MODERAR. Dados de pontuação publicados: CVSS_V 4: CVSS: 4.0 /AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:L/África do Sul:N.
Software afetado e informações de versão: Pacote Maven com.rabbitmq:amqp-client — ECOSYSTEM: introduzido 0, corrigido 5.33.0. Classificação e evidência: identificadores de fraqueza CWE- 295. O registro contém 7 suporte de referências nestes tipos: WEB, PACKAGE.