Allele Security Intelligence - ASA-2019-00118 – OpenSSL: ChaCha20-Poly1305 com nonces longo
ASA-2019-00118 – OpenSSL: ChaCha20-Poly1305 com nonces longo
Publicado em 6 março 2019 6 março 2019 por Allele Security Intelligence em Alertas
ChaCha20-Poly1305 com nonces longo
OpenSSL versões 1.1.1 e 1.1.0
Versões do OpenSSL com o seguinte commit aplicado:
O ChaCha20-Poly1305 é uma cifra AEAD e requer uma entrada nonce única para cada operação de criptografia. A RFC 7539 especifica que o valor do nonce (IV) deve ser 96 bits (12 bytes). O OpenSSL permite um comprimento nonce variável e preenche o nonce com 0 bytes se for menor que 12 bytes. No entanto, também permite incorretamente que um nonce seja configurado em até 16 bytes. Neste caso, apenas os últimos 12 bytes são significativos e quaisquer bytes iniciais adicionais são ignorados.
É um requisito de usar essa cifra que valores nonce são únicos. As mensagens criptografadas usando um valor nonce reutilizado são suscetíveis a sérios ataques de confidencialidade e integridade. Se um aplicativo alterar o comprimento de nonce padrão para maior que 12 bytes e, em seguida, fizer uma alteração nos bytes iniciais do nonce esperando que o novo valor seja um novo nonce exclusivo, esse aplicativo poderá criptografar mensagens inadvertidamente com um nonce reutilizado.
Além disso, os bytes ignorados em um longo nonce não são cobertos pela garantia de integridade dessa codificação. Qualquer aplicativo que dependa da integridade desses bytes principais ignorados de um longo nonce pode ser afetado ainda mais.
Qualquer uso interno do OpenSSL dessa codificação, inclusive em SSL/TLS, é seguro, pois nenhum uso desse tipo estabelece um valor nonce muito longo. No entanto, os aplicativos de usuário que usam essa codificação diretamente e definem um comprimento de nonce não padrão para ter mais de 12 bytes podem estar vulneráveis.