
Projeto Final para Segurança e Privacidade CS 600.443
Projeto Final de Segurança e Privacidade CS 600.443 | Outono de 2018
Originalmente tentei usar o diff para criar um patch. Criei o patch da maneira que pensei que seria, antes de olhar o patch real. encrypt.patch é este patch original que fiz com o diff. No entanto, quando tentamos aplicar este patch no freeBSD, ele não o aceitou.
Em vez disso, tive que buscar o patch real. Depois modifiquei o patch para implementar a correção da maneira que originalmente pensei que deveria ser. Isso funciona porque insere todo o caminho no patch.
No patch, simplesmente verifico o comprimento comparado com MAXLENGTH. Se for maior que isso, defino como 0. Dessa forma, cai no caso de len = 0, que gera um erro. Isso corrige!
Aqui está uma explicação de como aplicar um patch no freeBSD. https://www.freebsd.org/security/advisories/FreeBSD-SA-11:08.telnetd.asc Simplesmente use este patch em vez de buscar o real. Funcionará e você não conseguirá mais explorar o estouro de buffer.