FreeBSD 13 je zamalo imao lošu implementaciju WireGuard s kršenjima licenci i ranjivostima

Kod koji implementira VPN protokol je kontroverzno uklonjen iz kodne baze koja je činila osnovu za izdanje FreeBSD 13. WireGuard, razvijen po narudžbi kompanije Netgate bez konsultacija s programerima originala WireGuard, i već je uključen u stabilna izdanja pfSense distribucije. Nakon pregleda koda od strane Jasona A. Donenfelda, originalnog autora WireGuard, ispostavilo se da je implementacija predložena za FreeBSD WireGuard bio je komad lošeg koda prepun prepunjavanja bafera i kršenje GPL licence.

Utvrđeno je da implementacija ima katastrofalne nedostatke u kriptografskom kodu, a dio protokola je nedostajao. WireGuard, bilo je grešaka koje su dovodile do rušenja kernela i zaobilaženja sigurnosnih metoda, a za ulazne podatke korišteni su baferi fiksne veličine. Prisustvo stubova umjesto provjera koje su uvijek vraćale "true" mnogo govori o kvaliteti koda, kao i zaboravljene debug printf naredbe koje prikazuju parametre šifriranja i korištenje sleep funkcije za sprječavanje uslova utrke.

Neki dijelovi koda, poput funkcije crypto_xor, premješteni su iz implementacije kršeći GPL licencu. WireGuard, dizajniran za LinuxKao rezultat toga, Jason Donenfield, zajedno s Kyleom Evansom i Mattom Dunwoodiejem (autorom porta) WireGuard (za OpenBSD), preuzeli su zadatak prerade problematične implementacije i, u roku od sedmice, potpuno zamijenili cijeli kod programera kojeg je angažovao Netgate. Prerađena verzija je objavljena kao zaseban set zakrpa i nalazi se u repozitoriju projekta. WireGuard i još nije uključen u FreeBSD.

Zanimljivo je da u početku ništa nije nagovještavalo probleme, kompanija Netgate, koja je željela dobiti priliku da koristi WireGuard Distribucija pfSense angažovala je Matthewa Macyja, programera sa dubokim razumijevanjem FreeBSD kernela i mrežnog steka, koji je doprinio ispravkama grešaka i imao iskustva u razvoju mrežnih drajvera za operativni sistem. Macyju je dat fleksibilan raspored bez rokova ili srednjoročnih pregleda. Programeri koji su radili sa Macyjem na FreeBSD-u opisali su ga kao talentovanog i profesionalnog programera koji nije pravio više grešaka od drugih i odgovarao je na kritike. Loš kvalitet implementacije koda WireGuard za FreeBSD je to bilo iznenađenje za njih.

Nakon devet mjeseci rada, u decembru prošle godine, Macy je, bez ikakvog pregleda ili testiranja od strane vanjskih saradnika, dodao svoju implementaciju u HEAD granu koja je korištena za formiranje izdanja FreeBSD 13. Razvoj je obavljen bez komunikacije s originalnim programerima. WireGuard i portove za OpenBSD i NetBSD. U februaru je Netgate integrisao WireGuard u stabilnu verziju pfSense 2.5.0 i počela je isporuka u zaštitnim zidovima zasnovanim na njemu. Nakon identifikacije problema, kod WireGuard je uklonjen iz pfSense-a.

Dodani kod je sadržavao kritične ranjivosti koje su korištene u 0-day exploit-ima, ali Netgate u početku nije priznao postojanje ranjivosti i pokušao je okriviti originalnog programera. WireGuard Port je bio izložen napadima i pristranosti, što je negativno uticalo na njegov ugled. Održavalac porta je u početku odbacio pritužbe na kvalitet koda kao pretjerane, ali nakon što je demonstrirao greške, istakao je da je zaista značajan problem nedostatak odgovarajućeg pregleda kvaliteta koda u FreeBSD-u, budući da problemi nisu otkriveni mjesecima. (Predstavnici Netgatea su naveli da je javni pregled pokrenut još u augustu 2020. godine, ali su neki FreeBSD programeri primijetili da je Macy zatvorio pregled u Phabricatoru bez implementacije i sa ignorisanim komentarima.) Osnovni tim FreeBSD-a odgovorio je na incident obećanjem da će modernizovati svoje procese pregleda koda.

Matthew Macy, programer problematičnog FreeBSD porta, prokomentarisao je situaciju rekavši da je napravio veliku grešku što je preuzeo posao a da nije bio spreman za implementaciju projekta. Macy nastali rezultat objašnjava emocionalnim izgaranjem i rezultatom problema koji su nastali zbog post-Covid sindroma. Istovremeno, Macy nije našao odlučnost da odustane od obaveza koje je već preuzeo i pokušao je da projekat dovede do kraja.

Na Macyjevo stanje možda je utjecala i nedavna zatvorska kazna koju je dobio zbog nezakonitog pokušaja deložacije stanara iz kuće koju je kupio, a koji nisu htjeli dobrovoljno da se isele. Umjesto toga, on i njegova supruga su testerili podne grede i probili rupe na podovima kako bi kuću učinili neupotrebljivom, a pokušali su i da zastraše stanare, provaljivali su u zauzete stanove i iznosili im stvari (akcija je klasifikovana kao provala). Kako bi izbjegli odgovornost za svoje postupke, Macy i njegova supruga pobjegli su u Italiju, ali su izručeni Sjedinjenim Državama i odslužili više od četiri godine zatvora.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster