A bug, azaz a szoftverhiba rengeteg formában megjelenhet: lehet teljes lefagyás, idegesítő kis apróság, hibás függvény...
A bug, azaz a szoftverhiba rengeteg formában megjelenhet: lehet teljes lefagyás, idegesítő kis apróság, hibás függvény vagy memória címzés, gonoszul elrejtőzve a sok százezer soros programkódban… A programozók úgy tartják, hogy a bug „millió arccal” rendelkezik, és ugyanennyi jelenséget produkálhat. Egyvalami közös csak mindegyikben: kivétel nélkül idegesítőek és nehéz őket előre megjósolni.
A szó eredete az angol bogár (bug) szóra vezethető vissza. 1945-ben született a kifejezés, amikor az egyik első kezdetleges számítógépben, a Harvard Mark II belsejébe molylepkék fészkelték be magukat. A bogarak pontos helye az F panel 70-es relay volt, s bármi is volt az - ennyi év távlatából ugye- , annyi biztos, hogy elég eldugott helyen volt. A bogarak a kábelek szigetelésének megrágcsálásával hibás működést generáltak, a mérnökök pedig megőszültek mire egyáltalán eszükbe jutott, hogy bekukkantsanak az „F-panel” alá. El is neveztek minden idegesítő és nehezen visszakövethető hibát „bogárnak”, hogy miért nem inkább molylepkének (angolul „moth”) az rejtély.
Napjainkban persze a bugok már nem rágcsálnak semmit, jóval „kifinomultabbak”. Mennyire komoly dolog ez? Nos, ha az otthoni XP lefagy, mert a Windows „bugos” (és hát az), az sem kellemes. Az igazi bugok azonban dollármilliók (milliárdok) elvesztését okozhatják, sőt, sajnos néha emberéleteket is követelhetnek. Lássuk a legszörnyűbb bugokat az IT-világ eddigi történelmében!
10. A lista legfiatalabb helyezettje alig pár hónapos történet. A Toyota kénytelen volt visszahívni a kereskedelmi forgalomból a legyártott Prius típusú autók nagy részét. Ennek eddig még semmi köze a szoftverekhez, máskor is előfordult már, hogy egy nagy autógyártó visszahívott szériákat ilyen-olyan mechanikai, vagy tervezési hiba miatt. A Prius esete azért érdekes, mert ez volt az első (bizonyítható, és a cég által is elismert) eset a világon, amikor a visszahívást (és a sok millió dolláros veszteséget) egy szoftverhiba, azaz bug okozta.
A hibajelenségek ráadásul elég széles spektrumon mozogtak, és eredetüket is nehéz volt felderíteni (ugye? Az igazi bug ismérvei…). Az autók figyelmeztető lámpái sorra jeleztek, holott minden tökéletesen működött, sőt sokszor a motor is leállt, holott mechanikailag minden rendben volt. A hibákat az ún. „smart car embedded code”, azaz a számítógéppel vezérelt „okos-autó” operációs rendszerében találták meg, egy sima bug formájában - később kiderült, a hiba nem csak a Prius szériát érinti. A Toyotákat nem olyan egyszerű a neten keresztül „peccselni”, mint a Windowst, így a dolog végül több mint negyvenmillió gépjárművet érintett.
09. Következő helyezés a Mariner I űrszonda hibája, még 1962-ből. A rakéta fellövés után egyáltalán nem arra indult amerre tervezték. Ez nem egy veszélytelen dolog, még akkor sem, ha a rakéta nem tartalmaz robbanófejet. Főleg nem a hidegháború éveiben. Az irányítóközpont végül az óceán felett megsemmisítette az elszabadult szondát. Az utólagos vizsgálat kiderítette, hogy a papíron helyes formulát rosszul fordította le a vezérlő számítógép (vagy helytelenül tápláltak be), így született az egyik első, ám annál veszélyesebb bug.
08. Még mindig a hidegháború és ezúttal egy olyan bug, amelyet szándékosan építettek a szoftverbe. Szomorú módon az emberiség történelmének legnagyobb, nem nukleáris eredetű robbanását okozta. A CIA egy szándékos hibát csempészett az Oroszok által a transz-szibériai gázvezeték vezérléséhez szánt (mellesleg kanadai fejlesztésű) szoftverbe. A történet a mai napig homályos, mivel mindkét fél (a KGB és a CIA) másképpen emlékszik, és persze minden verzióban más a hibás. Az egyetlen ismert - és némileg hitelesnek mondható - forrás az ún. „Farewell” dosszié, Vladimir Vetrov ügynök után, akinek fedőneve „farewell” volt. A történetből film is készült, persze nem Orosz, hanem hollywoodi mozi.
07. A „Therac-25 medical accelerator” esete. 1985 és 1987 közé tehető az időpont. A Therac 25 funkcója az lett volna, mint minden radioaktív (besugárzásos) alapon működő kórházi készüléknek: a gyógyítás és a terápia. Sajnos a műszer operációs rendszerét fejlesztő mérnök semmilyen kórházi (főleg nem sugárzással kapcsolatos) tapasztalattal nem rendelkezett, így a rendszerben volt egy bug – nem is akármilyen programozók mint „race condition bug” ismerik. A történet sajnos nagyon tragikus véget ért: a Therac 25 visszavonásáig legkevesebb öt páciens halt meg a túlzottan erős elektronbombázás miatt.
06. 1988 - Robert T. Morris, és a világ első számítógépes férge, ami tulajdonképpen egy bugra (buffer overflow) épült. Morrisról, a világ első féreg-vírusáról és a régi idők hackereiről már részletesen megemlékeztünk itt.
05. Kerberos véletlenszám generátor. 1988 és 1996 között használta a Kerberos: ez a '80-as évek közepén kifejlesztett egyik legszélesebb körben elterjedt általános célú hitelesítési protokoll. A dolog lényege a biztonság lett volna, de a véletlenszám generátor hibája miatt a rendszer nagyon egyszerűen kijátszható volt. Tulajdonképpen még egy gyerek is be tudott volna törni a Kerberos alapú rendszerekbe. A hibát csak 1996-ban találták meg és javították ki, dokumentált eset azonban nincs róla, hogy bárki kihasználta volna a majdnem egy évtizedig a kódban bujkáló hiányosságot. (Vagy csak nem tudunk róla…)
04. 1995-ben történt a világ legnagyobb telefonszolgáltatójának, az AT&T-nek hálózatán. Tulajdonképpen a történelem egyik legnevetségesebb „bugja”. A telefontársaság új szoftvereket telepített, kicsivel később azonban a távolsági hívásokat kezelő vadonatúj rendszer szupergépei végleg lefagytak, amikor egy bizonyos üzenetet (kódcsomagot) kaptak a többi mamut géptől. A dologban az a vicces, hogy ez az üzenet akkor került elküldésre, ha az egyik gép lefagyott… Ekkor szólt a másiknak, hogy vegye át a feladatokat, azonban maga az üzenet volt az, amitől lefagyott… Így megint ment tovább az üzenet, a végtelenségig.
1990 január 15-én, 114 gép fagyott le sorban, kb. hatvenezer ember nem tudott távolsági hívásokat bonyolítani. Hogyan oldották meg végül? Nos, az AT&T alig kilenc óra leforgása alatt javította a hibát, mégpedig úgy, hogy visszatelepítették a rendszer előző verzióját. A régi, jól bevált módszer…
03. Az Intel Pentium hiba. Ezt a történetet mindenki ismeri: nem a világ legnagyobb hibája, mégis a legtöbb nyilvánosságot ez kapta (talán mert ez már az otthoni felhasználókat is érintette). Az óriási reklámhadjárattal beharangozott új chip, lebegőpontos számítási műveletekben nem remekelt. Konkrétan: nem jól számolt, ami egy processzor esetében eléggé nagy hátrány. 475 millió dollárjába került az Intelnek a mintegy ötmillió hibás chip visszahívása.
02. A halál pingje (Ping of Death) 1995-96 tájékán híresült el, a bug lényege röviden: egy megfelelő ping paranccsal a neten keresztül kék-halált lehetett okozni a megtámadott Windowsos gépben, de néhány Mac és Linuxos gép esetében is működött a trükk. Elég volt az IP címet tudni, vagy IRC-n, (akkoriban ez volt a csevegő) „megpingelni” a megfelelő helyen, és máris kapkodhatott a reset gomb után. A bug elég mélyen volt, magában az IP-csomagellenőrző kódban rejtőzött.
01. Az Ariane ötös rövid repülése. 1996. A repülés egészen pontosan 37 másodpercig tartott: a rakéta a start után letért a kijelölt pályáról, majd az önmegsemmisítő szerkezet beindult és tette a dolgát… 370 millió dolláros kár, egy apró szoftverhiba miatt: a 64 bites lebegőpontos számokat 16 bites integer-re átszámoló kódrészlet hibás volt. (Teljes, hivatalos vizsgálati jelentés itt).
[Források: Wired, Wiki, prwatcher]