FreeBSD 13 aproape sa terminat cu o implementare hackeră a WireGuard cu încălcări ale licenței și vulnerabilități

Din baza de cod pe care s-a format lansarea FreeBSD 13, codul care implementează protocolul WireGuard VPN, dezvoltat la ordinul Netgate fără consultarea cu dezvoltatorii WireGuard original și deja inclus în versiunile stabile ale distribuției pfSense, a fost scandalos. îndepărtat. După revizuirea codului de către Jason A. Donenfeld, autorul originalului WireGuard, s-a dovedit că implementarea WireGuard propusă de FreeBSD a fost o bucată de cod proastă, plină de depășiri de buffer și care încalcă GPL.

Implementarea conținea defecte catastrofale în codul de criptare, o parte a protocolului WireGuard a fost omisă, au existat erori care au dus la prăbușirea nucleului și la ocolirea metodelor de securitate, iar pentru datele de intrare au fost folosite tampoane de dimensiuni fixe. Prezența stub-urilor în loc de verificări care returnează întotdeauna „adevărat”, precum și printf-urile de depanare uitate cu ieșirea parametrilor utilizați pentru criptare și utilizarea funcției de somn pentru a preveni condițiile de cursă spun multe despre calitatea codului.

Unele părți ale codului, cum ar fi funcția crypto_xor, au fost portate din implementarea WireGuard dezvoltată pentru Linux, încălcând licența GPL. Drept urmare, Jason Donenfield, alături de Kyle Evans și Matt Dunwoodie (autorul portului WireGuard pentru OpenBSD), și-a asumat sarcina de a reelabora implementarea problematică și, în decurs de o săptămână, a înlocuit complet tot codul dezvoltatorului angajat de Netgate. . Versiunea modificată a fost lansată ca un set separat de patch-uri, plasate în depozitul de proiect WireGuard și nu a fost încă inclusă în FreeBSD.

Interesant este că inițial nu au existat semne de probleme, Netgate, care dorea să poată folosi WireGuard în distribuția pfSense, l-a angajat pe Matthew Macy, care este bine versat în kernelul FreeBSD și în stiva de rețea, este implicat în remedieri de erori și are experiență în dezvoltare; drivere de rețea pentru acest sistem de operare. Macy a primit un program flexibil, fără termene limită sau verificări intermediare. Dezvoltatorii care l-au cunoscut pe Macy în timp ce lucra la FreeBSD l-au descris ca un programator talentat și profesionist care nu a făcut mai multe greșeli decât alții și a răspuns în mod adecvat criticilor. Calitatea slabă a codului de implementare WireGuard pentru FreeBSD a fost o surpriză pentru ei.

După 9 luni de muncă, Macy a adăugat implementarea sa în filiala HEAD, care a fost folosită pentru a formula versiunea FreeBSD 13, în decembrie anul trecut, fără finalizarea evaluării și a testării de către colegi Porturi OpenBSD și NetBSD. În februarie, Netgate a integrat WireGuard în versiunea stabilă a pfSense 2.5.0 și a început să livreze firewall-uri bazate pe acesta. După identificarea problemelor, codul WireGuard a fost eliminat din pfSense.

Codul adăugat a dezvăluit vulnerabilități critice care au fost folosite în exploatările de 0-day, dar Netgate la început nu a recunoscut existența vulnerabilităților și a încercat să acuze dezvoltatorul WireGuard original de atacuri și părtinire, care i-au afectat negativ reputația. Dezvoltatorul de porturi a respins inițial afirmațiile despre calitatea codului și le-a considerat exagerate, dar după ce a demonstrat erori, a atras atenția asupra faptului că problema cu adevărat importantă este lipsa unei revizuiri adecvate a calității codului în FreeBSD, deoarece problemele au rămas nedetectate timp de multe luni. (Reprezentanții Netgate au indicat că revizuirea a fost lansată public în august 2020, dar dezvoltatorii individuali FreeBSD au remarcat că în Phabricator revizuirea a fost închisă de Macy fără finalizare și cu comentariile ignorate). Echipa de bază FreeBSD a răspuns la incident promițând că își va moderniza procesele de revizuire a codului.

Matthew Macy, dezvoltatorul portului problematic FreeBSD, a comentat situația spunând că a făcut o mare greșeală prin preluarea postului fără a fi pregătit să implementeze proiectul. Macy explică rezultatul rezultat prin epuizare emoțională și rezultatul problemelor apărute din cauza sindromului post-Covid. Totodată, Macy nu a găsit hotărârea de a abandona obligațiile pe care și le-a asumat deja și a încercat să ducă proiectul la bun sfârșit.

Starea lui Macy s-ar putea să fi fost afectată și de o pedeapsă recentă cu închisoarea pe care a primit-o pentru încercarea ilegală de a evacua chiriași dintr-o locuință pe care a cumpărat-o, care nu au vrut să se mute voluntar. În schimb, el și soția sa au tăiat grinzile podelei și au făcut găuri în podele pentru a face casa nelocuită și au încercat, de asemenea, să intimideze locuitorii, au pătruns în apartamentele ocupate și le-au scos bunurile (acțiunea a fost clasificată ca efracție). Pentru a evita responsabilitatea pentru acțiunile sale, Macy și soția sa au fugit în Italia, dar au fost extrădați în Statele Unite și au executat mai bine de patru ani de închisoare.

Sursa: opennet.ru

Adauga un comentariu