Alla fine dello scorso anno, durante la pulizia del centro di calcolo dell'Università dello Utah, è stata trovata una cassetta magnetica storica contenente il codice del sistema operativo UNIXv4, sviluppato nel 1973 per il computer PDP-11/45 e considerato perduto. UNIXv4 ha continuato lo sviluppo del sistema operativo UNIXv3, rilasciato un anno prima, che ha utilizzato per la prima volta il linguaggio C e canali anonimi. Una delle caratteristiche di UNIXv4 è stata la riscrittura del kernel dall'assembly al linguaggio C. Il codice del kernel di UNIXv4 è stato scritto da Ken Thompson, mentre i driver sono stati realizzati da Dennis Ritchie.
Alla fine di dicembre 2025, i membri del museo di storia della tecnologia informatica sono riusciti a trovare l'attrezzatura necessaria e a estrarre l'archivio conservato sulla cassetta. Per la digitalizzazione del segnale analogico registrato sulla cassetta è stato utilizzato lo strumento readtape, mentre per la decodifica del formato dell'archivio sono state impiegate tecnologie sviluppate durante il processo di recupero dell'archivio con l'implementazione dell'editor Emacs di James Gosling.
Oltre al codice UNIXv4, sulla cassetta sono stati trovati anche i codici sorgente di uno dei primi compilatori per il linguaggio C e di un interprete per il linguaggio SNOBOL. Successivamente, il codice di UNIXv4 è stato riordinato e pubblicato su GitHub in una forma idonea per la compilazione e l'esecuzione nel simulatore PDP-11. Il codice di UNIXv4 comprende 61.000 righe, di cui 27.000 in linguaggio C, 33.000 in assembly per PDP-11 e circa 1.000 file header.

Uno dei ricercatori sulla sicurezza ha notato l'utilità «su» fornita con UNIXv4. Questa utilità conteneva meno di 50 righe di codice, veniva installata con il flag setuid-root e permetteva di eseguire /bin/sh con privilegi di root inserendo la password corretta. Il codice conteneva una vulnerabilità che portava a un overflow del buffer a causa della copia della password fornita dall'utente in un array fisso di 100 caratteri senza verificare la dimensione dei dati inseriti.
Il 93enne Douglas McIlroy, membro del team degli sviluppatori originali di Unix presso i Bell Labs, che ha proposto il concetto di canali anonimi e creato utility come echo, spell, diff, sort, join e tr, ha commentato il problema emerso. Secondo Douglas, prima della comparsa del worm di Morris nel 1988, poche persone prestavano attenzione agli overflow del buffer. L'aggiunta di controlli sulla dimensione dei dati immessi manualmente è stata vista come extra codice, e il termine della sessione in caso di overflow era considerato una forma impacciata di risposta ai dati di input errati. Col tempo, gli overflow che si verificavano durante l'elaborazione di stringhe generate automaticamente hanno iniziato a essere corretti, ma per l'input manuale la logica era a livello di "chi potrebbe aver bisogno di inserire manualmente stringhe troppo lunghe?
Fonte: opennet.ru
