Skupe softverske greške

Kada bi građevinari zidali zgrade
kao što programeri pišu programe,
prvi detlić srušio bi civilizaciju.


Šta se zapravo desilo tog 19. jula kada su, od ranog jutra, sve vodeće TV stanice prekinule svoj redovni program kako bi izveštavale o masovnom pada računara sa “Windows” operativnim sistemom? Posmatraču sa strane izgledalo je kao da je čitav svet bio bačen na kolena, nesposoban da se nosi sa veličinom problema koja ga je zadesila. Praktično da nije bilo industrijske grane koja, u većoj ili manjoj pmeri, nije bila pogođena ovom “elementarnom nepogodom” koja će ubrzo prerasti u najveći prekid u funkcionisanju kompjuterskih sistema u istoriji. Na milionima računara širom sveta pojavili su se plavi ekrani sa kriptičnom informacijom o fatalnoj grešci koja je onemugućavala njihovo dalje korišćenje. 

Na aerodromima je prestala prodaja karata, čekiranje prtljaga, ukrcavanje u avione, stvorile su se nezamislive gužve. Ljudi su čekali satima da dobiju neku informaciju a nje nije bilo jer su svi monitori na aerodromima bili nefunkcionalni. Da bi bar neki avion poleteo, službenici su pravili spiskove koristeći neke davno zaboravljene tehnike (papir i hemijske olovke). Banke su bile prinuđene da obustave finansijske transakcije, javni transport je funkcionisao otežano, medijske kuće radile su sa pola kapaciteta. U bolnicama su odlagane operacije koje su zahtevale korišćenje savremenog softvera, dijagnostika je svedena na minimum, tretirani su samo hitni slučajevi. Probleme su prijavile sve svetske berze, a u mnogim gradovima bile su pogođene i neke vitalne službe kao što su vatrogasci ili hitna pomoć. Atomatski “check-in/check-out” proces u mnogim hotelima prestao je da funkcioniše, mnogi trgovinski lanci nisu mogli da procesiraju kreditne kartice tako da je plaćanje bilo moguće jedino gotovinom do koje je, opet, bilo teško doći jer su i mnogi bankomati prestali da rade. Na pumpnim stanicama nije bilo moguće natočiti gorivo, državni službenici jednostavno su spustili roletne na svoje šaltere i prešli na sudoku i ukrštene reči. Mnoge web stranice su pale, a veliki broj IT-firmi jednostavno nije imao na čemu da radi jer je “Azure”, “Majkrosoftova” klaud-platforma koju ogroman broj kompanija koristi za razvoj softvera, bila žrtva istog problema.

Prvo smo posumnjali na terorizam, na organizovani sajber-napad iz neke azijske zabiti, diverziju koju su izveli Putin, Si Đinping, Kim Džong Un, albanska mafija, Marsovci, svi zajedno. Da nije možda neki kompjuterski virus, poput onog galopirajućeg “crva” koji je nekad davno kreirao Robert Moris i oborio ceo tadašnji internet? Da se opet nije aktivirao Robert Drejper poznat i kao “Kapetan Kranč”, onaj što je duvajući u slušalicu kroz žutu patku izvađenu iz kutije “Kranč” pahuljica umeo da ostvari besplatni telefonski poziv sa Tokijom? 


Ništa od svega toga. Danas znamo da je problem izazvala kompanija “Crowdstrike” koja je prozivela tzv. “Falcon Sensor”, softver koji prati sve aktivnosti koje se dešavaju na računaru i po potrebi reaguje kada naiđe na program koji zloupotrebljava računarske resurse. To mogu da budu klasični kompjuterski virusi, eksterni napadi na kompjutersku infrastrukturu, programi koji špijuniraju korisnika i šalju prikupljene podatke “tamo negde”. Ukratko, “Falcon Sensor” štiti računar od tehnopata koji kreiraju programe koji su, u suštini, uljezi u sistemu i nemaju drugu nameru osim da proizvedu određenu materijalnu štetu ili onemoguće normalno korišćenje računara.

Nikad niste čuli za “Crowdstrike”? Ako ste običan smrtnik, nalik autoru ovog teksta, to ne treba da vas čudi. Na papiru, “Crowdstrike” ima “samo” 29.000 korisnika ali su to, skoro bez izuzetka, ogromne kompanije, svaka sa po nekoliko stotina ili hiljada računara na kojima se izvršava “Crowdstrike” softver. Od 500 najvećih svetskih kompanija sa “Fortune” liste, svaka druga koristi “Crowdstrike” programe za zaštitu individualnih računara. Drugim rečima, kompanija se specijalizovala za najveće i platežno najsposobnije klijente koji su, po pravilu, i najviše ugroženi pretnjama koje dolaze sa interneta. 


Da biste razumeli kako je “Crowdstrike” doveo do masovnog pada računara širom sveta neophodno je da vam budu poznati bar neki osnovni pojmovi. Pre svega, nijedan računar, nijedan mobilni telefon ili tablet  ne može da funkcioniše bez operativnog sistema. Zadatak operativnog sistema je da omogući korišćenje hardverskih resursa računara. Bez operativnog sistema, mirkoprocesor, matična ploča, disk za smeštaj podataka, miš, tastatura ili grafička kartica predstavljaju običnu gomilu beskorisnog silicijuma. Operativni sistem kontroliše sav taj hardver i omogućava vam njegovo korišćenje na način koji je jednostavan, intuitivan, brz i efiksan. Programi kao što su “Word”, “Excel”, kompjuterske igrice ili vaš brazuer nisu deo operativnog sistema ali je operativni sistem neophodan za njihovo izvršavanje. Zato ih nazivamo “korisničkim programima” i na vama je da, nakon instalcije operativnog sistema, odaberete i instalirate korisnički softver koji vam je neophodan za rad.

Od svih operativnih sistema danas je svakako najpoznatiji “Majkrosoftov” “Windows”, u verzijama 10 i 11. Međutim, operativnih sistema ima mnogo više: na “Apple” računarima to je “MacOS”, za one koji vole da imaju malo više slobode i žele besplatno ali kvalitetno rešenje tu je “Linux”, koji je uvek upakovan u neku od “distribucija” sa egzotičnim imenom (“Ubuntu”, “Debian”, “Mint”, “Fedora”...). Sve distribucije dele zajednički “Linux” kernel (o kernelu više u narednim paragrafima), ali se razlikuje nadogradnja (dizajn, način kontrolisanja aplikacija, jednostavnost upotrebe i ažuriranja). Ima i komercijalnih verzija “Linuxa” koje se plaćaju (“Redhat”, na primer), ali su one popularnije na poslovnim nego na privatnim računarima. Za one kojima ni “Linux” nije dovoljno besplatan tu su “FreeBSD” i “OpenBSD”. U slučaju mobilnih telefona i tableta tu je knjiga spala na dva slova: “Android” operativni sistem, koji je potpuno besplatan i čiji razvoj kontroliše “Gugl”, i iOS iza kojeg stoji “Apple” i namenjen je isključivo njegovim tabletima i mobilnim telefonima. Kada se pogledaju globalne statistike, najpopularniji operativni sistem na svetu je “Android” (pre svega zahvaljujući ogromnom broju mobilnih telefona) sa 40% tržišnog udela. Odmah iza njega tu je Windows sa 30%. 

Svaki operativni sistem ima kernel koji predstavlja jezgro (centralni deo) operativnog sistema. Tokom normalne upotrebe računara kernel je zapravo nevidljiv ali je on sve vreme aktivan, s obzirom da je on zadužen za osnovne funkcije koje omogućavaju rad korisčnih programa. Svaki korisnički program predstavlja jedan “proces” a kontrolu tih procesa, njihovu sinhronizaciju, redosled izvršavanja i međusobnu komunikaciju nadzire kernel. Kernel je takođe odgovoran za menadžment memorijskog prostora u računaru: kada nekoj korisničkoj aplikaciji zatreba dodatni prostor za smeštaj podataka, aplikacija će ga zatražiti i dobiti upravo od kernela. Treća uloga kernela je i da omogući komunikaciju sa računarskim hardverom koristeći posebne programe koje nazivamo “drajverima”. Bez kernela, vaša tastatura, grafička kartica ili disk jednostavno neće funckionisati. Takođe, sve aktivnosti vezane za fajlove u kojima se nalaze vaši korisni podaci (tekstovi, tabele, baze podataka) oslanjaju se na funkcionalnost kernela koji će te fajlove organizovati na optimalan način, vodeći računa o njihovom integritetu. I, na kraju, tu je sigurnost celog sistema: kernel nadzire njegovo uspešno funkcionisanje i obezbeđuje da svako ko radi na računaru može da izvede samo one operacije koje su mu dozvoljene, ne ugrožavajući podatke ili resurse koje koristi neko drugi.  

Kako bi se kernel zaštitio od malicioznih koriniska ili slučajne zloupotrebe, savremeni operativni sistemi imaju hijerarhijski sistem privilegija pri čemu svaki deo softvera funkcioniše unutar određenog sigurnosnog “prstena”. Kernel radi u tzv. kernel-modu za koji je rezervisan nulti prsten. Svi programi koji funkcionišu u nultom prstenu mogu da imaju potpunu kontrolu nad mašinom, uključujući memoriju i sav ostali hardver. Korisnički programi izvršavaju se u tzv. korisničkom modu, u prstenu sa brojem 3 koji ima najniže privilegije, bez direktnog pristupa hardveru (postoje još dva prstena sa brojem 1 i 2 ali se oni u praksi koriste vrlo retko). Poenta je da su ovi prstenovi fizički odvojeni i da fatalni prestanak rada korisničke aplikacije koja se izvršava u trećem prstenu nema nikakve štetne posledice na kernel u nultom. Korisnički program ne može da onesposobi kernel ali obrnuto tvrđenje ne važi: korišćenjem funkcija kernela moguće je zaustaviti svaki korisnički program. Na ovaj način, kernel, “najdragocenije” parče operativnog sistema, predstavlja dobro zaštićenu, izolovanu celinu. Kada korisnički program treba da pristupi hardveru koji kontroliše kernel, on ne dobija pravo da se privremeno “preseli” u nulti prsten. Umesto toga, program šalje notifikaciju kernelu da mu je potrebna određena asistencija i onda čeka da mu tu uslugu kernel obezbedi.

Kad stvari krenu naopako: "Kernel Panic"
Jedna stvar je ovde u fundamentalne važnosti: ako iz bilo kog razloga kernel prestane da funkcioniše ili naleti na neočekivanu situaciju, ceo sistem postaje neupotrebljiv. Sve što korisnik može da vidi na ekranu u tom trenutku je takozvani “blue screen of death” (u slučaju “Windowsa”; kod Linuxa je ovaj ekran crn, kod Apple računara ljubičast). Odavno je zaključeno da je za korisnika sigurnije da u takvim situacijama računar prestane da radi jer bi nastavak rada sistema za kompromitovanim kernelom mogao da izazove još teže posledice. Šta korisnik u tom slučaju može da učini? Ekran sa fatalnom greškom sadrži neke osnovne informacije koje kvalifikovanoj osobi mogu da pomognu da otkrije uzrok problema. Laici lišeni pomoći sa strane mogu jedino da restartuju računar i nadaju se da će problem nestati sam od sebe. Ako se to ne desi, onda je korisnik u ozbiljnom problemu.

Već smo napomenuli da se u privliegovanom, nultom prstenu izvršava samo kernel, ali to nije sasvim tačno. Tu su i “drajveri”, programi koji komuniciraju direktno sa hardverom računara. Na ovom mestu u priču ulazi “Crowdstrike” sa svojim “Falkon” senzorom. Da bi jedan takav senzor mogao da bude efikasan, da bi mogao da detektuje sumnjive aktivnosti i neželjene programe na računaru, on pre svega mora da bude u stanju da ih vidi u celosti a to je moguće samo ako je smešten u nulti prsten, zajedno sa kernelom i drajverima. Takvi “gosti” u nultom prstenu, virtuelni drajveri koji ne komuniciraju s hardverom već obavljaju neke druge poslove, potencijalno su opasni jer, kao što rekosmo, svaka greška koja nastane u kernel-modu nemonovno vodi do pomenutog plavog ekrana i zaustavljanja sistema. Zato Majkrosoft nudi proizvođačima hardvera i pratećih drajvera tzv. WHQL (“Windows Hardware Quality Labs”) sertifikaciju. Drajveri nezavisnih kompanija podvrgavaju se višednevnom intenzivnom testiranju i, ako sve prođe uspešno, dobijaju digitalni Majkrosoftov potpis koji garantuje njihov kvalitet. Takav pristup je u redu kada je u pitanju drajver za štampač jer se on, kada ga jednom instalirate i ubacite odgovarajući drajver u kernel, situacija obično godinama ne menja. Međutim, koncept ne funkcioniše za proizvode kao što je “Falkon senzor”. On mora da bude u stanju da što pre reaguje na nove pretnje koje se pojavljuju praktično svakodnevno. Višednevni proces sertifikacije nove verzije senzora odneo bi, jednostavno, previše vremena ostavljajući korisnike nezaštićenima. Umesto toga, “Crowdstrike” softver, onaj koji se već nalazi u kernel-modu, dobija informacije o novim pretnjama i načinima njihove detekcije i eliminacije u vidu definicionih fajlova koje dobija preko interneta. Majkorosoftov WHQL sertifikat ostaje validan jer se sam virtuelni drajver ne menja. Problem je, međutim, što svaki definicioni fajl može da dovede do promene ponašanja u softveru koja može da ima fatalan ishod. 

Tačno to desilo se 19. jula kada je operater “Crowdstrikea” preko interneta distribuirao novi definicioni fajl koji je očigledno bio faličan. Šta je u njemu bilo pogrešno do današnjeg dana nije obelodanjeno. Ali kombinacija lošeg definicionog fajla i osnovnog “Falcon” koda koji nije bio dovoljno robustan, u stanju da prepozna defektne fajlove i odbije da ih koristi, dovela je do fatalne greške u kernelu koja je vodila do plavog ekrana. 

Windows ima mehanizme (“Safe mode”) koji mogu da pomognu da iole edukovani korisnik sam oporavi svojs sitem. Međutim, za to je najčešće potrebno da imate fizički pristup do mašine. U ovom konkretnom slučaju, postojao je relativno jednostavan način da onesposobljeni računar oporavite u kratkom roku. Šta su, međutim, mogli da urade radnici na aerodromima, lekari u bolnicama, službenici u bankama u situaciji kada su računari počeli da “padaju” jedan za drugim. Većina njih i ne zna gde im je fizički server, mnogi koriste klaud-infrastrukturu gde se pogođeni računar nalazi u nekom udaljenom objektu, iza sedam gora, iza sedam mora... niko od njih zapravo nema ni ovlašćenje da se petlja sa infrastrukturom a broj IT-stručnjaka koji su mogli da se bave ovim problemom bio je smešno mali u odnosu na njegove razmere. Srećom, neko rešenje je nađeno, i “Majkrosoft” i “Crowdstrike” su kreirali nove “zakrpe” i putem interneta ih distribuirali do pogođenih računara. U drugoj polovini dana, situacija je krenula lagano da se normalizuje. Likovali su jedino vlasnici “Linux” i “Apple” računara koji nisu imali nikakvih problema.


Šta je, zapravo, najstrašnije u celoj ovoj epizodi? U jednom trenutku izgledalo je kao da je svet stao, kao automobil zaglavljen u dubokom blatu, iako je broj pogođenih računara bio relativno mali (oko 8 miliona, što je svega 1% od ukupnog broja). Zar je tako lako zaustaviti normalan život na ovoj planeti? Ispostaviće se da nam nisu potrebni nikakvi teroristi, nikakvi koordinisani sajber-napadi iz tamo neke Rusije, Kine ili Koreje. U ovom slučaju bio je dovoljan jedan jedini fajl, legitimno distribuiran u najboljoj nameri od strane renomirane kompanije. Šta bi se desilo da je kojim slučajem 20 ili 30% računara ispalo iz pogona? Postali smo narkomanski zavisni od elektronike, do te mere da više tu zavisnost ne možemo ni da izmerimo, niti da se od te zavisnosti lečimo. Oslonili smo se na mašine verujući da su one pouzdanije od bilo kog živog bića, bez ikakvog rezervnog plana ako bez tih mašina ostanemo, makar na nekoliko sati.

Ovoga puta, izgleda da je napravljena samo materijalna šteta od oko 10 milijardi dolara. Da li će “Crowdstrike” kao kompanija to uspeti da preživi kad krenu odštetni zahtevi, videćemo. Vredi primetiti da su neke zemlje, kojima smo umeli da se podsmevamo, u celoj ovoj fertutmi prošle takoreći bez ikakve štete. Primer je Kina koja je vremenom izgradila svoj “paralelni internet” (poznat i kao “splinternet”). Amerika je Kini odavno nametnula embargo na većinu softvera koji ima sigurnosnu namenu pa zahvaljujći tome u Kini i nema “Crowdstirke” korisnika. Problem su osetili jedino lanci zapadnih hotela kao što su “Hilton” ili “Šeraton” na koje se zapadni embargo ne odnosi. Ni Rusija, sa kojom zapadne softverske kuće više ne sarađuju zbog sankcija uvedenih zbog rata u Ukrajini nije imala nikakvih problema. Pomenimo na kraju i Srbiju: mi jednostavno nismo dovoljno bogati da bi plaćali papreno skupe “Crowdstrike” licence, naše firme ograničene su na besplatne sigurnosne sisteme, legendarni Kasperski ili Avast, a uzdamo se i u božju pomoć, kao i uvek do sada. Ponekad siromaštvo ima svojih prednosti: manja kašnjenja prijavio je boegradski aerodrom i to je sve.

Nevolje sa kompjuterima nisu od juče. Kompjuteri su tu, oko nas, već više od pola veka. Sledi kratak prikaz događaja iz ne tako davne prošlosti u kojima su greške i nedostaci u softveru doveli do spektakularnih promašaja, skandala, gubitaka i katastrofa. Trebalo je da iz svega toga izvučemo neku pouku, ali nismo. Kao što nećemo ni sada.  

Kosmičke nevolje: “Mariner 1” (1962), “Arijana 5” (1996), “Mars Climate Orbiter” (1999)

Mariner-1
Na kosmičkim letelicama kompjuteri su počeli da se koriste početkom šezdesetih godina ovog veka. Bile su to spore i skromne mašine sa vrlo limitiranim softverom ali sasvim dovoljne da obave limitirani set relativno jednostavnih operacija. Jedan takav kompjuter upotrebljen je u misiji NASA čiji je zadatak bio da sondu “Mariner 1” odnese do Venere. Ulazak u orbitu ili spuštanje na planetu nije bilo predviđeno - misija se svodila na to da sonda proleti pored Venere i obavi par osnovnih merenja tokom kratkotrajnog susreta. 

U to vreme, Venera je bila takoreći nepoznata planeta. Obavijena gustim oblacima dominantno sastavljenim od ugljen-dioksida, njena površina bila je nedostupna za zemaljske teleskope. Već tada se znalo da je zbog efekta staklene bašte i manjeg rastojanja od Sunca temperatura na površini Venere vrlo visoka, verovatno veća od 300oC ali tačnu vrednost nije bilo moguće utvrditi. Nije se znalo ni kojom brzinom se planeta vrti oko svoje ose, da li se dnevne i noćne temperature razlikuju, da li planeta poseduje magnetno polje nalik Zemljinom, da li u atmosferi postoji značajna količina vodene pare... Iako skromno opremljen, “Mariner 1” bio je u stanju da pruži odgovor na bar neka otvorena pitanja. 

Kao nosač upotrebljena je raketa “Atlas-Agena” a samo lansiranje obavljeno je 22. jula 1962. godine, nakon brojnih odlaganja i ponovljenih odbrojavanja. Nedugo nakon poletanja raketa je počela da skreće sa kursa a stvar je postala još gora kada su iz kontrole leta ka raketi poslate korektivne komande. Trajektorija letelice sve više je odstupala od planirane zapretivši da ugrozi obližnja naseljena mesta kao i brodove u Atlantiku. Svega šest sekundi pre planirane separacije prvog i drugog stepena rakete, oficir zadužen za sigurnost zone poletanja doneo je odluku da se raketa samouništi (nakon odvajanja prvog stepena to više ne bi bilo moguće). 

S obzirom da je raketa tokom lansiranja lagano odstupala od planiranog kursa, inženjeri su posumnjali da su jednačine implementirane u softveru koji je kontrolisao početnu fazu leta rakete bile pogrešne.Samo pet dana nakon katastrofe, konstruktori rakete definitivno su potvrdili da je greška bila u softveru koji je upravljao trajektorijom letelice, uz naknadni hardverski otkaz. Greška u softveru imala je banalni uzrok: originalne jednačine koje su korišćene za upravljanje letelicom koristile su oznaku “R” sa crtom iznad slova koja je označavala da u programu treba koristiti prosečnu vrednost ove veličine izračunatu na osnovu nekoliko prethodnih merenja. U jednačinama koje su dobili programeri ova crta je misteoriozno nestala tako da je program koji je nastao na osnovu ovih jednačina umesto prosečne koristio trenutnu vrednost. U ovoj konkretnoj situaciji programeri su korektno obavili svoj posao ali su, na žalost, radili sa pogrešnim ulaznim podacima. Greška koju je softver generisao nije bila velika ali je bila dovoljna da skrene raketu sa planiranog kursa. Na to se nadovezao i hardverski problem usled koga je sistem za navigaciju privremeno izgubio informaciju o visini na kojoj se raketa nalazi. Kada je ta informacija ponovo postala dostupna, falični navigacioni softver pogrešno je zaključio da se brzina rakete nepredvidljivo menja što je dovelo do pokušaja korekcije koji su samo doprineli da se situacija pogorša. Letelica je morala da bude uništena čime je nastala šteta od oko 190 miliona današnjih dolara. 

Srećom, naredni pokušaj predstavljao je potpuni uspeh: Mariner 2 lansiran je svega mesec dana kasnije da bi pored Venere proleteo u decembru iste godine i na Zemlju poslao obilje naučnih podataka, među njima i onaj da temperatura na površini Venere iznosi oko 500oC.

***

Premijerni let Arijane 5
Raketa-nosač “Arijana 5”, koja je prošle godine otišla u penziju da bi je ove godine nasledila “Arijana 6”, biće upamćena po svojoj dugovečnosti, pouzdanosti, svestranosti i prilagodljivosti. Sa 113 obavljenih misija i preko 95% lansiranja obavljenih bez ikakvih incidenata, reč je, svakako, o najboljoj letelici koju je Evropska svemirska agencija (“ESA”) ikad napravila. U jednom periodu “Arijana 5” imala je niz od 82 uzastopna uspešna lanisranja, što je i danas impozantan rezultat za rakete slične nosivosti. Među korisnicima bile su i najjače svetske telekomunikacione kompanije: Eutelsat, SES, Intelsat... Raketa je s lakoćom izbacivala satelite u geostacionarnu orbitu a obavila je i lavovski deo posla kada je u pitanju lansiranje sistema “Galileo” koji predstavlja evropsku verziju američkog navigacionog sistema (GPS). NASA je na svoj način pokazala koliko respektuje kvalitet “Arijane 5”: na njenim leđima, u decembru 2021. godine, uspešno je lansiran basnoslovno skupi kosmički teleskop “Džejms Veb”.

Ko se, međutim, još seća sumornog početka, prvog leta “Arijane 5” iz juna 1996. godine koji se završio spektakularnom destrukcijom letelice nakon svega 37 sekundi leta pri čemu je uništen i sav koristan teret, klaster od četiri istraživačka satelita? Istraga je pokazala da je za katastrofu odgovoran neadekvatan upravljački softver, zapravo niz grešaka u njegovom dizajnu koje su svojom superpozicijom dovele do toga da letelica skrene sa svog kursa i raspadne se usled prevelikog aerodinamičkog opterećenja. U takvoj situaciji, kada let rakete postane nekontrolisan, aktivira se mehanizam za samouništenje kako bi se minimizirala šteta na zemlji.

Šta se zapravo dogodilo? Softver koji je koristila “Arijana 5” preuzet je velikim delom sa prethodne “četvorke”, uključujući tu i deo programskog koda koji “Arijani 5” zapravo nije bio ni potreban. Ispostaviće se da je taj “mrtav kod” bio i glavni izvor problema. U njegovom centralnom delu nalazila se funkcija koja je sračunavala horizontalnu brzinu letelice a preko nje i trenutni nagib putanje. Ta funkcija bila je neophodna “Arijani 4” tokom prvih 40 sekundi leta ali je bila beskorisna na “Arijani 5” koja ima drugačiju trajektoriju u ranoj fazi poletanja. Svejedno, funkcija je vredno računala ono što bi inače računala na “Arijani 4” ali je zbog značajno veće horizontalne brzine koju je “Arijana 5” imala u odnosu na “Arijanu 4” konačan rezultat bio neuporedivo veći. Problem je nastao kada je jednu tako veliku vrednost (u ovom slučaju broj sa decimalnim zarezom koji zauzima osam bajtova memorije) trebalo pretvoriti u celobrojnu vrednost i smestiti u prostor za rezultat koji je imao samo dva bajta. Tako nešto bilo je moguće na “Arijani 4” sa relativno malom horizontalnom brzinom. U slučaju “Arijane 5”, ovo je bilo nemoguće. Nastao je tzv. “hardverski overflow” (prekoračenje dozvoljenog opsega vrednosti), nešto što programeri kratko označavaju kao “exception” (reč koja označava izuzetan događaj u programu koji se ne sreće u normalnom radu). Nijedan program nije imun na pojavu “izuzetaka”: sigurno ste probali da delite nulom na prvom kalkulatoru koji vam je dopao šaka, kalkulator sigurno nije eksplodirao zbog toga. Drugim rečima, izuzeci u programima se dešavaju ali ih softverski inženjeri rutinski kontrolišu implementacijom određenih zaštitnih mehanizama tj. scenarija koji se automatski aktiviraju u ovakvim situacijama. Na žalost, softver “Arijane 5” nije bio jednako robustan u svim svojim delovima: program je za svoj rad koristio sedam registara (delova memorije) od kojih su samo četiri bila pokrivena zaštitnim mehanizmom dok su ostala tri ostala nezaštićena jer su se programeri rukovodili opsegom vrednosti koji je generisala “Arijana 4”. Kada u softveru imate nekontrolisani “izuzetak” on “propagira” sve dok potpuno ne zaustavi rad programa. U slučaju “Arijane 5”, prestao je da funkcioniše ceo sistem za navigaciju letelice, oba njegova modula koja su u suštini redundantna jer je za normalan let dovoljan samo jedan. Izlazni kod umirućeg programa navigacioni sistem protumačio je kao poslednju komandu koja je mlaznicu glavnog motora okrenula potpuno u stranu, što je dovelo do nagle promene trajektorije i aktiviranja mehanizma za autodestrukciju. 

***

Mars Observer
Mars je tradicionalno negostoljubiv domaćin, tek svaka druga sonda upućena ka ovoj planeti zabeleži makar delimičan uspeh. Razloga za ovako loš učinak ima više. Iako je Mars, uz Veneru nama najbliža planeta, kosmička rastojanja su velika tako da je svakom signalu poslatom sa Zemlje potrebno od 4 do 24 minuta da prevali rastojanje do Marsa. Samim tim, mogućnost brze reakcije u nepredviđenim okolnostima svedena je na minimum tako da letelicama po pravilu upravljaju manje ili više autonomni sistemi opremljeni senzorima i kompjuterima sposobnim da donesu potrebnu odluku u trenutku. Spuštanje na crnevnu planetu još je teže od samog ulaska u orbitu jer se zbog razređene atmosfere moraju koristiti složeni sistemi za prizemljenje koji obuhvataju aerodinamički štit, sistem padobrana i raketa za kočenje. Ali to je već neka druga priča

Nakon teškog gubitka iz 1993. godine, kada je “Mars Observer” vredan milijardu dolara naprasno otkazao neposredno pred randevu s Marsom, NASA je, na inicijativu novog direktora Danijela Goldina, radikalno izmenila svoj koncept istraživanja. Nova politika, pod olimpijskim geslom “brže, bolje, ekonomičnije” značila je da NASA namerava da iskoristi svaki pogodan položaj Zemlje u odnosu na Mars za lansiranje bar dve letelice (takva prilika ukazuje se svakih 26 meseci). Letelice bi, međutim, morale da budu znatno jeftinije, tako da gubitak jedne od njih ne ugrozi čitav program. Nova strategija ostvarila je spektakularan uspeh u julu 1997. godine kada se na Mars spustio “Mars Pathfinder” iz koga je izmileo “Sojourner”, inteligentno vozilo nalik na skejtbord koje je danima veselo krstarilo okolinom. U septembru 1997. u orbiti se našao i “Mars Global Surveyor”, letelica koja će narednih deset godina slati na Zemlju fotografije izuzetne preciznosti.

A onda je sve krenulo naopako. Krajem 1998. godine put Marsa su, u kratkom vremenskom intervalu, upućene dve letelice: “Mars Climate Orbiter”, zadužen da sa visine sakuplja podatke o klimatskim promenama na Marsu, i “Mars Polar Lender”, letelica koja bi trebalo da se meko spusti u polarni region Marsa, čija je glavna misija da u uzorcima tla pokuša da detektuje tragove vode.

Mars Climate Orbiter
Orbiter je izgubljen u septembru, nadomak cilja, zbog bizarne greške koja će, kao priča sa naravoučenijem, sigurno ući u sve udžbenike elementarne fizike. Naime, stručnjaci iz NASA verovali su da je reaktivna sila raketnih motora kojima se letelica održava na planiranoj putanji izražena u njutnima, tj. u jedinicama međunarodnog (metričkog) sistema jedinica. U skladu sa tim napravljen je i kompjuterski program koji je kontrolisao motore, njihovo vreme paljenja i gašenja. Međutim, kompanija “Lockheed Martin”, koja je napravila letelicu koristila je, u skladu sa anglosaksonskom tradicijom, funte. Problem su, u ranoj fazi leta primetila bar dva navigatora koja su upravljala letelicom, ali je njihova primedba odbijena jer nisu na ispravan način popunili odgovarajuće formulare. 

S obzirom na to da jedna funta ima oko 4,4 njutna, Orbiter je skretao s pravog kursa kad god bi kontrola leta uključila motore na letelici. Pošto ovakvih "korekcija" nije bilo mnogo, letelica je, nakon 660 miliona pređenih kilometara i neposredno pred sastanak s Marsom, bila svega 100 kilometara izvan željene trajektorije. Na nesreću, to je bilo dovoljno da Orbiter zagnjuri u Marsovu atmosferu više nego što sme. Usled povećanog aerodinamičkog zagrevanja, osetljiva oprema je izgorela a Orbiter se ili stropoštao na Mars ili ga je potpuno promašio, pa sad beživotno luta Sunčevim sistemom. Kada je greška definitivno utvrđena, bilo je suviše kasno da se proračunaju parametri neophodni za korekciju putanje tako da se šteta od 125 miliona dolara više nije mogla izbeći.

Mars Polar Lander
A šta je bilo sa “Mars Polar Lenderom”? I on je izgubljen, takođe zbog greške u programu za automatsko spuštanje letelice. Po svojoj prilici, softver koji se nalazio u lenderu protumačio je vibracije nastale izvlačenjem nogu stajnog trapa kao posledicu njihovog kontakta sa površinom Marsa. Usled toga, automatski su isključeni motori za kočenje iako se letelica još uvek nalazila na visini od oko 40 metara. Bez motora koji bi usporili pad, letelica se stropoštala na površinu Marsa i raspala tako da kontakt sa njom nikad nije uspostavljen. Kasnija istraga pokazala je da su programeri bili svesni mogućnosti da izvlačenje stajnih nogu može da proizvede signal sličan onom koji nastaje prilikom kontakta sa tlom, ali softver iz nepoznatog razloga nikad nije bio dorađen kako bi pokrio i ovu mogućnost. I pored brojnih pokušaja da se ostaci “Polar Lendera” lociraju na površini Marsa koristeći snimke napravljene iz Marsove orbite, tačan položaj izgubljene letelice nikad nije utvrđen.  

“Société Générale” (2008)

Priča o jednom od njavećih bankarskih skandala u istoriji počinje 2000. godine kada se Žerom Kerviel zaposlio u pariskoj centrali banke “Société Générale” (“SocGen”), u sektoru koji se bavio administracijom baza podataka i automatizacijom poslovanja. Tu je stekao osnovna znanja o kompjuterskim sistemima koje evidentiraju i nadgledaju finansijske transakcije. Inteligentan i radoznao, odmah je primetio brojne nedostatke u sistemu, recimo činjenicu da se transakcije koje su započete i završene u istom danu mogle misteriozno da nestanu iz izveštaja koji su se pravili na kraju dana. Primetio je i da mu je greškom odobren pristup svim delovima bankarske aplikacije, kako onom u koji se unose podaci o transakcijama, tako i onom u kome se te transakcije validiraju. Ta sposobnost, da isprati transakcije od početka do kraja i po potrebi interveniše u njima kasnije će mu dobro doći. 


Dve godine kasnije prešao je u deo banke koji je trgovao “papirima” kao pomoćnik, najviše iz želje da u dinamičnom i zahtevnom okruženju usavrši svoje veštine u “Excelu”, “Majkrosoftovom” programu za tabelarna izračunavanja, verujući da će mu to znanje kad-tad dobro doći. Kao pomoćnik starijim “trgovcima”, uglavnom zadužen za telefonske pozive i rutinske proračune, vrlo brzo se nametnuo svojim originalnim idejama, ispoljavajući sve veći interes za trgovinu hartijama od vrednosti. Već 2005. godine dobio je šansu da trguje samostalno, sa ogromnom željom da se dokaže svojim poslodavcima. Kolege su ga gledale podozrivo, zbog relativno skromnijeg obrazovanja i činjenice da je na trgovački sprat došao potpuno sporednim putem, kroz administraciju, a ne kao većina drugih, nakon ozbiljnog školovanja i još ozbiljnijeg konkursa za posao.

Ispostaviće se da je Žerom Kerviel bio manje trgovac a mnogo više kockar, specijalizovan za spekulativnu trgovinu hartijama od vrednosti na bazi kratkoročne procene kretanja berzanskih indeksa. Nije velika mudrost ulagati u kupovinu akcija neke kompanije ako postoje jasne indicije da će njihova vrednost u budućnosti rasti. Žerom je, međutim, bio mnogo veštiji kada bi, najčešće oslanjanjem na sopstvenu intuiciju, procenio da će cene akcija ići na dole. U tim slučajevima, on bi pozajmljivao akcije od vlasnika, najčešće zato da bi ih momentalno prodao. Kada bi vrednost akcija pala, on bi ih po nižoj ceni otkupio i vratio prvobitnom vlasniku, pri čemu je razlika između prodajne i kupovne cene predstavljala njegov, tj. bankarski profit. Čitav postupak, poznat i kao “short selling”, mogao je da donese veliku dobit ali i veliki gubitak, naročito ako bi se cela opercija izvodila u finansijski nestabilnim vremenima. Vrednost pozajmljenih akcija definiše “izloženost” banke potencijalnom gubitku, svaka takva akcija utiče na veličinu bankarske “otvorene pozicije”. Nijedna banka ne voli da bude preterano izložena jer, u slučaju ogromnih iznosa, čak i mali gubitak može da predstavlja uvod u tešku krizu ili čak bankrot.

Prvi uspeh Žerom je zabeležio u julu 2005. godine kada je koristeći “short selling” na akcijma osiguravajuće kompanije “Allianz” u jednom danu napravio profit od 500.000 evra. “Kad se desi tako nešto”, rekao je kasnije Žerom, “prvo osetite ponos a zatim želju da nastavite. Kao da se neka lavina pokrene u vama”. Od tada Žerom nije skidao nogu s gasa: počeo je da uvećava svoje investicije preko limita koji mu je bio dozvoljen sve dok nije izgubio svaki osećaj za meru a kako njegove sve veće “otvorene pozicije” ne bi bile primećene, počeo je da ih skriva lažiranjem kompjuterskih podataka, davanjem nemuštih objašnjenja ili, jednostavno, ćutanjem. Do februara 2006. godine Žerom je u bankarske kompjutere uneo nepostojeće transakcije u vrednosti od preko 35 milona evra samo kako bi prikrio svoje prave aktivnosti. Tih godina ga je, što bi kockari rekli, “išla karta” - profit koji je pravio za banku bio je sve veći. 

Žerom Kerviel
Radio je manijački predano, od 7 ujutru do 8 uveče i nikad nije koristio godišnji odmor, i to u Francuskoj gde se dugačak godišnji odmor smatra za bogomdano pravo. Zbog profita koje je počeo da prijavljuje dobio je status “zvezde” i nadimak “keš-mašina”, počele su da ga saleću konkurentske kuće, ali je on ostao veran svojoj banci koja mu je povremeno isplaćivala bonuse koji nama izgledaju ogromni (300.000 evra jednom prilikom), iako je to uvek bilo bar dvostruko manje od onoga što je Žerom očekivao. 

Došla je 2007. godina i Žerom se okrenuo nemačkoj berzi (“DAX”), upuštajući se u masivnu “short selling” operaciju. Verovao je da će se narastajuća kriza izazvana američkim drugorazrednim (nenaplativim) hipotekama i stambenim kreditima kad-tad preliti i u Evropu i oboriti berzanske indekse što bi mu donelo enormnu zaradu na akcijama koje je “pozajmio” sa nemačke berze. Međutim, iako je vrednost DAX-a doživela manji pad početkom godine, ona se kasnije oporavila što je nateralo Žeroma da odloži prodaju svojih nagomilanih akcija. Ne samo da ga to nije pokolebalo, nastavio je da gomila nemačke papire sve dok njihova vrednost nije počela da se meri milijardama. Neverovatno je da internim revizorima banke nije pala u oči ova ogromna “kula od karata” koju je Žerom izgradio, ponajviše zahvaljujući podacima koje je Žerom lažirao u kompanijskoj bazi podataka. Bilo je onih koji su mu postavljali nezgodna pitanja ali je Žerom bio majstor da se izvuče dajući samouverene odgovore čiju je složenost retko ko mogao da razume.  

Kako je Žerom Kerviel uspeo da potpuno sam izgradi “otvorenu poziciju” u vrednosti od 50 milijardi evra (što je prevazilazilo vrednost ukupnog kapitala “SocGen” banke) ni do danas nije potpuno razjašnjeno. Raskrinkan je tek u januaru 2008. godine, delimično i zahvaljujući novoj evropskoj finansijskoj regulativi koja je te godine stupila na snagu. Kada je banka konačno otkrila dimenzije rizika kome je bila izložena, doneta je odluka da se sve otvorene pozicije zatvore, tj. da se momentalno prodaju sve akcije iz Žeromovog portfolija. Iako se banka trudila da ne stvori paniku na tržištu koja bi dodatno umanjila vrednost prodavanih akcija, šteta se nije mogla izbeći. Kada se prašina slegla, ispostavilo se da je banka ostala u minusu od 6.4 milijardi evra što je jedva nekako preživela, pre svega zahvaljujući pomoći američkih banaka i odlučnosti francuske države koja nije htela da dozvoli da se jedan takav gigant kao što je “SocGen” uruši ili padne u ruke “lešinara” koji bi je jeftino otkupili. 

Usledio je sudski proces u kojem je banka, reklo bi se, izvukla deblji kraj. Francuzi tradicionalno ne vole bankare i berzanske špekulante smatrajući da je njihov jedini cilj da otimaju pare od siromašnih kako bi bogati postali još bogatiji. U jednoj anketi sprovedenoj uoči suđenja, 50% Francuza je za ogroman gubitak krivilo banku, a samo 13% Žeroma. Za to vreme Žerom se branio sa slobode, nakon što je proveo svega nekoliko dana u istražnom pritvoru. Iako su se oko njega rojile razne teorije zavere, ispostavilo se da nijedna od njih nije tačna. Javnost je saznala da je Žerom živeo u skromnom stanu, sa jednom spavaćom sobom, bez automobila ili bilo kakve luksuzne imovine. Prilikom pretrage u stanu mu je pronađen “Kuran” što su neki uzeli kao dokaz njegove veze sa radikalnim islamistima, ali se ispostavilo da sveta knjiga pripada njegovoj devojci, Muslimanki. Tokom istrage, nije krio ništa: “Nisam jedini koji je trgovao na ovaj način. Niko od mojih šefova nije se bunio niti se interesovao za moje poslove sve dok sam na berzi zarađivao. Zato krivica nije samo moja. Svejedno, priznajem da sam fabrikovao lažne transakcije. Priznajem da sam izložio banku finansijskom riziku koji daleko prevazilazi okvire moje formalne pozicije. I sve sam to maskirao izmišljenim podacima. Za to sam imao više motiva ali je onaj glavni uvek bio isti: da zaradim još novca za svoju banku”.

Iako se “SocGen” tokom istrage svom snagom okomio na Žeroma, policijska istraga će pokazati da Žerom nikakav novac nije pokušao da prisvoji za sebe i da nije imao saučesnika ili doušnika u rivalskoj kompaniji. Delovao je potpuno sam a tehničku pomoć pružao mu je samo jedan asistent-pripravnik koji nije ni razumeo čime se Žerom zapravo bavi. Nije bilo prevare, nije bilo konspiracije, nije bilo zaverenika, nije bilo materijalne koristi. Optužnica je, na kraju, bila relativno blaga i odnosila se na prekoračenje službenih ovlašćenja i neovlašćenu izmenu kompjuterskih podataka, za šta je mogao da dobije maksimalno šest godina zatvora. Sud će mu na kraju izreći kaznu od tri godine, sa još dve godine uslovne kazne, sa obavezom da iz sopstvenog džepa nadoknadi 5 milijardi evra od ukupnog gubitka koji je banka pretrpela. Žerom se nije žalio na kaznu, mnogo teže mu je palo to što je otkaz, u potpuno drugoj kompaniji, dobio i njegov brat Olivije (“Shvatate li da u ovom trenutku ne možemo u firmi da imamo čoveka koji se preziva Kerviel?”). Na kraju je vuk pojeo magarca: Žerom je u zatvoru proveo jedva pet meseci da bi nakon toga bio pušten na slobodu. Na osnovu jedne kasnije odluke suda koji je utvrdio da je Žerom, i pored svega što je učinio, bio nezakonito otpušten sa posla, ukinuta je i njegova obaveza da banci namiri štetu koju je izazvao. Od tada, Žerom je slobodan čovek koji nikom ništa ne duguje i kome, s obzirom na konstantne simpatije francuske javnosti, nije bilo preterano teško da nastavi sa normalnim životom.

“Avantura” Žeroma Kerviela ne bi bila moguća da se usput nije oslanjao na falinke u bankarskom softveru koje je uredno evidentirao i kasnije besomučno eksploatisao. Banka nije imala efikasan sistem za kontrolu rizika: neobično veliki i komplikovani poslovi koje je Žerom ugovarao prolazili su ispod radara. Softverski sistemi koje je tada imao “SocGen” nisu omogućavali praćenje poslovanja u realnom vremenu. Kašenjenje u otkrivanju anomalija omogućilo je Žeromu da godinama povećava svoj kockarski ulog sve dok na sto nije stavio i poslednji žeton. Komunikacija između odeljenja bila je spora i nekoordinisana, sumnjive aktivnosti nisu mogle da budu primećene jer podaci nisu bili deljeni i analizirani između različitih delova organizacije. Ipak, najviše zapanjuje činjenica da je Žerom u sistemu mogao da kreira i poništava transakcije bez ikakvog materijalnog pokrića. I pored toga, softver “SocGena” nije uspeo da detektuje nijednu lažiranu transakciju iako je takvih bilo na hiljade. Kerviel je dobro poznavao slabosti sistema i vešto ih koristio da godinama sakrije svoje tragove. Činjenica da je Žerom od prvog dana imao pristup svim delovima sistema dodatno mu je olakšala posao. Danijel Buton, tadašnji (kasnije smenjeni) generalni direktor “SocGena” najbolje je sumirao celu situaciju: “Nakon napada Al-kaide na Njujork učinili smo sve što možemo da naše poslovanje osiguramo od terorističkih napada. A nas je umalo uništio jedan talentovani zaposleni koji se bolje od ostalih služio računarom”. 

“WorldCom” (2002)


Reč je o skandalu koji je te 2002. godine pogodio drugu po veličini svetsku telekomunikacionu kompaniju, i po obimu poziva i po ostvarenim prihodima. U periodu od 1999. godine pa sve do otkrića čitave prevare, rukovodstvo kompanije, na čelu sa generalnim direktorom Bernardom Ebersom, osmislilo je kompjuterizovanu knjigovodstvenu prevaru sa ciljem da se prihodi firme veštački naduvaju i tako podignu vrednost akcija kompanije na berzi od čega bi profitirali najveći akcionari, uključujući i samog Ebersa. Osim toga, kompanija je sve vreme besomučno kupovala manje, rivalske kompanije (preko trideset u vrlo kratkom roku), a da bi privukla korisnike, plasirala je svoje usluge po cenama koje su bile niže od tržišnih, čak i kada su skupi međugradski i internacionalni pozivi bili u pitanju. U takvi uslovima gubici su počeli brzo da se gomilaju sve dok kompanija nije dospela u ozbiljan minus koji je nekako trebalo sakriti. U to vreme, tržišna vrednost kompanije i dalje je procenjivana na preko 180 milijardi dolara. 

Kada je telekomunikaciono tržište početkom XXI veka počelo da kolabira pred naletom sve jeftinijih internet usluga, rukovodstvo kompanije osmislilo je knjigovodstvenu prevaru kako bi pred svetom očuvali reputaciju “WordComa” kao perspektivne i profitabilne firme. Prevara se zasnivala na lažiranju poslovnih knjiga uz obilatu pomoć kjigovodstvenog softvera koji u sebi nije imao nikakve kontrolne mehanizme. Sistem je bio prost i daleko od toga da se može smatrati “sofisticiranim”: cilj je bio da se profiti naduvaju po svaku cenu, ne obazirući se na zakonsku regulativu i knjigovodstvene propise. Najčešće je korišćena praksa koja je klasične troškove prikazivala kao kapitalne investicije u proširenje biznisa. Kim Emi, finansijski analitičar u “WorldComu” pravovremeno je skrenuo pažnju na to da je ovakav postupak nezakonit i da se graniči sa utajom poreza. Iako su njegove primedbe pažljivo saslušane i, barem u prvo vreme, prihvaćene, Kim je na kraju dobio otkaz, bez ikakvog obrazloženja a top-menadžment je nastavio po starom. Krajnji rezultat bio je potpuni falsifikat: umesto da deklariše pozamašan gubitak, firma je tokom 2001. i 2002. prijavila uvećenje prihoda za oko 4 milijarde dolara, uz neto dobit od oko 1.5 milijardi. U stvarnosti, situacija je bila mnogo mračnija.  

Sintija Kuper na naslovnoj strani "Tajma"
Nisu svi u kompaniji bili korumpirani: ključnu ulogu u raskrinkavanju podvale odigrala je Sintija Kuper, kompanijski šef sektora kontrole koja je primetila neke neobične aktivnosti u kompanijskim knjigama: nedostatak validnih dokaza o kapitlim investiticijama, korišćenje kompanijskih rezervi u svrhu veštačkog povećanja profita, nezasluženi otkaz koji je dobio Kim Emi i slično... Sintija je pokrenula sopstvenu istragu iako je sve vreme bila pod pritiskom finansijskog direktora Skota Salivena da istragu prekine ili odloži. Uz pomoć eksterne revizorske kuće (KPMG), Sintija je svoju istragu privela kraju uz nedvosmisleni zaključak: car je go. Za svoj trud i upornost da svetu otkrije istinu Sintija je nagrađena titulom “Ličnost godine”, što je podrazumevalo i naslovnu stranicu magazina “Tajm”. 

Ispostaviće se da je prevara bila teška čitavih 80 milijardi dolara tako da je bankrot bio jedina opcija. U papiru koji opisuje razmere bankrota firma navodi da poseduje imovinu od 100 miliona dolara a da investitorima i bankama duguje oko 40 milijardi. Nakon državne istrage, generalni direktor Bernard Ebers je uhapšen i osuđen na 25 godina robije. Skot Saliven dobio je “samo” pet godina jer je sklopio dogovor s tužilaštvom i svu krivicu svalio na generalnog direktora. Ebers je izdržao polovinu kazne, pušten je zbog lošeg zdravlja 2019. godine a umro je godinu dana kasnije. 

Bernard Ebers i Skot Saliven
Kakvu ulogu u ovom fijasku je imao kompjuterski softver? Mnogo veću nego što se to na prvi pogledi čini. Ovde se ne radi o nekom bagu koji je sistemski eksploatisan. Pre će biti da je softver bio potpuno neadekvatan da isprati poslovanje jedne ogromne kompanije. Automatizovan proces falsifikovanja transakcija omogućio je kreatorima prevare da pravo stanje kompanije godinama skrivaju od javnosti. Sa druge strane, softver koji je u sistemu detektovao malverzacije ili je bio neadekvatan ili ga je bilo lako zaobići tako da je, u suštini, bio beskoristan. Finansijski izveštaji genersani su na osnovu brojki izvučenih iz baze podataka koja je bila potpuno nezaštićena: viši menadžment imao je direktan pristup tim podacima i mogao je da ih izmeniti po želji a da trag o tome praktično ne postoji. Investitori, regulatorska tela i deoničari godinama su držani u zabludi masovnim serviranjem friziranih podataka. I, na kraju, čitav softverski sistem bio je toliko zamršen i loše koncipiran da je nezavisnim revizorskim kućama bilo praktično nemoguće da na brz i jednostavan način proniknu u stvarno stanje kompanije. Kompjuterski softver na koji se oslanjalo celokupno poslovanje “WorldComa” nije imao nikakve sigurnosne mehanizme koji bi mogli da se nose s veličinom ljudske gramzivosti.

“Therac-25”, mašina za zračenje pacijenata (1985-1987)

Ova mašina korišćena je tokom osamdesetih godina za zračnu terapiju pacijenata obolelih od raznih vrsta kancera. Nasledila je mašinu “Therac-20” koja je bila pouzdana ali glomazna i komplikovana za korišćenje. “Therac-25” bio je značajno unapređen, umesto manuelne kontrole pomoću mehaničkih poluga, dugmadi i klizača, mašinom je upravljao kompjuter. Ovakve mašine uvek su potencijalno opasne jer je zračenje nevidiljivo i, u većim dozama, letalno, tako da se u njih uvek ugrađuju određeni sigurnosni mehanizmi. I dok je “Therac-20” imao robusnu zaštitu implementiranu u samom hardveru, “Therac-25” je sve sigurnosne procedure implementirao u samom softveru dok je ranija hardverska zaštita bila uklonjena. Ispostaviće se da je ovo bila fatalna odluka koja će odneti nekoliko života.

"Therac" mašina za zračenje
Mašinu je konstruisala kompanija “Atomic Energy of Canada Limited” (“AECL”). Verovali ili ne, softver za “Therac-25”, prvi kompjuterizovani uređaj takve vrste, napisao je samo jedan čovek, i to u asembleru. Za laike, dovoljno je reći da je asemblersko programiranje ubedljivo najkomplikovaniji način da napišete neki kompjuterski program i da se danas koristi samo kad je to neizbežno (recimo, kada su potrebne vrhunske performanse ili kada je količina memorije koja je na raspolaganju za skladištenje programa i podataka krajnje ograničena). Autor programa kasnije je napustio AECL a njegov identitet, iskustvo i kvalifikacije nikad nisu utvrđeni.

Novi aparat imao je tri radna moda: “svetlosni”, koji je služio da osvetli pacijenta običnim svetlom, “elektronski” mod u kome je mašina ka pacijentu emitovala tanak snop visoko-energetskih elektrona (beta-zračenje) i “megavoltni X-mod” u kome je mašina emtovala snop X-zraka čija je energija bila uporediva sa onom koju su imali elektroni u elektronskom modu. X-zraci stvarani su tako što je meta od volframa bila bombardovana mlazom elektrona čija je energija bila sto puta veća od one koja se koristila za elektronsku terapiju. Generisani X-zraci prolazili su zatim kroz poseban konični filter koji je merio njihovu snagu i po potrebi je korigovao. Mod mašine kontrolisan je okretanjem kružne ploče koja se nalazila neposredno iznad pacijenta koji leži. Ta ploča imala je tri moguća položaja, za svaki od radnih modova po jedan. Kod ovakvih mašina obično postoje pouzdani elektro-prekidači koji mašini (kompjuteru u ovom slučaju) signaliziraju tačan mod rada. Međutim, “Therac-25” se u ovom pogledu oslanjao na kontrolne mehanizme implementirane direktno u softver.

U četiri medicinske ustanove zabeleženo je ukupno šest slučajeva kada su pacijenti zbog dve različite greške u softveru primili neuporedivo veću dozu zračenja od one koja je planirana. Prvi bag ispoljavao se kada bi operater greškom uključio X-mod a zatim brzo prebacio mašinu u elektronski mod. Umesto da spusti energiju elektronskog snopa sa one koja je potrebna za prozivodnju X-zraka na onu koja se koristi za elektronsku terapiju, mašina bi nastavila rad koristeći punu snagu elektronskog snopa tako da je pacijent obično primao sto puta veću količinu zračenja skoncentrisanu na relativno mali deo tela što je bilo uporedivo sa letalnom dozom. Druga greška u softveru neplanirano je aktivirala elektronski snop čak i kada je mašina nominalno bila u “bezazlenom” svetlosnom modu.

Unesrećeni pacijenti pretrpeli su drastične posledice: inicijalno, osetili bi nešto što je ličilo na jak i bolan električni šok. Većina je nakon toga bukvalno bežala sa stola za zračenje. U roku od nekoliko dana ozračeni kože bio je prekriven plikovima a zatim bi se javili znaci radijacione bolesti (slabost, povraćanje, loša krvna slika). U tri slučaja, pacijenti su preminuli a oni koji su preživeli često su bili fizički osakaćeni. Svi oni tužili su medicinske ustanove u kojima su se lečili ali je od samog početka bilo jasno da je pravi krivac “Therac-25” i sistemski nedostaci u njegovoj konstrukciji. Većina sudskih postupaka završena je vansudskim poravnanjem, isplatom finansijskog obeštećenja čija visina nikad nije obelodanjena.  

Formirana je i komisija koja je trebalo da ispita sve okolnosti koje su dovele do fatalnih grešaka. Komisija se na kraju nije fokusirala na pojedinačne bagove u softveru, ali je istakla da je njegova arhitektura bila loša a proces razvoja neusklađen sa principima koje je softverska industrija odavno prihvatila. Pre svega, softver nikad nije prošao nezavisnu reviziju (ono što danas zovemo “code review”). “AECL” se, osim toga, fokusirao na hardver uz pretpostavku da u softveru nema bagova, pri čemu je ponašanje mašine u uslovima mogućih softverskih i hardverskih grešaka ostalo nedovoljno ispitano. Kada su krenule da stižu prijave prvih incidenata sa mašinom, inženjeri “AECL”-a i dalje su samouvereno tvrdili da je “apsolutno nemoguće” da je mašina ili bilo koji njen deo uzrok problema. Na kraju, potpuno je neverovatno da čitava mašina, njen softver i hardver, nisu bili zajedno testirani pre završetka celokupne montaže u zdravstvenoj ustanovi koja je kupila uređaj. Čak i kada bi uređaj prijavio grešku, na kontrolnom displeju mogao se videti samo njen broj. Uputstvo za upotrebu uređaja nije sadržalo objašnjenje šta kodovi grešaka tačno znače i da li je prijavljena greška potencijalno opasna za pacijenta. 

“Knight Capital Group” (2012): 

Ova brokerska kuća osnovana je 1995. godine i u vrlo kratkom roku je zauzela dominantnu poziciju na njujorškoj berzi (NYSE) oslanjajući se, pre svega, na savremene tehnologije, inovativni softver i automatizaciju poslovanja. Sedamnaest godina nakon osnivanja, ova grupa bila je na samom vrhu po obimu poslovanja, sa preko 3 milijardi transakcija dnevno u vrednosti od oko 20 milijardi dolara  što je, u to vreme, predstavljalo 17% od ukupne trgovine na najvećoj svetskoj berzi. I sve to zamalo je nestalo za manje od sat vremena, 1. avgusta 2012. godine, kada je firma pustila u rad novu verziju softvera za automatsko trgovanje (SMARS). Čim je Njujorška berza započela sa radom, softver je, za račun “Knight” grupe počeo da kupuje akcije sumanutom brzinom: samo tokom prvog sata rada berze, SMARS je uložio preko 7 milijardi dolara u akcije 150 različitih kompanija čije su cene, zbog masovne tražnje, otišle nebu pod oblake (akcije koje su vredele 3-4 dolara, sada su se prodavale za 15 ili 20). Kada je postalo jasno da se ove investicije kose s elementarnom logikom i da program u sebi sadrži ozbiljnu grešku, SMARS je isključen ali su posledice ostale. 


Po pravilima berze, grupa je bila dužna da kupljene akcije isplati u roku od tri dana što je bilo praktično nemoguće jer tu količinu gotovine kompanija nije imala na računu. Suočena s bankrotom, kompanija je pokušala da poništi neželjene transakcije pravdajući ih greškom u softverskom kodu. Međutim, komisija koja kontroliše regularnost poslovanja na berzi (čuveni SEC) glatko je odbila ovaj predlog, insistirajući da “Knight Capital” namiri svoj dug u zakonskom roku. U takvoj situaciji, kompanija je morala da pribegne najgorem mogućem rešenju i započene sa masovnom rasprodajom akcija koje je tek kupila. Velika ponuda i hitnost prodaje dovela je do drastičnog pada vrednosti kupljenih akcija tako da je na kraju celog poduhvata kompanija ostala u minusu od oko 460 miliona dolara. Čim je ovaj katastrofalni gubitak objavljen akcije kompanije pale su za 70%, što je bio udarac od koga se grupa nikad nije oporavila. Samo godinu dana kasnije firma je prestala da postoji kao nezavisni entitet kada je vlasništvo nad njom preuzela kompanija “Getco”.

Šta se zapravo desilo? SMARS je bio program koji se već bio dokazao u praksi, nije postojao nijedan razlog da se unapred posumnja u njegovu ispravnost. Kako bi se obim transakcija povećao, softver je bio instaliran na osam fizički nezavisnih servera. Tehničar koji je 1. avgusta ažurirao softver zaboravio je da na poslednji, osmi server, instalira deo koda za rutiranje kupovina koji se, u značajnoj meri, razlikovao od prethodne verzije. Ispostavilo se da je kombinacija delimično ažuriranog novog softvera i zatečenog starog koda na poslednjem serveru bila fatalna. Kad god bi taj server dobio naredbu da izvrši kupovinu, on bi tu naredbu i izvršio. Međutim, zbog starog, nefunkcionalnog dela koda, povratna informacija o uspešno završenoj kupovini nikad nije bila protumačena na pravi način. Zbog toga je SMARS, ubeđen da se transakcija nije ni desila, ponavljao čitavu transakciju bezbroj puta, sve dok čitava kompanija nije bila bačena na kolena. 

Intel (“Pentium”) bag (1994): 

Istine radi, nije reč o klasičnom softverskom bagu, nalik na one koji su opisani u drugim primerima. Reč je o hardverskom defektu, nedostatku u konstrukciji mikroprocesora koji je, u to vreme, bio ponos Intela, vodećeg svetskog proizvođača kompjuterskih čipova. Taj defekt potencijalno je uticao na sav softver koji se izvršavao na računarima sa feleričnim čipom. Otud i on u ovoj priči.

Mikroprocesori poput “Pentiuma” predstavljaju osnovu oko koje je izgrađen svaki kompjuterski sistem. Obično se sastoje iz kontrolne, aritmetičke i logičke jedinice a osnovni zadatak im je da izvršavaju kompjuterske programe. Kompjuterski programi sadrže opis onoga što mikroprocesor treba da izvede (recimo, da sabere dva broja). Kako se to konkretno radi zapisano je u “mikrokodu”, tj. u silicijumu od kojeg je mikroprocesor napravljen. Na osnovu toga, procesor je u stanju da ulazni niz simbola zapisanih u binarnoj formi (korišćenjem nula i jedinica) transformiše u drugi, takođe binarni, koji predstavlja rezultat. Ispostaviće se da je “Intelov” procesor iz 1994. godine savršeno vladao svim računskim operacijama osim što je, povremeno, prilikom deljenja dva broja davao pogrešan rezultat. 

Iako postupak deljenja brojeva koji smo učili u školi predstavlja relativno jednostavan šablon,  kompjuterski stručnjaci dugo su tragali za načinom kako da ga efikasno iplementiraju na mikroprocesorima. Algoritam koji je koristio prethodni “Intelov” procesor (80486) bio je suviše spor tako da je za “Pentium” izabran mnogo efikasniji SRT postupak koji je dobio ime po inicijalima autora (Svini, Robertson,Tohe). Sastavni deo algoritma bila je tabela od 1066 ćelija pri čemu je svaka sadržala jednu od pet unapred definisanih vrednosti (-2, -1, 0, +1, +2). Međutim, tokom procesa upisivanja ovih vrednosti u silicijumski čip, došlo je do greške tako da je u pet ćelija upisana vrednost 0 umesto +2. Kad god bi SRT algoritam morao da pročita vrednosti iz ovih ćelija rezultat deljenja bio bi pogrešan.

Problem je prvi primetio profesor Tomas Najsli sa koledža u Linčburgu (Virdžinija) koji se u to vreme bavio proučavanjem prostih brojeva. On je primetio neke nelogičnosti u proračunima čim je u svoju laboratoriju ubacio prvi računar sa “Pentium” procesorom. U početku je sumnjao da je problem izazvala neispravna memorija ili matična ploča, ali je strpljivim eksperimentisanjem na kraju nedvosmisleno utvrdio da je greška u novom procesoru. Problem nije bilo jednostavno reprodukovati - dešavao se samo kada bi SRT algoritam morao da pročita vrednost iz pet neispravnih ćelija u tabeli. U praksi, to se deštavalo retko a greška je bila relativno mala, najčešće na osmoj ili devetoj decimali. Međutim, u pojedinim slučajevima, greška je bila daleko veća - sve decimale nakon četvrte bile su pogrešne.

profesor Tomas Najsli
Profesor je na kraju osmislio vrlo jednostavan test: bilo je dovoljno u “Windows” kalkulatoru podeliti broj 4.195.835 brojem 3.145.727. Ispravan rezultat bio je 1.33382 ali je na faličnom “Pentiumu” količnik bio 1.33379. Krajem oktobra 1994. godine Tomas Najsli se zvanično obratio “Intelu” tražeći objašnjenje. Ispostaviće se da je “Intel” za ovaj problem već znao i da je još od jula potajno tražio način da ispravi grešku, odbijajući pritom da izda javno saopštenje ili ponudi zamenu ili povraćaj novca svima koji su već kupili sporni procesor. Uvređen konspirativnim stavom kompanije, profesor Najsli je nedelju dana kasnije sam obavestio javnost o defektu u “Intelovom” čipu. Istinitost njegovih navoda vrlo brzo je verifikovana a skandalozno ćutanje zvančnika “Intela” samo je pomoglo da priča o vrhunskom procesoru koji ne ume da podeli dva broja dobije udarni termin na CNN-u i dospe na naslovne stranice najvećih američkih dnevnih novina. 

Tek tada je “Intel” reagovao na način koji će kasnije biti ocenjen kao kompletna PR-katastrofa. Kompanija je pokušala da problem minimizira tvrdeći da pogađa samo mali broj najzahtevnijih korisnika, da je računska greška minimalna i ograničena na specijalne slučajeve i ponudila korisnicima besplatnu zamenu, ali samo onima koji lično dokažu da je njihov procesor defektan. Ovakav pristup samo je dodatno iritirao javnost. U medijima su počeli da se svakodnevno pojavljuju novi, zahtevni korisnici (među njima i proizvođači kompjuterskih igara) koji su tvrdili da je problem mnogo ozbiljniji nego što to “Intel” priznaje. Situacija po kompaniju postala je neodrživa kada je IBM odlučio da obustavi prodaju personalnih računara sa spornim čipom, što je dovelo do drastičnog pada vrednosti akcija “Intela”. U decembru, kompanija je bila prinuđena da spusti gard i obeća besplatnu i bezuslovnu zamenu mikroprocesora svakome ko to zatraži. Čak i ta ponuda imala je element bezobrazluka u sebi: oštećeni pojedinci morali su sami da obave zamenu procesora, kao da je u pitanju obična sijalica, dok su dilerske mreže preko kojih je plasiran najveći deo problematičnih čipova ostavljene po strani. Usledila je brza i efikasna kazna: iritirani korisnici masovno su vratili svoje falične “Pentiume” a kompanija je pretrpela štetu od oko 475 miliona tadašnjih dolara.   

Lista se ovde ne završava. Pomenimo za kraj još nekoliko interesantnih primera: 

● “Kraljevska banka Škotske” (2012): Loša nadogradnja postojećećeg softvera onemogućila je milione klijenata banke da raspolažu svojim novcem. Neki su ostali zaglavljeni u inostranstvu jer nisu imali načina da plate hotele i avonske karte. Drugi su ostali “zarobljeni” u bolnicama jer nisu mogli da namire svoje račune za lečenje. Jedan pacijent je zamalo umro jer je bolnica zapretila da ga će ga skinuti sa aparata za održavanje života u nemogućnosti da naplati svoje usluge. Jedan klijnet je završio u meksičkom zatvoru, takođe zbog neplaćenih računa. Preko 60.000 korisnika nije imalo pristup bankomatima tokom naredne dve nedelje. Nastala je ogromna gomila inicijalizovanih a nezavršenih transakcija koju je banka uspela da “počisti” tek nakon mesec dana. Epilog? Pojedini klijenti tužili su banku i dobili adekvatnu odštetu, ukupno je isplaćeno oko 60 miliona funti. Svi direktori banke ostali su na svom mestu osim što se jedan od njih odrekao svog godišnjeg bonusa.

“AT&T” (1990): U to vreme, “AT&T” je najveći deo svog profita ostvarivao realizacijom međugradskih i internacionanih telefonskih poziva. Bio je to posao kolosalnih razmera: svakoga dana kompanija je realizovala preko 115 miliona takvih poziva, što je predstavljalo oko 70% od ukupnog američkog saobraćaja. Sve to zahvaljujući infrastrukturi od 114 povezanih, softverski kontrolisanih telefonskih centrala (svičeva) strateški razmeštenih širom SAD. Svaka centrala mogla je da obradi 700.000 poziva dnevno. U januaru, tokom rutinskog tesitranja centrale u Njujorku, došlo je drastičnog porasta opterećenja što je rešeno tako što je centrala restartovana nakon što je u mrežu poslala infromaciju da centrala neće više primati pozive do daljnjeg. Kada se, nakon 4 sekunde, centrala ponovo probudila, nastavila je da obrađuje zaostale pozive rutirajući ih ka narednoj destinaciji u mreži. Zbog nagomilanih zahteva, centrala je slala brojne zahteve susednim centralama, često u razmaku od svega nekoliko milisekundi. Jedna od povezanih centrala dobila je drugu poruku pre nego što je obradila prethodnu. Umesto da druga poruka bude stavljena u red za čekanje, ona je pregazila sadržaj prve što je softver u centrali prepoznao kao fatalnu grešku. To je dovelo do restarta centrale i aktiviranja rezervnog uređaja. 

Vrlo brzo je i rezervni uređaj dobio dve bliske, uzastopne poruke tako da je otkazao i on. Kada se centrala konačno podigla, ona je počela da se ponaša kao centrala u Njujorku što je dovelo do poplave sukcesivnih poruka koje su krenule da redom obaraju umrežene telefonske centrale. U jednom trenutku, svih 114 centrala bilo je pogođeno istim problemom. Problem je rešen tek nakon devet sati kada su korisnici jednostavno odustali od pokušaja da telefoniraju što je dovelo do rasterećenja sistema i postupne normalizacije. Tokom blokade izgubljeno je preko 75 miliona poziva u vrednosti od oko 60 miliona dolara a uzrok je pronađen u softverskoj grešci u programu koji je kontrolisao rad svih centrala. Taj softver bio je ažuriran mesec dana ranije: iako je bio rigorozno testiran, jedna pogrešna linija koda dovela je do najvećeg telekomunikacionog prekida u istoriji SAD.

Sistem "Patriot"
Dahran, Saudijska Arabija (1991): U vreme operacije “Pustinjska oluja”, 25. februara, jedan irački “Al Husein Skad” projektil pogodio je američki vojni logor u Saudijskoj Arabiji kod mesta Dahran izazvavši smrt 28 vojnika. Iako je logor bio opremljen baterijom “Patriot” raketa koje su mogle da spreče tragediju, sistem se nije aktivirao i do pokušaja presretanja iračkog projektila nije ni došlo. Usledila je istraga koja je na kraju pokazala da je nesreća nastala usled baga u softveru koji je automatski upravljao “Patriot” sistemom. Ispostavilo se da je sistem bio opremljen satom koji je bio nedovoljno precizan. U vreme nesreće, sistem je bio u neprekidnom pogonu više od 100 sati što je dovelo do toga da jedan od satova ugrađenih u sistem akumulira grešku od 0,3 sekunde. Iako to, možda, izgleda malo, treba uzeti u obzir da za to vreme “Skad” preleti više od 600 metara. Treba imati u vidu da pre toga “Patriot” nikad nije bio korišćen za presretanje “Skad” projektila niti je neprekidno bio u operativnom modu tokom više dana. U ovom slučaju, radarski sistem je na vreme spazio iračku raketu i nastavio da je prati pomoću radara koji je neprekidno odašiljao parove kratkih radarskih impulsa. Buduća lokacija projektila izračunavana je na bazi razlike u vremenu prijema emitovanih impulsa. Za prvi impuls, merenje vremena bilo je tačno. U slučaju drugog impulsa postojala je vremenska greška koja se povećavala sa vremenom eksploatacije sistema. Samim tim, vremenska razlika koju je sračunao softver bila je pogrešna što je dovelo do toga da se radar za praćenje dolazećeg projektila okrene ka delu neba koje je bilo prazno. U nedostatku mete, softver bi ceo proces detekcije vratio na početak smatrajući da je inicijalno opažanje bilo pogrešno. Dve nedelje pre pogibije američkih vojnika, izraelska vojska je primetila identičan problem i o tome obavestila Amerikance. Kao preventivnu meru, Izraelci su uveli praksu da restartuju ceo sistem nakon nekoliko sati rada ali Amerikanci nisu postupili na isti način, računajući da će vrlo brzo dobiti novu verziju softvera. Ispravljena verzija softvera stigla je u Saudijsku Arabiju 26. februara, dan nakon pogibije vojnika.

 RTS OKO