ASA-2019-00114 – OpenSSL: Padding oracle em registro de 0-byte

Se um aplicativo encontrar um erro de protocolo fatal e chamar SSL_shutdown() duas vezes (uma vez para enviar um close_notify e uma vez para receber uma), o OpenSSL poderá responder diferentemente ao aplicativo de chamada se um registro de 0 byte for recebido com padding inválido comparado a se um registro de 0 byte é recebido com um MAC inválido. Se o aplicativo se comportar de maneira diferente com base nisso de uma maneira que seja detectável para o peer remoto, isso equivale a um padding oracle que pode ser usado para descriptografar dados. Para que isso possa ser explorável, os ciphersuites "non-stitched" devem estar em uso. As ciphersuites non-stitched são implementações otimizadas de certos ciphersuites comumente usados. Além disso, o aplicativo deve chamar SSL_shutdown() duas vezes, mesmo que um erro de protocolo tenha ocorrido (os aplicativos não devem fazer isso, mas alguns o fazem de qualquer maneira). Ciphersuites AEAD não são afetados.