UNIXv4, esimese C keeles kirjutatud kerneliga operatsioonisüsteemi kood on taastatud. UNIXv4 turvaauku leidmine

Eelmise aasta lõpus leiti Utah'i Ülikooli arvutikeskuses koristamise käigus arhiivmagnetlint, millel oli UNIXv4 operatsioonisüsteemi kood, mis loodi 1973. aastal PDP-11/45 arvuti jaoks ja peeti kadunuks. UNIXv4 jätkas arendamist aasta varem välja antud UNIXv3 operatsioonisüsteemile, kus kasutati esmakordselt C-keelt ja määratlemata kanaleid. UNIXv4 omapäraks oli tuuma kirjutamine ümber assemblerkeelt C-keelde. UNIXv4 tuumakood kirjutati Ken Thompson'i poolt ja draiverid Dennis Ritchie poolt.

2025. aasta detsembri lõpus suutsid arvutitehnika ajaloo muuseumi töötajad leida vajaliku seadme ja välja tõmmata lintile salvestatud arhiiv. Lindile salvestatud analoogsignaali digiteerimiseks kasutati readtape tööriistu ja arhiivi formaadi dešifreerimiseks kasutati James Gosling'i loodud Emacsi redigeerija taastamise protsessis koostatud materjale.

Lisaks UNIXv4 koodile leiti lintilt ka ühe esimese C keele kompilaatori ja SNOBOL keele tõlgendi lähtekoodid. Hiljem viidi UNIXv4 kood korda ja avaldati GitHubis ehitamiseks ja PDP-11 simulaatoris käivitamiseks sobivas vormis. UNIXv4 kood sisaldab 61 tuhat rida, millest 27 tuhat on C keeles, 33 tuhat PDP-11 assembleris ja umbes tuhat — päisefailid.

UNIXv4, esimese C keeles kirjutatud kerneliga operatsioonisüsteemi kood on taastatud. UNIXv4 turvaauku leidmine

Üks turva-uuringu tegija tähelepanu köitis UNIXv4-s tarnitud utiliit «su». See utiliit sisaldas vähem kui 50 koodirida, paigaldati setuid-root lipuga ja võimaldas käivitada /bin/sh root õigustes õige parooli sisestamisel. Kood sisaldas haavatavust, mis viis puhverülevooluni, kuna kasutaja sisestatud parool kopeeriti fikseeritud 100-tähemärgiga massiivi, ilma sisestatud andmete suuruse kontrollimiseta.

93-aastane Douglas McIlroy, kes kuulus Unix'i algarendajate meeskonda Bell Labsis, kommenteeris tuvastatud probleemi. Just tema tõi välja nimetamata kanalite kontseptsiooni ning lõi sellised utiliidid nagu echo, spell, diff, sort, join ja tr. Douglase sõnul ei pööranud enne Morris'i ussi ilmumist 1988. aastal keegi bufferi ületäitumisele suurt tähelepanu. Käesolevalt sisestatud andmete suuruse kontrolli lisamist peeti üleliigseks koodiks ning ülevaatus vigade korral, mis põhjustasid programmide kukkumisi, nähti kui kohmakat reaktsiooni valeid sisendandmeid. Aja jooksul hakati automaatselt genereeritavate ridade töötlemise käigus esinevaid ülevaatusi parandama, kuid manuaalse sisendi puhul jäi loogika tasemele «kellele võiks vajamine omaette sisestada liiga pikki ridu?»

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster