FreeBSD 13 ist da: Mehr Leistung, bessere Tools – und viel WireGuard-Drama

Seite 4: Mit aller Macht, das Drama folgt

Inhaltsverzeichnis

WireGuard ist eine VPN-Software, die technisch und von der Performance her etablierten Produkten wie OpenVPN überlegen ist. Neben GNU/Linux war es von Anfang an auch für FreeBSD geplant. Bereits Anfang 2020 gab es erste WireGuard-Commits von FreeBSD-Entwickler Matt Macy, der dazu eigens von Netgate bezahlt wurde. Netgate hat die FreeBSD-basierte Firewall-Distribution pfSense von einem freien Community-Projekt in ein kostenpflichtiges Enterprise-Produkt mit "zusätzlichen Funktionen" überführt. Hierbei sollte WireGuard fester Bestandteil von pfSense 2.5 werden und wurde als solches angekündigt – also musste der Code auch irgendwie in den FreeBSD-Kernel kommen. Kurz vor dem ursprünglich geplanten FreeBSD 13.0-RELEASE platzte die WireGuard-Bombe.

Mehrere Benutzer von pfSense beschwerten sich in den Netgate-Foren über Probleme und meldeten die Bugs sogar beim WireGuard-Projekt. Von dort aus nahm das Drama seinen Lauf: WireGuard-Entwickler Jason Donenfeld unterzog den in FreeBSD eingefügten Code einem Audit und fand verheerende Fehler: Sleep-Befehle, um Timing-Probleme im Protokoll zu beheben, Validierungsfunktionen, die einfach nur "true" zurückgaben, löchrige Kryptofunktionen, Teile des Protokolls, die nicht implementiert waren, Tricks, um Sicherheitsfunktionen zu umgehen, Überläufe von Variablen bis hin zu leicht über ein einzigen IP-Paket mit zu großer MTU-Size reproduzierbaren Kernel Panics. Die WireGuard-Implementation für FreeBSD war schlicht unbrauchbar – der gesamte Code flog aus dem Kernel und das RELEASE musste verschoben werden.

Wie konnte das passieren? Der originale Code stammt von Scott Long, aber auch Matt Macy und der FreeBSD-Entwickler Peter Grehan, der den Code einpflegte, sind Profis mit langjährigen FreeBSD-Erfahrungen. Das Security-Team von FreeBSD wurde offenbar nicht explizit mit einem Audit beauftragt und wurde offenbar auch von sich aus nicht aktiv. Am bislang von Netgate beziehungsweise seinen Entwicklern kommenden Code gab es nichts zu beanstanden. Liest man sich in den gesamten Vorgang ein und verfolgte die teilweise persönlich geführte Diskussion, sind wohl zwei Punkt die eigentliche Ursache: Netgate wollte mit aller Gewalt WireGuard in FreeBSD 13.0-RELEASE und damit in dem bereits angekündigten kommerziellen pfSense 2.5 drücken – und Matt Macy schien persönlich ausgebrannt und überfordert zu sein, er wollte das Projekt so schnell wie möglich vom Tisch haben. Die üblichen Kontrollinstanzen haben sich darauf verlassen, dass bei den beteiligten Profis alles so sauber und gut wie bisher lief.

FreeBSDs WireGuard-Maintainer Kyle Evans kündigte an, das WireGuard komplett aus dem Kernel des FreeBSD 13.0-RELEASE herausgeflogen sei. Die Entwicklung wird jedoch außerhalb des aktiven Entwicklungszweigs fortgeführt – wobei Evans zwei Tage später sein Amt als Maintainer für WireGuard niederlegte.

Damit hat es WireGuard nicht in FreeBSD 13 geschafft. Dasselbe gilt für USB4- und Thunderbolt-Support, der zwar weit gediehen, aber eben nicht fertig ist. Intern will man dringend die antiquierten GIANT-Locks abschaffen, mit der das gesamte System von einer Funktion gesperrt werden kann. An vielen Stellen wurde GIANT-Lock entfernt, einige wenige Relikte sind noch vorhanden, sollten im kommenden FreeBSD 14-RELEASE jedoch von alleine verschwinden, weil die Funktionen die GIANT-Lock benutzen in Codeblöcken zu finden sind, die sowieso ersetzt werden.

Alles in allem fühlt sich trotz des WireGuard-Dramas das neue FreeBSD 13.0 aus Anwender- und Administratorensicht wie ein großer Schritt nach vorne an. FreeBSD als Baukasten für ein freies, maßgeschneidertes Open-Source-Betriebssystem hat einige Kanten und Ecken verloren und spürbar an Geschwindigkeit gewonnen.

Die vielen weiteren Verbesserungen und Bugfixes sind ausführlich in den Release Notes von FreeBSD 13.0-RELEASE dokumentiert. Installationsmedien stehen in verschiedenen Formaten und Größen kostenlos auf der Projektseite für amd64/i386, ARM, PowerPC und RISC-V bereit. Dort sind auch Links zum (deutschen) Online-Handbuch, zu englischen Foren und den für FreeBSD-Admins wichtigen Mailinglisten. Deutsche FreeBSD- und *BSD-Anwender tummeln sich in den deutschsprachigen BSDForen.

(fo)