Рупе у дигиталној инфраструктури
Плави екран смрти истовремено на (само) осам милиона рачунара: Кад компјутери полуде štampaj
субота, 27. јул 2024, 09:26 -> 16:15
У једном тренутку изгледало је као да је свет стао, као аутомобил заглављен у дубоком блату, иако је број погођених рачунара тог 19. јула био релативно мали (око 8 милиона, што је свега 1% од укупног броја). Зар је тако лако зауставити нормалан живот на овој планети? Испоставиће се да нам нису потребни никакви терористи, никакви координисани сајбер-напади из тамо неке Русије, Кине или Кореје. У овом случају био је довољан један једини фајл, легитимно дистрибуиран у најбољој намери од стране реномиране компаније. Али шта би се десило да је којим случајем 20% или 30% рачунара испало из погона? Постали смо наркомански зависни од електронике, до те мере да више ту зависност не можемо ни да измеримо, нити да се од те зависности лечимо. Ослонили смо се на машине верујући да су оне поузданије од било ког живог бића, без икаквог резервног плана ако без тих машина останемо, макар на неколико сати.
Шта се заправо десило тог 19. јула када су, од раног јутра, све водеће ТВ станице прекинуле свој редовни програм како би извештавале о масовном пада рачунара са „Windows“ оперативним системом? Посматрачу са стране изгледало је као да је читав свет био бачен на колена, неспособан да се носи са величином проблема која га је задесила.
Практично да није било индустријске гране која, у већој или мањој мери, није била погођена овом „елементарном непогодом“ која ће убрзо прерасти у највећи прекид у функционисању компјутерских система у историји. На милионима рачунара широм света појавили су се плави екрани са криптичном информацијом о фаталној грешци која је онемогућавала њихово даље коришћење.
На аеродромима је престала продаја карата, чекирање пртљага, укрцавање у авионе, створиле су се незамисливе гужве. Људи су чекали сатима да добију неку информацију, а ње није било јер су сви монитори на аеродромима били нефункционални. Да би бар неки авион полетео, службеници су правили спискове користећи неке давно заборављене технике (папир и хемијске оловке). Банке су биле принуђене да обуставе финансијске трансакције, јавни транспорт је функционисао отежано, медијске куће радиле су са пола капацитета. У болницама су одлагане операције које су захтевале коришћење савременог софтвера, дијагностика је сведена на минимум, третирани су само хитни случајеви.
Проблеме су пријавиле све светске берзе, а у многим градовима биле су погођене и неке виталне службе као што су ватрогасци или хитна помоћ. Атоматски „check-in/check-out“ процес у многим хотелима престао је да функционише, многи трговински ланци нису могли да процесуирају кредитне картице тако да је плаћање било могуће једино готовином до које је, опет, било тешко доћи јер су и многи банкомати престали да раде.
На пумпним станицама није било могуће наточити гориво, државни службеници једноставно су спустили ролетне на своје шалтере и прешли на судоку и укрштене речи. Многе веб странице су пале, а велики број ИТ фирми једноставно није имао на чему да ради јер је „Azure“, Мајкрософтова клауд-платформа коју огроман број компанија користи за развој софтвера, била жртва истог проблема.
Шта је „Crowdstrike“?
Прво смо посумњали на тероризам, на организовани сајбер-напад из неке азијске забити, диверзију коју су извели Путин, Си Ђинпинг, Ким Џонг Ун, албанска мафија, Марсовци, сви заједно. Да није можда неки компјутерски вирус, попут оног галопирајућег „црва“ који је некад давно креирао Роберт Морис и оборио цео тадашњи интернет? Да се опет није активирао Џон Дрејпер познат и као „Капетан Кранч“, онај што је дувајући у слушалицу кроз жуту патку извађену из кутије „Кранч“ пахуљица умео да оствари бесплатни телефонски позив са Токијом?
Ништа од свега тога. Данас знамо да је проблем изазвала компанија „Crowdstrike“ која је произвела тзв. „Falcon Sensor“, софтвер који прати све активности које се дешавају на рачунару и по потреби реагује када наиђе на програм који злоупотребљава рачунарске ресурсе. То могу да буду класични компјутерски вируси, екстерни напади на компјутерску инфраструктуру, програми који шпијунирају корисника и шаљу прикупљене податке „тамо негде“.
Укратко, „Falcon Sensor“ штити рачунар од технопата који креирају програме који су, у суштини, уљези у систему и немају другу намеру осим да произведу одређену материјалну штету или онемогуће нормално коришћење рачунара.
Никад нисте чули за „Crowdstrike“? Ако сте обичан смртник, налик аутору овог текста, то не треба да вас чуди. На папиру, „Crowdstrike“ има „само“ 29.000 корисника али су то, скоро без изузетка, огромне компаније, свака са по неколико стотина или хиљада рачунара на којима се извршава „Crowdstrike“ софтвер. Од 500 највећих светских компанија са „Fortune“ листе, свака друга користи „Crowdstrike“ програме за заштиту индивидуалних рачунара.
Другим речима, компанија се специјализовала за највеће и платежно најспособније клијенте који су, по правилу, и највише угрожени претњама које долазе са интернета.
Оперативни системи и њихово језгро
Да бисте разумели како је „Crowdstrike“ довео до масовног пада рачунара широм света, неопходно је да вам буду познати бар неки основни појмови. Пре свега, ниједан рачунар, ниједан мобилни телефон или таблет не може да функционише без оперативног система. Задатак оперативног система је да омогући коришћење хардверских ресурса рачунара. Без оперативног система, миркопроцесор, матична плоча, диск за смештај података, миш, тастатура или графичка картица представљају обичну гомилу бескорисног силицијума.
Оперативни систем контролише сав тај хардвер и омогућава вам његово коришћење на начин који је једноставан, интуитиван, брз и ефикасан. Програми као што су „Wоrd“, „Еxcеl“, компјутерске игрице или ваш бразуер нису део оперативног система, али је оперативни систем неопходан за њихово извршавање. Зато их називамо „корисничким програмима“ и на вама је да, након инсталције оперативног система, одаберете и инсталирате кориснички софтвер који вам је неопходан за рад.
Од свих оперативних система данас је свакако најпознатији Мајкрософтов „Windows“, у верзијама 10 и 11. Међутим, оперативних система има много више: на „Аpple“ рачунарима то је „МаcОS“, за оне који воле да имају мало више слободе и желе бесплатно али квалитетно решење ту је „Linux“, који је увек упакован у неку од „дистрибуција“ са егзотичним именом („Ubuntu“, „Debian“, „Mint“, „Fedora“...).
Све дистрибуције деле заједнички „Linux“ кернел (о кернелу више у наредним параграфима), али се разликује надоградња (дизајн, начин контролисања апликација, једноставност употребе и ажурирања). Има и комерцијалних верзија „Linux“-a које се плаћају („Redhat“, на пример), али су оне популарније на пословним него на приватним рачунарима. За оне којима ни „Linux“ није довољно бесплатан ту су „FreeSD“ и „OpenBSD“.
У случају мобилних телефона и таблета, књига је спала на два слова: „Андроид“ оперативни систем, који је потпуно бесплатан и чији развој контролише „Гугл“, и iOS иза којег стоји „Apple“ и намењен је искључиво његовим таблетима и мобилним телефонима. Када се погледају глобалне статистике, најпопуларнији оперативни систем на свету је „Андроид“ (пре свега захваљујући огромном броју мобилних телефона) са 40% тржишног удела. Одмах иза њега је „Windows“ са 30%.
Сваки оперативни систем има кернел који представља језгро (централни део) оперативног система. Током нормалне употребе рачунара кернел је заправо невидљив, али је све време активан, с обзиром да је задужен за основне функције које омогућавају рад корисничких програма. Сваки кориснички програм представља један „процес“ а контролу тих процеса, њихову синхронизацију, редослед извршавања и међусобну комуникацију надзире кернел.
Кернел је такође одговоран за менаџмент меморијског простора у рачунару: када некој корисничкој апликацији затреба додатни простор за смештај података, апликација ће га затражити и добити управо од кернела. Трећа улога кернела је и да омогући комуникацију са рачунарским хардвером користећи посебне програме које називамо „драјверима“.
Без кернела, ваша тастатура, графичка картица или диск једноставно неће функционисати. Такође, све активности везане за фајлове у којима се налазе ваши корисни подаци (текстови, табеле, базе података) ослањају се на функционалност кернела који ће те фајлове организовати на оптималан начин, водећи рачуна о њиховом интегритету.
И, на крају, ту је сигурност целог система: кернел надзире његово успешно функционисање и обезбеђује да свако ко ради на рачунару може да изведе само оне операције које су му дозвољене, не угрожавајући податке или ресурсе које користи неко други.
Како би се кернел заштитио од малициозних корисника или случајне злоупотребе, савремени оперативни системи имају хијерархијски систем привилегија, при чему сваки део софтвера функционише унутар одређеног сигурносног „прстена“. Кернел ради у тзв. кернел-моду за који је резервисан нулти прстен. Сви програми који функционишу у нултом прстену могу да имају потпуну контролу над машином, укључујући меморију и сав остали хардвер.
Кориснички програми извршавају се у тзв. корисничком моду, у прстену са бројем 3 који има најниже привилегије, без директног приступа хардверу (постоје још два прстена са бројем 1 и 2, али се они у пракси користе врло ретко). Поента је да су ови прстенови физички одвојени и да фатални престанак рада корисничке апликације која се извршава у трећем прстену нема никакве штетне последице на кернел у нултом.
Кориснички програм не може да онеспособи кернел али обрнуто тврђење не важи: коришћењем функција кернела могуће је зауставити сваки кориснички програм. На овај начин, кернел, „најдрагоценије“ парче оперативног система, представља добро заштићену, изоловану целину. Када кориснички програм треба да приступи хардверу који контролише кернел, он не добија право да се привремено „пресели“ у нулти прстен. Уместо тога, програм шаље нотификацију кернелу да му је потребна одређена асистенција и онда чека да му ту услугу кернел обезбеди.
Кад систем стане
Једна ствар је овде у фундаменталне важности: ако из било ког разлога кернел престане да функционише или налети на неочекивану ситуацију, цео систем постаје неупотребљив. Све што корисник може да види на екрану у том тренутку је такозвани „blue screen of death“ (у случају „Windows“-a; код „Linux“-а је овај екран црн, код „Apple“ рачунара љубичаст). Одавно је закључено да је за корисника сигурније да у таквим ситуацијама рачунар престане да ради, јер би наставак рада система за компромитованим кернелом могао да изазове још теже последице.
Шта корисник у том случају може да учини? Екран са фаталном грешком садржи неке основне информације које квалификованој особи могу да помогну да открије узрок проблема. Лаици лишени помоћи са стране могу једино да рестартују рачунар и надају се да ће проблем нестати сам од себе. Ако се то не деси, онда је корисник у озбиљном проблему.
Већ смо напоменули да се у привилегованом, нултом прстену извршава само кернел, али то није сасвим тачно. Ту су и „драјвери“, програми који комуницирају директно са хардвером рачунара. На овом месту у причу улази „Crowdstrike“ са својим „Фалкон“ сензором.
Да би један такав сензор могао да буде ефикасан, да би могао да детектује сумњиве активности и нежељене програме на рачунару, он пре свега мора да буде у стању да их види у целости, а то је могуће само ако је смештен у нулти прстен, заједно са кернелом и драјверима. Такви „гости“ у нултом прстену, виртуелни драјвери који не комуницирају с хардвером већ обављају неке друге послове, потенцијално су опасни јер, као што рекосмо, свака грешка која настане у кернел-моду неминовно води до поменутог плавог екрана и заустављања система.
Зато Мајкрософт нуди произвођачима хардвера и пратећих драјвера тзв. WHQL („Windows Hardware Quality Labs“) сертификацију. Драјвери независних компанија подвргавају се вишедневном интензивном тестирању и, ако све прође успешно, добијају дигитални Мајкрософтов потпис који гарантује њихов квалитет. Такав приступ је у реду када је у питању драјвер за штампач јер се, када га једном инсталирате и убаците одговарајући драјвер у кернел, ситуација обично годинама не мења. Међутим, концепт не функционише за производе као што је „Фалкон сензор“. Он мора да буде у стању да што пре реагује на нове претње које се појављују практично свакодневно.
Вишедневни процес сертификације нове верзије сензора однео би, једноставно, превише времена остављајући кориснике незаштићенима. Уместо тога, „Crowdstrike“ софтвер, онај који се већ налази у кернел-моду, добија информације о новим претњама и начинима њихове детекције и елиминације у виду дефиниционих фајлова које добија преко интернета. Мајкрософтов WХQL сертификат остаје валидан јер се сам виртуелни драјвер не мења. Проблем је, међутим, што сваки дефинициони фајл може да доведе до промене понашања у софтверу која може да има фаталан исход.
Фатална грешка у кернелу
Тачно то десило се 19. јула када је оператер „Crowdstrike“-a преко интернета дистрибуирао нови дефинициони фајл који је очигледно био фаличан. Шта је у њему било погрешно до данашњег дана није обелодањено. Али комбинација лошег дефиниционог фајла и основног „Фалкон“ кода који није био довољно робустан, у стању да препозна дефектне фајлове и одбије да их користи, довела је до фаталне грешке у кернелу која је водила до плавог екрана.
Виндоус има механизме („Safe mode“) који могу да помогну да иоле едуковани корисник сам опорави свој систем. Међутим, за то је најчешће потребно да имате физички приступ до машине. У овом конкретном случају, постојао је релативно једноставан начин да онеспособљени рачунар опоравите у кратком року.
Шта су, међутим, могли да ураде радници на аеродромима, лекари у болницама, службеници у банкама у ситуацији када су рачунари почели да „падају“ један за другим? Већина њих и не зна где им је физички сервер, многи користе клауд-инфраструктуру где се погођени рачунар налази у неком удаљеном објекту, иза седам гора, иза седам мора...
Нико од њих заправо нема ни овлашћење да се петља са инфраструктуром, а број ИТ-стручњака који су могли да се баве овим проблемом био је смешно мали у односу на његове размере. Срећом, неко решење је нађено, и „Мајкрософт“ и „Crowdstrike“ су креирали нове „закрпе“ и путем интернета их дистрибуирали до погођених рачунара. У другој половини дана, ситуација је кренула лагано да се нормализује. Ликовали су једино власници „Linux“ и „Аpple“ рачунара који нису имали никаквих проблема.
Да ли је живот заиста стао?
Шта је, заправо, најстрашније у целој овој епизоди? У једном тренутку изгледало је као да је свет стао, као аутомобил заглављен у дубоком блату, иако је број погођених рачунара био релативно мали (око 8 милиона, што је свега 1% од укупног броја). Зар је тако лако зауставити нормалан живот на овој планети?
Испоставиће се да нам нису потребни никакви терористи, никакви координисани сајбер-напади из тамо неке Русије, Кине или Кореје. У овом случају био је довољан један једини фајл, легитимно дистрибуиран у најбољој намери од стране реномиране компаније.
Шта би се десило да је којим случајем 20% или 30% рачунара испало из погона? Постали смо наркомански зависни од електронике, до те мере да више ту зависност не можемо ни да измеримо, нити да се од те зависности лечимо. Ослонили смо се на машине верујући да су оне поузданије од било ког живог бића, без икаквог резервног плана ако без тих машина останемо, макар на неколико сати.
Овога пута, изгледа да је направљена само материјална штета од око 10 милијарди долара. Да ли ће „Crowdstrike“ као компанија то успети да преживи кад крену одштетни захтеви, видећемо.
Вреди приметити да су неке земље, којима смо умели да се подсмевамо, у целој овој фертутми прошле такорећи без икакве штете. Пример је Кина која је временом изградила свој „паралелни интернет“ (познат и као „сплинтернет“). Америка је Кини одавно наметнула ембарго на већину софтвера који има сигурносну намену, па захваљујући томе у Кини и нема „Crowdstrike“ корисника. Проблем су осетили једино ланци западних хотела као што су „Хилтон“ или „Шератон“ на које се западни ембарго не односи. Ни Русија, са којом западне софтверске куће више не сарађују због санкција уведених због рата у Украјини, није имала никаквих проблема.
Поменимо на крају и Србију: ми једноставно нисмо довољно богати да би плаћали папрено скупе „Crowdstrike“ лиценце, наше фирме ограничене су на бесплатне сигурносне системе, легендарни Касперски или Аваст, а уздамо се и у божју помоћ, као и увек до сада. Понекад сиромаштво има својих предности: мања кашњења пријавио је београдски аеродром, и то је све.
* * *
Кратка историја невоља с компјутерима
Невоље са компјутерима нису од јуче. Компјутери су ту, око нас, већ више од пола века. Следи кратак приказ догађаја из не тако давне прошлости у којима су грешке и недостаци у софтверу довели до спектакуларних промашаја, скандала, губитака и катастрофа. Требало је да из свега тога извучемо неку поуку, али нисмо. Као што нисмо ни сада.
Софтверске рупе у систему
„Société Générale“ (2008)
Прича о једном од највећих банкарских скандала у историји почиње 2000. године, када се Жером Кервијел запослио у париској централи банке „Société Générale“ („SocGen“), у сектору који се бавио администрацијом база података и аутоматизацијом пословања. Ту је стекао основна знања о компјутерским системима које евидентирају и надгледају финансијске трансакције.
Интелигентан и радознао, одмах је приметио бројне недостатке у систему, рецимо чињеницу да су трансакције које су започете и завршене у истом дану могле мистериозно да нестану из извештаја који су се правили на крају дана. Приметио је и да му је грешком одобрен приступ свим деловима банкарске апликације, како оном у који се уносе подаци о трансакцијама, тако и оном у коме се те трансакције валидирају. Та способност, да испрати трансакције од почетка до краја и по потреби интервенише у њима, касније ће му добро доћи.
Две године касније прешао је у део банке који је трговао „папирима“ као помоћник, највише из жеље да у динамичном и захтевном окружењу усаврши своје вештине у „Екcелу“, „Мајкрософтовом“ програму за табеларна израчунавања, верујући да ће му то знање кад-тад добро доћи. Као помоћник старијим „трговцима“, углавном задужен за телефонске позиве и рутинске прорачуне, врло брзо се наметнуо својим оригиналним идејама, испољавајући све већи интерес за трговину хартијама од вредности.
Већ 2005. године добио је шансу да тргује самостално, са огромном жељом да се докаже својим послодавцима. Колеге су га гледале подозриво, због релативно скромнијег образовања и чињенице да је на трговачки спрат дошао потпуно споредним путем, кроз администрацију, а не као већина других, након озбиљног школовања и још озбиљнијег конкурса за посао.
Испоставиће се да је Жером Кервијел био мање трговац а много више коцкар, специјализован за спекулативну трговину хартијама од вредности на бази краткорочне процене кретања берзанских индекса. Није велика мудрост улагати у куповину акција неке компаније ако постоје јасне индиције да ће њихова вредност у будућности расти. Жером је, међутим, био много вештији када би, најчешће ослањањем на сопствену интуицију, проценио да ће цене акција ићи на доле.
У тим случајевима, он би позајмљивао акције од власника, најчешће зато да би их моментално продао. Када би вредност акција пала, он би их по нижој цени откупио и вратио првобитном власнику, при чему је разлика између продајне и куповне цене представљала његов, тј. банкарски профит.
Читав поступак, познат и као „short selling“, могао је да донесе велику добит али и велики губитак, нарочито ако би се цела оперција изводила у финансијски нестабилним временима. Вредност позајмљених акција дефинише „изложеност“ банке потенцијалном губитку, свака таква акција утиче на величину банкарске „отворене позиције“. Ниједна банка не воли да буде претерано изложена јер, у случају огромних износа, чак и мали губитак може да представља увод у тешку кризу или чак банкрот.
Први успех Жером је забележио у јулу 2005. године, када је користећи „short selling“ на акцијама осигуравајуће компаније „Аllianz“ у једном дану направио профит од 500.000 евра. „Кад се деси тако нешто“, рекао је касније Жером, „прво осетите понос, а затим жељу да наставите. Као да се нека лавина покрене у вама“.
Од тада Жером није скидао ногу с гаса: почео је да увећава своје инвестиције преко лимита који му је био дозвољен све док није изгубио сваки осећај за меру, а како његове све веће „отворене позиције“ не би биле примећене, почео је да их скрива лажирањем компјутерских података, давањем немуштих објашњења или, једноставно, ћутањем.
До фебруара 2006. године Жером је у банкарске компјутере унео непостојеће трансакције у вредности од преко 35 милиона евра, само како би прикрио своје праве активности. Тих година га је, што би коцкари рекли, „ишла карта“ – профит који је правио за банку био је све већи.
Радио је манијачки предано, од 7 ујутру до 8 увече и никад није користио годишњи одмор, и то у Француској где се дугачак годишњи одмор сматра за богомдано право. Због профита које је почео да пријављује добио је статус „звезде“ и надимак „кеш-машина“, почеле су да га салећу конкурентске куће, али је он остао веран својој банци која му је повремено исплаћивала бонусе који нама изгледају огромни (300.000 евра једном приликом), иако је то увек било бар двоструко мање од онога што је Жером очекивао.
Дошла је 2007. година и Жером се окренуо немачкој берзи („DAX“), упуштајући се у масивну „short selling“ операцију. Веровао је да ће се нарастајућа криза изазвана америчким другоразредним (ненаплативим) хипотекама и стамбеним кредитима кад-тад прелити и у Европу и оборити берзанске индексе, што би му донело енормну зараду на акцијама које је „позајмио“ са немачке берзе.
Међутим, иако је вредност DAX-а доживела мањи пад почетком године она се касније опоравила, што је натерало Жерома да одложи продају својих нагомиланих акција. Не само да га то није поколебало, наставио је да гомила немачке папире све док њихова вредност није почела да се мери милијардама.
Невероватно је да интерним ревизорима банке није пала у очи ова огромна „кула од карата“ коју је Жером изградио, понајвише захваљујући подацима које је Жером лажирао у компанијској бази података. Било је оних који су му постављали незгодна питања, али је Жером био мајстор да се извуче дајући самоуверене одговоре чију је сложеност ретко ко могао да разуме.
Како је Жером Кервијел успео да потпуно сам изгради „отворену позицију“ у вредности од 50 милијарди евра (што је превазилазило вредност укупног капитала „SocGen“ банке), ни до данас није потпуно разјашњено. Раскринкан је тек у јануару 2008. године, делимично и захваљујући новој европској финансијској регулативи која је те године ступила на снагу.
Када је банка коначно открила димензије ризика коме је била изложена, донета је одлука да се све отворене позиције затворе, тј. да се моментално продају све акције из Жеромовог портфолија. Иако се банка трудила да не створи панику на тржишту која би додатно умањила вредност продаваних акција, штета се није могла избећи. Када се прашина слегла, испоставило се да је банка остала у минусу од 6,4 милијарди евра што је једва некако преживела, пре свега захваљујући помоћи америчких банака и одлучности француске државе, која није хтела да дозволи да се један такав гигант као што је „SocGen“ уруши или падне у руке „лешинара“ који би је јефтино откупили.
Уследио је судски процес у којем је банка, рекло би се, извукла дебљи крај. Французи традиционално не воле банкаре и берзанске шпекуланте, сматрајући да је њихов једини циљ да отимају паре од сиромашних како би богати постали још богатији. У једној анкети спроведеној уочи суђења, 50% Француза је за огроман губитак кривило банку, а само 13% Жерома.
За то време Жером се бранио са слободе, након што је провео свега неколико дана у истражном притвору. Иако су се око њега ројиле разне теорије завере, испоставило се да ниједна од њих није тачна. Јавност је сазнала да је Жером живео у скромном стану, са једном спаваћом собом, без аутомобила или било какве луксузне имовине. Приликом претраге у стану му је пронађен Куран, што су неки узели као доказ његове везе са радикалним исламистима, али се испоставило да света књига припада његовој девојци, Муслиманки.
Током истраге, није крио ништа:
„Нисам једини који је трговао на овај начин. Нико од мојих шефова није се бунио нити се интересовао за моје послове све док сам на берзи зарађивао. Зато кривица није само моја. Свеједно, признајем да сам фабриковао лажне трансакције. Признајем да сам изложио банку финансијском ризику који далеко превазилази оквире моје формалне позиције. И све сам то маскирао измишљеним подацима. За то сам имао више мотива али је онај главни увек био исти: да зарадим још новца за своју банку.“
Иако се „SocGen“ током истраге свом снагом окомио на Жерома, полицијска истрага ће показати да Жером никакав новац није покушао да присвоји за себе и да није имао саучесника или доушника у ривалској компанији. Деловао је потпуно сам, а техничку помоћ пружао му је само један асистент-приправник који није ни разумео чиме се Жером заправо бави. Није било преваре, није било конспирације, није било завереника, није било материјалне користи.
Оптужница је, на крају, била релативно блага и односила се на прекорачење службених овлашћења и неовлашћену измену компјутерских података, за шта је могао да добије максимално шест година затвора. Суд ће му на крају изрећи казну од три године, са још две године условне казне, са обавезом да из сопственог џепа надокнади 5 милијарди евра од укупног губитка који је банка претрпела.
Жером се није жалио на казну, много теже му је пало то што је отказ, у потпуно другој компанији, добио и његов брат Оливије („Схватате ли да у овом тренутку не можемо у фирми да имамо човека који се презива Кервијел?“).
На крају је вук појео магарца: Жером је у затвору провео једва пет месеци да би након тога био пуштен на слободу. На основу једне касније одлуке суда који је утврдио да је Жером, и поред свега што је учинио, био незаконито отпуштен са посла, укинута је и његова обавеза да банци намири штету коју је изазвао. Од тада, Жером је слободан човек који ником ништа не дугује и коме, с обзиром на константне симпатије француске јавности, није било претерано тешко да настави са нормалним животом.
„Авантура“ Жерома Кервијела не би била могућа да се успут није ослањао на фалинке у банкарском софтверу, које је уредно евидентирао и касније бесомучно експлоатисао. Банка није имала ефикасан систем за контролу ризика: необично велики и компликовани послови које је Жером уговарао пролазили су испод радара. Софтверски системи које је тада имао „SocGen“ нису омогућавали праћење пословања у реалном времену.
Кашњење у откривању аномалија омогућило је Жерому да годинама повећава свој коцкарски улог све док на сто није ставио и последњи жетон. Комуникација између одељења била је спора и некоординисана, сумњиве активности нису могле да буду примећене јер подаци нису били дељени и анализирани између различитих делова организације. Ипак, највише запањује чињеница да је Жером у систему могао да креира и поништава трансакције без икаквог материјалног покрића.
И поред тога, софтвер „SocGen“-a није успео да детектује ниједну лажирану трансакцију иако је таквих било на хиљаде. Кервијел је добро познавао слабости система и вешто их користио да годинама сакрије своје трагове. Чињеница да је Жером од првог дана имао приступ свим деловима система додатно му је олакшала посао.
Данијел Бутон, тадашњи (касније смењени) генерални директор „SocGen“-a најбоље је сумирао целу ситуацију: „Након напада Ал каиде на Њујорк учинили смо све што можемо да наше пословање осигурамо од терористичких напада. А нас је умало уништио један талентовани запослени који се боље од осталих служио рачунаром.“
„WorldCom“ (2002)
Реч је о скандалу који је те 2002. године погодио другу по величини светску телекомуникациону компанију, и по обиму позива и по оствареним приходима. У периоду од 1999. године па све до открића читаве преваре, руководство компаније, на челу са генералним директором Бернардом Еберсом, осмислило је компјутеризовану књиговодствену превару са циљем да се приходи фирме вештачки надувају и тако подигну вредност акција компаније на берзи од чега би профитирали највећи акционари, укључујући и самог Еберса.
Осим тога, компанија је све време бесомучно куповала мање, ривалске компаније (преко тридесет у врло кратком року), а да би привукла кориснике, пласирала је своје услуге по ценама које су биле ниже од тржишних, чак и када су скупи међуградски и интернационални позиви били у питању. У такви условима губици су почели брзо да се гомилају све док компанија није доспела у озбиљан минус који је некако требало сакрити. У то време, тржишна вредност компаније и даље је процењивана на преко 180 милијарди долара.
Када је телекомуникационо тржиште почетком 21. века почело да колабира пред налетом све јефтинијих интернет услуга, руководство компаније осмислило је књиговодствену превару како би пред светом очували репутацију „WorldCom“-a као перспективне и профитабилне фирме. Превара се заснивала на лажирању пословних књига, уз обилату помоћ кјиговодственог софтвера који у себи није имао никакве контролне механизме.
Систем је био прост и далеко од тога да се може сматрати „софистицираним“: циљ је био да се профити надувају по сваку цену, не обазирући се на законску регулативу и књиговодствене прописе. Најчешће је коришћена пракса која је класичне трошкове приказивала као капиталне инвестиције у проширење бизниса.
Ким Еми, финансијски аналитичар у „WorldCom“- у правовремено је скренуо пажњу на то да је овакав поступак незаконит и да се граничи са утајом пореза. Иако су његове примедбе пажљиво саслушане и, барем у прво време, прихваћене, Ким је на крају добио отказ, без икаквог образложења, а топ-менаџмент је наставио по старом.
Крајњи резултат био је потпуни фалсификат: уместо да декларише позамашан губитак, фирма је током 2001. и 2002. пријавила увећање прихода за око 4 милијарде долара, уз нето добит од око 1,5 милијарди. У стварности, ситуација је била много мрачнија.
Нису сви у компанији били корумпирани: кључну улогу у раскринкавању подвале одиграла је Синтија Купер, компанијски шеф сектора контроле, која је приметила неке необичне активности у компанијским књигама: недостатак валидних доказа о капиталним инвеститицијама, коришћење компанијских резерви у сврху вештачког повећања профита, незаслужени отказ који је добио Ким Еми и слично...
Синтија је покренула сопствену истрагу иако је све време била под притиском финансијског директора Скота Саливена да истрагу прекине или одложи. Уз помоћ екстерне ревизорске куће (KPMG), Синтија је своју истрагу привела крају уз недвосмислени закључак: цар је го. За свој труд и упорност да свету открије истину Синтија је награђена титулом „Личност године“, што је подразумевало и насловну страницу магазина „Тајм“.
Испоставиће се да је превара била тешка читавих 80 милијарди долара, тако да је банкрот био једина опција. У папиру који описује размере банкрота фирма наводи да поседује имовину од 100 милиона долара, а да инвеститорима и банкама дугује око 40 милијарди.
Након државне истраге, генерални директор Бернард Еберс је ухапшен и осуђен на 25 година робије. Скот Саливен добио је „само“ пет година јер је склопио договор с тужилаштвом и сву кривицу свалио на генералног директора. Еберс је издржао половину казне, пуштен је због лошег здравља 2019. године, а умро је годину дана касније.
Какву улогу у овом фијаску је имао компјутерски софтвер? Много већу него што се то на први поглед чини. Овде се не ради о неком багу који је системски експлоатисан. Пре ће бити да је софтвер био потпуно неадекватан да испрати пословање једне огромне компаније.
Аутоматизован процес фалсификовања трансакција омогућио је креаторима преваре да право стање компаније годинама скривају од јавности. Са друге стране, софтвер који је у систему детектовао малверзације или је био неадекватан или га је било лако заобићи тако да је, у суштини, био бескористан. Финансијски извештаји генерисани су на основу бројки извучених из базе података која је била потпуно незаштићена: виши менаџмент имао је директан приступ тим подацима и могао је да их измени по жељи, а да траг о томе практично не постоји. Инвеститори, регулаторска тела и деоничари годинама су држани у заблуди масовним сервирањем фризираних података.
И, на крају, читав софтверски систем био је толико замршен и лоше конципиран да је независним ревизорским кућама било практично немогуће да на брз и једноставан начин проникну у стварно стање компаније. Компјутерски софтвер на који се ослањало целокупно пословање „WorldCom“-a није имао никакве сигурносне механизме који би могли да се носе с величином људске грамзивости.
„Knight Capital Group“ (2012)
Ова брокерска кућа основана је 1995. године и у врло кратком року је заузела доминантну позицију на њујоршкој берзи (NYSЕ) ослањајући се, пре свега, на савремене технологије, иновативни софтвер и аутоматизацију пословања. Седамнаест година након оснивања, ова група била је на самом врху по обиму пословања, са преко 3 милијарди трансакција дневно у вредности од око 20 милијарди долара што је, у то време, представљало 17% од укупне трговине на највећој светској берзи.
И све то замало је нестало за мање од сат времена, 1. августа 2012. године, када је фирма пустила у рад нову верзију софтвера за аутоматско трговање (SМАRS).
Чим је Њујоршка берза започела са радом, софтвер је за рачун „Knight“ групе почео да купује акције суманутом брзином: само током првог сата рада берзе, SМАRS је уложио преко 7 милијарди долара у акције 150 различитих компанија чије су цене, због масовне тражње, отишле небу под облаке (акције које су вределе 3-4 долара, сада су се продавале за 15 или 20). Када је постало јасно да се ове инвестиције косе с елементарном логиком и да програм у себи садржи озбиљну грешку, SMARS је искључен али су последице остале.
По правилима берзе, група је била дужна да купљене акције исплати у року од три дана, што је било практично немогуће јер ту количину готовине компанија није имала на рачуну. Суочена с банкротом, компанија је покушала да поништи нежељене трансакције правдајући их грешком у софтверском коду. Међутим, комисија која контролише регуларност пословања на берзи (чувени SEC) глатко је одбила овај предлог, инсистирајући да „Knight Capital“ намири свој дуг у законском року.
У таквој ситуацији, компанија је морала да прибегне најгорем могућем решењу и започне са масовном распродајом акција које је тек купила. Велика понуда и хитност продаје довела је до драстичног пада вредности купљених акција, тако да је на крају целог подухвата компанија остала у минусу од око 460 милиона долара.
Чим је овај катастрофални губитак објављен акције компаније пале су за 70%, што је био ударац од кога се група никад није опоравила. Само годину дана касније фирма је престала да постоји као независни ентитет, када је власништво над њом преузела компанија „Getco“.
Шта се заправо десило? SMARS је био програм који се већ био доказао у пракси, није постојао ниједан разлог да се унапред посумња у његову исправност. Како би се обим трансакција повећао, софтвер је био инсталиран на осам физички независних сервера. Техничар који је 1. августа ажурирао софтвер заборавио је да на последњи, осми сервер, инсталира део кода за рутирање куповина који се, у значајној мери, разликовао од претходне верзије.
Испоставило се да је комбинација делимично ажурираног новог софтвера и затеченог старог кода на последњем серверу била фатална. Кад год би тај сервер добио наредбу да изврши куповину, он би ту наредбу и извршио. Међутим, због старог, нефункционалног дела кода, повратна информација о успешно завршеној куповини никад није била протумачена на прави начин. Због тога је SMARS, убеђен да се трансакција није ни десила, понављао читаву трансакцију безброј пута, све док читава компанија није била бачена на колена.
„Краљевска банка Шкотске“ (2012)
Лоша надоградња постојећећег софтвера онемогућила је милионе клијената банке да располажу својим новцем. Неки су остали заглављени у иностранству јер нису имали начина да плате хотеле и авонске карте. Други су остали „заробљени“ у болницама јер нису могли да намире своје рачуне за лечење. Један пацијент је замало умро јер је болница запретила да га ће га скинути са апарата за одржавање живота у немогућности да наплати своје услуге. Један клијент је завршио у мексичком затвору, такође због неплаћених рачуна.
Преко 60.000 корисника није имало приступ банкоматима током наредне две недеље. Настала је огромна гомила иницијализованих, а незавршених трансакција коју је банка успела да „почисти“ тек након месец дана. Епилог? Поједини клијенти тужили су банку и добили адекватну одштету, укупно је исплаћено око 60 милиона фунти. Сви директори банке остали су на свом месту, осим што се један од њих одрекао свог годишњег бонуса.
Кад машина полуди
„Therac-25“ (1985-1987)
Ова машина коришћена је током осамдесетих година за зрачну терапију пацијената оболелих од разних врста канцера. Наследила је машину „Therac-20“ која је била поуздана, али гломазна и компликована за коришћење. „Therac-25“ био је значајно унапређен, уместо мануелне контроле помоћу механичких полуга, дугмади и клизача, машином је управљао компјутер.
Овакве машине увек су потенцијално опасне јер је зрачење невидиљиво и, у већим дозама, летално, тако да се у њих увек уграђују одређени сигурносни механизми. И док је „Therac-20“ имао робусну заштиту имплементирану у самом хардверу, „Therac-25“ је све сигурносне процедуре имплементирао у самом софтверу, док је ранија хардверска заштита била уклоњена. Испоставиће се да је ово била фатална одлука која ће однети неколико живота.
Машину је конструисала компанија „Atomic Energy of Canada Limited“ (AECL). Веровали или не, софтвер за „Therac-25“, први компјутеризовани уређај такве врсте, написао је само један човек, и то у асемблеру. За лаике, довољно је рећи да је асемблерско програмирање убедљиво најкомпликованији начин да напишете неки компјутерски програм и да се данас користи само кад је то неизбежно (рецимо, када су потребне врхунске перформансе или када је количина меморије која је на располагању за складиштење програма и података крајње ограничена). Аутор програма касније је напустио АЕCL а његов идентитет, искуство и квалификације никад нису утврђени.
Нови апарат имао је три радна мода: „светлосни“, који је служио да осветли пацијента обичним светлом, „електронски“ мод у коме је машина ка пацијенту емитовала танак сноп високо-енергетских електрона (бета-зрачење) и „мегаволтни X-мод“ у коме је машина емтовала сноп X-зрака чија је енергија била упоредива са оном коју су имали електрони у електронском моду.
X-зраци стварани су тако што је мета од волфрама била бомбардована млазом електрона чија је енергија била сто пута већа од оне која се користила за електронску терапију. Генерисани X-зраци пролазили су затим кроз посебан конични филтер који је мерио њихову снагу и по потреби је кориговао.
Мод машине контролисан је окретањем кружне плоче која се налазила непосредно изнад пацијента који лежи. Та плоча имала је три могућа положаја, за сваки од радних модова по један. Код оваквих машина обично постоје поуздани електро-прекидачи који машини (компјутеру у овом случају) сигнализирају тачан мод рада. Међутим, „Therac-25“ се у овом погледу ослањао на контролне механизме имплементиране директно у софтвер.
У четири медицинске установе забележено је укупно шест случајева када су пацијенти због две различите грешке у софтверу примили неупоредиво већу дозу зрачења од оне која је планирана.
Први баг испољавао се када би оператер грешком укључио X-мод, а затим брзо пребацио машину у електронски мод. Уместо да спусти енергију електронског снопа са оне која је потребна за прозиводњу X-зрака на ону која се користи за електронску терапију, машина би наставила рад користећи пуну снагу електронског снопа тако да је пацијент обично примао сто пута већу количину зрачења сконцентрисану на релативно мали део тела, што је било упоредиво са леталном дозом. Друга грешка у софтверу непланирано је активирала електронски сноп чак и када је машина номинално била у „безазленом“ светлосном моду.
Унесрећени пацијенти претрпели су драстичне последице: иницијално, осетили би нешто што је личило на јак и болан електрични шок. Већина је након тога буквално бежала са стола за зрачење. У року од неколико дана озрачени део коже био је прекривен пликовима, а затим би се јавили знаци радијационе болести (слабост, повраћање, лоша крвна слика).
У три случаја, пацијенти су преминули, а они који су преживели често су били физички осакаћени. Сви они тужили су медицинске установе у којима су се лечили, али је од самог почетка било јасно да је прави кривац „Therac-25“ и системски недостаци у његовој конструкцији. Већина судских поступака завршена је вансудским поравнањем, исплатом финансијског обештећења чија висина никад није обелодањена.
Формирана је и комисија која је требало да испита све околности које су довеле до фаталних грешака. Комисија се на крају није фокусирала на појединачне багове у софтверу, али је истакла да је његова архитектура била лоша, а процес развоја неусклађен са принципима које је софтверска индустрија одавно прихватила.
Пре свега, софтвер никад није прошао независну ревизију (оно што данас зовемо „code review“). АЕCL се, осим тога, фокусирао на хардвер уз претпоставку да у софтверу нема багова, при чему је понашање машине у условима могућих софтверских и хардверских грешака остало недовољно испитано. Када су кренуле да стижу пријаве првих инцидената са машином, инжењери АЕCL-а и даље су самоуверено тврдили да је „апсолутно немогуће“ да је машина или било који њен део узрок проблема.
На крају, потпуно је невероватно да читава машина, њен софтвер и хардвер, нису били заједно тестирани пре завршетка целокупне монтаже у здравственој установи која је купила уређај. Чак и када би уређај пријавио грешку, на контролном дисплеју могао се видети само њен број. Упутство за употребу уређаја није садржало објашњење шта кодови грешака тачно значе и да ли је пријављена грешка потенцијално опасна за пацијента.
„АТ&Т“ (1990)
Крајем осамдесетих, америчка мултинационална телекомуникациона компанија „АТ&Т“, са седиштем у Даласу, у Тексасу, највећи део свог профита остваривала ке реализацијом међуградских и интернационаних телефонских позива. Био је то посао колосалних размера: свакога дана компанија је реализовала преко 115 милиона таквих позива, што је представљало око 70% од укупног америчког саобраћаја. Све то захваљујући инфраструктури од 114 повезаних, софтверски контролисаних телефонских централа (свичева) стратешки размештених широм САД. Свака централа могла је да обради 700.000 позива дневно.
У јануару 1990, током рутинског тестирања централе у Њујорку, дошло је драстичног пораста оптерећења што је решено тако што је централа рестартована након што је у мрежу послала информацију да централа неће више примати позиве до даљњег. Када се, након 4 секунде, централа поново пробудила, наставила је да обрађује заостале позиве рутирајући их ка наредној дестинацији у мрежи.
Због нагомиланих захтева, централа је слала бројне захтеве суседним централама, често у размаку од свега неколико милисекунди. Једна од повезаних централа добила је другу поруку пре него што је обрадила претходну. Уместо да друга порука буде стављена у ред за чекање, она је прегазила садржај прве што је софтвер у централи препознао као фаталну грешку.
То је довело до рестарта централе и активирања резервног уређаја. Врло брзо је и резервни уређај добио две блиске, узастопне поруке тако да је отказао и он. Када се централа коначно подигла, она је почела да се понаша као централа у Њујорку, што је довело до поплаве сукцесивних порука које су кренуле да редом обарају умрежене телефонске централе. У једном тренутку, свих 114 централа било је погођено истим проблемом.
Проблем је решен тек након девет сати када су корисници једноставно одустали од покушаја да телефонирају, што је довело до растерећења система и поступне нормализације.
Током блокаде изгубљено је преко 75 милиона позива у вредности од око 60 милиона долара, а узрок је пронађен у софтверској грешци у програму који је контролисао рад свих централа. Тај софтвер био је ажуриран месец дана раније: иако је био ригорозно тестиран, једна погрешна линија кода довела је до највећег телекомуникационог прекида у историји САД.
Дахран, Саудијска Арабија (1991)
У време операције „Пустињска олуја“, 25. фебруара 1991, један ирачки „Ал Хусеин Скад“ пројектил погодио је амерички војни логор у Саудијској Арабији код места Дахран, изазвавши смрт 28 војника. Иако је логор био опремљен батеријом „Патриот“ ракета које су могле да спрече трагедију, систем се није активирао и до покушаја пресретања ирачког пројектила није ни дошло.
Уследила је истрага која је на крају показала да је несрећа настала услед бага у софтверу који је аутоматски управљао „Патриот“ системом. Испоставило се да је систем био опремљен сатом који је био недовољно прецизан. У време несреће, систем је био у непрекидном погону више од 100 сати што је довело до тога да један од сатова уграђених у систем акумулира грешку од 0,3 секунде. Иако то, можда, изгледа мало, треба узети у обзир да за то време „Скад“ прелети више од 600 метара.
Треба имати у виду да пре тога „Патриот“ никад није био коришћен за пресретање „Скад“ пројектила, нити је непрекидно био у оперативном моду током више дана. У овом случају, радарски систем је на време спазио ирачку ракету и наставио да је прати помоћу радара који је непрекидно одашиљао парове кратких радарских импулса. Будућа локација пројектила израчунавана је на бази разлике у времену пријема емитованих импулса.
За први импулс, мерење времена било је тачно. У случају другог импулса постојала је временска грешка која се повећавала са временом експлоатације система. Самим тим, временска разлика коју је срачунао софтвер била је погрешна, што је довело до тога да се радар за праћење долазећег пројектила окрене ка делу неба које је било празно. У недостатку мете, софтвер би цео процес детекције вратио на почетак, сматрајући да је иницијално опажање било погрешно.
Две недеље пре погибије америчких војника, израелска војска је приметила идентичан проблем и о томе обавестила Американце. Као превентивну меру, Израелци су увели праксу да рестартују цео систем након неколико сати рада али Американци нису поступили на исти начин, рачунајући да ће врло брзо добити нову верзију софтвера.
Исправљена верзија софтвера стигла је у Саудијску Арабију 26. фебруара, дан након погибије војника.
„Pentium“ баг (1994)
Истине ради, није реч о класичном софтверском багу, налик на оне који су описани у другим примерима. Реч је о хардверском дефекту, недостатку у конструкцији микропроцесора који је, у то време, био понос Интела, водећег светског произвођача компјутерских чипова. Тај дефект потенцијално је утицао на сав софтвер који се извршавао на рачунарима са фелеричним чипом. Отуд и он у овој причи.
Микропроцесори попут „Pentium“-a представљају основу око које је изграђен сваки компјутерски систем. Обично се састоје из контролне, аритметичке и логичке јединице а основни задатак им је да извршавају компјутерске програме. Компјутерски програми садрже опис онога што микропроцесор треба да изведе (рецимо, да сабере два броја).
Како се то конкретно ради записано је у „микрокоду“, тј. у силицијуму од којег је микропроцесор направљен. На основу тога, процесор је у стању да улазни низ симбола записаних у бинарној форми (коришћењем нула и јединица) трансформише у други, такође бинарни, који представља резултат. Испоставиће се да је „Интелов“ процесор из 1994. године савршено владао свим рачунским операцијама осим што је, повремено, приликом дељења два броја давао погрешан резултат.
Иако поступак дељења бројева који смо учили у школи представља релативно једноставан шаблон, компјутерски стручњаци дуго су трагали за начином како да га ефикасно иплементирају на микропроцесорима. Алгоритам који је користио претходни „Интелов“ процесор (80486) био је сувише спор, тако да је за „Pentium“ изабран много ефикаснији SRT поступак, који је добио име по иницијалима аутора (Свини, Робертсон, Тохе).
Саставни део алгоритма била је табела од 1066 ћелија, при чему је свака садржала једну од пет унапред дефинисаних вредности (-2, -1, 0, +1, +2). Међутим, током процеса уписивања ових вредности у силицијумски чип дошло је до грешке, тако да је у пет ћелија уписана вредност 0 уместо +2. Кад год би SRT алгоритам морао да прочита вредности из ових ћелија, резултат дељења био би погрешан.
Проблем је први приметио професор Томас Најсли са колеџа у Линчбургу (Вирџинија), који се у то време бавио проучавањем простих бројева. Он је приметио неке нелогичности у прорачунима чим је у своју лабораторију убацио први рачунар са „Pentium“ процесором. У почетку је сумњао да је проблем изазвала неисправна меморија или матична плоча, али је стрпљивим експериментисањем на крају недвосмислено утврдио да је грешка у новом процесору.
Проблем није било једноставно репродуковати – дешавао се само када би SRT алгоритам морао да прочита вредност из пет неисправних ћелија у табели. У пракси, то се дештавало ретко а грешка је била релативно мала, најчешће на осмој или деветој децимали. Међутим, у појединим случајевима, грешка је била далеко већа – све децимале након четврте биле су погрешне.
Професор је на крају осмислио врло једноставан тест: било је довољно у „Виндоус“ калкулатору поделити број 4.195.835 бројем 3.145.727. Исправан резултат био је 1,33382, али је на фаличном „Pentium“-у количник био 1,33379. Крајем октобра 1994. године Томас Најсли се званично обратио „Интелу“ тражећи објашњење.
Испоставиће се да је „Интел“ за овај проблем већ знао и да је још од јула потајно тражио начин да исправи грешку, одбијајући притом да изда јавно саопштење или понуди замену или повраћај новца свима који су већ купили спорни процесор. Увређен конспиративним ставом компаније, професор Најсли је недељу дана касније сам обавестио јавност о дефекту у „Интеловом“ чипу.
Истинитост његових навода врло брзо је верификована, а скандалозно ћутање званичника „Интела“ само је помогло да прича о врхунском процесору који не уме да подели два броја добије ударни термин на CNN-у и доспе на насловне странице највећих америчких дневних новина.
Тек тада је „Интел“ реаговао на начин који ће касније бити оцењен као комплетна ПР-катастрофа. Компанија је покушала да проблем минимизира тврдећи да погађа само мали број најзахтевнијих корисника, да је рачунска грешка минимална и ограничена на специјалне случајеве и понудила корисницима бесплатну замену, али само онима који лично докажу да је њихов процесор дефектан.
Овакав приступ само је додатно иритирао јавност. У медијима су почели да се свакодневно појављују нови, захтевни корисници (међу њима и произвођачи компјутерских игара) који су тврдили да је проблем много озбиљнији него што то „Интел“ признаје. Ситуација по компанију постала је неодржива када је ИБМ одлучио да обустави продају персоналних рачунара са спорним чипом, што је довело до драстичног пада вредности акција „Интела“.
У децембру, компанија је била принуђена да спусти гард и обећа бесплатну и безусловну замену микропроцесора свакоме ко то затражи. Чак и та понуда имала је елемент безобразлука у себи: оштећени појединци морали су сами да обаве замену процесора, као да је у питању обична сијалица, док су дилерске мреже преко којих је пласиран највећи део проблематичних чипова остављене по страни.
Уследила је брза и ефикасна казна: иритирани корисници масовно су вратили своје фаличне „Pentiume“-e, а компанија је претрпела штету од око 475 милиона тадашњих долара.
Космичке невоље
„Маринер 1“ (1962)
На космичким летелицама компјутери су почели да се користе почетком шездесетих година овог века. Биле су то споре и скромне машине са врло лимитираним софтвером, али сасвим довољне да обаве лимитирани сет релативно једноставних операција. Један такав компјутер употребљен је у мисији НАСА чији је задатак био да сонду „Маринер 1“ однесе до Венере. Улазак у орбиту или спуштање на планету није било предвиђено – мисија се сводила на то да сонда пролети поред Венере и обави пар основних мерења током краткотрајног сусрета.
У то време, Венера је била такорећи непозната планета. Обавијена густим облацима доминантно састављеним од угљен-диоксида, њена површина била је недоступна за земаљске телескопе. Већ тада се знало да је због ефекта стаклене баште и мањег растојања од Сунца температура на површини Венере врло висока, вероватно већа од 300°C, али тачну вредност није било могуће утврдити.
Није се знало ни којом брзином се планета врти око своје осе, да ли се дневне и ноћне температуре разликују, да ли планета поседује магнетно поље налик Земљином, да ли у атмосфери постоји значајна количина водене паре... Иако скромно опремљен, „Маринер 1“ био је у стању да пружи одговор на бар нека отворена питања.
Као носач употребљена је ракета „Атлас-Агена“ а само лансирање обављено је 22. јула 1962. године, након бројних одлагања и поновљених одбројавања.
Недуго након полетања ракета је почела да скреће са курса, а ствар је постала још гора када су из контроле лета ка ракети послате корективне команде. Трајекторија летелице све више је одступала од планиране запретивши да угрози оближња насељена места, као и бродове у Атлантику. Свега шест секунди пре планиране сепарације првог и другог степена ракете, официр задужен за сигурност зоне полетања донео је одлуку да се ракета самоуништи (након одвајања првог степена то више не би било могуће).
С обзиром да је ракета током лансирања лагано одступала од планираног курса, инжењери су посумњали да су једначине имплементиране у софтверу који је контролисао почетну фазу лета ракете биле погрешне. Само пет дана након катастрофе, конструктори ракете дефинитивно су потврдили да је грешка била у софтверу који је управљао трајекторијом летелице, уз накнадни хардверски отказ.
Грешка у софтверу имала је банални узрок: оригиналне једначине које су коришћене за управљање летелицом користиле су ознаку „R“ са цртом изнад слова која је означавала да у програму треба користити просечну вредност ове величине израчунату на основу неколико претходних мерења. У једначинама које су добили програмери ова црта је мистериозно нестала, тако да је програм који је настао на основу ових једначина уместо просечне користио тренутну вредност.
У овој конкретној ситуацији програмери су коректно обавили свој посао али су, нажалост, радили са погрешним улазним подацима. Грешка коју је софтвер генерисао није била велика, али је била довољна да скрене ракету са планираног курса. На то се надовезао и хардверски проблем услед кога је систем за навигацију привремено изгубио информацију о висини на којој се ракета налази.
Када је та информација поново постала доступна, фалични навигациони софтвер погрешно је закључио да се брзина ракете непредвидљиво мења, што је довело до покушаја корекције који су само допринели да се ситуација погорша. Летелица је морала да буде уништена чиме је настала штета од око 190 милиона данашњих долара.
Срећом, наредни покушај представљао је потпуни успех: Маринер 2 лансиран је свега месец дана касније да би поред Венере пролетео у децембру исте године и на Земљу послао обиље научних података, међу њима и онај да температура на површини Венере износи око 500 oC.
Аријана 5“ (1996)
Ракета-носач „Аријана 5“, која је прошле године отишла у пензију да би је ове године наследила „Аријана 6“, биће упамћена по својој дуговечности, поузданости, свестраности и прилагодљивости. Са 113 обављених мисија и преко 95% лансирања обављених без икаквих инцидената, реч је, свакако, о најбољој летелици коју је Европска свемирска агенција („ЕSА“) икад направила.
У једном периоду „Аријана 5“ имала је низ од 82 узастопна успешна лансирања, што је и данас импозантан резултат за ракете сличне носивости. Међу корисницима биле су и најјаче светске телекомуникационе компаније: Eutelsat, SES, Intelsat... Ракета је с лакоћом избацивала сателите у геостационарну орбиту, а обавила је и лавовски део посла када је у питању лансирање система „Галилео“ који представља европску верзију америчког навигационог система (GPS).
НАСА је на свој начин показала колико респектује квалитет „Аријане 5“: на њеним леђима, у децембру 2021. године, успешно је лансиран баснословно скупи космички телескоп „Џејмс Веб“.
Ко се, међутим, још сећа суморног почетка, првог лета „Аријане 5“ из јуна 1996. године који се завршио спектакуларном деструкцијом летелице након свега 37 секунди лета, при чему је уништен и сав користан терет, кластер од четири истраживачка сателита?
Истрага је показала да је за катастрофу одговоран неадекватан управљачки софтвер, заправо низ грешака у његовом дизајну које су својом суперпозицијом довеле до тога да летелица скрене са свог курса и распадне се услед превеликог аеродинамичког оптерећења. У таквој ситуацији, када лет ракете постане неконтролисан, активира се механизам за самоуништење како би се минимизирала штета на земљи.
Шта се заправо догодило? Софтвер који је користила „Аријана 5“ преузет је великим делом са претходне „четворке“, укључујући ту и део програмског кода који „Аријани 5“ заправо није био ни потребан. Испоставиће се да је тај „мртав код“ био и главни извор проблема. У његовом централном делу налазила се функција која је срачунавала хоризонталну брзину летелице, а преко ње и тренутни нагиб путање.
Та функција била је неопходна „Аријани 4“ током првих 40 секунди лета, али је била бескорисна на „Аријани 5“ која има другачију трајекторију у раној фази полетања. Свеједно, функција је вредно рачунала оно што би иначе рачунала на „Аријани 4“, али је због значајно веће хоризонталне брзине коју је „Аријана 5“ имала у односу на „Аријану 4“ коначан резултат био неупоредиво већи.
Проблем је настао када је једну тако велику вредност (у овом случају број са децималним зарезом који заузима осам бајтова меморије) требало претворити у целобројну вредност и сместити у простор за резултат који је имао само два бајта. Тако нешто било је могуће на „Аријани 4“ са релативно малом хоризонталном брзином. У случају „Аријане 5“, ово је било немогуће.
Настао је тзв. „хардверски overflow“ (прекорачење дозвољеног опсега вредности), нешто што програмери кратко означавају као „exception“ (реч која означава изузетан догађај у програму који се не среће у нормалном раду).
Ниједан програм није имун на појаву „изузетака“: сигурно сте пробали да делите нулом на првом калкулатору који вам је допао шака, калкулатор сигурно није експлодирао због тога. Другим речима, изузеци у програмима се дешавају, али их софтверски инжењери рутински контролишу имплементацијом одређених заштитних механизама тј. сценарија који се аутоматски активирају у оваквим ситуацијама.
Нажалост, софтвер „Аријане 5“ није био једнако робустан у свим својим деловима: програм је за свој рад користио седам регистара (делова меморије) од којих су само четири била покривена заштитним механизмом, док су остала три остала незаштићена јер су се програмери руководили опсегом вредности који је генерисала „Аријана 4“.
Када у софтверу имате неконтролисани „изузетак“, он „пропагира“ све док потпуно не заустави рад програма. У случају „Аријане 5“, престао је да функционише цео систем за навигацију летелице, оба његова модула која су у суштини редундантна јер је за нормалан лет довољан само један. Излазни код умирућег програма навигациони систем протумачио је као последњу команду која је млазницу главног мотора окренула потпуно у страну, што је довело до нагле промене трајекторије и активирања механизма за аутодеструкцију.
„Mars Climate Orbiter“ (1999)
Марс је традиционално негостољубив домаћин, тек свака друга сонда упућена ка овој планети забележи макар делимичан успех. Разлога за овако лош учинак има више.
Иако је Марс, уз Венеру, нама најближа планета, космичка растојања су велика, тако да је сваком сигналу послатом са Земље потребно од 4 до 24 минута да превали растојање до Марса. Самим тим, могућност брзе реакције у непредвиђеним околностима сведена је на минимум, тако да летелицама по правилу управљају мање или више аутономни системи опремљени сензорима и компјутерима способним да донесу потребну одлуку у тренутку.
Спуштање на црвену планету још је теже од самог уласка у орбиту, јер се због разређене атмосфере морају користити сложени системи за приземљење који обухватају аеродинамички штит, систем падобрана и ракета за кочење. Али то је већ нека друга прича
Након тешког губитка из 1993. године, када је „Mars Observer“ вредан милијарду долара напрасно отказао непосредно пред рандеву с Марсом, НАСА је, на иницијативу новог директора Данијела Голдина, радикално изменила свој концепт истраживања. Нова политика, под олимпијским геслом „брже, боље, економичније“ значила је да НАСА намерава да искористи сваки погодан положај Земље у односу на Марс за лансирање бар две летелице (таква прилика указује се сваких 26 месеци).
Летелице би, међутим, морале да буду знатно јефтиније, тако да губитак једне од њих не угрози читав програм. Нова стратегија остварила је спектакуларан успех у јулу 1997. године када се на Марс спустио „Mars Pathfinder“ из кога је измилео „Sojourner“, интелигентно возило налик на скејтборд које је данима весело крстарило околином. У септембру 1997. у орбити се нашао и „Mars Global Surveour“, летелица која ће наредних десет година слати на Земљу фотографије изузетне прецизности.
А онда је све кренуло наопако. Крајем 1998. године пут Марса су, у кратком временском интервалу, упућене две летелице: „Маrs Climate Orbiter“, задужен да са висине сакупља податке о климатским променама на Марсу, и „Mars Polar Lender“, летелица која би требало да се меко спусти у поларни регион Марса, чија је главна мисија да у узорцима тла покуша да детектује трагове воде.
Орбитер је изгубљен у септембру, надомак циља, због бизарне грешке која ће, као прича са наравоученијем, сигурно ући у све уџбенике елементарне физике. Наиме, стручњаци из НАСА веровали су да је реактивна сила ракетних мотора којима се летелица одржава на планираној путањи изражена у њутнима, тј. у јединицама међународног (метричког) система јединица. У складу са тим направљен је и компјутерски програм који је контролисао моторе, њихово време паљења и гашења.
Међутим, компанија „Lockheed Martin“ која је направила летелицу користила је, у складу са англосаксонском традицијом, фунте. Проблем су, у раној фази лета, приметила бар два навигатора која су управљала летелицом, али је њихова примедба одбијена јер нису на исправан начин попунили одговарајуће формуларе.
С обзиром на то да једна фунта има око 4,4 њутна, Орбитер је скретао с правог курса кад год би контрола лета укључила моторе на летелици. Пошто оваквих „корекција“ није било много, летелица је, након 660 милиона пређених километара и непосредно пред састанак с Марсом, била свега 100 километара изван жељене трајекторије. На несрећу, то је било довољно да Орбитер загњури у Марсову атмосферу више него што сме.
Услед повећаног аеродинамичког загревања осетљива опрема је изгорела, а Орбитер се или стропоштао на Марс или га је потпуно промашио, па сад беживотно лута Сунчевим системом. Када је грешка дефинитивно утврђена, било је сувише касно да се прорачунају параметри неопходни за корекцију путање, тако да се штета од 125 милиона долара више није могла избећи.
А шта је било са „Mars Polar Lender“-oм? И он је изгубљен, такође због грешке у програму за аутоматско спуштање летелице.
По својој прилици, софтвер који се налазио у лендеру протумачио је вибрације настале извлачењем ногу стајног трапа као последицу њиховог контакта са површином Марса. Услед тога, аутоматски су искључени мотори за кочење иако се летелица још увек налазила на висини од око 40 метара.
Без мотора који би успорили пад, летелица се стропоштала на површину Марса и распала тако да контакт са њом никад није успостављен.
Каснија истрага показала је да су програмери били свесни могућности да извлачење стајних ногу може да произведе сигнал сличан оном који настаје приликом контакта са тлом, али софтвер из непознатог разлога никад није био дорађен како би покрио и ову могућност.
И поред бројних покушаја да се остаци „Polar Lendera“ лоцирају на површини Марса користећи снимке направљене из Марсове орбите, тачан положај изгубљене летелице никад није утврђен.