ASA-2019-00482 – Das U-Boot: memcpy sem definição de limite e tamanho não validado na função nfs_readlink_reply()


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00482

Identificador(es)

ASA-2019-00482, CVE-2019-14195

Título

memcpy sem definição de limite e tamanho não validado na função nfs_readlink_reply()

Fabricante(s)

DENX Software Engineering

Produto(s)

Das U-Boot

Versão(ões) afetada(s)

Desconhecido

Versão(ões) corrigida(s)

Desconhecido

Prova de conceito

Desconhecido

Descrição

Existe uma chamada memcpy sem definição de limite e tamanho não validado em nfs_readlink_reply(), no bloco else após calcular o novo path length.

Detalhes técnicos

O problema existe na função nfs_readlink_reply() que analisa uma resposta nfs vinda da rede. Ela analisa 4 bytes e, sem qualquer validação adicional, usa-os como parâmetro para um memcpy em dois locais diferentes.

static int nfs_readlink_reply(uchar *pkt, unsigned len)
{
           [...]

           /* new path length */
           rlen = ntohl(rpc_pkt.u.reply.data[1 + nfsv3_data_offset]);

           if (*((char *)&(rpc_pkt.u.reply.data[2 + nfsv3_data_offset])) != '/') {
                      int pathlen;

                      strcat(nfs_path, "/");
                      pathlen = strlen(nfs_path);
                      memcpy(nfs_path + pathlen,
                                       (uchar *)&(rpc_pkt.u.reply.data[2 + nfsv3_data_offset]),
                                               rlen);
                      nfs_path[pathlen + rlen] = 0;
           } else {
                      memcpy(nfs_path,
                                               (uchar *)&(rpc_pkt.u.reply.data[2 + nfsv3_data_offset]),
                                               rlen);
                      nfs_path[rlen] = 0;
           }
           return 0;
}

O buffer de destino nfs_path é uma variável global capaz de conter até 2048 bytes.

Créditos

Fermín Serna, Pavel Avgustinov e Kevin Backhouse

Referência(s)

U-Boot RCE Vulnerabilities Affecting IoT Devices
https://blog.semmle.com/uboot-remote-code-execution-vulnerability/

U-Boot NFS RCE Vulnerabilities (CVE-2019-14192)
https://blog.semmle.com/uboot-rce-nfs-vulnerability/

[U-Boot] Remote code execution vulnerabilities in U-Boot’s NFS and other IP parsing code
https://lists.denx.de/pipermail/u-boot/2019-July/378001.html

CVE-2019-14195
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14195

CVE-2019-14195
https://nvd.nist.gov/vuln/detail/CVE-2019-14195

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

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