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