По сюжетам отдельных случаев из подборки можно было бы снимать шпионские блокбастеры. Однако все это произошло на самом деле. Причиной реальных и виртуальных трагедий стали баги в ПО. Рассказываем, как ошибки в коде могут привести к фатальным последствиям, а незнание законов оптики — к Третьей мировой.
Один из самых известных случаев, связанных с передозировками во время лучевой терапии. Медицинский ускоритель Therac-25 стал причиной смерти и серьезных проблем со здоровьем как минимум у шести пациентов. С 1983 по 1987 годы 11 таких устройств использовали в США и Канаде. Ускорители подобного типа применяют для высокоточного облучения опухолей. Однако некоторые пациенты получили дозы радиации не в несколько сотен рад, как требовалось для лечения, а в 20 000. При этом 1000 рад уже считается смертельной дозой.
Сперва баги просто не замечали и списывали все на аппаратные сбои. Компания-производитель изучала каждый инцидент, однако никак не могла найти причину неполадок. На расследование, которое проводилось уже после подачи судебных исков по причине смерти пациентов, ушло несколько лет, в нём были заняты сторонние эксперты. В ПО аппарата лучевой терапии нашли сразу несколько ошибок.
Тестировщикам советуют внимательно изучить этот случай, уже ставший классическим для разработки и тестирования медицинского ПО. Начать рекомендуют с материала в wiki. Затем можно перейти к этой статье.
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 году в штаб-квартире ООН в Нью-Йорке Станиславу Петрову вручили награду «Ассоциации граждан мира». На хрустальной статуэтке «Рука, держащая земной шар» было выгравировано: «Человеку, который предотвратил ядерную войну».
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.