Byl obnoven kód UNIXv4, prvního operačního systému s jádrem napsaným v jazyce C. Zranitelnost v UNIXv4

Na konci minulého roku byla během úklidu v počítačovém centru Univerzity Utah objevena archivní magnetická páska s kódem operačního systému UNIXv4, který byl vyvinut v roce 1973 pro počítače 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 ve kterém byl poprvé použit jazyk C a anonymní kanály. Rys UNIXv4 spočíval v přepsání jádra z assembleru na jazyk C. Kód jádra UNIXv4 napsal Ken Thompson a ovladače Dennis Ritchie.

Na konci prosince 2025 se zaměstnancům muzea historie výpočetní techniky podařilo najít potřebné vybavení a extrahovat archiv uložený na pásce. Pro digitalizaci analogového signálu nahraného na pásku byl použit nástroj readtape a pro dekódování formátu archivu byly využity poznatky vytvořené během obnovy archivu s implementací editoru Emacs od Jamese Goslinga.

Kromě kódu UNIXv4 byly na pásce nalezeny také zdrojové kódy jednoho z prvních kompilátorů pro jazyk C a interpretr jazyka SNOBOL. Později byl kód UNIXv4 upraven a publikován na GitHubu v podobě vhodné pro kompilaci a spuštění v simulátoru PDP-11. Kód UNIXv4 obsahuje 61 tisíc řádků, z nichž 27 tisíc je napsáno v jazyce C, 33 tisíc v assembleru pro PDP-11 a přibližně tisíc — záhlaví.

Byl obnoven kód UNIXv4, prvního operačního systému s jádrem napsaným v jazyce C. Zranitelnost 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, byla instalována s flagem setuid-root a umožnila spustit /bin/sh s právy roota po zadání správného hesla. Kód obsahoval zranitelnost vedoucí k přetečení bufferu kvůli zkopírování uživatelského hesla do pevně stanoveného 100-znakového pole bez kontroly velikosti zadaných dat.

93letý Douglas McIlroy, který byl členem týmu původních vývojářů Unixu v Bell Labs a navrhl koncept anonymních kanálů a vytvořil nástroje jako echo, spell, diff, sort, join a tr, komentoval zjištěný problém. Podle Douglase si před vznikem červa Morris v roce 1988 málokdo všímal přetečení bufferů. Přidání kontrol velikosti ručně zadávaných dat bylo považováno za přidání zbytečného kódu, a havarijní ukončení při přetečení se vnímalo jako neohrabaná reakce na neplatná vstupní data. Postupem času byla přetečení vznikající při zpracování automaticky generovaných řetězců opravována, ale pro ruční vstup byla logika na úrovni „komu může přijít na mysl, že by ručně zadával příliš dlouhé řetězce“.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster