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

«Все баги в программном обеспечении — это недокументированные фичи» © программисты. Чаще всего зависший сайт или игра не несут угрозы здоровью и не приводят к серьезным финансовым потерям. Но есть программы, ошибки в которых могут стать причиной колоссальных убытков.
Маринер-1
Mars Climate Orbiter
«Червь Морриса»
Knight Capital
Первый Pentium комом
Ariane 5
Mt.Gox
«Проблема 2000»
Маринер-1
Mars Climate Orbiter
«Червь Морриса»
Knight Capital
Первый Pentium комом
Ariane 5
Mt.Gox
«Проблема 2000»
Еще

Во времена «холодной войны» одна из таких ошибок могла и вовсе привести к началу Третьей мировой, но предотвратить падение цивилизации сумел всего один человек — Станислав Евграфович Петров. Благодаря ему Земля не покрыта пеплом ядерного огня, а у нас есть возможно рассказать о самых эпичных ошибках программистов, приведших к печальным последствиям.

Маринер-1 — самый дорогой дефис в истории

Запуск Маринера-1 / Wikimedia / NASA
Запуск Маринера-1 / Wikimedia / NASA

Ущерб: $18 млн ($156 млн на 2021 год).

В 1962 году НАСА произвело запуск ракеты-носителя «Атлас», целью которой было доставка аппарата «Маринер-1» на Венеру для последующего изучения планеты. Однако после старта ракеты не прошло и 5 минут — на 293 секунде ее было решено ликвидировать в целях безопасности.

Причиной такого решения стала потеря связи между антенной аппарата и системой наведения, расположенной на Земле. Как только связь разорвалась, управлять ракетой-носителем принялся компьютер, но исполняемый им код содержал совсем крохотную ошибку — пропущенный дефис.

После инцидента стало известно, что на самом деле было две причины неправильной работоспособности ракеты. Первая — некачественная принимающая антенна на самой ракете «Атлас». Но такой поворот событий был предусмотрен, а потому управлять наклоном ракеты-носителя в случае потери сигнала с Земли должен был бортовой компьютер.

Так и произошло, правда исполняемый код содержал ошибку в виде пропущенного дефиса, а точнее — символа надчеркивания (макрона) в одном из уравнений. Как итог — ракета сильно накренилась и развалилась в воздухе.

Спутник Mars Climate Orbiter

Запуск Mars Climate Orbiter на ракета-носителе Delta II 7425-9.5 / Wikimedia, NASA
Запуск Mars Climate Orbiter на ракета-носителе Delta II 7425-9.5 / Wikimedia, NASA

Ущерб: $125 млн ($198 млн на 2021 год).

Зимой 1998 года НАСА отправило на Марс спутник для изучения его климата: наблюдения за атмосферой и съемки поверхности планеты. В планы космического агентства входил сбор данных о Марсе, о том, как на планете циркулирует пыль, водяной пар и озон в слоях атмосферы, как изменяются погодные условия, как ведут себя пылевые бури.

Спустя 9 месяцев после запуска, в сентябре 1999 года Mars Climate Orbiter достиг цели и должен был остановиться на высоте около 110 км над поверхностью Марса. Однако спутник затормозил лишь на высоте 57 км, из-за чего распался в атмосфере.

Такое отклонение от курса было вызвано банальной ошибкой в ПО: программа для измерения силы использовала не ньютоны (Н), а британскую единицу фунт-сила. Это было одной из причин полного перехода НАСА на метрическую систему исчисления в 2007 году.

Хакер-аспирант, или «Червь Морриса»

Роберт Моррис / Wikimedia, Авторство: Trevor Blackwell, CC BY-SA 3.0
Роберт Моррис / Wikimedia, Авторство: Trevor Blackwell, CC BY-SA 3.0

Ущерб: $97 млн ($215 млн на 2021 год).

На самом деле Роберт Моррис, будучи аспирантом Корнелльского университета в 1988 году, вовсе не планировал создавать зловред для вывода из строя тысяч компьютеров. Моррис хотел лишь узнать масштабность правительственной сети APRANET, для чего написал небольшую программу, которая бы искала соединение между имеющимися ПК в сети и помогла бы составить общую карту. В 1988 году аспирант воплотил задуманное, запустив собственное ПО на одном из компьютеров Массачусетского технологического института.

Ничто не предвещало беды, ведь Роберт Моррис даже и не догадывался, что его ПО далеко от идеала. Всего за сутки «червь Морриса» сумел проникнуть в 6000 компьютеров и вывел их из строя. Хотя программа была простой и безобидной, ее несовершенство стало губительно для «машин». У червя был баг: он не перезаписывался на ПК, которые до этого уже инфицировал, а наоборот — делал бесконечное количество копий самого себя, «съедая» все доступные ресурсы «железа».

Интересно, что Роберт Моррис мог с легкостью избежать наказания, так как доказать его причастность к ненамеренной кибератаке было невозможно. Однако его отец, работавший в АНБ, лично сдал сына-хакера агентам ФБР. В качестве наказания Морриса обязали выплатить солидный на то время штраф в 10 000 долларов, а также дали 3 года условного заключения.

Knight Capital — угнать $500 млн за 45 минут

Фото: Unsplash
Фото: Unsplash

Ущерб: $500 млн ($567 млн на 2021 год).

После «Черного понедельника» 1987 года, когда ПО трейдеров потеснило людей и взяло управление биржей в свои руки, финансовые игроки стали намного осторожнее обращаться с электронными помощниками. Однако это не помешало ошибке повториться в 2012 году благодаря роботу финансовой компании Knight Capital.

В начале 2010-х начала набирать обороты высокочастотная торговля — сотни и даже тысячи сделок проводились при помощи специальных программ практически без участия человека в считанные минуты. Knight Capital в те годы находилась в топе финансовых компаний, а потому решила вывести на рынок своего электронного трейдера.

Правда, не сложилось — программа содержала ошибку в коде, из-за чего за 45 минут робот провел свыше 2 млн сделок. Обычно такой объем выполнялся Knight Capital за неделю.

И ничего поделать в компании не могли — у программы не было «выключателя», а потому до срабатывания защитных механизмов Knight Capital успела потерять 500 млн долларов.

Первый Pentium комом

Семейство первых процессоров Intel Pentium / Авторство: Konstantin Lanzet. CPU collection Konstantin Lanzet, GFDL
Семейство первых процессоров Intel Pentium / Авторство: Konstantin Lanzet. CPU collection Konstantin Lanzet, GFDL

Ущерб: $475 млн ($839 млн на 2021 год).

Не всегда под определением «баг» значится ошибка на стороне ПО — иногда подводит и «железо». Так случилось в 1994 году с компанией Intel, которая выпустила процессор Pentium со вшитыми в него неправильными таблицами. Бракованный процессор с ошибкой в модуле операций с плавающей запятой выдавал некорректные результаты, когда производилось деление над подобными числами. Первым это заметил математик Томас Найсли, преподававший в Линчбургском Колледже во время исследования пар, триплетов и квадриплетов простых чисел.

Сначала Найсли не поверил своим глазам и попросил коллег перепроверить его расчеты, на что ему ответили — компьютер врет. Далее подтянулись СМИ, и Intel не удалось увильнуть от проблемы. Доводы компании о том, что ошибка находится аж в 9-м знаке после запятой и никак не влияет на точность измерений для подавляющего числа пользователей, общественность не успокоили.

В итоге IT-корпорации пришлось организовать отзывную компанию, которая обошлась гиганту почти в полмиллиарда долларов.

Ariane 5 — копипаста ценой в 8,5 млрд долларов

Ариан-5 ES перед запуском корабля ATV-4 к МКС / Wikimedia, Авторство: DLR German Aerospace Center, CC BY 2.0
Ариан-5 ES перед запуском корабля ATV-4 к МКС / Wikimedia, Авторство: DLR German Aerospace Center, CC BY 2.0

Ущерб: $8,5 млрд ($14 млрд на 2021 год).

Всего 39 секунд полета ракеты Ariane 5 обошлись Европейскому космическому агентству в 8,5 млрд долларов. Виной тому стало банальное копирование фрагмента кода для программного обеспечения Ariane 5 с предыдущей модели Ariane 4. ПО новой ракеты не сочеталось с более новым и мощным двигателем, что вызвало ошибку в работе компьютера, из-за чего ракета отклонилась от курса и начала разрушаться в воздухе, впоследствии самоуничтожившись.

Mt.Gox — страшный сон криптомайнера

Фото: The Verge
Фото: The Verge

Ущерб: $473 млн (36 млрд на сентябрь 2021 года).

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

В 2014 году, когда о биткоинах простой люд особо еще не знал, криптовалютные биржи уже во всю торговали электронной монетой. Одной из таких бирж была Mt.Gox, которая прославилась в 2014 году заявлением о пропаже около 7% от общего количества биткоинов — 850 000 монет.

Можно было бы списать столь солидную потерю на атаки хакеров, но на самом деле проблема заключалась в баге программного обеспечения. Скрипт обработки транзакций попросту производил списывание монет в двойном количестве. На момент инцидента долг биржи перед пользователями составлял всего 473 млн долларов, а на сегодня это внушительные 36 млрд «вечнозеленых». По этой причине процедура банкротства Mt.Gox длится по сей день.

Кошмар 21 века, или «Проблема 2000»

Табло показывает 3 января 1900 года, вместо 3 января 2000 года. Франция / Авторство: Bug de l'an 2000. Собственная работа, CC BY-SA 3.0
Табло показывает 3 января 1900 года, вместо 3 января 2000 года. Франция / Авторство: Bug de l'an 2000. Собственная работа, CC BY-SA 3.0

Ущерб: до $500 млрд (до $771 млрд на 2021 год).

До 2000-го года многие программы писались с 6-значным форматом даты: вместо комбинации ЧЧ. ММ. ГГГГ использовалась ЧЧ. ММ. ГГ. Это было логично и безопасно до наступления 2000-го года. Но с наступлением нового тысячелетия это грозило техногенным апокалипсисом: кто знает, как повели бы себя компьютеры и компьютеризированные механизмы, «увидевшие» на табло «00», что справедливо и для 1900-го года.

Баг Y2K затронул все страны с цифровой экономикой и Россию в том числе, где его назвали «Проблемой 2000». Несмотря на то, что в 2000-м году цифровизация мира была крайне невысокой в сравнении с 2021 годом, на исправление ПО во всем мире потребовалось от 300 до 500 млрд долларов. До сих пор ведущие эксперты спорят, целесообразно ли было тратить столь большие средства на исправление ошибки. Так или иначе, а похожий инцидент ждет все 32-битные системы в январе 2038 года.