FreeBSD 13 je zamalo završio sa hakovanom implementacijom WireGuarda sa kršenjem licence i ranjivostima

Iz baze koda na kojoj je formirano FreeBSD 13 izdanje, skandalozno je bio kod koji implementira WireGuard VPN protokol, razvijen po narudžbi Netgatea bez konsultacija sa programerima originalnog WireGuarda, a koji je već uključen u stabilna izdanja pfSense distribucije. uklonjeno. Nakon pregleda koda od strane Jasona A. Donenfelda, autora originalnog WireGuarda, ispostavilo se da je FreeBSD-ova predložena implementacija WireGuarda dio lošeg koda, prožet prekomjernim baferom i kršeći GPL.

Implementacija je sadržavala katastrofalne greške u kriptografskom kodu, dio protokola WireGuard je izostavljen, bilo je grešaka koje su dovele do pada kernela i zaobilaženja sigurnosnih metoda, a za ulazne podatke korišteni su baferi fiksne veličine. Prisustvo stubova umjesto provjera koje uvijek vraćaju “true”, kao i zaboravljeni printfs za otklanjanje grešaka sa izlazom parametara koji se koriste za enkripciju, te korištenje funkcije spavanja za sprječavanje uvjeta utrke govore mnogo o kvaliteti koda.

Neki dijelovi koda, kao što je funkcija crypto_xor, prenijeti su iz WireGuard implementacije razvijene za Linux, kršeći GPL licencu. Kao rezultat toga, Jason Donenfield, zajedno s Kyleom Evansom i Mattom Dunwoodiejem (autor porta WireGuard za OpenBSD), preuzeo je zadatak prerade problematične implementacije i u roku od tjedan dana u potpunosti zamijenio sav kod programera kojeg je angažirao Netgate . Modifikovana verzija je objavljena kao poseban set zakrpa, smeštena u repozitorijum projekta WireGuard i još uvek nije uključena u FreeBSD.

Zanimljivo je da u početku nije bilo znakova problema; Netgate, koji je želio da koristi WireGuard u pfSense distribuciji, unajmio je Matthewa Macyja, koji je dobro upućen u FreeBSD kernel i mrežni stog, uključen je u ispravke grešaka i ima iskustva u razvoju mrežni drajveri za ovaj operativni sistem. Macy je dobila fleksibilan raspored bez rokova ili provjera na polugodištu. Programeri koji su upoznali Macyja dok su radili na FreeBSD-u opisali su ga kao talentiranog i profesionalnog programera koji nije pravio više grešaka od drugih i adekvatno je odgovarao na kritike. Loš kvalitet implementacionog koda WireGuard za FreeBSD bio je iznenađenje za njih.

Nakon 9 mjeseci rada, Macy je dodao svoju implementaciju u HEAD granu, koja je korištena za formuliranje izdanja FreeBSD 13, prošlog decembra bez završetka stručnog pregleda i testiranja. Razvoj je obavljen bez komunikacije sa programerima originalnog WireGuard-a i OpenBSD i NetBSD portovi. U februaru, Netgate je integrisao WireGuard u stabilno izdanje pfSense 2.5.0 i počeo da isporučuje firewall bazirane na njemu. Nakon što su identifikovani problemi, kod WireGuard je uklonjen iz pfSense-a.

Dodati kod je otkrio kritične ranjivosti koje su korištene u 0-dnevnim eksploatacijama, ali u početku Netgate nije priznao postojanje ranjivosti i pokušao je optužiti programera originalnog WireGuarda za napade i pristrasnost, što je negativno uticalo na njegovu reputaciju. Programer porta je u početku odbacio tvrdnje o kvalitetu koda i smatrao ih preuveličanim, ali je nakon demonstriranja grešaka skrenuo pažnju na činjenicu da je zaista važan problem nedostatak odgovarajućeg pregleda kvaliteta koda u FreeBSD-u, jer su problemi ostali neotkriveni dugi niz mjeseci. (Predstavnici Netgate-a su naveli da je javna recenzija pokrenuta još u augustu 2020., ali su pojedini programeri FreeBSD-a primijetili da je Macy u Phabricatoru recenziju zatvorio bez dovršetka i uz ignorisanje komentara). FreeBSD Core Team je odgovorio na incident obećavajući 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

Dodajte komentar