FreeBSD 13 prawie zakończył się hackerską implementacją WireGuard z naruszeniami licencji i lukami w zabezpieczeniach

Z bazy kodu, na której powstało wydanie FreeBSD 13, skandalicznie został wykorzystany kod implementujący protokół WireGuard VPN, opracowany na zlecenie Netgate bez konsultacji z twórcami oryginalnego WireGuarda i już zawarty w stabilnych wydaniach dystrybucji pfSense REMOVED. Po przejrzeniu kodu przez Jasona A. Donenfelda, autora oryginalnego WireGuarda, okazało się, że proponowana przez FreeBSD implementacja WireGuarda była fragmentem tandetnego kodu, przepełnionego przepełnieniami buforów i naruszającego GPL.

Implementacja zawierała katastrofalne błędy w kodzie kryptograficznym, pominięto część protokołu WireGuard, wystąpiły błędy, które doprowadziły do ​​awarii jądra i ominięcia metod bezpieczeństwa, a do danych wejściowych zastosowano bufory o stałym rozmiarze. Obecność kodów pośredniczących zamiast testów, które zawsze zwracają „true”, a także zapomniane debugowanie printfs z wynikami parametrów używanych do szyfrowania oraz użycie funkcji uśpienia, aby zapobiec warunkom wyścigowym, mówi wiele o jakości kodu.

Niektóre części kodu, takie jak funkcja crypto_xor, zostały przeniesione z implementacji WireGuard opracowanej dla systemu Linux, z naruszeniem licencji GPL. W rezultacie Jason Donenfield wraz z Kylem Evansem i Mattem Dunwoodiem (autorem portu WireGuard dla OpenBSD) podjęli się zadania przerobienia problematycznej implementacji i w ciągu tygodnia całkowicie zastąpili cały kod dewelopera wynajętego przez Netgate . Zmodyfikowana wersja została wydana jako oddzielny zestaw poprawek, umieszczona w repozytorium projektu WireGuard i nie została jeszcze uwzględniona we FreeBSD.

Co ciekawe, początkowo nie było żadnych oznak kłopotów; Netgate, chcąc mieć możliwość wykorzystania WireGuarda w dystrybucji pfSense, zatrudniło Matthew Macy’ego, który dobrze orientuje się w jądrze FreeBSD i stosie sieciowym, zajmuje się naprawianiem błędów i ma doświadczenie w programowaniu sterowniki sieciowe dla tego systemu operacyjnego. Macy otrzymała elastyczny harmonogram, bez terminów i kontroli śródokresowych. Programiści, którzy poznali Macy'ego podczas pracy nad FreeBSD, opisali go jako utalentowanego i profesjonalnego programistę, który nie popełniał więcej błędów niż inni i odpowiednio reagował na krytykę. Zaskoczyła ich niska jakość kodu implementacyjnego WireGuard dla FreeBSD.

Po 9 miesiącach pracy Macy dodał swoją implementację do gałęzi HEAD, która została wykorzystana do sformułowania wydania FreeBSD 13, w grudniu ubiegłego roku bez zakończenia wzajemnej recenzji i testów.Rozwój odbył się bez komunikacji z twórcami oryginalnego WireGuard i Porty OpenBSD i NetBSD. W lutym firma Netgate zintegrowała WireGuard ze stabilną wersją pfSense 2.5.0 i rozpoczęła dostarczanie opartych na nim zapór sieciowych. Po zidentyfikowaniu problemów kod WireGuard został usunięty z pfSense.

Dodany kod ujawnił krytyczne luki, które zostały wykorzystane w exploitach 0-day, jednak Netgate początkowo nie przyznała się do istnienia luk i próbowała oskarżyć twórcę oryginalnego WireGuarda o ataki i stronniczość, co negatywnie odbiło się na jego reputacji. Twórca portu początkowo odrzucił twierdzenia o jakości kodu i uznał je za przesadzone, jednak po wykazaniu błędów zwrócił uwagę na fakt, że naprawdę istotnym problemem jest brak odpowiedniego sprawdzenia jakości kodu we FreeBSD, gdyż problemy pozostawały niewykryte przez wiele miesięcy (Przedstawiciele Netgate wskazali, że recenzja została udostępniona opinii publicznej w sierpniu 2020 r., ale poszczególni programiści FreeBSD zauważyli, że w Phabricatorze recenzja została zamknięta przez Macy bez ukończenia i z ignorowaniem komentarzy). Główny zespół FreeBSD zareagował na incydent, obiecując unowocześnienie swoich procesów przeglądu kodu.

Matthew Macy, twórca problematycznego portu FreeBSD, skomentował sytuację mówiąc, że popełnił duży błąd podejmując się pracy bez przygotowania do wdrożenia projektu. Macy tłumaczy powstały wynik wypaleniem emocjonalnym i skutkiem problemów, które pojawiły się w wyniku zespołu post-covidowego. Jednocześnie Macy nie znalazł w sobie determinacji, aby porzucić podjęte już zobowiązania i starał się doprowadzić projekt do końca.

Na stan Macy'ego mógł mieć również wpływ niedawny wyrok więzienia, który otrzymał za nielegalną próbę eksmisji lokatorów z zakupionego przez siebie domu, którzy nie chcieli się dobrowolnie wyprowadzić. Zamiast tego wraz z żoną przepiłował belki stropowe i wybił dziury w podłogach, tak aby dom nie nadawał się do zamieszkania, a także próbował zastraszyć mieszkańców, włamywać się do zajmowanych mieszkań i wynosić ich dobytek (akcję zakwalifikowano jako włamanie). Aby uniknąć odpowiedzialności za swoje czyny, Macy i jego żona uciekli do Włoch, ale zostali poddani ekstradycji do Stanów Zjednoczonych i odsiedzieli ponad cztery lata więzienia.

Źródło: opennet.ru

Dodaj komentarz