Bei FreeBSD 13 wäre es fast zu einer Hacker-Implementierung von WireGuard mit Lizenzverstößen und Schwachstellen gekommen

Von der Codebasis, auf der die FreeBSD 13-Version erstellt wurde, war der Code zur Implementierung des WireGuard VPN-Protokolls, der im Auftrag von Netgate ohne Rücksprache mit den Entwicklern des ursprünglichen WireGuard entwickelt wurde und bereits in den stabilen Versionen der pfSense-Distribution enthalten war, skandalös ENTFERNT. Nach einer Codeüberprüfung durch Jason A. Donenfeld, den Autor des ursprünglichen WireGuard, stellte sich heraus, dass die von FreeBSD vorgeschlagene Implementierung von WireGuard ein Stück minderwertiger Code war, der voller Pufferüberläufe war und gegen die GPL verstieß.

Die Implementierung enthielt katastrophale Mängel im Kryptographiecode, ein Teil des WireGuard-Protokolls wurde weggelassen, es gab Fehler, die zum Absturz des Kernels und zur Umgehung von Sicherheitsmethoden führten, und für Eingabedaten wurden Puffer fester Größe verwendet. Das Vorhandensein von Stubs anstelle von Prüfungen, die immer „true“ zurückgeben, sowie das vergessene Debuggen von printfs mit der Ausgabe von zur Verschlüsselung verwendeten Parametern und die Verwendung der Sleep-Funktion zur Verhinderung von Race Conditions sagen viel über die Qualität des Codes aus.

Einige Teile des Codes, wie zum Beispiel die Funktion crypto_xor, wurden unter Verstoß gegen die GPL-Lizenz aus der für Linux entwickelten WireGuard-Implementierung portiert. Infolgedessen übernahm Jason Donenfield zusammen mit Kyle Evans und Matt Dunwoodie (Autor der WireGuard-Portierung für OpenBSD) die Aufgabe, die problematische Implementierung zu überarbeiten und innerhalb einer Woche den gesamten Code des von Netgate beauftragten Entwicklers vollständig zu ersetzen . Die modifizierte Version wurde als separater Satz von Patches veröffentlicht, im WireGuard-Projekt-Repository abgelegt und ist noch nicht in FreeBSD enthalten.

Interessanterweise gab es zunächst keine Anzeichen von Problemen; Netgate, das WireGuard in der pfSense-Distribution verwenden wollte, engagierte Matthew Macy, der sich gut mit dem FreeBSD-Kernel und dem Netzwerk-Stack auskennt, an Fehlerbehebungen beteiligt ist und Erfahrung in der Entwicklung hat Netzwerktreiber für dieses Betriebssystem. Macy erhielt einen flexiblen Zeitplan ohne Fristen oder Zwischenkontrollen. Entwickler, die Macy während der Arbeit an FreeBSD trafen, beschrieben ihn als einen talentierten und professionellen Programmierer, der nicht mehr Fehler machte als andere und angemessen auf Kritik reagierte. Die schlechte Qualität des WireGuard-Implementierungscodes für FreeBSD überraschte sie.

Nach 9 Monaten Arbeit fügte Macy seine Implementierung im vergangenen Dezember dem HEAD-Zweig hinzu, der zur Formulierung der FreeBSD 13-Version verwendet wurde, ohne Peer-Review und Tests abzuschließen. Die Entwicklung erfolgte ohne Kommunikation mit den Entwicklern des ursprünglichen WireGuard und des OpenBSD- und NetBSD-Ports. Im Februar integrierte Netgate WireGuard in die stabile Version von pfSense 2.5.0 und begann mit der Auslieferung darauf basierender Firewalls. Nachdem Probleme identifiziert wurden, wurde der WireGuard-Code aus pfSense entfernt.

Der hinzugefügte Code enthüllte kritische Schwachstellen, die in 0-Day-Exploits ausgenutzt wurden. Zunächst erkannte Netgate die Existenz der Schwachstellen jedoch nicht an und versuchte, dem Entwickler des ursprünglichen WireGuard Angriffe und Voreingenommenheit vorzuwerfen, die sich negativ auf seinen Ruf auswirkten. Der Port-Entwickler lehnte Behauptungen zur Codequalität zunächst ab und hielt sie für übertrieben, machte aber nach dem Nachweis von Fehlern darauf aufmerksam, dass das wirklich wichtige Problem die fehlende ordnungsgemäße Überprüfung der Codequalität in FreeBSD sei, da die Probleme viele Monate lang unentdeckt blieben (Vertreter von Netgate gaben an, dass die öffentliche Überprüfung bereits im August 2020 gestartet wurde, einzelne FreeBSD-Entwickler gaben jedoch an, dass die Überprüfung in Phabricator von Macy ohne Abschluss und mit ignorierten Kommentaren geschlossen wurde.) Das FreeBSD-Kernteam reagierte auf den Vorfall mit dem Versprechen, seine Codeüberprüfungsprozesse zu modernisieren.

Matthew Macy, der Entwickler der problematischen FreeBSD-Portierung, kommentierte die Situation mit den Worten, dass er einen großen Fehler gemacht habe, als er den Auftrag übernommen habe, ohne bereit zu sein, das Projekt umzusetzen. Macy erklärt die daraus resultierende Folge mit emotionalem Burnout und der Folge von Problemen, die aufgrund des Post-Covid-Syndroms entstanden sind. Gleichzeitig fand Macy nicht die Entschlossenheit, die bereits eingegangenen Verpflichtungen aufzugeben und versuchte, das Projekt zum Abschluss zu bringen.

Macys Zustand könnte auch durch eine kürzliche Gefängnisstrafe beeinträchtigt worden sein, die er wegen des illegalen Versuchs erhalten hatte, Mieter aus einem von ihm gekauften Haus zu vertreiben, die nicht bereit waren, freiwillig auszuziehen. Stattdessen sägten er und seine Frau die Bodenbalken ab und brachen Löcher in die Böden, um das Haus unbewohnbar zu machen. Außerdem versuchten sie, die Bewohner einzuschüchtern, brachen in bewohnte Wohnungen ein und entwendeten deren Habseligkeiten (die Aktion wurde als Einbruchdiebstahl eingestuft). Um sich der Verantwortung für seine Taten zu entziehen, flohen Macy und seine Frau nach Italien, wurden jedoch an die Vereinigten Staaten ausgeliefert und verbüßten mehr als vier Jahre im Gefängnis.

Source: opennet.ru

Kommentar hinzufügen