ASA-2018-00063 – FreeBSD: Validação ausente em nfsrvd_compound()


For the English version of this alert, click here.

Allele Security Alert

ASA-2018-00063

Identificador(es)

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

Título

Validação ausente em nfsrvd_compound()

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

A função nfsrvd_compound () iniciou a coleta de estatísticas para uma operação antes que o número da operação (a variável chamada “op”) fosse verificada.

File: sys/fs/nfsserver/nfs_nfsdsocket.c
---
621 static void
622 nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, u_char *tag,
623 int taglen, u_int32_t minorvers, NFSPROC_T *p)
624 {
...
766 *repp = *tl; *repp = *tl;
767 op = fxdr_unsigned(int, *tl);
768 NFSD_DEBUG(4, "op=%d\n", op);

- binuptime(&start_time);
- nfsrvd_statstart(op, &start_time);
- statsinprog = 1;

769 if (op < NFSV4OP_ACCESS ||
770 (op >= NFSV4OP_NOPS && (nd->nd_flag & ND_NFSV41) == 0) ||
771 (op >= NFSV41_NOPS && (nd->nd_flag & ND_NFSV41) != 0)) {
...
777 } else {
778 repp++;
779 }
780
781 + binuptime(&start_time);
782 + nfsrvd_statstart(op, &start_time);
783 + statsinprog = 1;
784
785 if (i == 0)
786 op0 = op;
787 if (i == numops - 1)
...
---

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