Когда ПО убивает. 6 смертельных багов

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

Оставить комментарий
Когда ПО убивает. 6 смертельных багов

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

Облучение по ошибке

Один из самых известных случаев, связанных с передозировками во время лучевой терапии. Медицинский ускоритель Therac-25 стал причиной смерти и серьезных проблем со здоровьем как минимум у шести пациентов. С 1983 по 1987 годы 11 таких устройств использовали в США и Канаде. Ускорители подобного типа применяют для высокоточного облучения опухолей. Однако некоторые пациенты получили дозы радиации не в несколько сотен рад, как требовалось для лечения, а в 20 000. При этом 1000 рад уже считается смертельной дозой. 

Сперва баги просто не замечали и списывали все на аппаратные сбои. Компания-производитель изучала каждый инцидент, однако никак не могла найти причину неполадок. На расследование, которое проводилось уже после подачи судебных исков по причине смерти пациентов, ушло несколько лет, в нём были заняты сторонние эксперты. В ПО аппарата лучевой терапии нашли сразу несколько ошибок.    

Тестировщикам советуют внимательно изучить этот случай, уже ставший классическим для разработки и тестирования медицинского ПО. Начать рекомендуют с материала в wiki. Затем можно перейти к этой статье

Пользовательский интерфейс Therac-25

Toyota и непроизвольное ускорение

89 погибших и более 50 серьезно пострадавших — к стольким жертвам за десятилетие привел баг в электронике автомобилей Toyota. Пользователи неоднократно жаловались на неконтролируемое ускорение, при этом машина не реагировала на нажатие педалей. 

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

Годы спустя к расследованию, по требованию властей США, привлекли большое количество сторонних специалистов. Позвали даже экспертов NASA. Компания Barr Group, занимающаяся экспертизой электроники и софта, пришла к выводу, что причина кроется в «кривом» ПО. Бортовой компьютер выдавал некорректные значения, что в свою очередь и приводило к непроизвольному ускорению. При этом ошибок и ляпов в кодах было найдено столько, что, по словам экспертов, все их изучать не было смысла.

После совместного расследования Министерства юстиции США и ФБР, в 2014 году компания согласилась выплатить $1, 2 млрд на урегулирование досудебных исков. Деньги ушли пострадавшим, а также семьям погибших в авариях.

«Великий блэкаут» 

27 августа 2003 года, с девяти вечера и до восьми утра, без света в США и Канаде оставались 55 миллионов человек. Были обесточены жилые дома, больницы и вся инфраструктура в целом. Сбой парализовал аэропорты двух стран, в том числе международные. Из метро пришлось эвакуировать людей. Мобильная связь работала плохо, у телефонных автоматов на улицах выстраивались гигантские очереди. В отдельных местах были перебои с водоснабжением. Температура в Нью-Йорке в этот день достигла 33 °C, однако кондиционеры не работали. 

Результат аварии — как минимум 100 смертей и $6 миллиардов ущерба.

Причин блэкаута было несколько. В том числе нашли ошибку в ПО системы мониторинга работы оборудования General Electric Energy. Из-за нее о сбое не были извещены другие центры управления, а также произошло каскадное отключение 100 электростанций.  

Мертвые души 

Необычный случай произошел в 2003 году в больнице в американском Гранд-Рапидс, штат Мичиган. Баг в базе данных пациентов одномоментно «убил» 8500 человек. Все эти люди были живы, но выяснилось это только после расследования страховых компаний.

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

Сбой произошел после обновления ПО для мониторинга пациентов: вместо кода «01», что означало «выбыл» (т. е. выздоровел, выписан), многим был присвоен код «20» — «умер».

Мор в World of Warcraft

13 сентября 2005 года разработчики World of Warcraft, сами того не подозревая (во всяком случае, по официальной версии), запустили в виртуальной вселенной пандемию. В новом патче для игры было спроектировано подземелье Зул’Гуруб с драконом Хаккар. Демонический персонаж мог накладывать на своих противников заклятие «Порченой крови», которое забирало у них определенное количество очков жизненной энергии. Сражение могли спокойно перенести прокаченные игроки, новички с небольшим уровнем силы погибали. 

Самое интересное заключалось в том, что заражение от заклятия передавалось всем персонажам поблизости. Виртуальный вирус подхватывали в том числе питомцы. Предполагалось, что болезнь в игре не выйдет за пределы подземелья, т. к. вирус перестает «работать» после смерти персонажа. 

Баг состоял в том, что разработчики не добавили функцию излечения тех самых животных-помощников (в игре это вспомогательные персонажи, они появляются после вызова игроком). И питомцы, вызываемые персонажами за пределами пещеры с драконом, продолжали распространять заразу. 

Виртуальные города быстро становились чумными. В World of Warcraft начался настоящий мор: виртуальные персонажи умирали сотнями. Издатели предлагали решение — зараженные должны были переждать болезнь в карантине. Однако, некоторые, подхватив вирус, специально шли в места скопления персонажей, чтобы инфицировать как можно больше участников. 

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

Неслучившийся Армагеддон

И в завершение — о случае, который мог бы стать началом Третьей мировой войны и вызвать масштабные разрушения и жертвы.  

В сентябре 1983 советский спутник системы «Око» сообщил о запуске с территории США в сторону советских границ пяти баллистических ракет. В это время холодная война между двумя странами находилась в стадии обострения. В Советском союзе действовало правило: о замеченных системой «Око» опасных объектах нужно было докладывать руководству страны, там в случае атаки принимали бы решение об ответном ударе. 

Незадолго до этого СССР сбили пассажирский южнокорейский Boeing-747 — по невыясненным причинам самолет сильно отклонился от курса и вместо того, чтобы лететь над нейтральными водами Тихого океана, вошел в закрытое воздушное пространство СССР. 

На этот раз система сообщала о запуске ракет с американской межконтинентальной базы. Дежуривший на смене подполковник Станислав Петров проанализировал ситуацию и понял, что видимое на экране не может быть атакой со стороны США. Во-первых, следов от ракет было всего четыре — в случае нападения Штаты применили бы куда больший арсенал. К тому же наблюдающие за космическим и воздушным пространством военные не зафиксировали объектов, летящих к границам СССР. Подполковник доложил своему руководству о ложном срабатывании системы. 

Как выяснилось, при определенном взаимном положении спутника и Солнца свет отражается от облаков и оставляет инфракрасное излучение, которое компьютеры принимают за следы от ракет. До этого инцидента «Око» проработало меньше года, о таком возможном поведении системы не знали. 

Огласку случай получил только в 1991 году, когда с информации был снят гриф секретности. В 2006 году в штаб-квартире ООН в Нью-Йорке Станиславу Петрову вручили награду «Ассоциации граждан мира». На хрустальной статуэтке «Рука, держащая земной шар» было выгравировано: «Человеку, который предотвратил ядерную войну».

Источники

The Worst Computer Bugs in History: Race conditions in Therac-25/bugsnag.com

The Most Expensive Software Bugs In History/u-tor.com

History’s Worst Software Bugs/wired.com

Epic failures: 11 infamous software bugs/computerworld.com

List of software bugs/en.wikipedia.org

10 самых дорогих ошибок в разработке ПО
10 самых дорогих ошибок в разработке ПО 
По теме
10 самых дорогих ошибок в разработке ПО

Хотите сообщить важную новость? Пишите в Телеграм-бот.

А также подписывайтесь на наш Телеграм-канал.

Читайте также

Blizzard запретит софт для ботоводов в World of Warcraft
Blizzard запретит софт для ботоводов в World of Warcraft
Blizzard запретит софт для ботоводов в World of Warcraft
Мать автора World of Warcraft собирает все игры сына. Недавно ей подарили «жемчужину» коллекции
Мать автора World of Warcraft собирает все игры сына. Недавно ей подарили «жемчужину» коллекции
Мать автора World of Warcraft собирает все игры сына. Недавно ей подарили «жемчужину» коллекции
Хакерская группировка рассылает вредоносное ПО белорусским силовикам
Хакерская группировка рассылает вредоносное ПО белорусским силовикам
Хакерская группировка рассылает вредоносное ПО белорусским силовикам
1 комментарий
«Некроскат полезен в сельском некрохозяйстве»: Николай Дроздов рассказал о флоре и фауне Warcraft
«Некроскат полезен в сельском некрохозяйстве»: Николай Дроздов рассказал о флоре и фауне Warcraft
«Некроскат полезен в сельском некрохозяйстве»: Николай Дроздов рассказал о флоре и фауне Warcraft

Обсуждение

Комментариев пока нет.
Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже