FreeBSD 13 eindigde bijna met een hacky-implementatie van WireGuard met licentieschendingen en kwetsbaarheden

Uit de codebasis waarop de FreeBSD 13-uitgave werd gevormd, werd de code die het WireGuard VPN-protocol implementeerde, ontwikkeld in opdracht van Netgate zonder overleg met de ontwikkelaars van de oorspronkelijke WireGuard, en al opgenomen in de stabiele uitgaven van de pfSense-distributie, op schandalige wijze VERWIJDERD. Na codebeoordeling door Jason A. Donenfeld, de auteur van het originele WireGuard, bleek dat FreeBSD's voorgestelde implementatie van WireGuard een stukje slechte code was, vol met bufferoverflows en in strijd met de GPL.

De implementatie bevatte catastrofale fouten in de cryptografiecode, een deel van het WireGuard-protocol werd weggelaten, er waren fouten die leidden tot het crashen van de kernel en het omzeilen van beveiligingsmethoden, en er werden buffers van vaste grootte gebruikt voor invoergegevens. De aanwezigheid van stubs in plaats van controles die altijd ‘true’ retourneren, evenals vergeten debuggen van printfs met de uitvoer van parameters die worden gebruikt voor encryptie, en het gebruik van de slaapfunctie om race-omstandigheden te voorkomen zeggen veel over de kwaliteit van de code.

Sommige delen van de code, zoals de crypto_xor-functie, zijn geporteerd vanuit de WireGuard-implementatie die voor Linux is ontwikkeld, in strijd met de GPL-licentie. Als resultaat hiervan nam Jason Donenfield, samen met Kyle Evans en Matt Dunwoodie (auteur van de WireGuard-port voor OpenBSD), de taak op zich om de problematische implementatie te herwerken en binnen een week alle code van de door Netgate ingehuurde ontwikkelaar volledig te vervangen. . De gewijzigde versie is uitgebracht als een aparte set patches, geplaatst in de WireGuard-projectrepository en is nog niet opgenomen in FreeBSD.

Interessant genoeg waren er aanvankelijk geen tekenen van problemen; Netgate, dat WireGuard in de pfSense-distributie wilde kunnen gebruiken, huurde Matthew Macy in, die goed thuis is in de FreeBSD-kernel en netwerkstack, betrokken is bij bugfixes en ervaring heeft met het ontwikkelen netwerkstuurprogramma's voor dit besturingssysteem. Macy kreeg een flexibel schema zonder deadlines of tussentijdse controles. Ontwikkelaars die Macy ontmoetten tijdens het werken aan FreeBSD beschreven hem als een getalenteerde en professionele programmeur die niet meer fouten maakte dan anderen en adequaat op kritiek reageerde. De slechte kwaliteit van de WireGuard-implementatiecode voor FreeBSD kwam voor hen als een verrassing.

Na negen maanden werken voegde Macy afgelopen december zijn implementatie toe aan de HEAD-branch, die werd gebruikt om de FreeBSD 9-uitgave te formuleren, zonder voltooiing van peer review en testen. De ontwikkeling werd gedaan zonder communicatie met de ontwikkelaars van de originele WireGuard en de OpenBSD- en NetBSD-poorten. In februari integreerde Netgate WireGuard in de stabiele release van pfSense 13 en begon daarop gebaseerde firewalls te leveren. Nadat er problemen waren geïdentificeerd, werd de WireGuard-code verwijderd uit pfSense.

De toegevoegde code onthulde kritieke kwetsbaarheden die werden gebruikt bij 0-day exploits, maar Netgate erkende aanvankelijk het bestaan ​​van kwetsbaarheden niet en probeerde de ontwikkelaar van de oorspronkelijke WireGuard te beschuldigen van aanvallen en vooringenomenheid, wat een negatieve invloed had op de reputatie. De portontwikkelaar verwierp aanvankelijk beweringen over codekwaliteit en beschouwde deze als overdreven, maar nadat hij fouten had aangetoond, vestigde hij de aandacht op het feit dat het werkelijk belangrijke probleem het gebrek aan goede beoordeling van codekwaliteit in FreeBSD is, omdat de problemen maandenlang onopgemerkt bleven. (Vertegenwoordigers van Netgate gaven aan dat de recensie in augustus 2020 openbaar werd gelanceerd, maar individuele FreeBSD-ontwikkelaars merkten op dat in Phabricator de recensie door Macy zonder voltooiing werd gesloten en dat opmerkingen werden genegeerd). Het FreeBSD-kernteam reageerde op het incident door te beloven hun codebeoordelingsprocessen te moderniseren.

Matthew Macy, de ontwikkelaar van de problematische FreeBSD-port, gaf commentaar op de situatie door te zeggen dat hij een grote fout heeft gemaakt door de baan op zich te nemen zonder klaar te zijn om het project te implementeren. Macy legt het resulterende resultaat uit van emotionele burn-out en het resultaat van problemen die ontstonden als gevolg van het post-Covid-syndroom. Tegelijkertijd vond Macy niet de vastberadenheid om de verplichtingen die hij al op zich had genomen op te geven en probeerde hij het project tot een goed einde te brengen.

Macy's toestand kan ook beïnvloed zijn door een recente gevangenisstraf die hij kreeg wegens illegale pogingen om huurders uit een door hem gekocht huis te zetten die niet bereid waren vrijwillig te verhuizen. In plaats daarvan zaagden hij en zijn vrouw de vloerbalken af ​​en braken gaten in de vloeren om het huis onbewoonbaar te maken, en probeerden ook de bewoners te intimideren, braken in bezette appartementen in en haalden hun bezittingen weg (de actie werd geclassificeerd als inbraak). Om de verantwoordelijkheid voor zijn daden te ontlopen, vluchtten Macy en zijn vrouw naar Italië, maar werden uitgeleverd aan de Verenigde Staten en zaten ruim vier jaar in de gevangenis.

Bron: opennet.ru

Voeg een reactie