Възстановен е кодът на UNIXv4, първата операционна система с ядро на езика C. Уязвимост в UNIXv4.

В края на миналата година по време на почистването в изчислителния център на Университета на Юта беше открит архивен магнитен лент с код на операционната система UNIXv4, която е разработена през 1973 година за компютрите PDP-11/45 и се смяташе за загубена. UNIXv4 продължава развитието на пуснатата година преди това операционна система UNIXv3, в която за първи път е използван езика C и неназовани канали. Особеността на UNIXv4 е, че ядрото е пренаписано от асемблер на езика C. Кодът на ядрото на UNIXv4 беше написан от Кен Томпсън, а устройствата — от Денис Ричи.

В края на декември 2025 година служителите на музея на историята на изчислителната техника успяха да намерят необходимото оборудване и да извлекат архивираната информация от лентата. За цифровизация на записания на лентата аналогов сигнал беше използван инструментарият readtape, а за декодиране на формата на архива бяха ангажирани разработки, създадени по време на възстановяването на архива с реализацията на редактора Emacs от Джеймс Гослинг.

Освен кода на UNIXv4 на лентата бяха намерени и изходните текстове на един от първите компилатори за езика C и интерпретатора на езика SNOBOL. По-късно кодът на UNIXv4 беше систематизиран и публикуван в GitHub под форма, подходяща за компилиране и стартиране в симулатора PDP-11. Кодът на UNIXv4 включва 61 хиляда реда, от които 27 хиляди на езика C, 33 хиляди на асемблер за PDP-11 и около хиляда — заглавни файлове.

Възстановен е кодът на UNIXv4, първата операционна система с ядро на езика C. Уязвимост в UNIXv4.

Един от изследователите по сигурността обърна внимание на утилитата „su“, предоставяна с UNIXv4. Тази утилита включваше по-малко от 50 реда код, инсталираше се с флага setuid-root и позволяваше стартирането на /bin/sh с правата на root при въвеждането на правилна парола. Кодът съдържаше уязвимост, която водеше до преливане на буфера поради копиране на въведената от потребителя парола в фиксиран 100-символен масив без проверка на размера на въвежданите данни.

Проблемата, която беше установена, коментира 93-годишният Дъглас Макилрой (Douglas McIlroy), част от екипа на оригиналните разработчици на Unix в Bell Labs, който предложи концепцията за немаркирани канали и създаде утилити като echo, spell, diff, sort, join и tr. Според Дъглас, преди появата на червея Морис през 1988 година, малко хора обръщали внимание на препълването на буферите. Добавянето на проверки за размера на ръчно въведените данни се смятало за ненужно усложняване на кода, а аварийните приключвания при препълване се възприемали като неуклюжа реакция на неправилни входни данни. С времето, проблемите с препълването, които възниквали при обработка на автоматично генерирани низове, започнали да се поправят, но за ръчния вход логиката била на ниво „кому може да му е нужно да въвежда твърде дълги низове ръчно“.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster