Найгірші комп’ютерні баги в історії
Минулого місяця Toyota оголосила про відкликання 160.000 гібридних автомобілів Prius через нез'ясоване включення світла і зупинку бензинових двигунів. Але на відміну від багатьох відгуків останніх років проблема Prius-а полягала зовсім не в залозі - це була програмна помилка в програмному забезпеченні автомобіля. Prius мав програмний баг.
З цим відгуком Prius увійшов до елітного клубу «бажних комп'ютерів — до клубу, який відчинив свої двері в шістдесят років тому, в 1945 році, коли інженери знайшли моль, що перемкнула реле в комп'ютері Harvard Mark ІІ. Моль була виловлена, а системний журнал отримав новий запис: "перший реальний випадок виявлення бага".
Але які найстрашніші?
Багато хто думаю що найтрагічніші помилки ті, які коштували життя людям. Безумовно таких не багато, але ті, що існують, лише в черговий раз попереджають нас про неприпустимість бездумного розгортання програмного забезпечення в критичних додатках. Експерти, які вивчають такі системи, проте кажуть — так, баги можуть вбивати людей, але бачити тільки це небезпечно, не впровадження програм в областях, де вони критично необхідні, може вбити набагато більше людей.
Так що так чи інакше, але наші баги залишаться при нас. Ми наводимо, у хронологічному порядку, список 10 гірших програмних помилок в історії людства.
28 липня 1962 року
Помилка в програмному забезпеченні ракети Mariner 1привела до відхилення від курсу та дистанційного підриву всієї системи над Атлантичним океаном. Розслідування показало, що формула, записана на папері, була неправильно переведена в машинні коди, що призвело до неправильного обчислення комп'ютером.траєкторії ракети.
Підрив радянського трубопроводу. Скоріш за все оперативники ЦРУ навмисно розмістили баг у канадській комп'ютерній системі, вкраденій СРСР для контролю роботи транссибірського газопроводу. Ця програма була лише частиною кампанії Союзу з купівлі або крадіжки найважливіших технологій США. Управління дізналося про цю програму і вирішила завдати удару у відповідь — обладнання благополучно пройшло радянські тести і потім, вже в процесі роботи, зруйнувалося, завдавши величезної шкоди. Результат - найбільший в історії людства неядерний вибух.
Медична система опромінення Therac-25. Через летальні дози радіації загинуло кілька людей. Therac-25 стала удосконаленою системою, здатною працювати відразу з двома видами опромінення - малопотужним електронним випромінюванням (бета частинки) і рентгенівськими променями. Другим покращенням, порівняно з Therac-20, став програмний захист, замість старого, електромеханічним. Тоді здавалося, що програма надійніша... Проте операційна система апарату виявилася написана некваліфікованим програмістом, що могло призвести до опромінення пацієнтів потужними бета-променями без розміщення захисту над ним. . Як мінімум 5 пацієнтів померли, багато хто був серйозно поранений.
Переповнення буфера в операційній системі Unix. Перший інтернет черв'як (Morris Worm) заразив від 2 до 6 тисяч комп'ютерів менш ніж за день. Функція gets() не перевіряла розмірність переданої рядка і занадто довге введення дозволяло викликати переповнення буфера з усією наступною радістю… Програмісти обмежили функцію введення рядка, але відмовилися прибирати її зі стандартної бібліотеки введення/виведення мови С, де вона і існує по сьогоднішній день.
Генератор випадкових чисел у Kerberos. Неправильна реалізація генератора привела до того, що протягом 8 років системи з автентифікацією Kerberos були практично беззахисні. Чи був баг використаний для реальних зломів досі невідомо.
15 січня 1990 року
Помилка в Pentium. Відомий баг, коли процесори Intel неправильно виконували розподіл числа з плаваючою точкою. Наприклад, розподіл 4195835.0 на 3145727.0 давав 1.33374, замість 1.33382, помилку в 0.006 відсотка. Після виниклого громадського обурення Intel була змушена замінити процесори всім охочим. Помилка коштувала компанії близько 475 мільйонів доларів.
Знаменитий Ping of Death. Як не дивно, колись злісні хакери валили хости саме за допомогою пінгу. Справа в тому, що деякі операційки були вразливі для атак типу Ping of death. Їх сенс простий: машинці з дірявою операційкою посилався пінг довжиною більше стандартних 65535 байтів. Системи, на кшталт Solaris 2.4, Minix, MacOS 7, Windows 3.11 і 95, від цього витріщали, вони падали, перезавантажувалися і висли. В 1996 POD допоміг славно повеселитися багатьом товаришам.
Падіння Ariane 5. Програмний код Ariane 5 був перенесений з Ariane 4, проте нові двигуни ракети викликали помилку в арифметичній операції польотного комп'ютера — коли 64-бітове число з плаваючою точкою конвертувалося в 16-бітне ціле. Більше потужні двигуни викликали переповнення - обидва комп'ютери зависли і ракета самознищилася після 40 секунд польоту.
Національний інститут раку в Панамі. Програма з розрахунку доз опромінення, створена в США, неправильно розрахувала дози радіації для пацієнтів. Софтдозволяв розраховувати дози з урахуванням чотирьох металевих щитів, що захищають здорову тканину, проте лікарі хотіли використовувати п'ять. Техніки виявили, що вони можуть обдурити програму замінивши всі щити одним, з отвором посередині. Що вони не врахували, так це те, що програма враховуєякнамальована дірка: в одному напрямку - і відповідь буде правильною, в іншому - і доза буде подвоєна . Вісім пацієнтів померли, 20 отримали передозування з наступними величезними проблемами зі здоров'ям. Лікарі, які вручну повинні були перевіряти ще раз результати розрахунків звинувачені у вбивстві…