FreeBSD 13 si è quasi ritrovato con un'implementazione hackerata di WireGuard con violazioni e vulnerabilità della licenza

Dalla base di codice su cui è stata formata la versione FreeBSD 13, il codice che implementa il protocollo VPN WireGuard, sviluppato per ordine di Netgate senza consultare gli sviluppatori dell'originale WireGuard e già incluso nelle versioni stabili della distribuzione pfSense, è stato scandalosamente RIMOSSO. Dopo la revisione del codice da parte di Jason A. Donenfeld, l'autore dell'originale WireGuard, si è scoperto che l'implementazione di WireGuard proposta da FreeBSD era un pezzo di codice scadente, pieno di buffer overflow e che violava la GPL.

L'implementazione conteneva difetti catastrofici nel codice di crittografia, parte del protocollo WireGuard è stata omessa, si sono verificati errori che hanno portato al crash del kernel e all'elusione dei metodi di sicurezza e per i dati di input sono stati utilizzati buffer di dimensione fissa. La presenza di stub al posto dei controlli che restituiscono sempre "true", così come il debug dimenticato di printfs con l'output dei parametri utilizzati per la crittografia e l'uso della funzione sleep per prevenire condizioni di competizione dicono molto sulla qualità del codice.

Alcune parti del codice, come la funzione crypto_xor, sono state portate dall'implementazione WireGuard sviluppata per Linux, in violazione della licenza GPL. Di conseguenza, Jason Donenfield, insieme a Kyle Evans e Matt Dunwoodie (autore del port di WireGuard per OpenBSD), si è assunto il compito di rielaborare l'implementazione problematica e, nel giro di una settimana, ha sostituito completamente tutto il codice dello sviluppatore assunto da Netgate . La versione modificata è stata rilasciata come set separato di patch, inserito nel repository del progetto WireGuard e non è stata ancora inclusa in FreeBSD.

È interessante notare che inizialmente non c'erano segni di problemi; Netgate, che voleva poter utilizzare WireGuard nella distribuzione pfSense, ha assunto Matthew Macy, che è esperto nel kernel di FreeBSD e nello stack di rete, è coinvolto nella correzione di bug e ha esperienza nello sviluppo driver di rete per questo sistema operativo. A Macy è stato concesso un programma flessibile senza scadenze o controlli intermedi. Gli sviluppatori che hanno incontrato Macy mentre lavoravano su FreeBSD lo hanno descritto come un programmatore talentuoso e professionale che non ha commesso più errori degli altri e ha risposto adeguatamente alle critiche. La scarsa qualità del codice di implementazione WireGuard per FreeBSD è stata una sorpresa per loro.

Dopo 9 mesi di lavoro, Macy ha aggiunto la sua implementazione al ramo HEAD, che è stato utilizzato per formulare il rilascio di FreeBSD 13, lo scorso dicembre senza il completamento della peer review e dei test. Lo sviluppo è stato fatto senza comunicazione con gli sviluppatori dell'originale WireGuard e del Porte OpenBSD e NetBSD. A febbraio Netgate ha integrato WireGuard nella versione stabile di pfSense 2.5.0 e ha iniziato a fornire firewall basati su di esso. Dopo che i problemi sono stati identificati, il codice WireGuard è stato rimosso da pfSense.

Il codice aggiunto ha rivelato vulnerabilità critiche utilizzate negli exploit 0-day, ma inizialmente Netgate non ha riconosciuto l'esistenza di vulnerabilità e ha cercato di accusare lo sviluppatore dell'originale WireGuard di attacchi e pregiudizi, che hanno influito negativamente sulla sua reputazione. Lo sviluppatore del port inizialmente ha respinto le affermazioni sulla qualità del codice considerandole esagerate, ma dopo aver dimostrato gli errori, ha attirato l'attenzione sul fatto che il problema veramente importante è la mancanza di un'adeguata revisione della qualità del codice in FreeBSD, perché i problemi sono rimasti inosservati per molti mesi (I rappresentanti di Netgate hanno indicato che la revisione è stata lanciata pubblicamente nell'agosto 2020, ma i singoli sviluppatori di FreeBSD hanno notato che in Phabricator la revisione è stata chiusa da Macy senza completamento e con i commenti ignorati). Il Core Team di FreeBSD ha risposto all'incidente promettendo di modernizzare i propri processi di revisione del codice.

Matthew Macy, lo sviluppatore del problematico port di FreeBSD, ha commentato la situazione dicendo che ha commesso un grosso errore accettando l'incarico senza essere pronto a implementare il progetto. Macy spiega il risultato derivante dal burnout emotivo e la conseguenza dei problemi sorti a causa della sindrome post-Covid. Allo stesso tempo, Macy non ha trovato la determinazione ad abbandonare gli obblighi che aveva già assunto e ha cercato di portare a termine il progetto.

Le condizioni di Macy potrebbero anche essere state influenzate da una recente condanna al carcere che ha ricevuto per aver tentato illegalmente di sfrattare da una casa da lui acquistata gli inquilini che non erano disposti a trasferirsi volontariamente. Lui e la moglie, invece, hanno segato le travi del pavimento e fatto dei buchi nei pavimenti per rendere la casa inabitabile, e hanno anche cercato di intimidire i residenti, hanno fatto irruzione negli appartamenti occupati e hanno portato via le loro cose (l'azione è stata classificata come furto con scasso). Per evitare la responsabilità delle sue azioni, Macy e sua moglie fuggirono in Italia, ma furono estradati negli Stati Uniti e scontarono più di quattro anni di prigione.

Fonte: opennet.ru

Aggiungi un commento