Aus dem Codebasis, auf der die Veröffentlichungen von FreeBSD 13 basieren, wurde nach einem Skandal der Code für das VPN-Protokoll WireGuard entfernt. Dieser wurde von Netgate in Auftrag gegeben, ohne Rücksprache mit den Entwicklern des ursprünglichen WireGuard und war bereits in den stabilen Versionen der Distribution pfSense enthalten. Nach einer Überprüfung des Codes durch Jason A. Donenfeld, dem Autor des ursprünglichen WireGuard, stellte sich heraus, dass die für FreeBSD vorgeschlagene Implementierung von WireGuard ein Beispiel für einen minderwertigen Code war, der voller Bufferüberläufe und Lizenzverletzungen der GPL war.
In der Implementierung wurden katastrophale Fehler in der Kryptografie gefunden, ein Teil des WireGuard-Protokolls wurde ausgelassen, und es gab Fehler, die zum Absturz des Kernels und zum Umgehen von Sicherheitstechniken führten. Für Eingabewerte wurden Puffer fester Größe verwendet. Die Qualität des Codes wird durch die Verwendung von Platzhaltern anstelle von Prüfungen, die immer den Wert „true“ zurückgeben, sowie durch vergessene Debug-Printfs zur Ausgabe der für die Verschlüsselung verwendeten Parameter und die Anwendung der Funktion sleep zur Vermeidung von Race Conditions deutlich.
Einige Teile des Codes, wie die Funktion crypto_xor, wurden in Verstoß gegen die GPL-Lizenz aus der für Linux entwickelten Implementierung von WireGuard übernommen. In der Folge haben Jason Donenfeld zusammen mit Kyle Evans und Matt Dunwoodie (dem Entwickler des WireGuard-Ports für OpenBSD) die problematische Implementierung überarbeitet und innerhalb einer Woche den gesamten Code des von Netgate engagierten Entwicklers ersetzt. Die überarbeitete Version wurde als separate Patch-Sammlung veröffentlicht und im Repository des WireGuard-Projekts bereitgestellt, ist jedoch noch nicht Teil von FreeBSD.
Es ist interessant, dass anfangs nichts auf die Schwierigkeiten hindeutete. Das Unternehmen Netgate, das die Nutzung von WireGuard in der pfSense-Distribution ermöglichen wollte, beauftragte Matthew Macy, einen Experten für den FreeBSD-Kernel und den Netzwerkstack, der an Fehlerbehebungen arbeitete und Erfahrung in der Entwicklung von Netzwerktreibern für dieses Betriebssystem hatte. Macy erhielt einen flexiblen Zeitplan ohne Fristen oder Zwischenprüfungen. Entwickler, die bei FreeBSD mit Macy zusammengearbeitet haben, beschrieben ihn als talentierten und professionellen Programmierer, der nicht mehr Fehler machte als andere und konstruktiv auf Kritik reagierte. Die bedauerliche Qualität des WireGuard-Codes für FreeBSD überraschend für sie.
Nach neun Monaten Arbeit fügte Macy im Dezember letzten Jahres seine Implementierung ohne Abschluss der Überprüfung und Tests durch Dritte in den HEAD-Branch ein, der für die Erstellung des Releases von FreeBSD 13 verwendet wurde. Die Entwicklung erfolgte ohne Kontakt zu den Entwicklern des ursprünglichen WireGuard und den Ports für OpenBSD und NetBSD. Im Februar integrierte Netgate WireGuard in die stabile Version von pfSense 2.5.0 und begann mit der Lieferung in darauf basierenden Firewalls. Nach Auftreten von Problemen wurde der WireGuard-Code aus pfSense entfernt.
Im hinzugefügten Code wurden kritische Sicherheitsanfälligkeiten entdeckt, die in 0-Day-Exploits ausgenutzt wurden. Zunächst erkannte Netgate die Schwachstellen nicht an und versuchte, den Entwickler des ursprünglichen WireGuard wegen Angriffen und Vorurteilen zu beschuldigen, was sich negativ auf seinen Ruf auswirkte. Der Portentwickler wies anfangs die Qualitätsvorwürfe zurück und hielt sie für übertrieben, lenkte jedoch nach der Demonstration der Fehler ein und erkannte, dass ein wirklich wichtiges Problem das Fehlen einer angemessenen Qualitätsprüfung des Codes in FreeBSD war, da die Probleme über viele Monate hinweg unbemerkt blieben. (Vertreter von Netgate wiesen darauf hin, dass die öffentliche Überprüfung bereits im August 2020 gestartet wurde, aber einzelne Entwickler von FreeBSD merkten an, dass die Überprüfung in Phabricator von Mayci ohne Erledigung und unter Ignorierung von Kommentaren geschlossen wurde). Das FreeBSD Core Team reagierte auf den Vorfall mit dem Versprechen, die Prozesse zur Codeüberprüfung zu modernisieren.
Matthew Maisey, Entwickler des Problemportals für FreeBSD, kommentierte die Situation, indem er zugab, einen großen Fehler gemacht zu haben, indem er sich an ein Projekt setzte, für das er nicht bereit war. Das Ergebnis erklärt Maisey mit emotionaler Erschöpfung und Problemen, die aus dem postcovid-Syndrom hervorgingen. Dennoch fand Maisey nicht den Mut, sich von den bereits übernommenen Verpflichtungen zurückzuziehen, und versuchte, das Projekt zu Ende zu bringen.
Auch ein kürzlicher Gefängnisaufenthalt könnte den Zustand von Maisey beeinflusst haben, den er für illegale Handlungen erhielt, als er versuchte, Mieter aus einem von ihm gekauften Haus zu vertreiben, die nicht freiwillig ausziehen wollten. Gemeinsam mit seiner Frau schnitt er die Deckenbalken und brach Löcher in die Böden, um das Haus unbewohnbar zu machen. Außerdem versuchten sie, die Mieter einzuschüchtern, brachen in besetzte Wohnungen ein und entwendeten die darin befindlichen Gegenstände (handelte sich um Diebstahl mit Einbruch). Um für seine Taten nicht zur Verantwortung gezogen zu werden, floh Maisey mit seiner Frau nach Italien, wurde jedoch in die USA extraditiert und verbrachte mehr als vier Jahre im Gefängnis.
Quelle: opennet.ru
