В прошлом месяце Тойота объявила об
отзыве 160.000 гибридных автомобилей Prius из-за
необъяснимого включения света и остановки
бензиновых двигателей. Но в отличии от
множества отзывов последних лет проблема
Prius-а заключалась вовсе не в железе - это
была программная ошибка в программном
обеспечении автомобиля. Prius имел
программный баг...

С этим отзывом Prius вошел в элитный клуб
бажных компьютеров - в клуб, который открыл
свои двери в шестьдесят лет назад, в 1945 году,
когда инженеры нашли моль, перемкнувшую
реле в компьютере Harvard Mark II. Моль была
выловлена, а системный журнал получил новую
запись: "первый реальный случай
обнаружения бага".

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

Но какие самые страшные?

Легко перечислить баги, принесшие хаос в
нашу жизнь. Труднее определить их важность.
Что важнее - уязвимость, используя которую
черви могут убить интернет за пару дней или
забытый символ в телефонной программе
который может привести к многодневному
простою национальной телефонной сети?
Ответ зависит прежде всего от вас, от того
что надо было сделать - отправить почту
или позвонить бабушке. 

Многие думаю что самые трагичные ошибки
те, которые стоили жизни людям. Безусловно
таких  не много, но те, что существуют,
лишь в очередной раз предупреждают нас о
недопустимости бездумного развертывания
программного обеспечения в критических
приложениях. Эксперты, изучающие такие
системы, тем не менее говорят - да, баги
могут убивать людей, но видеть только это
опасно, не внедрение программ в
областях, где они критически необходимы,
может убить гораздо больше людей. 

Так что так или иначе, но баги наши
останутся при нас. Мы приводим, в
хронологическом порядке, список 10 худших
программных ошибок в истории человечества.

28 Июля 1962 года

Ошибка в программном обеспечении ракеты
Mariner 1

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

1982

Подрыв советского трубопровода.
Скорее всего оперативники ЦРУ намеренно
разместили баг в канадской компьютерной
системе, украденной СССР для контроля
работы транссибирского газопровода. Эта
программа  была лишь частью кампании
Союза по покупке или краже важнейших
технологий США. Управление узнало об этой
программе и решила нанести ответный удар -
оборудование благополучно прошло
советские тесты и затем, уже в процессе
работы, разрушилось, нанеся огромный урон.
Результат - самый крупный в истории
человечества неядерный взрыв. 

1985-1987

Медицинская система облучения Therac-25.
Из-за летальных доз радиации погибло
несколько человек. Therac-25 стала
усовершенствованной системой, способной
работать сразу с двумя видами облучения -
маломощным электронным излучением (бета
частицы) и рентгеновскими лучами.  Вторым
улучшением, по сравнению с Therac-20, стала
программная защита, вместо старой,
электромеханической. Тогда казалось, что
программа более надежна... Однако
операционная система аппарата оказалась
написана неквалифицированным
программистом, что могло привести к
облучению пациентов мощными бета-лучами без
размещения защиты над ним. Как минимум 5
пациентов умерли, многие были серьезно
ранены.

1988

Переполнение буфера в операционной
системе Unix
. Первый интернет
червь (Morris Worm)
заразил от 2 до 6 тысяч
компьютеров менее чем за день. Функция gets()
не проверяла  размерность передаваемой
строки и слишком длинный ввод позволял
вызвать переполнение буфера со всей
последующей радостью... Программисты
ограничили функцию ввода строки, но
отказались убирать ее из стандартной
библиотеки ввода/вывода языка С, где она и
существует по нынешний день.

1988-1996

Генератор случайных чисел в Kerberos.
Неправильная реализация генератора
привела к тому, что в течении 8 лет системы с
аутентификацией Kerberos были практически
беззащитны. Был ли баг использован  для
реальных взломов до сих пор неизвестно. 

15 Января 1990 года

Глобальный сбой в сети AT&T. Баг в
новом программном обеспечении телефонных
свичей, работающих на междугородней связи,
заключался в том, что они просто падали при
получении определенного сигнала от одной
из ближайших машин. И все бы ничего, но
сигнал этот свич высылал тогда, когда
поднимался от предыдущего падения... В один
из дней Нью-Йоркский свич завис,
перегрузился и разослал всем этот самый
сигнал. Дальше последовала цепная реакция,
в ходе которой 114 телефонных свичей
перегружались каждые 6 секунд, оставив 60
тысяч человек без дальней связи на
протяжении 9 часов. Инженеры загрузили
предыдущую версию программного
обеспечения и только тогда работа
восстановилась.

1993

Ошибка в Pentium. Известный баг, когда
процессоры Intel неправильно выполняли
деление числе с плавающей точкой. Например,
деление 4195835.0 на 3145727.0 давало 1.33374, вместо
1.33382, ошибку в 0.006 процента. После возникшего
общественного возмущения Intel была
вынуждена заменить процессоры всем
желающим. Ошибка стоила компании около 475
миллионов долларов.

1995-1996

Знаменитый Ping of Death. Как ни странно,
когда-то злобные хакеры валили хосты именно
с помощью пинга. Дело в том, что некоторые
операционки были уязвимы для атак типа Ping of
death. Их смысл прост: машинке с дырявой
операционкой посылался пинг длиной больше
стандартных 65535 байтов. Системы, вроде Solaris
2.4, Minix, MacOS 7, Windows 3.11 и 95, от этого пучило, они
падали, перезагружались и висли. В 1996 году POD
помог славно повеселиться многим товарищам.

4 Июня 1996.

Падение Ariane 5. Программный код Ariane 5 был
перенесен с Ariane 4, однако новые двигатели
ракеты вызвали ошибку в арифметической
операции  полетного компьютера - когда
64-битное число с плавающей точкой
конвертировалось в 16-битное целое. Более
мощные двигатели вызвали переполнение - оба
компьютера зависли и ракета
самоуничтожилась после 40 секунд полета.

Ноябрь 2000

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

Источник: http://wired.com/

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии