14. nädal // "Keep IT Simple, Stupid"
IT süsteemi suurim turvarisk on selle keerukus
ning inimese piiratus IT süsteemi ja selle keerukuse tajumisel. Keerukusrisk
avaldub esmalt inimese kirjutatud koodi puudustes ja defektides, mis juba vähegi
suurema meeskonnatöö puhul toob kaasa selle, et isegi tarkvara loojad ei mõista
kõiki programmi toimimise eripärasid. Kuid isegi kõige töökindlam tarkvara töötab
alati koos teiste komponentidega. Armutu tõenäosusteooria toob koostalitavate komponentide
puhul kaasa riskide korrutamise ning multikomponentse süsteemi kahaneva
töökindluse ja turvalisuse.
Ka
jumalad eksivad
2018. aastal mõistis USA
grand jury Vene Föderatsiooni Relvajõudude Kindralstaabi Sõjaväeluure (GRU) 8 ohvitseri
tagaselja süüdi küberrünnakutes USA erinevate valitsusasutuste vastu. Erinevad
GRUga seotud löögiüksused – Cozy Bear ja Fancy Bear – olid edukalt sisse murdnud
mitmetesse USA valituse või parteidega seonduvatesse IT-süsteemidesse,
varastanud sealt miljoneid kriitilise tähtsusega dokumente ning nendega
varustatult paisanud USA poliitika kaosesse, mis päädis Donalt Trumpi valimisega
presidendiks.
Mõistagi tekkis
küsimus, kuidas võis USA tõsikindlalt väita, et just need GRU ohvitserid olid rünnakute
taga? Cozy & Fancy Bear ei olnud ju kamp amatööre – tegemist oli maailma
tipptasemel kübersõdalastega, kelle töömetoodikas oli kesksel kohal parimad
võimalikud tehnikad oma päritolu ja tegutsemismeetodite varjamiseks. Tegemist
oli ja on kübermaailma isandate, mustade röövparunitega, kes liikusid mängleva
kergusega ühest võõrast süsteemist teise, kelle ees ei olnud kaitstud ükski kübersaladus
ning kes tundsid keeruliste süsteemide toimimise peensusi paremini kui keskmine
inimene oma viit sõrme.
Hollandlased
olid maailma parimad kübersõdalased ära häkkinud. USA teadis ründajate isikuid
ja nende töömeetodeid, kuna Hollandi pisike luureteenistus AIVD andis CIA-le infot Cozy Bear tegevuse
kohta. Esialgu ei teadnud ka AIVD, et nad on poolkogemata sisse murdnud kardetud
GRU enda salajasse varakambrisse – Moskvas Punase väljaku servase asunud
teadusasutusse, mis oli GRU küberründeüksuse varjatud fassaad. AIVD suureks
üllatuseks – ja GRU suureks piinlikuseks – ei pääsenud hollandlased ligi mitte
üksnes Cozy Beari IT-süsteemidele, vaid ka turvakaameratele ning nägid reaalajas
kõiki hoonesse sisenevaid ja sealt väljuvaid inimesi. Kriitilistel hetkedel juhendasid
hollandlased CIA-d reaalajas GRU teostatavates ründeoperatsioonidest ning aitasid
seeläbi nurjata keerukad ründeoperatsioonid USA Välisministeeriumi vastu.
Kõik lõppes niisama
ootamatult kui see algas. Avalikel andmetel jälgisid hollandlased GRU tegevus 1-2,5
aastat. Ühel päeval kõik lõppes. Ligipääs oli lõppenud. Hollandalased ei
saanudki teada, mis juhtus. Kas nad avastati? Kas vahetati tulemüüri? Toimus
tulemüüri püsivara uuendus? Ei tea. Samamoodi jääb müsteeriumiks, kuidas lasid
maailma ühed tugevamad küberründajad teise riigi luureteenistustel peaaegu
sisse komistada oma salajastesse süsteemidesse? Kuidas oli võimalik, et IT rünne
võimaldas ligipääsu turvakaameratele? Kas keegi GRUs üldse mõistis, mis nende
süsteemides toimus?
6. mail 2010.a. tabas
USA aktsiabörse 36 minutit väldanud krahh. „Flash Crash“ pühkis mõne
minutiga Dow Jonesi väärtusest 9 % ja koos teiste suuremate indeksitega kaotati
trillion dollarit, et need mõnekümne minuti pärast tagasi teenida. Mis juhtus?
Algus oli klassikaline – keskmisest nutikam kaupleja tegi mõningaid manipulatiivsed
tegevused, mis 2015.a. talle ka väärtpaberipettuses süüdistuse tõi. Kuid järgnenu
oli kõigile üllatuseks – finantsvõlurite poolt välja mõeldud ja kõrgeimalt
tasustatud IT-spetsialistide poolt loodud kauplemisalgoritmid hakkasid toimima isetahtsi,
kontrollimatult ja viisil, mida nende loojad ei osanud ette näha. Ostmine ja
müük toimus inimmõistusele arusaamatu kiirusega, inimmõistusele arusaamatu
loogikaga, kindlasti teisiti, kui süsteemi loojad seda silmas pidasid. Jällegi,
mis toimus? Mängus olid miljardid ja trillionid. Kas need inimesed tõesti aru
ei saanud, kuidas nende loodud algoritmid toimivad?
Tuleb välja, et ei
GRU ega Wall Streeti finantsvõlurid ei mõistnud, kuidas nende süsteemid toimivad
ja kuidas nende oma süsteeme ja loodud tarkvara ootamatuse või välise ründaja
vastu kaitsta. IT maailm on muutunud liiga keeruliseks, eksimine on muutunud
vältimatuks ka maailma kõige tugevamate eriteenistuste ja rahakamate ettevõtete
jaoks. Miks? Kuidas nii?
Eksimine
on inimlik
IT süsteemi
ehituskivi on programmi koodirida. Erinevatel aegadel on erinevad teadlased
uurinud koodi kvaliteeti. Enamasti on leitud, et 1000 koodirea (LOC) kohta
esineb 15-50
viga. Microsoft on hinnanud, et kirjutatud koodis on 10-20 defekti 1000 LOCi
kohta ja põhjalike testimistega on klientideni jõudvas koodis vigade arv
suudetud viia 0,5 defektini 1000 LOC kohta. Parimate tehnoloogiate kasutamisega
on teadlased suutnud vigade arvu vähendada 0,1 defektini 1000 LOC kohta,
kusjuures vaid ülimalt kriitilistes projektides – nt USA kosmosesüstiku programm
– on suudetud vead sisuliselt elimineerida: väidetavalt on erinevate vaevanõudvate
meetoditega viidud vigade arv 500
000 LOC puhul 0-ni.
Tundub suurepärane
tulemus? Kuid moodsad tarkvarad on kasvanud ülimahukateks teosteks – Windows XP
40 miljonit koodirida (LOC) on Windows 10 puhul kasvanud 50-65
miljoni LOC-ini. Ka Linux ei ole märkimisväärselt õhem – hinnanguliselt on
Linuxi kerneli maht 15 miljonit LOC-i, kuid Windows 10-ga võrreldava funktsionaalsusega
Ubuntu mahuks hinnatakse üle 50 miljoni LOC-i. Linuxi puhul tuleb arvestada
veel jooksva arengu ja pideva kasvuga – ainuüksi 2017.a aasta jooksul lisati
Linuxi kernelile 3,9 miljonit LOCi ja eemaldati 1,4 miljonit LOCi ja kokku kasvas
kernel 2,5
miljoni LOC võrra.
Seega kui aluseks
võtta ka kõige optimistlikum stsenaarium, et meie kõigi arvutites jooksev
tarkvara on kõrgekvaliteediline – 0,1-0,5 defekti 1000 LOC – kohta, siis on
juba ainuüksi Windows 10 mahuga tarkvaras 5000-25 000 viga, mis mõjutavad
meie arvuti toimimist, selle ettenähtavust ning seega ka turvalisust. Kui uskuda,
et Linux on oluliselt parema koodikvaliteediga, siis isegi 10-korda parema
kvaliteedi puhul on ka Ubuntus 500-2 500 väiksemat või suuremat defekti.
Sest kõik programmid on kirjutanud inimene ja inimene eksib.
IT süsteem kui pimedate rajatud Paabeli torn
Kunagi esitasid
inimesed Jumalale väljakutse ja soovisid ehitada torni, mis ulatuks taevaste valdadeni,
otse jumalariiki. Jumalale selline jultumus ei meeldinud ning plaanide
nurjamiseks andis ta inimestele erinevad keeled – keelte erinevuste tõttu ei mõistnud
Paabeli torni ehitanud inimesed enam üksteist ning torni rajamine jäi soiku.
Keskmine IT-süsteem ja eriti moodne internetipõhine omavahel koostoimiv IT süsteem
on omapärane Paabeli torn: jumal on pannud selle loojatele suhu erinevad keeled
ja pähe erinevad mõtted, kuid erinevalt originaalsest Paabeli torni ehitajatest
ei ole IT-inimesed lasknud ennast segada ning nii see torn vonkleb ja tõuseb võbeledes
taeva poole, tuul aukudest ja avadest sisse ulgumas.
IT süsteemi fundamentaalne
ehituskivi on küll koodirida, kuid ühe suurema süsteemi loomisel tuleb mitmete
erinevate spetsialistide koostöös disainida, rakendada ja käigus hoida ääretult
kompleksseid ja inimmeeltele vahetult mittetajutavaid IT-süsteeme. Ühe inimese
poolt loodud süsteemi puhul võiks teoreetiliselt loota, et üks inimene teab
süsteemi toimimise eripärasid algusest lõpuni ning suudab tagada, et erinevad tarkvara
osad toimivad koos vastavalt kavandatule. Tänapäeval on vähe (kui üldse) olulisi
tarkvarasid, mille on algusest lõpuni disaininud, loonud ja käiku lasknud üks
inimene. Enamasti luuakse tarkvara aga meeskonnatööna. Näiteks Windows 7
loomisel oli ametis 1 000
inimest. 1000 inimese juhtimine ja veatu koostoimimise tagamine oleks suur
ime, mistõttu võib pidada tõenäoliseks, et vaevalt, et enamus sellest tuhatkonnast
lõpuni terviktoote funktsionaalsust teadis ja tundis ning küll pillati projektis
osalenud 23 töögrupi omavahelises suhtluse maha mitmeid palle, mis lisasid juba
paratamatutele LOC-ide defektidele uusi ja ootamatuid komponentide koostalituse
häireid ja anomaaliaid. Seetõttu võib eeldada, et ühes keskmises tarkvaras on
lisaks defektse koodi vigadele veel kümneid kui mitte sadu komponentide omavahelise
koostoimimise eripäradest tekkinud anomaaliaid ja spetsifitseerimata käitumisviise.
Tarkvarakoodi kirjutamisel
ning meeskonnatöö loovates tingimustes suure arenduse komplekssusest tulenevalt
on võimatu luua vigadeta tarkvara. Kuid kõik vead ei ole turvaaugud ega too kaasa
häireid süsteemi toimimises või on süsteemid disainitud väiksemaid vigu ületama.
Seega võiksime ju olla rahul, kui erinevate tehnikate abil saavutatakse tarkvara
hinnanguliseks töökindluseks nt 95 % või isegi 99 % (üldistatud „töökindlust“ kasutan
ülisuure lihtsustusena, möönan). Tundub ju täitsa hea? Kahjuks mitte. Nimelt
keskmises PC-s on installeeritud ja töös hinnanguliselt 72 programmi – tegelikkuses
on see number veel suurem, kui juurde arvutada erinevad süsteemikomponendid,
draiverid, riistvara käitlemiseks kasutatav firmware jms. Süsteemi kui terviku
toimise tõenäosuse arvutamiseks tuleb kõigi komponentide töökindluse
tõenäosused omavahel korrutada, et meie näites võtta 0,99 astmele 72. Kurvastusega
tuleb tõdeda, et kui süsteem koosneb 72st komponendist, mille toimise tõenäosus
on 99 %, siis on süsteem kui terviku vigadeta toimise tõenäosus tagasihoidlik
48 %...
IT süsteem kui 8. maailmaime
Toimiv IT süsteem
on inimlikku eksimissuutlikkust ning statistikat eirav ime. Eelnev kurb statistika
kinnitab veenvalt, et IT süsteemi häirete puhul ei ole mõtet emotsionaalsesse
negativismi langeda. Vastupidi, iga kord kui IT enamvähem ettenähtud viisil
toimib, siis tuleb olla härdalt tänulik ning tänada IT-jumalaid selle eest, et
seekord inimese ja meeskonna vead kriitilisel viisil kokku ei langenud ning
süsteemi toimimast ei takistanud.
Eks olen selle
järelduse kirja pannud utreeringuna, kibehumoorika provokatsioonina. Kuid fakt
on see, et kogu inimese loodud tarkvara sisaldab vigu. Ka ei ole inimese meeled
ei mõeldud vahetult tajuma digitaalses maailmas toimivaid protsesse ning neid
vahetult kontrollima – me märkame viga või anomaaliat vaid siis, kui süsteem
meile sellest talitlushäire või testi läbikukkumisega märku annab. Kuid lisaks
tajumise probleemile on suureks probleemiks meie suutmatus tajuda süsteemi
erinevate komponentide – riistvarast kuni 100 tarkvaraliste komponentideni –
omavahelist talitlust. Ja isegi kui me suudaksime tarkvarakomponentide seisundi
mingis ajahetkes lõplikult selgeks teha, siis toimub mõne komponendi tarkvarauuendus
või rikutakse mõni faili ning hoolega loodud ülevaade süsteemi toimimisest
hävineb.
Seega kui absoluutne
turvalisus nõuaks detailset arusaamist süsteemi toimimisest, et vältida
süsteemi aukude ja anomaaliate ilmnemist, siis IT süsteemi puhul ei ole see võimalik
tulenevalt süsteemi keerukusest ning pidevast arengust. Kuna süsteem pidevalt
muutub, komponendid uuenevad ja vahetuvad, siis on hõlpsad tekkima ja sulguma
avad ja lõhed komponentide vahel, mis mõnikord võivad üksikult võttes olla sedavõrd
ulatuslikud või mis omavahel kombineerudes võivad ulatuda sedavõrd sügavale, et
annavad ründajale võimaluse süsteemi sisse murda või muul viisil kuritarvitada.
Keerukus on kõige
suurem risk. Seetõttu peitub lihtsuses ilu, töökindlus ja turvalisus. Keep it simple. Even and especially if you are smart.
----
Selle nädala teema: Vali üks suurematest IT-turvariskidest (võib võtta tekstist,
aga võib ka kirjeldada mõnda muud) ja analüüsi seda ajaveebiartiklis. Mida
tuleks "Mitnicki valemi" kolme komponendi (tehnoloogia, koolitus,
reeglid) selle maandamiseks ette võtta?
Kommentaarid
Postita kommentaar