ASA-2018-00022 – U-Boot: Verificações de limite insuficientes na inicialização da imagem via rede


For the English version of this alert, click here.

Allele Security Alert

ASA-2018-00022

Identificador(es)

ASA-2018-00022, CVE-2018-18439

Título

Verificações de limite insuficientes na inicialização da imagem via rede

Fabricante(s)

DENX

Produto(s)

U-Boot

Versão(ões) afetada(s)

Todas as versões lançadas do U-Boot

Versão(ões) corrigida(s)

Desconhecido

Prova de conceito

Desconhecido

Descrição

O bootloader U-Boot suporta o carregamento do kernel a partir de uma variedade de fontes de rede, como o TFTP através do comando `tftpboot`.

Este comando não protege a memória do sistema de ser sobrescrita durante o carregamento de arquivos de um tamanho que excede os limites da região de memória U-Boot relocada, preenchida com o arquivo carregado a partir da variável passada `loadAddr`.

Portanto, uma imagem de inicialização excessivamente grande, servida por TFTP, pode ser criada para sobrescrever todos os segmentos de memória de tempo de execução e estáticos do U-Boot e, em geral, toda a memória endereçável do dispositivo a partir do argumento de endereço de carregamento `loadAddr`.

A sobrescrita de memória pode levar diretamente à execução de código arbitrário, totalmente controlada pelo conteúdo da imagem carregada.

Quando a inicialização verificada é implementada, o problema permite ignorar sua validação pretendida, pois a substituição da memória acontece antes que qualquer validação possa ocorrer.

O problema pode ser explorado por vários meios:

– Um arquivo de imagem de inicialização criado excessivamente grande é analisado pela função `tftp_handler` que não possui verificações de tamanho, permitindo a sobrescrita de memória.

– Um servidor malicioso pode manipular números de seqüência de pacotes TFTP para armazenar partes de arquivos baixados em locais de memória arbitrária, dado que o número de sequência é usado diretamente pela função `tftp_handler` para calcular o endereço de destino para pedaços de arquivos baixados.

Além disso, a função `store_block`, usada para armazenar pedaços de arquivos baixados na memória, quando invocada por` tftp_handler` com um valor de `tftp_cur_block` de 0, aciona um integer underflow sem checagem.

Isso permite potencialmente apagar a memória localizada antes do `loadAddr` quando um pacote é enviado com um nulo, seguindo pelo menos de um pacote válido.

Referência(s)

Security advisory: U-Boot verified boot bypass
https://github.com/inversepath/usbarmory/blob/master/software/secure_boot/Security_Advisory-Ref_IPVR2018-0001.txt

CVE-2018-18439, CVE-2018-18440 – U-Boot verified boot bypass vulnerabilities
https://seclists.org/oss-sec/2018/q4/125

CVE-2018-18440
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18440

CVE-2018-18440
https://nvd.nist.gov/vuln/detail/CVE-2018-18440

Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.

Última modificação: 1 fevereiro 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.