For the English version of this alert, click here.
Allele Security Alert
ASA-2019-00463
Identificador(es)
ASA-2019-00463, CVE-2019-13115
Título
Out-of-bounds read levando à divulgação de informações
Fabricante(s)
The libssh2 project
Produto(s)
libssh2
Versão(ões) afetada(s)
libssh2 versão 1.8.2 e anterior
Versão(ões) corrigida(s)
libssh2 versão 1.9.0
Prova de conceito
Sim
Descrição
No libssh2 anterior à 1.9.0, a função kex_method_diffie_hellman_group_exchange_sha256_key_exchange() no arquivo kex.c tem um integer overflow que pode levar a um out-of-bounds read na maneira como os pacotes são lidos no servidor. Um atacante remoto que comprometa um servidor SSH pode divulgar informações confidenciais ou causar uma condição de negação de serviço no sistema cliente quando um usuário se conecta ao servidor.
Detalhes técnicos
A função vulnerável é _libssh2_check_length() como encontrada em misc.c:
int _libssh2_check_length(struct string_buf *buf, size_t len) { return ((int)(buf->dataptr - buf->data) <= (int)(buf->len - len)) ? 1 : 0; }
O problema com essa função é que os casts para int podem causar overflow. O cast à esquerda é seguro porque os campos de buf são valores confiáveis, mas o cast à direita não é seguro porque o valor de len não é confiável. Fazendo len maior que buf->len + 0x80000000 para que o cálculo de (int)(buf->len – len) cause overflow e se torne um número positivo muito grande, ignorando assim os limites e fazendo com que libssh2 falhe com um segmentation fault.
Créditos
Kevin Backhouse (Semmle Security Research Team)
Referência(s)
libssh2 integer overflows and an out-of-bounds read (CVE-2019-13115)
https://blog.semmle.com/libssh2-integer-overflow/
Out-of-bounds read in libssh2 (CVE-2019-13115)
https://github.com/Semmle/SecurityExploits/tree/446048470633bf0f8da9570d008d056dbaa28ea9/libssh2/out_of_bounds_read_kex_CVE-2019-13115
_libssh2_check_length() : additional bounds check #348
https://github.com/libssh2/libssh2/pull/348/commits/08ef9b76dbeb3b71cc5739d5518159651d180520
Simplified _libssh2_check_length #350
https://github.com/libssh2/libssh2/pull/350/commits/5929e269990fcf923fc5371b78a63b39c9fa7048
Simplified _libssh2_check_length #350
https://github.com/libssh2/libssh2/pull/350/commits/b4289eeb84057d3d5e041af72af000a80b4f40d6
CVE-2019-13115
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13115
CVE-2019-13115
https://nvd.nist.gov/vuln/detail/CVE-2019-13115
Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.
Última modificação: 8 dezembro 2019