Как программный код привел к потерям большого количества денег и даже трагедиям
Промпт: «код программирования который пылает»
В настоящее время программирование играет огромную роль в нашей жизни и экономике. Все больше компаний, организаций и государств испытывают большую потребность в создании различных программных продуктов. Но не все проходят гладко и безопасно.
Зачастую сложности возникают из-за ошибок, которые программисты допускают в своей работе. И даже одна небольшая ошибка может привести к потере большого количества денег или даже трагедиям. Такое происходит далеко не редко и многие примеры известны всему миру.
В этой статье мы рассмотрим несколько примеров случаев, когда неправильный программный код привел к негативным последствиям и как это можно было бы избежать.
Ариан-5
Событие, которое произошло в 1996 году, было связано со запуском ракеты-носителя «Ариан-5» на космодроме Гвиана во Французской Гвиане. Ракету-носитель разработали компании Aérospatiale и DASA, главным заказчиком которых было европейское космическое агентство ESA.
Задача ракеты-носителя состояла в том, чтобы поместить два спутника на орбиту Земли. Ракета успешно взлетела и двигалась по заданной траектории. Однако, спустя несколько секунд полета, ракета-носитель начала разваливаться на части из-за программной ошибки.

Оказалось, что программное обеспечение, которое использовалось на предыдущей версии ракеты-носителя «Ариан-4», было использовано вновь на «Ариан-5», не доработано для работы с более высокими скоростями и большим объемом данных. В результате, компьютер корабля начал перегружаться и переполняться значениями, которые не умещались в выделенную память. На 36-й секунде полета, навигационная система сбила ракету с курса и начала переводить ее на новый курс, который противоречил плану полета. В итоге, ракета взорвалась через несколько секунд после сбоя. Ущерб, причиненный взрывом, достиг 500 миллионов долларов.
Случай показал, насколько важно правильно разрабатывать, отлаживать и тестировать программное обеспечение перед его использованием. Он также поставил на повестку дня вопрос о необходимости разработки специфичного оборудования и ПО для каждого нового проекта в космической индустрии, а не просто копирования кода из предыдущих проектов, как было в случае с «Ариан-5».
Ошибка в PS3
История началась в 2011 году, когда компания Sony выпустила обновление прошивки для своей игровой приставки PlayStation 3. Это обновление обещало улучшенные функции и исправления ошибок, однако, вместо этого, оно привело к серьезной проблеме.
Пользователи начали отмечать, что некоторые игры, которые ранее работали без проблем, перестали загружаться и запускаться. Кроме того, в некоторых случаях приставка даже перезагружалась или выключалась сама по себе.

На первый взгляд, проблема казалась не очень серьезной, однако по мере того, как больше пользователей начали сообщать о проблеме, стало ясно, что она затрагивает многих.
Вскоре выяснилось, что проблема связана с изменением системы шифрования, используемой в прошивке приставки. Раньше, игры для Playstation 3 были защищены специальным ключом, который позволял им работать на приставке. Однако, после обновления прошивки, ключ перестал работать и игры не могли быть загружены.
Пользователи начали выражать свое недовольство в социальных сетях и на форумах, требуя от Sony исправить проблему. Компания пыталась решить проблему, выпуская корректирующие обновления, однако, это затянулось на месяцы, что привело к тому, что многие пользователи потеряли интерес к приставке.
В конечном итоге, Sony выпустила специальное обновление прошивки, которое исправило проблему и позволило пользователям снова играть в свои любимые игры. Однако, ущерб был уже нанесен, а репутация Sony пострадала.
Маринер-1
Катастрофа Маринер-1 произошла в 1962 году и связана с запуском космического аппарата «Маринер-1», который должен был отправиться на орбиту Венеры. Аппарат был находился под контролем компьютера, который обрабатывал данные о его траектории, и уже после 293 секунды полета, на высоте около 16 километров, аппарат вышел с траектории и был уничтожен.
Причиной катастрофы стало переполнение памяти в программе управления полетом. По результатам исследований было выявлено, что в программном коде была допущена ошибка, из-за которой полученные данные об аппарате неверно интерпретировались как результат ненормального полета, тем самым приводя к некорректным решениям компьютера.

Самой популярной версией причины этой ошибки является потерянная черта над математическим символом в спецификации программы или «пропущенный дефис» в данных или компьютерной инструкции, возможно, даже в каком-то уравнении. В разных источниках упоминаются разные факторы, включая схожесть между чертой и дефисом, сложность объяснения реальной ошибки людям, работающим в Лаборатории реактивного движения (ЛРД), НАСА и ВВС США, а также дефицит времени из-за ограниченного стартового окна. Официальные выводы были представлены руководству, включая версию о «пропущенном дефисе», менее чем за неделю. В конечном итоге, версия о «пропущенном дефисе» была принята публикой и Конгрессом, как наиболее простое и убедительное объяснение.
Ошибка в Facetime
В конце января 2019 года Facebook-пользователи стали обмениваться информацией о том, что в приложении «Facetime» от Apple присутствует ошибка, которая позволяет людям слышать друг друга, даже если другой человек еще не ответил на звонок. Как оказалось, ошибка заключалась в том, что при вызове блокировки экрана, вызывающий человек мог прослушивать собеседника. Более того, если нажать кнопку громкой связи в этот момент, то можно было услышать даже то, что происходит в комнате собеседника.
Вскоре стало известно, что эта ошибка была связана с функцией групповых звонков при использовании FaceTime. По сути, ошибка заключалась в том, что когда один пользователь начинает разговор с другим, он может добавить себя в группу звонка до того, как другой пользователь ответит. В следствие этого, звонящий может прослушивать разговоры по телефону другого пользователя до того, как тот примет звонок.

Эта ошибка в «Facetime» стала серьезной проблемой для Apple, находившейся в середине его попыток увеличить продажи iPhone до конца финансового года. Apple быстро отреагировала на эту проблему и в течение дня запустила сервис FaceTime. Компания настоятельно советовала пользователям отключить функцию FaceTime до тех пор, пока проблема не будет устранена.
В конечном итоге, ошибка в «Facetime» была исправлена компанией Apple, и пользователи продолжают использовать приложение для связи со своими друзьями и близкими.
Взлом компании Equifax
История взлома компании Equifax началась в конце лета 2017 года. В начале сентября, компания вынуждена была сообщить о взломе своей системы, который произошел месяцем ранее.
Что произошло? В результате взлома была украдена личная информация о 148 миллионах человек, включая имена, адреса, социальные страховые номера, даты рождения, номера водительских удостоверений и другую конфиденциальную информацию.
Расследование показало, что компания была взломана из-за уязвимости в системе, связанной с утечкой данных по кредитным картам. Уязвимость была обнаружена ранее, но по неизвестной причине не была устранена вовремя.

Несмотря на всю серьезность ситуации, компания реагировала очень медленно. Сообщение о взломе системы было опубликовано только спустя месяц после его происшествия. Компания признала, что многие ее клиенты пострадали от утечки данных.
В ходе расследования выяснилось, что Equifax не взяла достаточной меры предосторожности, чтобы защитить информацию клиентов. Компания использовала устаревшие системы безопасности и не отслеживала активность в своих сетях.
Ситуация стала объектом расследования множества агентств, в том числе и Конгресса США. В результате компания выплатила 575 миллионов долларов в судебных и внесудебных сделках, а также улучшила свою информационную безопасность.
Ошибка на фондовой бирже NASDAQ
История ошибки на фондовой бирже NASDAQ началась 18 мая 2012 года, когда произошло одно из самых ожидаемых событий в мире финансов — IPO компании Facebook. Исходя из прогнозов, IPO Facebook должен был стать самым большим в истории IT-компаний.
Однако, вскоре после начала торгов на бирже, стало ясно, что что-то пошло не так. Цена акций Facebook начала резко расти, превышая цену, которую компания рассчитывала получить при проведении IPO. Это привело к тому, что инвесторы были вынуждены покупать акции по неадекватной цене, а компания Facebook получила чрезмерно высокую стоимость на свои акции.
Причина проблемы была связана с техническим сбоем на бирже NASDAQ. Торговая система не могла обработать огромный поток заказов на покупку акций, что привело к серьезным задержкам в обработке транзакций.
Компания NASDAQ утверждала, что проблема была вызвана технической ошибкой в системе, а именно связанной с проблемой алгоритма «кросс-матчинга».

После этого инцидента, организация, которая контролировала биржевые операции — Securities and Exchange Commission (SEC) — начала свое расследование и оштрафовала NASDAQ на 10 миллионов долларов за техническую ошибку. Кроме того, многие инвесторы подали в суд на биржу, которые также получили компенсацию за убытки.
Совокупные убытки от проблем на бирже NASDAQ превысили несколько миллиардов долларов, хотя Facebook, скорее всего, пострадала меньше всех, получив неожиданную прибыль в результате ошибки торговой системы. Тем не менее, этот инцидент стал достаточно серьезным предупреждением для инвесторов и биржевых компаний о необходимости строжайшего контроля в работе технических систем для предотвращения подобных инцидентов в будущем.
Лондонская скорая помощь
В 1992 году Лондонская скорая помощь начала использовать компьютерную систему распределения маршрутов, чтобы ускорить работу медицинской помощи. Однако при введении системы в эксплуатацию не было проведено нагрузочного тестирования, и было обнаружено 81 известных багов. Кроме того, интегратор решил сэкономить на оборудовании и купил дешевое. В итоге, система была запущена под сомнительными условиями и начала работать с неполадками.
Катастрофа произошла весной того же года, когда звонки от людей, нуждающихся в медицинской помощи, начали поступать со страшной задержкой, а в некоторых случаях вообще не поступали. Были случаи, когда пациенты умирали, не дожидаясь приезда скорой помощи. Из-за проблем в системе планирования маршрутов, скорая помощь не могла быстро прибыть на место происшествия. Такая ошибка привела к смерти от 30 до 45 человек.

Проблема была выявлена только после трагедии, и была вызвана отсутствием должной осторожности при запуске системы. В соответствии с этим случаем были внесены значительные изменения в законодательные и нормативные акты, которые касались введения новых технологий в здравоохранение Лондона. Были установлены новые правила, направленные на тщательную проверку возможных ошибок, а также на проведение нагрузочных тестов.
Кибер-атака на «KT Corporation»
В 2015 году на южнокорейскую компанию «KT Corporation», одного из крупнейших поставщиков интернет-услуг в стране, была совершена кибератака. На тот момент компания обслуживала около 20 миллионов пользователей, что делало ее одной из самых крупных в Южной Корее.
Атака была настолько масштабной, что вся инфраструктура компании была полностью парализована. Клиенты не могли получать доступ к своим услугам, а сами серверы компании были заблокированы. В связи с этим, многие клиенты массово обращались в техническую поддержку компании, которая не могла в полной мере справиться со срочными запросами.
Кибератака на KT Corporation длилась несколько дней и стала одним из самых крупных кибератак на корпоративную IT-инфраструктуру в истории. Среди технических причин атаки бил уязвимый эксплоит, связанный с коммутатором серверов, который мог быть использован хакерами для неблаговидных целей.
В результате расследования было выявлено, что в основе кибератак лежала ошибка в программном обеспечении, которое позволило злоумышленникам получить неограниченный доступ к базе данных компании. Скорее всего, это произошло из-за того, что разработчики не соответствующим образом защитили программный код системы.
Меры были приняты незамедлительно для устранения проблемы. После этого инцидента KT Corporation начала проводить периодические проверки системы безопасности и обеспечения защиты от кибератак. Пошаговая инструкция по всему процессу была разработана и предоставлена компании. А вся система была сборщиком, который избавил ее от уязвимости, обнаруженной в программном обеспечении на этапе предыдущих тестов.
ПВО «Patriot»
В ходе первой войны в Персидском заливе, 25 февраля 1991 года, силы Саддама Хусейна выпустили ракету «Скад» на цель в Саудовской Аравии. Для защиты военных объектов американские войска использовали систему ПВО Patriot. Однако система не смогла перехватить ракету, что привело к трагедии — ракета упала на барак, где находились американские военнослужащие. В результате погибли 28 человек.
При расследовании возникшей ситуации выяснилось, что основной причиной неудачного перехвата ракеты была ошибка в программном обеспечении системы Patriot. Программное обеспечение системы было спроектировано для расчета полета объектов, и отслеживания их местоположения в реальном времени. Однако, при переводе времени с учетом временной задержки в 24-битном двоичном отображении, происходила ошибка, которая накапливалась с каждым часом и проявлялась в погрешностях. Процессор не мог обрабатывать дробные значения, что привело к вычислениям с ограниченной точностью. В период продолжительного нахождения ПВО в работе (более 100 часов) привело к тому, что координаты положения цели вычислялись с большой погрешностью, около 600 метров. Именно такая погрешность сыграла роковую роль в трагедии.
В результате данной ошибки, в 2002 году были внесены новые правила для программных обеспечений, связанных с отслеживанием и управлением путем полета ракет. Эти изменения помогли предотвратить ошибки, связанные с ограниченной точностью вычислений.
Практически каждый день мы взаимодействуем с различными программами и приложениями. Каждая ошибка в программном коде может привести к разрушительным последствиям, порой оказываясь даже смертельными. К сожалению, история знает множество случаев, когда ошибки в программном коде приводили к трагедиям и необратимым потерям денег.
Урок, который можно извлечь из этих событий, заключается в том, что адекватное тестирование и проработка каждой составляющей программного кода являются важнейшими шагами в процессе разработки и эксплуатации программ. Компании должны уделять большое внимание контрольным мерам и убедиться в тщательном тестировании перед выпуском программы в эксплуатацию. Только тогда можно избежать таких трагических событий как потери человеческих жизней и большие финансовые убытки.
Вселенная поразительно эксцентрична
Истоки цивилизации: от городов к канализации
Дело Бранденбурга против Огайо: как суд отстоял свободу слова (и оправдал негодяя)
Трафик ароматизаторов
Эпоха агентов
Стоит ли покупать электрогитару Squier Affinity?
Как разреженный ИИ на 17 млрд параметров обходит плотную модель на 70 млрд: анатомия Mixture-of-Experts (MoE)
Наглядная Великая теорема Ферма: эллиптические кривые, кривые Фрея, теория Ивасавы и когомологии