Dalla base di codice su cui è stato sviluppato il rilascio di FreeBSD 13, è stato rimosso con scandalo il codice per l'implementazione del protocollo VPN WireGuard, realizzato su commissione dell'azienda Netgate senza consultazioni con gli sviluppatori originali di WireGuard, ed è già stato incluso nelle versioni stabili della distribuzione pfSense. Dopo la revisione del codice da parte di Jason Donenfeld, autore del WireGuard originale, è emerso che l'implementazione proposta per FreeBSD rappresentava un esempio di codice scadente, caratterizzato da overflow di buffer e violazioni della licenza GPL.
Nell'implementazione sono stati riscontrati errori catastrofici nel codice crittografico, è stata omessa parte del protocollo WireGuard, erano presenti bug che portavano al crash del kernel e all'aggiramento dei metodi di protezione, si utilizzavano buffer di dimensioni fisse per i dati in ingresso. La qualità del codice è evidenziata dalla presenza di stub al posto delle verifiche, che restituiscono sempre il valore "true", così come da printf di debug dimenticati che stampano parametri utilizzati per la crittografia e dall'uso della funzione sleep per prevenire condizioni di race.
Alcune parti del codice, come la funzione crypto_xor, sono state trasferite dalla realizzazione di WireGuard sviluppata per Linux in violazione della licenza GPL. Di conseguenza, Jason Donenfeld insieme a Kyle Evans e Matt Dunwoodie, autore del porting di WireGuard per OpenBSD, hanno iniziato a rifare l'implementazione problematica e nel giro di una settimana hanno completamente sostituito tutto il codice dello sviluppatore assunto da Netgate. La versione rielaborata è stata rilasciata come un insieme separato di patch, pubblicate nel repository del progetto WireGuard e al momento non è stata inclusa in FreeBSD.
È interessante notare che inizialmente nulla preannunciava guai: l'azienda Netgate, che desiderava implementare WireGuard nella distribuzione pfSense, ha assunto Matthew Macy, un esperto nel kernel e nello stack di rete di FreeBSD, coinvolto nella correzione di bug e con esperienza nello sviluppo di driver di rete per questo sistema operativo. A Macy è stato concesso un programma di lavoro flessibile senza scadenze e verifiche intermedie. Gli sviluppatori che hanno collaborato con Macy durante il lavoro su FreeBSD lo hanno descritto come un programmatore talentuoso e professionale, che commetteva non più errori degli altri e rispondeva adeguatamente alle critiche. La scarsa qualità del codice dell'implementazione di WireGuard per FreeBSD è stata una sorpresa per loro.
Dopo 9 mesi di lavoro, a dicembre dello scorso anno, Macy ha aggiunto la sua implementazione nel ramo HEAD, utilizzato per la creazione del rilascio FreeBSD 13, senza completare la revisione e il collaudo da parte di partecipanti esterni. Lo sviluppo è stato portato avanti senza contatti con gli sviluppatori originali di WireGuard e dei port per OpenBSD e NetBSD. A febbraio, Netgate ha integrato WireGuard nella versione stabile pfSense 2.5.0 e ha iniziato la distribuzione nei firewall basati su di esso. Dopo l'emergere di problemi, il codice di WireGuard è stato rimosso da pfSense.
Nel codice aggiunto sono state identificate vulnerabilità critiche, sfruttate in exploit 0-day, ma inizialmente Netgate non ha riconosciuto l'esistenza di tali vulnerabilità e ha tentato di incolpare lo sviluppatore del WireGuard originale per attacchi e parzialità, danneggiando la sua reputazione. Lo sviluppatore del port inizialmente ha respinto le critiche sulla qualità del codice, ritenendole esagerate, ma dopo la dimostrazione degli errori ha riconosciuto che la vera questione era l'assenza di una revisione adeguata della qualità del codice in FreeBSD, poiché i problemi erano rimasti inosservati per molti mesi (i rappresentanti di Netgate hanno affermato che la revisione pubblica era iniziata già nell'agosto 2020, ma alcuni sviluppatori di FreeBSD hanno evidenziato che la revisione su Phabricator era stata chiusa da Macy senza essere conclusa e ignorando i commenti). Il FreeBSD Core Team ha risposto all'incidente promettendo di aggiornare i processi di controllo del codice.
Matthew Maisy, sviluppatore del problematico porto per FreeBSD, ha commentato la situazione dicendo di aver commesso un grosso errore nel prendersi la responsabilità del lavoro senza essere pronto ad affrontare questo progetto. Il risultato ottenuto da Maisy è spiegato da un esaurimento emotivo e da problemi sorti a causa della sindrome post-COVID. Tuttavia, Maisy non ha trovato il coraggio di rinunciare agli impegni già presi e ha cercato di portare a termine il progetto.
Anche il recente intervento carcerario di Maisy potrebbe aver influito sul suo stato mentale, avendo ricevuto una condanna per azioni illegali nel tentativo di sfrattare gli inquilini dalla casa acquistata da lui, che non volevano andarsene volontariamente. Insieme a sua moglie, hanno segato le travi del soffitto e creato aperture nei pavimenti per rendere l'immobile inabitabile, oltre a cercare di intimorire gli inquilini, forzando l'ingresso in appartamenti occupati e portando via i beni presenti (l'azione è stata qualificata come furto con scasso). Per evitare conseguenze legali per le sue azioni, Maisy e sua moglie sono fuggiti in Italia, ma sono stati estradati negli Stati Uniti, dove hanno scontato oltre quattro anni di carcere.
Fonte: opennet.ru
