En FreeBSD 13 casi hubo una implementación defectuosa de WireGuard con violaciones de licencia y vulnerabilidades

Desde la base de código, a partir de la cual se formó el lanzamiento de FreeBSD 13, se eliminó con escándalo el código de la implementación del protocolo VPN WireGuard, desarrollado por encargo de la empresa Netgate sin consultar a los desarrolladores originales de WireGuard, ya incluido en las versiones estables de la distribución pfSense. Tras la revisión del código por Jason Donenfeld, el autor del WireGuard original, se descubrió que la implementación propuesta para FreeBSD era un ejemplo de código de baja calidad, lleno de desbordamientos de búfer y que violaba la licencia GPL.

En la implementación se encontraron fallos catastróficos en el código de criptografía, se omitió una parte del protocolo WireGuard, hubo errores que provocaban caídas del núcleo y el eludir métodos de protección, y para los datos de entrada se utilizaron búferes de tamaño fijo. La calidad del código se destaca por la presencia de stubs en lugar de comprobaciones, que siempre devuelven el valor 'true', así como printf de depuración olvidados que imprimen parámetros utilizados para el cifrado, y el uso de la función sleep para evitar condiciones de carrera.

Algunas partes del código, como la función crypto_xor, fueron trasladadas de la implementación de WireGuard desarrollada para Linux, en violación de la licencia GPL. Como resultado, Jason Donenfeld junto con Kyle Evans y Matt Dunwoodie, autor del puerto de WireGuard para OpenBSD, se ocuparon de rehacer la problemática implementación y en una semana reemplazaron completamente el código del desarrollador contratado por Netgate. La versión reescrita fue lanzada como un conjunto de parches separados, colocada en el repositorio del proyecto WireGuard y aún no ha sido incorporada en FreeBSD.

Es interesante que, en un principio, nada presagiaba problemas. La empresa Netgate, que deseaba implementar WireGuard en la distribución pfSense, contrató a Matthew Macy, quien tiene un profundo conocimiento del núcleo y la pila de redes de FreeBSD, ha participado en la corrección de errores y tiene experiencia en el desarrollo de controladores de red para este sistema operativo. A Macy se le proporcionó un horario flexible sin fechas límite ni revisiones intermedias. Los desarrolladores que colaboraron con Macy en FreeBSD lo describieron como un programador talentoso y profesional, cometiendo no más errores que otros y respondiendo adecuadamente a las críticas. La deficiente calidad del código de implementación de WireGuard para FreeBSD fue una sorpresa para ellos.

Después de 9 meses de trabajo, en diciembre del año pasado, Macy añadió su implementación a la rama HEAD sin que se completara la revisión y prueba por parte de terceros, la cual fue utilizada para la versión de FreeBSD 13. El desarrollo se realizó sin coordinación con los desarrolladores originales de WireGuard y los puertos para OpenBSD y NetBSD. En febrero, Netgate integró WireGuard en el lanzamiento estable de pfSense 2.5.0 y comenzó a enviar las firewalls basadas en esta versión. Tras la detección de problemas, el código de WireGuard fue eliminado de pfSense.

En el código agregado se encontraron vulnerabilidades críticas que fueron utilizadas en exploits 0-day, pero Netgate, en un principio, no reconoció la existencia de tales vulnerabilidades y trató de culpar al desarrollador original de WireGuard de ataques y sesgo, lo que afectó negativamente su reputación. El desarrollador del puerto inicialmente rechazó las acusaciones sobre la calidad del código y las consideró exageradas, pero tras la demostración de errores, notó que realmente era un problema importante la falta de una adecuada revisión de la calidad del código en FreeBSD, ya que los problemas permanecieron sin ser detectados durante muchos meses (los representantes de Netgate indicaron que la revisión pública se lanzó en agosto de 2020, pero algunos desarrolladores de FreeBSD señalaron que en Phabricator la revisión fue cerrada por Macy sin completarla y con comentarios ignorados). El equipo de FreeBSD Core Team reaccionó ante el incidente prometiendo modernizar los procesos de revisión de código.

Matthew Maisey, el desarrollador del puerto problemático para FreeBSD, comentó sobre la situación diciendo que cometió un gran error al asumir el trabajo sin estar preparado para llevar a cabo este proyecto. El resultado obtenido, según Maisey, se explica por el agotamiento emocional y los problemas surgidos a raíz del síndrome poscovid. A pesar de esto, no encontró el valor para renunciar a las obligaciones ya contraídas y trató de llevar el proyecto hasta el final.

El estado de Maisey también podría haberse visto afectado por la reciente condena de prisión que recibió por actos ilegales en un intento de desalojar a inquilinos de su casa comprada, que no querían abandonar voluntariamente. Junto a su esposa, cortaron las vigas del techo y rompieron agujeros en los pisos para hacer la casa inhabitable, además de intentar intimidar a los inquilinos, forzando la entrada a los apartamentos ocupados y sacando las pertenencias existentes (la acción fue calificada como robo con allanamiento). Para evitar responsabilidades por sus acciones, Maisey y su esposa huyeron a Italia, pero fue extraditado a EE. UU. y cumplió más de cuatro años en prisión.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster