История из жизни:104519

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

10 худших багов в истории человечестваЕсли баги в программном обеспечении приводят к зависанию компьютера, тоэто ерунда. Гораздо хуже, если из-за ошибок в ПО ломаются автомобили,взрываются ракеты и погибают люди.Самая первый компьютерный баг в истории был обнаружен в 1945 г., когдаинженеры нашли в корпусе компьютера Harvard Mark II мотылька. Этотмотылек закорачивал контакты — и компьютер сбоил. Инженеры сделализапись в журнале событий "Первый случай обнаружения бага" (по-английски"bug" означает "насекомое"). С тех пор компьютерные сбои принятоназывать багами.По мере распространения цифровых устройств баги все глубже проникают внашу жизнь. Они окружают нас повсюду — на мобильных телефонах, в бытовойтехнике, в автомобилях. К счастью, обычно баги не приносят никакоговреда, кроме морального. Но бывает и по-другому, когда баг вызываетогромные финансовые потери и даже забирает человеческие жизни. ЖурналWired посвятил этой проблеме целую тему номера и опубликовал список 10худших багов в истории человечества, в хронологическом порядке.28 июля 1962 г. Космический аппарат Mariner I стартовал по направлению кВенере. Из-за поломки антенны корабль потерял связь с земными службамиуправлениями и перешел на собственную систему пилотирования. Но этасистема содержала обидный маленький баг. В результате аппарат полетелсовсем не в ту сторону и его пришлось подорвать над Атлантическимокеаном. Последующее расследование установило, что в процессепрограммирования системы навигации была совершена маленькая опечатка —при вводе одной из формул был пропущен один символ.1982 г. Авария на Транссибирском трубопроводе. Оперативники ЦРУ внедрилибаг (отчет в формате PDF) в канадское программное обеспечение,управлявшее газовыми трубопроводами. Советская разведка получила это ПОкак объект промышленного шпионажа и внедрила на Транссибирскомтрубопроводе. Результатом стал самый большой неядерный взрыв в историичеловечества.1985–87 гг. Несколько человек получили смертельную дозу облучения вовремя сеансов радиационной терапии с медицинским ускорителем Therac-25.Основанная на предыдущей версии ускорителя, "улучшенная" модельTherac-25 могла генерировать два вида излучения: слабое электронноебета-излучение и нормальное рентгеновское излучение. Еще одно"улучшение" состояло в том, что вместо электромеханической защитыпациента в устройстве была реализована программная защита, якобы болеенадежная. Обе новые функции были некорректно реализованы неопытнымпрограммистом, результатом чего стали как минимум пять смертей иогромное количество несмертельных случаев переоблучения.1988 г. Переполнение буфера в Berkeley Unix. Первый в мире компьютерныйчервь (так называемый червь Морриса) заразил от 2.000 до 6.000компьютеров менее чем за сутки, эксплуатируя уязвимость в реализациифункции gets(). В ОС Berkeley Unix эта функция ввода/вывода не имелаограничения на максимальную длину.1988–96 гг. Генератор случайных чисел Kerberos в течение нескольких летшироко использовался в различных системах шифрования. Предполагалось,что программа должна выбирать ключ случайным образом из многихмиллиардов чисел, но генератор случайных чисел выбирал из гораздоменьшего набора численностью примерно в миллион. Как результат, втечение восьми лет любой пользователь мог без труда проникнуть вкомпьютерную систему, которая использовала модуль Kerberos.15 января 1990 г. Падение телефонной сети AT&T. Ошибка в новой версиипрошивки междугородних коммутаторов привела к тому, что коммутаторперезагружался, если получал специфический сигнал от соседнегокоммутатора. Но беда в том, что этот сигнал генерировался в тот момент,когда коммутатор восстанавливал свою работу после сбоя. В одинпрекрасный день, когда какой-то коммутатор в Нью-Йорке перезагрузился,он подал тот самый злополучный сигнал — и началось. Вскоре 114 соседнихкоммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс.человек остались без междугородней связи на 9 часов, пока инженеры неустановили на коммутаторы предыдущую версию прошивки.1993 г. Широко разрекламированный процессор Intel Pentium неправильнопроизводил деление с плавающей запятой, ошибаясь на 0,006%. Хотя этапроблема реально коснулась немногих пользователей, но стала настоящимкошмаром для имиджа Intel. Поначалу фирма согласилась менять процессортолько для тех пользователей, которые могли доказать, что им ввычислениях нужна подобная точность, но затем согласилась поменятьпроцессор всем желающим. Этот баг стоил Intel около $475 млн.1995–96 гг. Пинг смерти. Отсутствие проверки на ошибки при обработкеIP-пакетов позволяла порушить практически любую операционную систему,отправив ей через интернет специальный пакет ("пинг").4 июня 1996 г. Новая ракета-носитель Ariane 5, результат многолетнейработы европейских ученых, гордость стран Евросоюза, взорвалась через 40секунд после своего первого старта. Только научное оборудование на бортуракеты стоило около $500 млн, не говоря о множестве побочных финансовыхпоследствий. Система автоподрыва ракеты сработала после остановки обоихпроцессоров в результате цепочки ошибок. Началом этой цепочки послужилопереполнение буфера, поскольку система навигации подала недопустимобольшое значение параметра горизонтальной скорости. Дело в том, чтосистема управления Ariane 5 переделывалась из Ariane 4, а там такогобольшого значения не могло быть теоретически. В целях снижения нагрузкина рабочий компьютер инженеры сняли защиту от ошибок переполнения буферав этом программном модуле, поскольку были уверены, что такого значениягоризонтальной скорости не может быть в принципе — и просчитались.Ноябрь 2000 г. Национальный институт рака, Панама. Здесь произошла целаясерия инцидентов, вызванная тем, что ПО для планирования радиационнойтерапии производства американской компании Multidata SystemsInternational неправильно рассчитывало дозы облучения для пациентов.Программа позволяла врачу нарисовать на компьютерном экране расположениезащитных металлических щитов, которые защищают тело от радиации. Нопрограмма позволяла манипулировать только четырьмя щитами, тогда какврачи хотели задействовать пять. Они нашли способ "обхитрить" программу,если нарисовать все пять щитов в виде единого блока с дыркой посередине.Единственное, чего они не знали, что программа рассчитывает разные дозырадиации в зависимости от того, как нарисована дырка. Если рисовать ееособым образом, то устройство выдавало двойную дозу радиации. Какминимум восемь человек погибли, а еще 20 получили переоблучение. Врачи,которые должны были вручную перепроверять расчеты программы, былиосуждены за убийство.Все эти примеры, а особенно последний, еще раз показывают, что никогданельзя в полной мере доверять компьютерам. Ведь программы длякомпьютеров создают люди, а людям свойственно ошибаться

[[Текст истории из жизни::10 худших багов в истории человечестваЕсли баги в программном обеспечении приводят к зависанию компьютера, тоэто ерунда. Гораздо хуже, если из-за ошибок в ПО ломаются автомобили,взрываются ракеты и погибают люди.Самая первый компьютерный баг в истории был обнаружен в 1945 г., когдаинженеры нашли в корпусе компьютера Harvard Mark II мотылька. Этотмотылек закорачивал контакты — и компьютер сбоил. Инженеры сделализапись в журнале событий "Первый случай обнаружения бага" (по-английски"bug" означает "насекомое"). С тех пор компьютерные сбои принятоназывать багами.По мере распространения цифровых устройств баги все глубже проникают внашу жизнь. Они окружают нас повсюду — на мобильных телефонах, в бытовойтехнике, в автомобилях. К счастью, обычно баги не приносят никакоговреда, кроме морального. Но бывает и по-другому, когда баг вызываетогромные финансовые потери и даже забирает человеческие жизни. ЖурналWired посвятил этой проблеме целую тему номера и опубликовал список 10худших багов в истории человечества, в хронологическом порядке.28 июля 1962 г. Космический аппарат Mariner I стартовал по направлению кВенере. Из-за поломки антенны корабль потерял связь с земными службамиуправлениями и перешел на собственную систему пилотирования. Но этасистема содержала обидный маленький баг. В результате аппарат полетелсовсем не в ту сторону и его пришлось подорвать над Атлантическимокеаном. Последующее расследование установило, что в процессепрограммирования системы навигации была совершена маленькая опечатка —при вводе одной из формул был пропущен один символ.1982 г. Авария на Транссибирском трубопроводе. Оперативники ЦРУ внедрилибаг (отчет в формате PDF) в канадское программное обеспечение,управлявшее газовыми трубопроводами. Советская разведка получила это ПОкак объект промышленного шпионажа и внедрила на Транссибирскомтрубопроводе. Результатом стал самый большой неядерный взрыв в историичеловечества.1985–87 гг. Несколько человек получили смертельную дозу облучения вовремя сеансов радиационной терапии с медицинским ускорителем Therac-25.Основанная на предыдущей версии ускорителя, "улучшенная" модельTherac-25 могла генерировать два вида излучения: слабое электронноебета-излучение и нормальное рентгеновское излучение. Еще одно"улучшение" состояло в том, что вместо электромеханической защитыпациента в устройстве была реализована программная защита, якобы болеенадежная. Обе новые функции были некорректно реализованы неопытнымпрограммистом, результатом чего стали как минимум пять смертей иогромное количество несмертельных случаев переоблучения.1988 г. Переполнение буфера в Berkeley Unix. Первый в мире компьютерныйчервь (так называемый червь Морриса) заразил от 2.000 до 6.000компьютеров менее чем за сутки, эксплуатируя уязвимость в реализациифункции gets(). В ОС Berkeley Unix эта функция ввода/вывода не имелаограничения на максимальную длину.1988–96 гг. Генератор случайных чисел Kerberos в течение нескольких летшироко использовался в различных системах шифрования. Предполагалось,что программа должна выбирать ключ случайным образом из многихмиллиардов чисел, но генератор случайных чисел выбирал из гораздоменьшего набора численностью примерно в миллион. Как результат, втечение восьми лет любой пользователь мог без труда проникнуть вкомпьютерную систему, которая использовала модуль Kerberos.15 января 1990 г. Падение телефонной сети AT&T. Ошибка в новой версиипрошивки междугородних коммутаторов привела к тому, что коммутаторперезагружался, если получал специфический сигнал от соседнегокоммутатора. Но беда в том, что этот сигнал генерировался в тот момент,когда коммутатор восстанавливал свою работу после сбоя. В одинпрекрасный день, когда какой-то коммутатор в Нью-Йорке перезагрузился,он подал тот самый злополучный сигнал — и началось. Вскоре 114 соседнихкоммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс.человек остались без междугородней связи на 9 часов, пока инженеры неустановили на коммутаторы предыдущую версию прошивки.1993 г. Широко разрекламированный процессор Intel Pentium неправильнопроизводил деление с плавающей запятой, ошибаясь на 0,006%. Хотя этапроблема реально коснулась немногих пользователей, но стала настоящимкошмаром для имиджа Intel. Поначалу фирма согласилась менять процессортолько для тех пользователей, которые могли доказать, что им ввычислениях нужна подобная точность, но затем согласилась поменятьпроцессор всем желающим. Этот баг стоил Intel около $475 млн.1995–96 гг. Пинг смерти. Отсутствие проверки на ошибки при обработкеIP-пакетов позволяла порушить практически любую операционную систему,отправив ей через интернет специальный пакет ("пинг").4 июня 1996 г. Новая ракета-носитель Ariane 5, результат многолетнейработы европейских ученых, гордость стран Евросоюза, взорвалась через 40секунд после своего первого старта. Только научное оборудование на бортуракеты стоило около $500 млн, не говоря о множестве побочных финансовыхпоследствий. Система автоподрыва ракеты сработала после остановки обоихпроцессоров в результате цепочки ошибок. Началом этой цепочки послужилопереполнение буфера, поскольку система навигации подала недопустимобольшое значение параметра горизонтальной скорости. Дело в том, чтосистема управления Ariane 5 переделывалась из Ariane 4, а там такогобольшого значения не могло быть теоретически. В целях снижения нагрузкина рабочий компьютер инженеры сняли защиту от ошибок переполнения буферав этом программном модуле, поскольку были уверены, что такого значениягоризонтальной скорости не может быть в принципе — и просчитались.Ноябрь 2000 г. Национальный институт рака, Панама. Здесь произошла целаясерия инцидентов, вызванная тем, что ПО для планирования радиационнойтерапии производства американской компании Multidata SystemsInternational неправильно рассчитывало дозы облучения для пациентов.Программа позволяла врачу нарисовать на компьютерном экране расположениезащитных металлических щитов, которые защищают тело от радиации. Нопрограмма позволяла манипулировать только четырьмя щитами, тогда какврачи хотели задействовать пять. Они нашли способ "обхитрить" программу,если нарисовать все пять щитов в виде единого блока с дыркой посередине.Единственное, чего они не знали, что программа рассчитывает разные дозырадиации в зависимости от того, как нарисована дырка. Если рисовать ееособым образом, то устройство выдавало двойную дозу радиации. Какминимум восемь человек погибли, а еще 20 получили переоблучение. Врачи,которые должны были вручную перепроверять расчеты программы, былиосуждены за убийство.Все эти примеры, а особенно последний, еще раз показывают, что никогданельзя в полной мере доверять компьютерам. Ведь программы длякомпьютеров создают люди, а людям свойственно ошибаться]]

См.также

Внешние ссылки