FreeBSD 13 je skoraj končal s hekansko implementacijo WireGuard s kršitvami licenc in ranljivostmi

Iz osnove kode, na kateri je temeljila izdaja FreeBSD 13, koda z implementacijo protokola WireGuard VPN, razvita po naročilu Netgate brez posvetovanja z razvijalci prvotnega WireGuarda in že vključena v stabilne izdaje distribucije pfSense, odstranili s škandalom. Po pregledu kode Jasona A. Donenfelda, avtorja izvirnega WireGuarda, se je izkazalo, da je bila predlagana FreeBSD implementacija WireGuarda del kode nizke stopnje, ki je bila prepredena s prekoračitvami medpomnilnika in je kršila licenco GPL.

V implementaciji so bile odkrite katastrofalne napake v kriptografski kodi, del protokola WireGuard je bil izpuščen, prišlo je do napak, ki so privedle do zrušitve jedra in obvoda zaščitnih metod, za vhodne podatke so bili uporabljeni medpomnilniki fiksne velikosti. Veliko o kakovosti kode je prisotnost škrbin namesto preverjanj, ki vedno vrnejo vrednost "true", kot tudi pozabljeni debug printfs z izhodnimi parametri, ki se uporabljajo za šifriranje, in uporaba funkcije mirovanja za preprečevanje dirkanja pogoji.

Nekateri deli kode, kot je funkcija crypto_xor, so bili preneseni iz implementacije WireGuarda za Linux, kar je v nasprotju z GPL. Posledično se je Jason Donenfield skupaj s Kylom Evansom in Mattom Dunwoodiejem (avtorjem vrat WireGuard za OpenBSD) lotil predelave problematične izvedbe in v enem tednu popolnoma zamenjal vso kodo razvijalca, ki ga je najel Netgate. Predelana različica je bila izdana kot ločen nabor popravkov, postavljen v repozitorij projekta WireGuard in še ni bila vključena v FreeBSD.

Zanimivo je, da sprva nič ni napovedovalo težav, Netgate, ki je želel uporabljati WireGuard v distribuciji pfSense, je najel Matthewa Macyja, ki dobro pozna jedro FreeBSD in omrežni sklad, sodeluje pri odpravljanju napak in ima izkušnje z razvojem omrežnih gonilnikov za ta operacijski sistem. Macy je dobila prost urnik brez rokov ali vmesnih preverjanj. Razvijalci, ki so se srečali z Macyjem med delom na FreeBSD, so ga označili za nadarjenega in profesionalnega programerja, ki ne dela več napak kot drugi in se ustrezno odziva na kritike. Obžalovanja vredna kakovost kode izvedbe WireGuard za FreeBSD jih je presenetila.

Po 9 mesecih dela decembra lani je Macy dodal svojo izvedbo v vejo HEAD, ki je bila uporabljena za oblikovanje izdaje FreeBSD 13, ne da bi opravil kakršen koli medsebojni pregled ali testiranje. Februarja je Netgate integriral WireGuard v stabilno izdajo pfSense 2.5.0 in začel pošiljati wireguards, ki temeljijo na njem. Ko so bile odkrite težave, je bila koda WireGuard odstranjena iz pfSense.

V dodani kodi so bile identificirane kritične ranljivosti, ki so bile uporabljene v 0-dnevnih podvigih, vendar Netgate sprva ni prepoznal obstoja ranljivosti in je poskušal razvijalca izvirnega WireGuarda obtožiti napadov in pristranskosti, kar je negativno vplivalo na njegov ugled. Razvijalec pristanišča je sprva trditve o kakovosti kode zavrnil kot pretirane, a je po prikazu hroščev opazil, da je res pomembna težava pomanjkanje ustreznega pregleda kakovosti kode v FreeBSD, ker so težave ostale neopažene več mesecev (Netgate predstavniki so navedli, da je bil pregled javnosti objavljen že avgusta 2020, vendar so posamezni razvijalci FreeBSD opazili, da je Macy v Phabricatorju pregled zaprl brez izvedbe in ignoriranja komentarjev). Osrednja ekipa FreeBSD se je na incident odzvala z obljubo, da bo posodobila postopke pregleda kode.

Matthew Macy, razvijalec problematičnih vrat za FreeBSD, je komentiral, da je naredil veliko napako, ko je prevzel delo, saj ni bil pripravljen izvesti tega projekta. Macy nastali rezultat pojasnjuje s čustveno izgorelostjo in posledico težav, ki so nastale zaradi postCOVID sindroma. Hkrati Macy ni našel odločnosti, da bi opustil že prevzete obveznosti in je poskušal projekt pripeljati do konca.

Na Macyjevo stanje je morda vplivala tudi nedavna zaporna kazen, ki jo je prejel zaradi nezakonitih dejanj, da bi iz hiše, ki jo je kupil, izselil najemnike, ki se niso želeli prostovoljno izseliti. Namesto tega sta z ženo žagala tramove in razbijala tla, da bi bila hiša neuporabna za bivanje, poskušala pa sta tudi ustrahovati najemnike, vlamljala v vseljena stanovanja in iznašala stvari (dejanje je bilo okvalificirano kot vlom) . Da bi se izognil odgovornosti za svoja dejanja, je Macy z ženo pobegnil v Italijo, a so ga izročili ZDA in odsedel več kot štiri leta zapora.

Vir: opennet.ru

Dodaj komentar