Bola obnovená UNIXv4, prvá OS s jadrom napísaným v jazyku C. Zraniteľnosť v UNIXv4

Na konci minulého roku při úklidu v datovém centru Univerzity Utahu byla nalezena archivační magnetická páska s kódem operačního systému UNIXv4, který byl vyvinut v roce 1973 pro počítač PDP-11/45 a považoval se za ztracený. UNIXv4 pokračoval ve vývoji operačního systému UNIXv3, který byl vydán o rok dříve a v němž byl poprvé použit jazyk C a anonymní kanály. Charakteristickým rysem UNIXv4 bylo přeprogramování jádra z assembleru do jazyka C. Kód jádra UNIXv4 napsal Ken Thompson, zatímco ovladače napsal Dennis Ritchie.

Na konci prosince 2025 byli zaměstnanci muzea historie výpočetní techniky schopni najít potřebné vybavení a extrahovat archív uložený na pásce. Pro digitalizaci analogového signálu uloženého na pásce byl použit nástroj readtape a pro dekódování formátu archivu byly využity metodiky vyvinuté při obnově archivu s implementací editora Emacs od Jamese Goslinga.

Kromě kódu UNIXv4 byla na pásce také nalezena zdrojová texy jednoho z prvních kompilátorů pro jazyk C a interpret jazyka SNOBOL. Později byl kód UNIXv4 upraven a zveřejněn na GitHubu ve formě, která je vhodná pro sestavení a spuštění v simulátoru PDP-11. Kód UNIXv4 zahrnuje 61 tisíc řádků, z nichž 27 tisíc je napsaných v jazyce C, 33 tisíc v assembleru pro PDP-11 a přibližně tisíc — hlavičkové soubory.

Bola obnovená UNIXv4, prvá OS s jadrom napísaným v jazyku C. Zraniteľnosť v UNIXv4

Jeden z výzkumníků v oblasti bezpečnosti si všiml utility „su“, která byla dodávána s UNIXv4. Tato utilita obsahovala méně než 50 řádků kódu, instalovala se s flagem setuid-root a umožnila spustit /bin/sh s právy root při zadání správného hesla. Kód obsahoval zranitelnost, která vedla k přetečení bufferu kvůli kopírování uživatelského hesla do pevného 100-znakového pole bez kontroly velikosti zadávaných dat.

Problému, ktorý bol odhalený, komentoval 93-ročný Douglas McIlroy, člen tímu pôvodných vývojárov Unixu v Bell Labs, ktorý navrhol koncept anonymných kanálov a vytvoril nástroje ako echo, spell, diff, sort, join a tr. Podľa Douglasa si do vzniku červa Morrisa v roku 1988 málokto všímal pretečenia vyrovnávacej pamäte. Pridanie kontrolných prvkov pre ručne zadané údaje sa považovalo za zbytočné pridávanie kódu, a núdzové ukončenie pri pretečení sa vnímalo ako nemotorná forma reakcie na nesprávne vstupy. V priebehu času začali opravovať pretečenia, ktoré vznikali pri spracovaní automaticky generovaných reťazcov, ale logika pre ručný vstup bola na úrovni „komu by sa mohlo chcieť ručne zadávať príliš dlhé reťazce“.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster