Самые громкие технологические ошибки XX века: от мотылька до ракеты

Человеку свойственно ошибаться, и эта истина распространяется на все сферы деятельности, включая создание сложных технологических систем. В этой статье мы начинаем цикл, посвящённый самым знаковым и эпичным программным и аппаратным сбоям, которые вошли в историю как ярчайшие примеры «багов». Эти истории — не просто курьёзы, а важные уроки, демонстрирующие, к каким последствиям может привести, казалось бы, незначительная ошибка.

Анализ чужих промахов — лучший способ избежать собственных. Поэтому изучение этих исторических казусов остаётся актуальным для всех, кто связан с разработкой, тестированием и эксплуатацией сложных систем.

? Происхождение термина «Баг»

Термин «баг» (от английского «bug» — жук, насекомое) прочно вошёл в лексикон IT-специалистов, обозначая непредвиденную ошибку в программе или устройстве. Интересно, что его популяризатором стал не кто иной, как знаменитый американский изобретатель Томас Эдисон.

В 1877 году, столкнувшись с необъяснимой неисправностью своего фонографа, Эдисон предположил, что внутрь механизма могло пробраться насекомое. Хотя в тот раз жука не нашли, изобретатель начал использовать это слово для описания любых технических неполадок, тем самым положив начало современной традиции.

? Первый документально подтверждённый «Баг»

Настоящий Bug

Наше повествование начнётся с самого, что ни на есть, буквального «бага». 9 сентября 1945 года в Гарвардском университете при тестировании электромеханического компьютера Mark II Aiken Relay Calculator произошёл сбой. Причиной оказался обычный мотылёк, который залетел между контактами реле, вызвав короткое замыкание.

Насекомое было аккуратно извлечено и вклеено в журнал с сопроводительной надписью: «Первый обнаруженный случай нахождения жука (бага) в компьютере». Этот забавный инцидент не только дал название целому классу проблем, но и лёг в основу профессионального праздника — Дня тестировщика, который отмечается 9 сентября.

? Трагическая ошибка: Therac-25

Therac-25

В середине 1980-х годов произошла серия трагических инцидентов, связанных с аппаратом для лучевой терапии Therac-25. Этот случай наглядно показал, к чему может привести излишняя уверенность в программных защитах. В более ранних моделях аппаратов использовались механические предохранители, которые физически блокировали подачу опасной дозы излучения. В Therac-25 их заменили программными алгоритмами.

Ошибка в коде приводила к редкому, но фатальному сценарию: при быстром вводе данных оператором происходило арифметическое переполнение. Программа не могла корректно обработать слишком большое число, и аппарат, вместо безопасной дозы, облучал пациента лучом, в сотни раз превышавшим норму. Известно как минимум о шести таких случаях, четыре из которых закончились летальным исходом.

? Каскадный сбой: падение сети AT&T

Штаб-квартира AT&T

15 января 1990 года миллионы американцев остались без телефонной связи из-за каскадного сбоя в сети AT&T. Причиной стала ошибка в новой версии программного обеспечения для междугородних коммутаторов. Баг заключался в том, что если коммутатор получал от соседа специфический сигнал о неисправности, он не обрабатывал его, а просто перезагружался, отправляя такой же сигнал дальше.

Цепную реакцию запустил один из 114 коммутаторов, который имел механическое повреждение. В результате за девять часов работы сети AT&T на востоке США была практически парализована: более 60 000 человек потеряли связь. Ущерб для компании составил около 60 миллионов долларов, а главное — был серьёзно подорван доверие клиентов.

? Дорогостоящая оплошность: Ariane 5

Самый дорогой Баг в истории

Запуск европейской ракеты-носителя Ariane 5 4 июня 1996 года закончился катастрофой всего через 40 секунд после старта. Ракета стоимостью в полмиллиарда долларов самоуничтожилась из-за ошибки в бортовом программном обеспечении. Это, пожалуй, самый дорогой программный баг в истории.

Инженеры решили сэкономить время и использовали для новой, более быстрой ракеты код из её предшественницы, Ariane 4. Однако они не учли, что из-за иной траектории разгона новые данные о скорости могли вызвать переполнение 16-битной переменной. Тестирование этого сценария проведено не было. Когда переполнение произошло, основная система вышла из строя, а её резервная копия, скопированная с того же старого кода, немедленно повторила ту же ошибку. Десятилетняя подготовка и 7 миллиардов долларов инвестиций буквально взлетели на воздух.

? Сетевая атака: Ping of Death

Ping of Death

В 1990-х годах широкое распространение получила сетевая атака под названием «Ping of Death» (дословно — «пинг смерти»). Хотя это скорее уязвимость, чем классический баг, она достойна упоминания в этом ряду. Атака эксплуатировала недостаток в реализации сетевого протокола IPv4 во многих операционных системах того времени.

Стандарт устанавливал максимальный размер IP-пакета в 65 535 байт. Злоумышленники отправляли на машину-жертву специально сформированный пакет, размер которого превышал этот лимит. Неспособность системы корректно обработать такой «неправильный» пакет приводила к переполнению буфера и полному зависанию компьютера. К концу десятилетия производители исправили эту уязвимость в своих системах, и атака утратила актуальность.

На этом первая часть нашего обзора завершается. Эти истории — суровое напоминание о том, насколько критичны тщательное тестирование, учёт всех возможных сценариев и ответственное отношение к повторному использованию кода. Продолжение следует.

Еще по теме здесь: История.

Источник: Популярнейшие Баги столетия ║ч.1║.