FreeBSD 13 a failli se retrouver avec une implémentation piratée de WireGuard avec des violations de licence et des vulnérabilités

A partir de la base de code sur laquelle a été constituée la version FreeBSD 13, le code implémentant le protocole VPN WireGuard, développé sur ordre de Netgate sans consultation des développeurs du WireGuard original, et déjà inclus dans les versions stables de la distribution pfSense, a été scandaleusement supprimé. Après révision du code par Jason A. Donenfeld, l'auteur du WireGuard original, il s'est avéré que l'implémentation de WireGuard proposée par FreeBSD était un morceau de code de mauvaise qualité, criblé de débordements de tampon et violant la GPL.

L'implémentation contenait des défauts catastrophiques dans le code de cryptographie, une partie du protocole WireGuard a été omise, des erreurs ont conduit au crash du noyau et au contournement des méthodes de sécurité, et des tampons de taille fixe ont été utilisés pour les données d'entrée. La présence de stubs au lieu de contrôles qui renvoient toujours « true », ainsi que les printfs de débogage oubliés avec la sortie des paramètres utilisés pour le cryptage et l'utilisation de la fonction sleep pour éviter les conditions de concurrence en disent long sur la qualité du code.

Certaines parties du code, comme la fonction crypto_xor, ont été portées de l'implémentation WireGuard développée pour Linux, en violation de la licence GPL. En conséquence, Jason Donenfield, avec Kyle Evans et Matt Dunwoodie (auteur du portage WireGuard pour OpenBSD), se sont chargés de retravailler l'implémentation problématique et, en une semaine, ont complètement remplacé tout le code du développeur embauché par Netgate. . La version modifiée a été publiée sous la forme d'un ensemble distinct de correctifs, placée dans le référentiel du projet WireGuard et n'a pas encore été incluse dans FreeBSD.

Il est intéressant de noter qu'au départ, il n'y avait aucun signe de problème ; Netgate, qui souhaitait pouvoir utiliser WireGuard dans la distribution pfSense, a embauché Matthew Macy, qui connaît bien le noyau FreeBSD et la pile réseau, est impliqué dans les corrections de bugs et a de l'expérience dans le développement. pilotes réseau pour ce système d'exploitation. Macy a bénéficié d'un horaire flexible, sans délais ni contrôles à mi-parcours. Les développeurs qui ont rencontré Macy alors qu'ils travaillaient sur FreeBSD l'ont décrit comme un programmeur talentueux et professionnel qui ne faisait pas plus d'erreurs que les autres et répondait de manière adéquate aux critiques. La mauvaise qualité du code d’implémentation de WireGuard pour FreeBSD les a surpris.

Après 9 mois de travail, Macy a ajouté son implémentation à la branche HEAD, qui a été utilisée pour formuler la version FreeBSD 13, en décembre dernier, sans examen par les pairs ni tests. Le développement a été effectué sans communication avec les développeurs de WireGuard original et du Portages OpenBSD et NetBSD. En février, Netgate a intégré WireGuard dans la version stable de pfSense 2.5.0 et a commencé à commercialiser des pare-feu basés sur celle-ci. Une fois les problèmes identifiés, le code WireGuard a été supprimé de pfSense.

Le code ajouté a révélé des vulnérabilités critiques qui ont été utilisées dans des exploits de type 0-day, mais au début, Netgate n'a pas reconnu l'existence de vulnérabilités et a tenté d'accuser le développeur du WireGuard original d'attaques et de partialité, ce qui a nui à sa réputation. Le développeur du port a d'abord rejeté les affirmations sur la qualité du code et les a considérées comme exagérées, mais après avoir démontré des erreurs, il a attiré l'attention sur le fait que le problème vraiment important est le manque d'examen approprié de la qualité du code dans FreeBSD, car les problèmes sont restés indétectables pendant plusieurs mois. (Les représentants de Netgate ont indiqué que la révision avait été lancée publiquement en août 2020, mais des développeurs individuels de FreeBSD ont noté que dans Phabricator, la révision avait été clôturée par Macy sans être terminée et avec des commentaires ignorés). L'équipe centrale de FreeBSD a répondu à l'incident en promettant de moderniser ses processus de révision de code.

Matthew Macy, le développeur du port problématique de FreeBSD, a commenté la situation en disant qu'il avait commis une grave erreur en acceptant ce poste sans être prêt à mettre en œuvre le projet. Macy explique le résultat par un épuisement émotionnel et le résultat de problèmes survenus en raison du syndrome post-Covid. Dans le même temps, Macy n'a pas trouvé la détermination d'abandonner les obligations qu'il avait déjà contractées et a tenté de mener à bien le projet.

L'état de Macy peut également avoir été affecté par une récente peine de prison qu'il a reçue pour avoir tenté illégalement d'expulser des locataires d'une maison qu'il avait achetée et qui n'étaient pas disposés à déménager volontairement. Au lieu de cela, lui et sa femme ont scié les poutres du plancher et percé des trous dans les sols pour rendre la maison inhabitable. Ils ont également tenté d'intimider les habitants, sont entrés par effraction dans les appartements occupés et ont emporté leurs affaires (l'action a été qualifiée de cambriolage). Afin d'éviter toute responsabilité pour ses actes, Macy et sa femme ont fui vers l'Italie, mais ont été extradés vers les États-Unis et ont purgé plus de quatre ans de prison.

Source: opennet.ru

Ajouter un commentaire