Dalla base di codice che ha generato il rilascio di FreeBSD 13, è stato rimosso con scandalo il codice della realizzazione del protocollo VPN WireGuard, sviluppato su commissione di Netgate senza consultare gli sviluppatori dell'originale WireGuard, già incluso nelle versioni stabili della distribuzione pfSense. Dopo un controllo del codice da parte di Jason A. Donenfeld, autore dell'originale WireGuard, è emerso che la realizzazione di WireGuard per FreeBSD rappresentava un campione di codice scadente, pieno di overflow di buffer e in violazione della licenza GPL.
Nell'implementazione sono stati riscontrati gravi difetti nel codice crittografico, alcune parti del protocollo WireGuard erano state omesse, e c'erano errori che portavano a crash del kernel e bypass dei metodi di protezione. Per i dati in entrata venivano utilizzati buffer di dimensione fissa. La qualità del codice parla chiaro, evidenziando la presenza di stub anziché controlli, che restituiscono sempre il valore "true", oltre a printf di debug dimenticati che mostrano i parametri utilizzati per la crittografia e l'uso della funzione sleep per prevenire condizioni di competizione.
Alcune parti del codice, come la funzione crypto_xor, sono state trasferite dalla implementazione 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) si sono dedicati alla ristrutturazione dell'implementazione problematica, sostituendo completamente il codice dello sviluppatore assunto da Netgate in una settimana. La versione revisionata è stata pubblicata come un set separato di patch, rilasciato nel repository del progetto WireGuard e non è ancora inclusa in FreeBSD.
È interessante notare che inizialmente nulla preannunciava problemi; l'azienda Netgate, desiderosa di implementare WireGuard nella distribuzione pfSense, ha assunto Matthew Macy, esperto nel kernel e nello stack di rete FreeBSD, che ha partecipato alla correzione di bug ed ha esperienza nello sviluppo di driver di rete per questo sistema operativo. A Macy è stata concessa una libertà totale nei tempi, senza scadenze né verifiche intermedie. Gli sviluppatori che hanno collaborato con Macy su FreeBSD lo hanno descritto come un programmatore di talento e professionale, che commette quanto meno errori rispetto ad altri e reagisce in modo adeguato alle critiche. La scarsa qualità del codice di implementazione di WireGuard per FreeBSD è stata una sorpresa per loro.
Dopo 9 mesi di lavoro, lo scorso dicembre, Maysi ha aggiunto la sua implementazione nella branch HEAD senza completare la revisione e il collaudo da parte di partecipanti esterni. Questa branch è stata utilizzata per il rilascio di FreeBSD 13. Lo sviluppo è stato effettuato senza collaborazione con gli sviluppatori originali di WireGuard e le sue porte per OpenBSD e NetBSD. A febbraio, Netgate ha integrato WireGuard nel rilascio stabile di pfSense 2.5.0 e ha iniziato a fornirlo nei firewall basati su di esso. Dopo aver identificato dei problemi, il codice di WireGuard è stato rimosso da pfSense.
Nel codice aggiunto sono state rilevate vulnerabilità critiche, che sono state sfruttate in exploit 0-day, ma inizialmente Netgate non ha riconosciuto la presenza delle vulnerabilità e ha cercato di accusare lo sviluppatore originale di WireGuard di attacchi e parzialità, il che ha avuto un impatto negativo sulla sua reputazione. All'inizio, lo sviluppatore del porting respingeva le accuse riguardanti la qualità del codice considerandole esagerate, ma dopo che sono stati dimostrati gli errori, ha riconosciuto che un problema realmente importante era l'assenza di una adeguata revisione della qualità del codice in FreeBSD, poiché i problemi erano rimasti inosservati per molti mesi (i rappresentanti di Netgate hanno indicato che la revisione pubblica era stata avviata già nell'agosto 2020, ma alcuni sviluppatori di FreeBSD hanno notato che in Phabricator la revisione era stata chiusa da Meisi senza essere completata e ignorando i commenti). Il FreeBSD Core Team ha risposto all'incidente promettendo di modernizzare i processi di controllo del codice.
Matthew Maisey, sviluppatore del porto problematico per FreeBSD, ha commentato la situazione dicendo di aver commesso un grande errore ad affrontare il lavoro senza essere pronto a portare a termine il progetto. Il risultato ottenuto è spiegato da Maisey come frutto di esaurimento emotivo e di problemi emersi a causa della sindrome post-COVID. Tuttavia, Maisey non ha trovato il coraggio di rinunciare agli impegni già presi e ha cercato di portare a termine il progetto.
La condizione di Maisey potrebbe essere stata influenzata anche da una recente pena detentiva che ha ricevuto per atti illeciti nel tentativo di sfrattare gli inquilini dalla casa da lui acquistata, che non volevano andare via volontariamente. Insieme a sua moglie hanno segato le travi del soffitto e creato aperture nei pavimenti per rendere l'abitazione inabitabile, e hanno tentato di intimidire gli inquilini, forzando le porte degli appartamenti occupati e portando via le cose esistenti (l'azione è stata qualificata come furto con scasso). Per sfuggire alla responsabilità delle azioni commesse, Maisey e sua moglie sono fuggiti in Italia, ma sono stati estradati negli Stati Uniti e hanno scontato oltre quattro anni di carcere.
Fonte: opennet.ru
