ASA-2018-00055 – Glibc: A função __if_nametoindex() pode não fechar descriptor


For the English version of this alert, click here.

Allele Security Alert

ASA-2018-00055

Identificador(es)

ASA-2018-00055, CVE-2018-19591

Título

A função __if_nametoindex() pode não fechar descriptor

Fabricante(s)

glibc

Produto(s)

glibc

Versão(ões) afetada(s)

glibc 2.26, 2.27, 2.28

Versão(ões) corrigida(s)

glibc 2.29

Prova de conceito

Sim

Descrição

Um vazamento de file descriptor na função __if_nametoindex() pode conduzir a negação de serviço devido a exaustão de recursos ao processar chamadas getaddrinfo() com hostnames especialmente criados.

Detalhes técnicos

Em sysdeps/unix/sysv/linux/if_index.c, __if_nametoindex() cria um socket descriptor mas não o fecha se o parâmetro ifname é muito longo.

Além disso, é possível chamar getaddrinfo() com um parâmetro ‘node’ especialmente criado que conduzirá para o código vulnerável em __if_nametoindex().

Em resumo, resoluções de hostnames não confiável (via getaddrinfo()) causará exaustão de descriptors. patch pode ser encontrado abaixo:

--- a/sysdeps/unix/sysv/linux/if_index.c
+++ b/sysdeps/unix/sysv/linux/if_index.c
@@ -45,6 +45,7 @@ __if_nametoindex (const char *ifname)

if (strlen (ifname) >= IFNAMSIZ)
{
+ __close_nocancel_nostatus (fd);
__set_errno (ENODEV);
return 0;
}

Créditos

Guido Vranken

Referência(s)

CVE-2018-19591: glibc if_nametoindex may not close descriptor
https://seclists.org/oss-sec/2018/q4/186

Bug 23927 (CVE-2018-19591) – Linux if_nametoindex() does not close descriptor (CVE-2018-19591)
https://sourceware.org/bugzilla/show_bug.cgi?id=23927

[PATCH] CVE-2018-19591: if_nametoindex: Fix descriptor for overlong name [BZ #23927]
https://sourceware.org/ml/libc-alpha/2018-11/msg00698.html

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

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

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

Última modificação: 28 de novembro de 2018