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)
GNU Project
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. O 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: 1 fevereiro 2019