FreeBSD 13 casi termina con una implementación hacky de WireGuard con violaciones de licencia y vulnerabilidades

De la base del código sobre la que se formó la versión FreeBSD 13, el código que implementa el protocolo VPN WireGuard, desarrollado por orden de Netgate sin consultar a los desarrolladores del WireGuard original, y ya incluido en las versiones estables de la distribución pfSense, fue escandalosamente remoto. Después de la revisión del código por parte de Jason A. Donenfeld, el autor del WireGuard original, resultó que la implementación de WireGuard propuesta por FreeBSD era un código de mala calidad, plagado de desbordamientos de búfer y que violaba la GPL.

La implementación contenía fallas catastróficas en el código criptográfico, se omitió parte del protocolo WireGuard, hubo errores que provocaron el bloqueo del kernel y eludiendo los métodos de seguridad, y se utilizaron buffers de tamaño fijo para los datos de entrada. La presencia de códigos auxiliares en lugar de comprobaciones que siempre devuelven "verdadero", así como printfs de depuración olvidados con la salida de los parámetros utilizados para el cifrado y el uso de la función de suspensión para evitar condiciones de carrera dicen mucho sobre la calidad del código.

Algunas partes del código, como la función crypto_xor, fueron trasladadas desde la implementación WireGuard desarrollada para Linux, en violación de la licencia GPL. Como resultado, Jason Donenfield, junto con Kyle Evans y Matt Dunwoodie (autor del port WireGuard para OpenBSD), se dieron a la tarea de reelaborar la implementación problemática y, en una semana, reemplazó por completo todo el código del desarrollador contratado por Netgate. . La versión modificada se lanzó como un conjunto separado de parches, se colocó en el repositorio del proyecto WireGuard y aún no se ha incluido en FreeBSD.

Curiosamente, inicialmente no había señales de problemas; Netgate, que quería poder usar WireGuard en la distribución pfSense, contrató a Matthew Macy, quien conoce bien el kernel de FreeBSD y la pila de red, está involucrado en la corrección de errores y tiene experiencia en desarrollo. controladores de red para este sistema operativo. A Macy se le dio un horario flexible sin plazos ni controles de mitad de período. Los desarrolladores que conocieron a Macy mientras trabajaban en FreeBSD lo describieron como un programador talentoso y profesional que no cometía más errores que los demás y respondía adecuadamente a las críticas. La mala calidad del código de implementación WireGuard para FreeBSD les sorprendió.

Después de 9 meses de trabajo, Macy agregó su implementación a la rama HEAD, que se utilizó para formular la versión FreeBSD 13, en diciembre pasado sin completar la revisión por pares y las pruebas. El desarrollo se realizó sin comunicación con los desarrolladores del WireGuard original y el Puertos OpenBSD y NetBSD. En febrero, Netgate integró WireGuard en la versión estable de pfSense 2.5.0 y comenzó a distribuir firewalls basados ​​en él. Después de que se identificaron los problemas, el código WireGuard se eliminó de pfSense.

El código agregado reveló vulnerabilidades críticas que se utilizaron en exploits de día 0, pero al principio Netgate no reconoció la existencia de vulnerabilidades y trató de acusar al desarrollador del WireGuard original de ataques y sesgos, lo que afectó negativamente a su reputación. El desarrollador del port inicialmente rechazó las afirmaciones sobre la calidad del código y las consideró exageradas, pero después de demostrar errores, llamó la atención sobre el hecho de que el problema realmente importante es la falta de una revisión adecuada de la calidad del código en FreeBSD, porque los problemas no fueron detectados durante muchos meses. (Los representantes de Netgate indicaron que la revisión se lanzó públicamente en agosto de 2020, pero los desarrolladores individuales de FreeBSD notaron que en Phabricator Macy cerró la revisión sin completarla y con los comentarios ignorados). El equipo central de FreeBSD respondió al incidente prometiendo modernizar sus procesos de revisión de código.

Matthew Macy, el desarrollador del problemático port de FreeBSD, comentó la situación diciendo que cometió un gran error al aceptar el trabajo sin estar preparado para implementar el proyecto. Macy explica el resultado resultante por el agotamiento emocional y el resultado de los problemas que surgieron debido al síndrome post-Covid. Al mismo tiempo, Macy no encontró la determinación de abandonar las obligaciones que ya había asumido y trató de completar el proyecto.

La condición de Macy también puede haber sido afectada por una reciente sentencia de prisión que recibió por intentar desalojar ilegalmente de una casa que compró a inquilinos que no estaban dispuestos a mudarse voluntariamente. En lugar de ello, él y su esposa cortaron las vigas del suelo y abrieron agujeros en el suelo para hacer la casa inhabitable, y también intentaron intimidar a los residentes, irrumpieron en los apartamentos ocupados y se llevaron sus pertenencias (el acto fue clasificado como robo). Para evitar la responsabilidad por sus acciones, Macy y su esposa huyeron a Italia, pero fueron extraditados a los Estados Unidos y cumplieron más de cuatro años de prisión.

Fuente: opennet.ru

Añadir un comentario