Aus dem Code, auf dessen Grundlage die Veröffentlichung von FreeBSD 13 erfolgte, wurde mit einem Skandal der Code für die Implementierung des VPN-Protokolls WireGuard entfernt, das auf Anfrage von Netgate entwickelt wurde, ohne die Entwickler des ursprünglichen WireGuard zu konsultieren, und das bereits in die stabilen Veröffentlichungen der Distribution pfSense aufgenommen war. Nach einer Überprüfung des Codes durch Jason Donenfeld, den Autor des ursprünglichen WireGuard, stellte sich heraus, dass die für FreeBSD vorgeschlagene Implementierung von WireGuard ein Beispiel für minderwertigen Code war, der von Pufferüberläufen wimmelte und die GPL-Lizenz verletzte.
In der Implementierung wurden katastrophale Mängel im Kryptografie-Code gefunden, ein Teil des WireGuard-Protokolls fehlte, es gab Fehler, die zum Absturz des Kernels führten und die Schutzmaßnahmen umgingen, und es wurden Buffer fester Größe für Eingabedaten verwendet. Die Qualität des Codes sagt viel über die Verwendung von Platzhaltern anstelle von Überprüfungen aus, die immer den Wert „true“ zurückgeben, sowie über vergessene Debugging-printf zur Ausgabe von Parametern, die zur Verschlüsselung verwendet werden, und den Einsatz der Funktion sleep, um Wettlaufzustände zu verhindern.
Einige Teile des Codes, wie die Funktion crypto_xor, wurden in Verletzung der GPL-Lizenz aus der für Linux entwickelten WireGuard-Implementierung übernommen. Schließlich machten sich Jason Donenfeld zusammen mit Kyle Evans und Matt Dunwoodie, dem Autor des WireGuard-Ports für OpenBSD, daran, die problematische Implementierung neu zu gestalten und ersetzten innerhalb einer Woche den gesamten Code des von Netgate angestellten Entwicklers. Die überarbeitete Version wurde als separater Patchsatz veröffentlicht, der im Repository des WireGuard-Projekts abgelegt wurde und bisher nicht Teil von FreeBSD ist.
Es ist interessant, dass anfänglich nichts auf das bevorstehende Unheil hindeutete. Die Firma Netgate, die die Nutzung von WireGuard in der pfSense-Distribution anstreben wollte, engagierte Matthew Macy, der sich gut mit dem Kernel und dem Netzwerk-Stack von FreeBSD auskennt, an der Behebung von Fehlern beteiligt war und Erfahrung in der Entwicklung von Netzwerktreibern für dieses Betriebssystem hatte. Macy wurde ein flexibler Zeitplan ohne Deadlines und Zwischenprüfungen angeboten. Entwickler, die während der Arbeit an FreeBSD mit Macy in Kontakt kamen, beschrieben ihn als talentierten und professionellen Programmierer, der nicht mehr Fehler machte als andere und angemessen auf Kritik reagierte. Die mangelhafte Codequalität der WireGuard-Implementierung für FreeBSD war für sie eine Überraschung.
Nach 9 Monaten Arbeit fügte Macy im Dezember des letzten Jahres seine Implementierung ohne Abschluss der Überprüfung und Tests durch Dritte in den HEAD-Zweig ein, der zur Erstellung der FreeBSD-Version 13 verwendet wurde. Die Entwicklung fand ohne Rücksprache mit den Entwicklern des ursprünglichen WireGuard sowie der Ports für OpenBSD und NetBSD statt. Im Februar integrierte Netgate WireGuard in die stabile Version pfSense 2.5.0 und begann mit der Auslieferung von Firewalls, die auf dieser basierten. Nach der Entdeckung von Problemen wurde der WireGuard-Code aus pfSense entfernt.
Im hinzugefügten Code wurden kritische Schwachstellen entdeckt, die in 0-Day-Exploits ausgenutzt wurden, aber Netgate erkannte anfänglich nicht die Existenz der Schwachstellen und versuchte, den Entwickler des ursprünglichen WireGuard für Angriffe und Voreingenommenheit verantwortlich zu machen, was sich negativ auf ihren Ruf auswirkte. Der Port-Entwickler wies zunächst die Vorwürfe zur Codequalität zurück und hielt sie für übertrieben, aber nach der Demonstration der Fehler bemerkte er, dass das wirklich wichtige Problem das Fehlen einer angemessenen Überprüfung der Codequalität in FreeBSD ist, da die Probleme viele Monate unbemerkt blieben (Vertreter von Netgate gaben an, dass die öffentliche Überprüfung bereits im August 2020 gestartet wurde, aber einzelne FreeBSD-Entwickler erklärten, dass das Review in Phabricator von Macy ohne Umsetzung und unter Missachtung der Kommentare geschlossen wurde). Das FreeBSD Core Team reagierte auf den Vorfall mit dem Versprechen, die Prozesse zur Codeüberprüfung zu modernisieren.
Matthew Maisey, der Entwickler des Problemportals für FreeBSD, kommentierte die Situation, indem er erklärte, dass er einen großen Fehler gemacht habe, indem er mit der Arbeit begann, ohne bereit zu sein, dieses Projekt umzusetzen. Das Ergebnis, das Maisey erzielte, erklärt er mit emotionaler Erschöpfung und den Problemen, die durch das Post-COVID-Syndrom entstanden sind. Dabei fand Maisey nicht den Mut, sich von den bereits übernommenen Verpflichtungen zurückzuziehen, und versuchte, das Projekt zu beenden.
Maiseys Zustand könnte auch durch eine kürzliche Haftstrafe beeinflusst worden sein, die er wegen illegaler Handlungen beim Versuch, Mieter aus einem von ihm gekauften Haus zu vertreiben, ohne dass diese freiwillig ausziehen wollten, erhielt. Zusammen mit seiner Frau schnitt er die Deckenbalken durch und machte Löcher in die Böden, um das Haus unbewohnbar zu machen, und versuchte, die Mieter einzuschüchtern, indem sie in die bewohnten Wohnungen einbrachen und die dort befindlichen Gegenstände entwendeten (dies wurde als Einbruchsdiebstahl gewertet). Um sich der Verantwortung für seine Taten zu entziehen, floh Maisey mit seiner Frau nach Italien, wurde jedoch in die USA extraditiert und verbrachte über vier Jahre im Gefängnis.
Quelle: opennet.ru
