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