Tavaly év végén az Utah-i Egyetem számítástechnikai központjában felfedeztek egy archív mágneses szalagot, amely az 1973-ban a PDP-11/45 számítógéphez kifejlesztett UNIXv4 operációs rendszer forráskódját tartalmazta, és amelyet elveszettnek hittek. A UNIXv4 a korábban, egy évvel korábban kiadott UNIXv3 operációs rendszer fejlesztését folytatta, amelyben először használták a C nyelvet és nev nélküli csatornákat. A UNIXv4 jellemzője a mag átkonvertálása assembler nyelvről C nyelvre. A UNIXv4 magját Ken Thompson írta, míg a drivereket Dennis Ritchie.
2025 december végén a számítástechnika történetével foglalkozó múzeum munkatársai sikeresen megtalálták a szükséges berendezéseket és ki tudták nyerni a szalagon tárolt archívumot. Az analóg jel szalagról való digitalizálásához a readtape eszközkészletet használták, míg az archívum formátumának dekódolásához James Gosling Emacs szerkesztőjének helyreállítási folyamatában szerzett tapasztalatokat alkalmazták.
A UNIXv4 kódja mellett a szalagon megtalálták a C nyelv egyik első fordítójának és a SNOBOL nyelv értelmezőjének forráskódját is. Később a UNIXv4 kódját rendbe tették és a GitHubon publikálták, olyan formában, amely alkalmas volt a PDP-11 szimulátorban való összeszerelésre és futtatásra. A UNIXv4 kódja 61 ezer sorból áll, ebből 27 ezer C nyelven, 33 ezer assembler nyelven a PDP-11-hez és körülbelül ezer fejléc fájl.

Az egyik biztonsági kutató felfigyelt az UNIXv4 rendszerhez mellékelt „su” segédprogramra. Ez a segédprogram kevesebb mint 50 sor kódot tartalmazott, setuid-root zászlóval telepítve, és lehetővé tette a /bin/sh root jogokkal való futtatását, ha a felhasználó helyes jelszót adott meg. A kód tartalmazott egy sérülékenységet, amely a jelszó bemásolásával egy fix méretű, 100 karakteres tömbbe okozott puffertúlcsordulást, anélkül hogy ellenőrizte volna a bemeneti adatok méretét.
A felfedezett problémáról Douglas McIlroy (93 éves), aki a Bell Labs eredeti Unix fejlesztői csapatának tagja volt, megjegyzést tett, ő javasolta a névtelen csatornák koncepcióját és készítette el az olyan segédprogramokat, mint az echo, spell, diff, sort, join és tr. Douglas szerint 1988 előtt, a Morris féle féreg megjelenése előtt, kevesen figyeltek a pufferek túlcsordulására. A kézzel bevitt adatok méretének ellenőrzését felesleges kód hozzáadásának tekintették, és a túlcsordulás miatti összeomlást ügyetlen reakciónak tartották a helytelen bemenetekre. Idővel a automatikusan generált karakterláncok feldolgozása során fellépő túlcsordulásokat elkezdték javítani, de a kézi bevitel esetén a logika azon a szinten volt, hogy "kinek szükséges kézzel túl hosszú karakterláncokat bevinnie?"
Forrás: opennet.ru
