ASA-2019-00463 – libssh2: Out-of-bounds read levando à divulgação de informações


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: 25 julho 2019

Não somos responsáveis por qualquer perda de dados, corrupção de dispositivos ou qualquer outro tipo de problema devido ao uso de qualquer informação mencionada em nossos alertas de segurança.