W FreeBSD 13 niemal znalazła się niskiej jakości implementacja WireGuard z naruszeniem licencji i lukami w zabezpieczeniach.

Z kodu źródłowego, na podstawie którego powstała wersja FreeBSD 13, ze skandalem usunięto kod implementujący protokół VPN WireGuard, stworzony na zlecenie firmy Netgate bez konsultacji z twórcami oryginalnego WireGuard, który już został uwzględniony w stabilnych wersjach dystrybucji pfSense. Po przeglądzie kodu przez Jasona A. Donenfelda, autora oryginalnego WireGuard, okazało się, że zaproponowana implementacja WireGuard dla FreeBSD była przykładem niskiej jakości kodu, obfitującego w przepełnienia bufora i naruszającego licencję GPL.

В реализации были найдены катастрофические огрехи в коде криптографии, была пропущена часть протокола WireGuard, присутствовали ошибки, приводившие к краху ядра и обходу методов защиты, для входных данных использовались буферы фиксированного размера. О качестве кода много говорит наличие заглушек вместо проверок, всегда возвращающих значение «true», а также забытые отладочные printf с выводом параметров, используемых для шифрования, и применение функции sleep для предотвращения состояний гонки.

Niektóre fragmenty kodu, takie jak funkcja crypto_xor, wbrew licencji GPL, zostały przeniesione z implementacji WireGuard, zaprojektowanej dla systemu Linux. W rezultacie Jason Donenfeld wraz z Kylem Evansem i Mattem Dunwoodie, autorem portu WireGuard dla OpenBSD, zajęli się przeróbką problematycznej implementacji i w ciągu tygodnia całkowicie zastąpili kod opracowany przez dewelopera zatrudnionego przez Netgate. Przerobiona wersja została wydana w osobnym zestawie poprawek, umieszczony w repozytorium projektu WireGuard i jak dotąd nie znalazł się w składzie FreeBSD.

Ciekawe, że początkowo nic nie wskazywało na problemy. Firma Netgate, która chciała zyskać możliwość korzystania z WireGuard w dystrybucji pfSense, zatrudniła Matthew Macy'ego, dobrze znanego w kwestiach jądra i stosu sieciowego FreeBSD, który brał udział w poprawianiu błędów i posiadał doświadczenie w opracowywaniu sterowników sieciowych dla tego systemu operacyjnego. Macy otrzymał elastyczny harmonogram bez terminów i pośrednich kontroli. Programiści, którzy mieli z nim do czynienia podczas pracy nad FreeBSD, opisywali go jako utalentowanego i profesjonalnego programistę, popełniającego nie więcej błędów niż inni i adekwatnie reagującego na krytykę. Słaba jakość kodu implementacji WireGuard dla FreeBSD była dla nich niespodzianką.

Po dziewięciu miesiącach pracy w grudniu ubiegłego roku Macy dodał swoją implementację do gałęzi HEAD, która była używana do wydania FreeBSD 13, bez zakończenia recenzji i testów ze strony osób trzecich. Prace były realizowane bez kontaktu z twórcami oryginalnego WireGuard oraz portów dla OpenBSD i NetBSD. W lutym firma Netgate zintegrowała WireGuard z stabilnym wydaniem pfSense 2.5.0 i zaczęła jego dostarczanie w opartych na tym zaporach sieciowych. Po wykryciu problemów kod WireGuard został usunięty z pfSense.

W dodanym kodzie zidentyfikowano krytyczne luki, które zostały wykorzystane w eksploatacjach 0-day, ale przez pewien czas Netgate nie uznawała istnienia tych luk i próbowała obwiniać twórcę oryginalnego WireGuard o ataki i stronniczość, co negatywnie wpłynęło na jej reputację. Twórca portu początkowo odrzucał zarzuty dotyczące jakości kodu, uważając je za przesadzone, lecz po prezentacji błędów zwrócił uwagę, że naprawdę istotnym problemem jest brak odpowiedniej recenzji jakości kodu w FreeBSD, ponieważ problemy pozostawały niezauważone przez wiele miesięcy (reprezentanci Netgate wskazali, że publiczna recenzja rozpoczęła się już w sierpniu 2020 roku, ale niektórzy programiści FreeBSD zauważyli, że recenzja w Phabricatorze została zamknięta przez Macy'ego bez realizacji i z ignorowaniem komentarzy). Zespół FreeBSD Core Team odpowiedział na incydent obietnicą modernizacji procesów weryfikacji kodu.

Matthew Maisy, twórca problematycznego portu dla FreeBSD, skomentował sytuację, mówiąc, że popełnił poważny błąd, zabierając się do pracy, będąc nieprzygotowanym do realizacji tego projektu. Uzyskany rezultat Maisy wyjaśnia wypaleniem emocjonalnym oraz problemami wynikającymi z zespołu objawów po COVID-19. Mimo to, Maisy nie znalazł odwagi, aby zrezygnować z już podjętych zobowiązań i starał się doprowadzić projekt do końca.

Na stan Maisy'ego mogła również wpłynąć niedawna kara więzienia, którą otrzymał za nielegalne działania w próbie eksmisji lokatorów z zakupionego przez siebie domu, którzy nie chcieli wyprowadzać się dobrowolnie. Razem z żoną podcięli belki stropowe i wyważyli otwory w podłogach, aby uczynić dom nieodpowiednim do zamieszkania, a także próbowali zastraszać lokatorów, włamując się do zamieszkanych mieszkań i wynosząc ich rzeczy (czyn ten został zakwalifikowany jako kradzież z włamaniem). Aby uniknąć odpowiedzialności za popełnione czyny, Maisy z żoną uciekli do Włoch, ale zostali extradowani do USA i spędzili w więzieniu ponad cztery lata.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster