Най-лошите компютърни грешки в историята
Миналия месец Toyota обяви изтегляне на 160 000 хибридни автомобила Prius поради необясними светлини и спирания на бензиновите двигатели. Но за разлика от много ревюта от последните години, проблемът на Prius изобщо не беше в хардуера - това беше софтуерна грешка в софтуера на колата. Prius имаше софтуерна грешка...
С това ревю Prius влезе в елитния компютърен клуб —клуб, който отвори вратите си преди шестдесет години, през 1945 г., когато инженери откриха молец, който прескача реле в компютър Harvard Mark II. Къртицата беше уловена и системният журнал получи нов запис: „Първи реален случай на откриване на грешка“.
Но кои са най-страшните?
Много хора смятат, че най-трагичните грешки са тези, които костват живота на хората. Разбира се, не са много от тях, но тези, които съществуват, само още веднъж ни предупреждават за необмислено разгръщане на софтуер в критични приложения. Експертите, изучаващи такива системи, обаче казват - да, бъгове могат да убият хора, но да се види само това е опасно,невъвеждането на програми в области, където те са критично необходими, може да убие много повече хора.
Така че по един или друг начин, но нашите грешки ще останат с нас. Ето, в хронологичен ред, списък с 10-те най-лоши софтуерни грешки в човешката история.
28 юли 1962 г
Грешка в софтуера на Маринър 1ракета доведе до дрейф и дистанционна детонация на цялата система над Атлантическия океан. Разследването разкри, че формула, написана на хартия, е била неправилно преведена в машинни кодове, което е довело до неправилно изчисление от компютъратраектория на ракетата.
Подкопаване на съветския тръбопровод. Най-вероятно служители на ЦРУ умишлено са поставили бъг в канадска компютърна система, открадната от СССР, за да контролират работата на Транссибирския газопровод. Тази програма беше само част от кампания на Съюза за закупуване или кражба на критична американска технология. Ръководството разбра за тази програма и реши да отвърне на удара - оборудването премина успешно съветските тестове и след това, вече в процеса на работа, се срина, причинявайки огромни щети. Резултатът е най-голямата неядрена експлозия в човешката история.
Медицинска система за облъчване Therac-25. Няколко души загинаха поради смъртоносни дози радиация. Therac-25 се превърна в усъвършенствана система, способна да работи с два вида радиация наведнъж - електронно лъчение с ниска мощност (бета частици) и рентгенови лъчи. Второто подобрение, в сравнение с Therac-20, беше софтуерната защита, вместо старата, електромеханична. Тогава изглеждаше, че програмата е по-надеждна... Въпреки това, операционната система на устройството се оказа написана от неквалифициран програмист, което може да доведе до излагане на пациенти на мощни бета лъчи без поставяне на щит върху нея. Най-малко 5 пациенти загинаха, много от тях бяха сериозно ранени .
Препълване на буфер в операционна система Unix. Първият интернет червей (Morris Worm) зарази между 2000 и 6000 компютъра за по-малко от ден. Функцията gets() не провери размерността на предадения низ и твърде дългият вход позволи причинявайки препълване на буфера с цялата следваща радост... Програмистите ограничиха функцията за въвеждане на низ, но отказаха да я премахнат от стандартната C I/O библиотека, където е съществува и до днес.
Генератор на произволни числа в Kerberos. Неправилното внедряване на генератора доведе до това, че системите с Kerberos удостоверяване са практически беззащитни в продължение на 8 години. Все още не е известно дали грешката е била използвана за истински хакове.
15 януари 1990 г
Грешка в Pentium. Известен бъг, при който процесорите на Intel неправилно изпълняват разделяне с плаваща единица. Например, разделянето на 4195835.0 на 3145727.0 дава 1.33374 вместо 1.33382, грешка от 0.006 процента. След възникналото обществено възмущение, Intel беше принудена да замени процесорите с всеки желаещ. Грешката струва на компанията около $475 милиона.
Известният Пинг на смъртта. Колкото и да е странно, понякога зли хакери свалят хостове, използвайки ping. Факт е, че някои ОС бяха уязвими на Ping на смъртни атаки. Значението им е просто: на машина с течаща ОС беше изпратен пинг, по-дълъг от стандартните 65535 байта. Системи като Solaris 2.4, Minix, MacOS 7, Windows 3.11 и 95 се разболяха и се сринаха, рестартираха и увиснаха. През 1996 г. POD помогна на много другари да се забавляват.
Падането на Ариан 5. Кодът на Ariane 5 беше пренесен от Ariane 4, но новите ракетни двигатели предизвикаха грешка в аритметичната операция на бордовия компютър, когато 64-битовото плаващо число беше преобразувано в 16-битово цяло число. Над мощните двигатели предизвикаха преливане - и компютрите се сринаха, а ракетата се самоунищожи след 40 секунди полет.
Национален институт по рака в Панама. Програма за изчисляване на радиационната доза в Съединените щати е изчислила неправилно радиационните дози за пациентите. Мекпозволиха да изчислят дозите въз основа на четири метални щита, защитаващи здравата тъкан, но лекарите искаха да използват пет. Техниците откриха, че могат да измамят програмата, като заменят всички щитове с един, с дупка в средата. Това, което не са взели предвид, , е, че програмата отчитакаке начертана дупката : в едната посока - и отговорът ще бъде верен, в другата - дозата ще бъде удвоена. Осем пациенти починаха, 20 получиха предозиране с последващи огромни здравословни проблеми. Лекари, които ръчно е трябвало да проверят повторно изчисленията, са обвинени в убийство...