FreeBSD 13 gandrīz beidzās ar neveiksmīgu WireGuard ievieŔanu ar licenču pārkāpumiem un ievainojamībām

No koda bāzes, uz kuras tika izveidots FreeBSD 13 laidiens, skandalozi tika iestrādāts WireGuard VPN protokola kods, kas tika izstrādāts pēc Netgate pasÅ«tÄ«juma bez konsultācijām ar sākotnējā WireGuard izstrādātājiem un jau iekļauts pfSense izplatÄ«Å”anas stabilajos laidienos. noņemts. Pēc koda pārskatÄ«Å”anas, ko veica Džeisons A. Donenfelds, oriÄ£inālā WireGuard autors, izrādÄ«jās, ka FreeBSD piedāvātā WireGuard ievieÅ”ana bija nederÄ«gs kods, kas ir pārpildÄ«ts ar bufera pārpildÄ«Å”anu un pārkāpj GPL.

IevieÅ”anā bija katastrofāli kriptogrāfijas koda trÅ«kumi, daļa WireGuard protokola tika izlaista, bija kļūdas, kas izraisÄ«ja kodola avāriju un droŔības metožu apieÅ”anu, un ievades datiem tika izmantoti fiksēta izmēra buferi. Stublu klātbÅ«tne pārbaužu vietā, kas vienmēr atgriež ā€œtrueā€, kā arÄ« aizmirstās atkļūdoÅ”anas printfs ar Å”ifrÄ“Å”anai izmantoto parametru izvadi un miega funkcijas izmantoÅ”ana sacensÄ«bu apstākļu novērÅ”anai daudz saka par koda kvalitāti.

Dažas koda daļas, piemēram, funkcija crypto_xor, tika pārnestas no WireGuard ievieÅ”anas, kas izstrādāta operētājsistēmai Linux, pārkāpjot GPL licenci. Rezultātā Džeisons DonenfÄ«lds kopā ar Kailu Evansu un Metu Danvudiju (OpenBSD WireGuard porta autors) uzņēmās uzdevumu pārstrādāt problemātisko ievieÅ”anu un nedēļas laikā pilnÄ«bā nomainÄ«ja visu Netgate nolÄ«gtā izstrādātāja kodu. . Modificētā versija tika izlaista kā atseviŔķs ielāpu komplekts, ievietots WireGuard projektu repozitorijā un vēl nav iekļauts FreeBSD.

Interesanti, ka sākotnēji nekas neliecināja par problēmām; Netgate, kas vēlējās izmantot WireGuard pfSense izplatÄ«Å”anā, nolÄ«ga MetjÅ« Meisiju, kurÅ” labi pārzina FreeBSD kodolu un tÄ«kla steku, ir iesaistÄ«ts kļūdu laboÅ”anā un viņam ir pieredze izstrādē. Ŕīs operētājsistēmas tÄ«kla draiveri. Meisijai tika noteikts elastÄ«gs grafiks bez termiņiem vai vidusposma pārbaudēm. Izstrādātāji, kas satika Macy, strādājot pie FreeBSD, raksturoja viņu kā talantÄ«gu un profesionālu programmētāju, kurÅ” nepieļāva vairāk kļūdu nekā citi un adekvāti reaģēja uz kritiku. FreeBSD WireGuard ievieÅ”anas koda sliktā kvalitāte viņiem bija pārsteigums.

Pēc 9 mēneÅ”u darba Macy pievienoja savu implementāciju HEAD filiālei, kas tika izmantota FreeBSD 13 laidiena formulÄ“Å”anai, pagājuŔā gada decembrÄ«, nepabeidzot salÄ«dzinoÅ”o pārskatÄ«Å”anu un testÄ“Å”anu. Izstrāde tika veikta bez saziņas ar sākotnējā WireGuard izstrādātājiem un OpenBSD un NetBSD porti. FebruārÄ« Netgate integrēja WireGuard stabilajā pfSense 2.5.0 laidienā un sāka piegādāt uz to balstÄ«tus ugunsmÅ«rus. Pēc problēmu identificÄ“Å”anas WireGuard kods tika noņemts no pfSense.

Pievienotais kods atklāja kritiskas ievainojamÄ«bas, kas tika izmantotas 0-dienu ekspluatācijās, taču sākumā Netgate neatzina ievainojamÄ«bu esamÄ«bu un mēģināja apsÅ«dzēt sākotnējā WireGuard izstrādātāju uzbrukumos un aizspriedumos, kas negatÄ«vi ietekmēja tā reputāciju. Portu izstrādātājs sākotnēji noraidÄ«ja apgalvojumus par koda kvalitāti un uzskatÄ«ja tos par pārspÄ«lētiem, taču pēc kļūdu demonstrÄ“Å”anas viņŔ vērsa uzmanÄ«bu uz to, ka patieŔām bÅ«tiska problēma ir koda kvalitātes pienācÄ«gas pārbaudes trÅ«kums FreeBSD, jo problēmas palika neatklātas daudzus mēneÅ”us. (Netgate pārstāvji norādÄ«ja, ka publiskais apskats tika palaists 2020. gada augustā, taču atseviŔķi FreeBSD izstrādātāji atzÄ«mēja, ka programmā Phabricator Macy pārskatÄ«Å”anu slēdza bez pabeigÅ”anas un ar ignorētajiem komentāriem). FreeBSD Core Team reaģēja uz incidentu, solot modernizēt savus koda pārskatÄ«Å”anas procesus.

MetjÅ« Meisijs, problemātiskā FreeBSD porta izstrādātājs, komentēja situāciju, sakot, ka pieļāva lielu kļūdu, uzņemoties darbu, nebÅ«dams gatavs Ä«stenot projektu. Meisija iegÅ«to rezultātu skaidro ar emocionālu izdegÅ”anu un problēmu, kas raduŔās postCovid sindroma dēļ. Tajā paŔā laikā Meisijs neatrada apņēmÄ«bu atteikties no jau uzņemtajām saistÄ«bām un centās projektu novest lÄ«dz galam.

Meisija stāvokli, iespējams, ietekmēja arÄ« nesen piespriestais cietumsods, ko viņŔ saņēma par nelikumÄ«gu mēģinājumu izlikt no iegādātā mājokļa Ä«rniekus, kuri nevēlējās brÄ«vprātÄ«gi izvākties. Tā vietā viņŔ ar sievu zāģēja grÄ«das sijas un lauza bedrÄ«tes grÄ«dās, lai māju padarÄ«tu nederÄ«gu, kā arÄ« mēģināja iebiedēt iedzÄ«votājus, ielauzās apdzÄ«votos dzÄ«vokļos un iznesa mantas (darbÄ«ba klasificēta kā ielauÅ”anās). Lai izvairÄ«tos no atbildÄ«bas par savu rÄ«cÄ«bu, Meisijs un viņa sieva aizbēga uz Itāliju, taču tika izdoti ASV un izcieta vairāk nekā četrus gadus cietumā.

Avots: opennet.ru

Pievieno komentāru