Ripristinato il codice di UNIXv4, il primo sistema operativo con un kernel scritto in C. Vulnerabilità in UNIXv4

Alla fine dello scorso anno, durante le operazioni di pulizia nel centro di calcolo dell'Università dello Utah, è stata trovata una cassetta magnetica archiviata contenente il codice del sistema operativo UNIXv4, sviluppato nel 1973 per il computer PDP-11/45 e considerato perso. UNIXv4 ha continuato lo sviluppo del sistema operativo UNIXv3, rilasciato un anno prima, nel quale era stato utilizzato per la prima volta il linguaggio C e le pipe senza nome. 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 della storia del calcolo sono riusciti a trovare l'attrezzatura necessaria e a estrarre l'archivio salvato sulla cassetta. Per la digitalizzazione del segnale analogico registrato sulla cassetta è stato utilizzato l'insieme di strumenti readtape, mentre per la decodifica del formato dell'archivio sono stati impiegati gli sviluppi realizzati durante il processo di recupero dell'archivio con l'implementazione dell'editor Emacs di James Gosling.

Oltre al codice UNIXv4, sono stati trovati anche i sorgenti di uno dei primi compilatori per il linguaggio C e di un interprete per il linguaggio SNOBOL. Successivamente, il codice UNIXv4 è stato sistemato e pubblicato su GitHub in una forma adatta per essere compilato e eseguito in un simulatore PDP-11. Il codice UNIXv4 comprende 61.000 righe, di cui 27.000 scritte in C, 33.000 in assembly per PDP-11 e circa 1.000 file di intestazione.

Ripristinato il codice di UNIXv4, il primo sistema operativo con un kernel scritto in C. Vulnerabilità in UNIXv4

Uno dei ricercatori di sicurezza ha notato l'utilità "su" inclusa in UNIXv4. Questa utilità conteneva meno di 50 righe di codice, veniva installata con il flag setuid-root e permetteva di lanciare /bin/sh con i diritti di root inserendo la password corretta. Il codice presentava una vulnerabilità che portava a un overflow del buffer a causa della copia della password inserita dall'utente in un array fisso di 100 caratteri senza controllare la dimensione dei dati immessi.

La questione è stata commentata da Douglas McIlroy, 93 anni, membro del team di sviluppatori originali di Unix presso Bell Labs, che ha proposto il concetto di canali anonimi e creato utility come echo, spell, diff, sort, join e tr. Secondo Douglas, prima dell'arrivo del worm di Morris nel 1988, pochi prestavano attenzione agli overflow di buffer. L'aggiunta di controlli sulle dimensioni dei dati inseriti manualmente era vista come un'aggiunta di codice superfluo, e il crash in caso di overflow era percepito come una reazione goffa a dati errati. Nel tempo, gli overflow che si verificavano durante l'elaborazione di stringhe generate automaticamente sono stati corretti, ma per l'input manuale la logica era a un livello del tipo "chi mai potrebbe aver bisogno di inserire manualmente stringhe troppo lunghe?"

Fonte: opennet.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster