
Implementación educativa de parche para el desbordamiento de búfer de telnetd en FreeBSD (CVE-2011-4862) con explicación paso a paso de la solución e instrucciones de parcheo manual.
Originalmente intenté usar diff para hacer un parche. Lo parcheé de la forma en que pensé que sería, antes de mirar el parche real. encrypt.patch es el parche original que hice con el diff. Sin embargo, cuando intentamos aplicar este parche a FreeBSD, no lo aceptó.
En lugar de eso, tuvimos que obtener el parche real. Luego cambié el parche para implementar la corrección de la forma que originalmente pensé que debía ser. Esto funciona porque coloca toda la ruta en el parche.
En el parche, simplemente verificamos la longitud comparándola con MAXLENGTH. Si es mayor que eso, la establecemos a 0. De esta manera, cae en el caso de len = 0, lo cual genera un error. Esto lo corrige :-)
Aquí hay una explicación de cómo aplicar un parche en FreeBSD. https://www.freebsd.org/security/advisories/FreeBSD-SA-11:08.telnetd.asc Simplemente use este parche en lugar de obtener el real. Funcionará, y ya no podrá explotar el desbordamiento de búfer.