La sfârșitul anului trecut, în timpul curățeniei din centrul de calcul al Universității Utah, a fost descoperit un bandă magnetică arhivală care conținea codul sistemului de operare UNIXv4, dezvoltat în 1973 pentru computerul PDP-11/45 și considerat pierdut. UNIXv4 a continuat dezvoltarea sistemului de operare UNIXv3, lansat cu un an înainte, în care a fost folosit pentru prima oară limbajul C și canale fără nume. O caracteristică a UNIXv4 a fost rescrierea nucleului din limbajul de asamblare în limbajul C. Codul nucleului UNIXv4 a fost scris de Ken Thompson, iar driverele de Dennis Ritchie.
La sfârșitul lunii decembrie 2025, angajații muzeului istoriei calculatoarelor au reușit să găsească echipamentul necesar și să extragă arhiva salvată pe bandă. Pentru digitizarea semnalului analogic înregistrat pe bandă a fost utilizată uneltele readtape, iar pentru decodificarea formatului arhivei au fost folosite dezvoltările create în cadrul restaurării arhivei cu implementarea editorului Emacs de către James Gosling.
Pe lângă codul UNIXv4, pe bandă au fost găsite și codurile sursă ale unuia dintre primele compilatoare pentru limbajul C și al interpretului limbajului SNOBOL. Ulterior, codul UNIXv4 a fost curățat și publicat pe GitHub într-o formă adecvată pentru a fi compilat și rulat în simulatorul PDP-11. Codul UNIXv4 include 61 de mii de linii, dintre care 27 de mii în limbajul C, 33 de mii în asamblare pentru PDP-11 și aproximativ o mie de fișiere de antet.

Unul dintre cercetătorii în securitate a remarcat utilitarul „su”, livrat împreună cu UNIXv4. Acest utilitar conținea mai puțin de 50 de linii de cod, era instalat cu flag-ul setuid-root și permitea rularea /bin/sh cu privilegii root la introducerea parolei corecte. Codul conținea o vulnerabilitate care ducea la overflow de buffer din cauza copierii parolei introduse de utilizator într-un tablou fix de 100 de caractere fără a verifica dimensiunea datelor introduse.
Problema identificată a fost comentată de Douglas McIlroy, în vârstă de 93 de ani, care a făcut parte din echipa inițială de dezvoltare Unix la Bell Labs, propunând conceptul de canale fără nume și creând utilitare precum echo, spell, diff, sort, join și tr. Potrivit lui Douglas, până la apariția viermilor lui Morris în 1988, puțini au acordat atenție depășirilor de buffer. Adăugarea verificărilor pentru dimensiunea datelor introduse manual a fost considerată ca o adăugare inutilă de cod, iar închiderea bruscă în caz de depășire era percepută ca o formă stângace de a reacționa la datele de intrare incorecte. De-a lungul timpului, depășirile care apăreau în urma procesării șirurilor generate automat au început să fie corectate, dar pentru introducerea manuală logica era la nivelul „cine ar avea nevoie să introducă manual șiruri prea lungi”.
Sursa: opennet.ro
