ASA-2018-00062 – FreeBSD: Validação ausente em nfsrvd_readdirplus()


For the English version of this alert, click here.

Allele Security Alert

ASA-2018-00062

Identificador(es)

ASA-2018-00062, FreeBSD-SA-18:13.nfs

Título

Validação ausente em nfsrvd_readdirplus()

Fabricante(s)

FreeBSD

Produto(s)

FreeBSD

Versão(ões) afetada(s)

Todas as versões suportadas do FreeBSD

Versão(ões) corrigida(s)

stable/11, 11.2-STABLE

releng/11.2, 11.2-RELEASE-p5

Prova de conceito

Desconhecido

Descrição

A verificação insuficiente e incorreta no código do servidor NFS pode causar uma negação de serviço ou, possivelmente, a execução remota de código por meio de um pacote de rede especialmente criado.

Detalhes técnicos

Validação ausente para o argumento hint do dircount para as operações ReaddirPlus do NFSv3 e Readdir do NFSv4. O código verificou um argumento zero, mas não verificou um valor muito grande. Esse patch coincide com o tamanho máximo de dados do servidor.

File: sys/fs/nfsserver/nfs_nfsdport.c
---
2059 int
2060 nfsrvd_readdirplus(struct nfsrv_descript *nd, int isdgram,
2061 struct vnode *vp, struct thread *p, struct nfsexstuff *exp)
2062 {
...
2110 + * Since the size of a Readdirplus directory entry reply will always
2111 + * be greater than a directory entry returned by VOP_READDIR(), it
2112 + * does not make sense to read more than NFS_SRVMAXDATA() via
2113 + * VOP_READDIR().
2114 */
2115 if (siz <= 0)
2116 siz = cnt;
+ else if (siz > NFS_SRVMAXDATA(nd))
+ siz = NFS_SRVMAXDATA(nd);
...
---

Créditos

Jakub Jirasek, Secunia Research at Flexera

Referência(s)

Multiple vulnerabilities in NFS server code
https://www.freebsd.org/security/advisories/FreeBSD-SA-18:13.nfs.asc

FreeBSD Security Advisory FreeBSD-SA-18:13.nfs
https://seclists.org/bugtraq/2018/Nov/48

Log of /stable/11
https://svnweb.freebsd.org/base/stable/11/?view=log&pathrev=340854


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

Última modificação: 7 de dezembro de 2018