ASA-2019-00539 – curl: Heap buffer overflow no protocolo TFTP com tamanho de bloco pequeno

libcurl contém um heap buffer overflow na função (tftp_receive_packet()) que recebe dados de um servidor TFTP. Ele pode chamar recvfrom() com o tamanho padrão para o buffer, e não com o tamanho usado para alocá-lo. Portanto, o conteúdo que pode substituir a memória heap é controlado pelo servidor. Essa falha é acionada apenas se o servidor TFTP enviar um OACK sem a opção BLKSIZE, quando um BLKSIZE menor que 512 bytes foi solicitado pelo cliente TFTP. OACK é uma extensão TFTP e não é usada por todos os servidores TFTP.

ASA-2019-00538 – curl: FTP-KRB double-free

Pode-se dizer à libcurl para usar o kerberos via FTP em um servidor, conforme definido com a opção CURLOPT_KRBLEVEL. Durante essa transferência de dados FTP do kerberos, o servidor envia dados para agrupar os blocos com o tamanho de 32 bits de cada bloco primeiro e depois com a quantidade de dados imediatamente a seguir. Um servidor mal-intencionado ou quebrado pode reivindicar o envio de um bloco muito grande e, ao fazer isso, faz com que a chamada subsequente de curl para realloc() falhe, o curl se comportará mal no caminho de saída e liberará duas vezes a memória. Em termos práticos, uma área de memória de até 4 GB pode muito bem ser alocada em um sistema moderno de 64 bits, mas em sistemas de 32 bits ela falhará.

ASA-2019-00390 – curl: Injeção de código no mecanismo do Windows OpenSSL

Um usuário ou programa não privilegiado pode colocar código e um arquivo de configuração em um caminho não privilegiado conhecido (em c:/usr/local/) que fará com que o curl execute automaticamente o código (como um “mecanismo” openssl) na chamada. Se essa onda for invocada por um usuário privilegiado, ela poderá fazer o que quiser. Essa falha existe nos binários oficiais curl-windows construídos e hospedados pelo projeto curl (todas as versões até e incluindo 7.65.1_1). Ele não existe no executável de curl fornecido pela Microsoft, empacotado com o Windows 10. Ele também existe em outras compilações de curl para Windows que usam o OpenSSL.

ASA-2019-00306 – curl: Buffer overflow em recebimento TFTP

O libcurl contém um heap buffer overflow na função ('tftp_receive_packet()') que recupera dados de um servidor TFTP. Ele chama 'recvfrom()' com o tamanho padrão para o buffer e não com o tamanho que foi usado para alocá-lo. Portanto, o conteúdo que pode sobrescrever a memória heap é inteiramente controlado pelo servidor. A falha existe se o usuário selecionar usar um "blksize" de 504 ou menor (o padrão é 512). Quanto menor o tamanho usado, maior será o possível overflow. Os usuários que escolhem um tamanho menor que o padrão devem ser raros, já que o caso de uso principal para alterar o tamanho é torná-lo maior.

ASA-2019-00305 – curl: Integer overflows em curl_url_set()

O libcurl contém dois integer overflows na função curl_url_set() que, se acionados, podem levar a uma alocação de buffer muito pequena e a um heap buffer overflow subsequente. As falhas existem apenas em arquiteturas de 32 bits e exigem comprimentos excessivos de entrada de strings.