Новости 19126 год, PDP-11 и призрак Y2K. Как баг из 1970-х дожил до наших дней и нашёлся в эмуляторе

NewsMaker

I'm just a script
Премиум
27,603
46
8 Ноя 2022
Разработчик нашёл в старом коде BSD ошибку синхронизации времени.


6xdbbfca0wsftyntxmorjc8edlalmwnx.jpg

Баг Y2K снова нашёлся в старом коде, хотя до современного интернета находке почти нет дела. Нидерландский разработчик Фолкерт ван Хёсден обнаружил ошибку в сетевой синхронизации времени BSD 2.11 для PDP-11/70 , компьютера из середины 1970-х.

Ван Хёсден работал над эмулятором семейства Programmed Data Processor , или PDP. Мини-компьютеры этой серии выпускались с 1950-х до 1990-х годов. Во время разработки программист добавил поддержку устройства Precision Standard Time, Inc. от закрывшегося производителя Traconex. Приёмник PSTI принимал сигналы точного времени от коротковолновых радиостанций Национального института стандартов и технологий США и передавал данные системе.

Ошибка нашлась в фоновой службе Network Time Protocol из BSD 2.11. После корректного вывода эмулируемого PSTI-приёмника система внезапно показывала год 19126. Разница между временем в эмуляторе PDP и эмулируемым устройством PSTI получалась чрезмерной: примерно 17 тысяч лет.

Разработчик рассказал, что пишет эмулятор PDP и давно интересуется тем, как компьютеры хранят и синхронизируют время. Эти две темы пересеклись во время разбора реализации NTP на PDP. Когда ван Хёсден добавил эмуляцию PSTI-устройства, в выводе появился год 19126.

Практической угрозы для современных сетей баг не несёт. Ошибка относится к PDP-11/70, системе 1975 года, требует редкого приёмника PSTI и специальной настройки старого окружения. Без набора довольно экзотических условий сбой просто не проявится.

Тем не менее ван Хёсден написал исправление , которое возвращает синхронизацию времени в норму. Находка интересна не масштабом риска, а самим фактом: спустя больше 25 лет после массовой борьбы с Y2K в старом коде всё ещё можно найти ошибку, связанную с обработкой года.

Проверить старую систему можно без музейного оборудования. Эмулятор PDP-11/70 от ван Хёсдена запускает примерно 50-летнюю архитектуру и BSD 2.11 на скромном железе вроде Raspberry Pi Pico. Оригинальный PDP-11/70 работал на 16-битном процессоре с частотой 5 МГц и обходился 4 МБ оперативной памяти.

Код эмулятора доступен на GitHub . Тем, кто решит поэкспериментировать с древней синхронизацией времени, разработчик уже оставил патч. Без исправления старый NTP-код может внезапно отправить систему не в 2000 год, а сразу в 19126-й.
 
Источник новости
www.securitylab.ru

Похожие темы