Tarkvara turvaauk

Arvutiteaduses nimetatakse tarkvara turvaauku (inglise keeles software vulnerability) nõrkuseks programmi ühesehituses või konfiguratsioonis, mida ründaja saab kuritarvitada pahatahtlikel eesmärkidel, näiteks arvutisüsteemile ligi saamiseks või rünnatavast süsteemist info hankimiseks.

Tarkvara ehitamise juures on oluline osa tsüklilisel turvanõrkuste haldamisel ehk nõrkuste otsingul, tuvastamisel, parandamisel, testimisel ja vähendamisel. 

Tihtipeale liigitatakse turvariske vääralt turvaaukudeks, mis võib põhjustada segadust mõlema sõna tähenduse osas. Turvarisk on oluline mõju, mida võib võimalik turvaaugu kuritarvitamine endaga kaasa tuua. Eksisteerib nõrkusi, mis ei too endaga kaasa riski. Selle näide on olukord, kus varal, mis on ohustatud, puudub väärtus. Turvanõrkus, mille kohta on teada üks või rohkem juhtumeid, kus on edukalt ja kõikide võimaluste piires seda ära kasutatud, liigitatakse ärakasutatavateks turvaaukudeks ehk nõrkusteks, millele eksisteerib teadaolev kasutusviis.

Ründeaknaks nimetatakse perioodi alates turvaaugu tahtmatust lisamisest või tekkimisest paigaldamisel kuni programmile juurdepääsu keelamiseni, turvaparanduse loomiseni või ründaja ohutuks muutmiseni (näiteks nullpäeva ründe korral).

Turvaviga ehk programmiviga (inglise keeles security bug) on kitsam kontsept turvaauguga võrreldes. Kui turvaviga on olukord, kus tarkvara turvalisus ei toimi nii nagu ette nähtud, siis nõrkus on viis süsteemi ära kasutada kas mingi implementatsiooni- või disainivea tõttu. Leidub turvaauke, mis ei ole seotud tarkvara endaga, vaid sõltuvad välisteguritest, näiteks riistvara, võrgu või tarkvara kasutajatega seotud nõrkused: need ei ole tarkvara turvavead. 

Mida keerulisemalt on üles ehitatud programmeerimiskeel või mida raskem on mingeid keele funktsionaalsusi rakendada, seda lihtsam on seda kasutades vigu teha, mistõttu on keeled ise suureks nõrkuste allikaks.

Definitsioonid

ISO 27005 defineerib turvaauku kui nõrkust varas, mida saab ära kasutada üks või rohkem ohuallikat. Antud definitsioonis tähistab vara ükskõik millist objekti, millel on väärtus mingi organisatsiooni, selle äritegevuse ja äri jätkusuutlikkuse jaoks, kaasa arvatud andmed, mis on selle organisatsiooni töös olulised.

IETF ehk Internetiehituse Töörühma dokument RFC 4949 defineerib turvaauku kui viga või nõrkust süsteemi disainis, implementatsioonis või töötamises ja haldamises, mida saab ära kasutada, et rikkuda süsteemi turvapoliitikat.

CNSS ehk Ameerika Ühendriikide Riigiturvasüsteemide Komitee defineerib turvaauku nende 2010. aastal välja antud "Riikliku infoturbe sõnastikus" kui nõrkust informatsioonisüsteemis, süsteemi turbeprotseduurides, sisemises ehituses või implementatsioonis, mida on võimalik ära kasutada ohuallikal. 

Mitmed NIST-i (USA Riiklik Standardi- ja Tehnikainstituut) väljaanded defineerivad turvaauku infotehnoloogia kontekstis kõige üldisemalt kui viga või nõrkust süsteemi turvaprotseduurides, disainis, implementatsioonis või sisemises ehituses, mida saab rakendada (kas kogemata või tahtlikult) ning mille tulemusena tekib murre (inglise keeles security breach) süsteemi.

ENISA ehk Euroopa Liidu Võrgu- ja Infoturbeamet defineerib turvaauku kui nõrkuse, disaini- või implementatsioonivea olemasolu, mis võib viia ootamatu ja soovimatu sündmuseni, mille tulemusena on ohustatud võrk, programm, protokoll või arvutisüsteemi turvalisus, milles turvaauk leidub.

Open Group defineerib turvaauku kui tõenäosust, et oht ületab süsteemi suutlikkust sellele vastu võidelda.

Infosüsteemide Auditeerimise ja Juhtimise Assotsiatsioon (ISACA) defineerib turvaauku Risk IT raamistikus kui nõrkust disainis, implementatsioonis, operatsioonis või sisekontrollides.

Turvaaugud ja riskitegurite mudelid

Ressurss (füüsiline või loogiline) võib omada ühte või rohkemat turvaauku, mida saab ära kasutada ründeks ohuallikas. Ründe tulemusena võib potentsiaalselt olla rikutud antud ressursi või temaga seotud ressursi konfidentsiaalsus, terviklikkus või käideldavus, mis on andmeturbe kolm alusomadust (CIA kolmik, inglise k. CIA triad). Ressurss võib kuuluda nii organisatsioonile kui ka/või teistele osapooltele nagu klient või varustaja.

Rünnak võib olla aktiivne, kui ta üritab muuta süsteemi ressursse või mõjutada nende töid, rikkudes terviklikkust või käideldavust. Passiivne rünnak üritab õppida või ära kasutada informatsiooni, mis on süsteemist pärit, kuid ei mõjuta ise süsteemi toimimist ega tema ressursse, rikkudes nii konfidentsiaalsust.

Mittetulunduslik rahvusvaheline organisatsioon OWASP (Open Web Application Security Project) kujutab rünnakut teiste terminitega: ohuallikas, kasutades mingisugust ründevektorit (e-kirja, viirust, hüpikakent vms), kasutab ära nõrkust (turvaauku) süsteemis ning temaga seotud turvameetmed, põhjustades tehnilist mõju infotehnoloogilisele ressursile (väärtusele), mis on seotud äriga.

Infoturbe halduse süsteem 

Enamikul asutustest on olemas mingid informatsiooni turvameetmed, kuid kui ei rakendata infoturbe halduse süsteemi (ISMS-i), on need meetmed tihtipeale korrapäratud ja seosetud, sest nad on implementeeritud ainult spetsiifiliste olukordade jaoks või tava tõttu. Tüüpiliselt on turvameetmed eraldi IT või andmeturve jaoks, jättes kaitseta või vähema kaitsega mitteinfotehnoloogilise vara (näiteks paberikujul dokumendid ja firmasisene info). Veelgi enam, füüsiline turvalisus hoitakse tihti eraldi informatsiooni tehnoloogiaga seotud turvalisusest, seda eriti tööjõu osas, kellele jäetakse defineerimata ja määramata informatsiooni turvalisuse rollid ja kohustused organisatsioonis.  

Infoturbe haldamise süsteem ehk ISMS on informatsiooni turbepoliitikate kogum, mille eesmärk on hallata vastumeetmeid ja turbestrateegiaid organisatsiooni informatsiooni kaitseks ja kindlustada nende vastavus riiklikele reeglitele ja regulatsioonidele. Neid vastumeetmeid nimetatakse ka turvameetmeteks, kuid kui on tegemist andmeedastusega, nimetatakse neid turvateenusteks.  

ISO/IEC digitaaljuurdluse 27001 standard nõuab, et haldamissüsteem:

 süstemaatiliselt uurib organisatsiooni informatsiooni turvariske, arvestades ohuallikaid, nõrkusi ja mõjusid;
 loob ja implementeerib sidusa ja kõikehõlmava komplekti informatsiooni turvameetmeid ja/või teisi riskihaldamisvorme (vältimine, ülekandmine), et adresseerida neid riske, mis on lubamatud;
 võtab kasutusele üldise haldamisprotsessi kindlustamaks informatsiooni turvameetmete jätkusuutlikust kaitsta organisatsiooni turvavajadusi ja andmeid.

Tuleb tähele panna, et ISO/IEC 27001 standardipere defineeritud ISMS on mõeldud katmaks rohkemat kui lihtsalt infotehnoloogilisi vajadusi.

Liigitamine
Turvaauke liigitatakse vastavalt varale, millega nad seotud on:
riistvara
 tundlikkus niiskusele
 tundlikkus tolmule
 tundlikkus määrdumisele
 tundlikkus kaitsmata transpordile või varustamisele
tarkvara
 vähene testimine
kontrolljälje (inglise keeles audit trail) puudumine
 disainiviga
võrk
 kaitsmata sideliinid
 kaitsmata võrguarhitektuur
 personal
 puudulik värbamisprotsess
 puudulik teadlikkus turvalisuse osas
 füüsiline asukoht
 üleujutuste oht
 ebausaldusväärne energiaallikas
 organisatoorne
 regulaarsete turvarevisjonide puudumine
 jätkuvusplaani puudumine
 turvalisuse puudumine

Põhjused

Keerukus – mahukad ja komplekssed süsteemid suurendavad vigade ning tahtmatute pääsupunktide tekkimise tõenäosust.
Familiaarsus – levinud, hästi tuntud programmeerimiskoodi, tarkvara, operatsioonisüsteemi ja/või riistvara kasutamine suurendab tõenäosust, et ründajal on olemas või saab hankida teadmised ja tööriistad turvaaugu ärakasutamiseks.
Seotus – mida rohkem on füüsilisi ühendusi, privileege, porte, protokolle ja teenuseid, seda suurem on turvaaugu leidumise tõenäosus.
Paroolide haldamise vead – arvutile, milles on kasutusel nõrgad paroolid, on võimalik ligi saada jõuründe ehk brute force rünnaku abil. Arvutikasutaja võib hoida parooli samas arvutis, millele saab programm ligi. Kasutajad võivad taaskasutada paroole mitme programmi ja lehekülje peale.

Fundamentaalsed operatsioonisüsteemi disainivead – operatsioonisüsteemi disainer otsustab kasutada ebaoptimaalseid turvameetmeid kasutaja või programmide haldamisel. Näiteks operatsioonisüsteemid, millel on vaikimisi omadus lubada igal programmil ja igal kasutajal täisõigusi arvutile ligipääsemiseks, on vigased ja lubavad viirustel ning pahavaral täita käske administraatorina.
Veebilehtede lehitsemine – veebilehed võivad sisaldada kahjulikku nuhkvara või reklaamvara, mis installuvad automaatselt arvutisüsteemi. Peale selliste lehtede külastust nakatuvad arvutisüsteemid ning seal olev personaalne info kogutakse ja saadetakse süsteemist edasi kolmandatele isikutele.
Tarkvara puugid ehk vead – programmeerija jätab vea programmi. Selline viga annab võimaluse ründajale rakendust pahatahtlikult kasutada.
Kontrollimata sisend kasutajalt – programm eeldab, et kogu kasutajasisend on turvaline. Programmid, mis ei kontrolli kasutaja sisestatut, võivad lubada soovimatut käskude täitmist või SQL-lausete kutseid (ehk puhvri ületäitumist, SQL-süst jms).
Vigadest mitteõppimine – enamik turvaauke, mis on leitud iPv4 protokolli tarkvarast, leiti ka uuematest iPv6 implementatsioonidest.

Uuringud on näidanud, et enamiku informatsioonisüsteemide nõrgim lüli on inimkasutaja, operaator, disainer või keegi teine inimene.

Turvaaugu tagajärjed
Turvarikkumise mõjud võivad olla väga suured. Kui infotehnoloogia haldajad või ülemkorraldus teavad, et informatsioonisüsteemid ja rakendused omavad nõrkusi ja ei võta midagi selle riski osas ette, peetakse seda enamikus õigusaktides väärteoks. Isikuandmete kaitse seadused sunnivad haldajaid vähendama turvariski mõju või tõenäosust. Infotehnoloogia turvarevisjon on hea viis lasta teistel iseseisvatel osapooltel tõendada, et konkreetset IT keskkonda hallatakse korralikult. Läbistustestid on viis kinnitamaks nõrkusi ja vastumeetmeid, mida organisatsioon kasutab: valge mütsi häkker ehk eetiline häkker või arvutiturvalisuse ekspert üritab organisatsiooni infotehnoloogia vara rünnata, et leida kui kerge või keeruline on süsteemi turvalisust läbistada. Parim viis professionaalselt hallata infotehnoloogisi riske on kasutusele võtta ISMS ehk infoturbe halduse süsteem (näiteks ISO/IEC 27002 või Risk IT) ja järgida selle reegleid.

Üks võtmekontsepte informatsiooniturvalisuses on süvakaitse (inglise keeles defence in depth) ehk mitme üksteist täiendava või osaliselt kattuva turvameetme rakendamine organisatsiooni eri kihtides või dimensioonides, mis suudab:

 ennetada nõrkuse ärakasutust
ära tunda ja vahele sekkuda rünnakule
leida üles ohuallikad ja neid vastutusele võtta

 

Sissetungituvastuse süsteem (IDS) on näide automatiseeritud süsteemideklassist, mida kasutatakse rünnakute tuvastamiseks. IDS on seade või tarkvara, mis jälgib võrku või süsteeme, et leida pahatahtlikku tegevust või turvareeglite rikkumisi ja et neist alarmeerida. 

Füüsiline turvalisus on komplekt meetmeid vara kaitseks füüsiliste ohtude (kahjutule, plahvatuse, loodusõnnetuse, sissemurdmise, varguse, vandalismi, terrorismi) eest: kui on võimalik füüsiliselt varale juurde pääseda, on väga kerge muuta ressurss kättesaamatuks tema tegelikele kasutajatele.

Turvaaukude avaldamine

Privaatpaljastuse ehk vastutustundliku paljastamise puhul esmalt hoiatatakse vara müüjaid konfidentsiaalselt turvaaugust ning siis CERT-i (Computer Emergency Response Team) kaks nädalat hiljem, mis annab müüjatele 45-päevase armuaja enne turvahoiatuse avaldamist. 

Täielik turvaaukude avalikuks tegemine tähendab turvaaugu kõigi detailide kohest avaldamist, võib-olla soovist sundida tarkvara või protseduuride loojaid kiiresti viga parandama.

Turvaukude loendamine 
USA mittetulundusühingu Mitre Corp. hoiab nimekirja avaldatud nõrkustest süsteemis Common Vulnerabilities and Exposures ehk CVE (lehel https://cve.mitre.org/), kus on nõrkused klassifitseeritud ja hinnatud kasutades CVSS skoorimissüsteemi.

OWASP kogub nimekirja potentsiaalsetest turvaaukudest eesmärgiga harida süsteemidisainereid ja programmeerijaid, seega vähendades tõenäosust, et nõrkusi kirjutatakse tahtmatult tarkvara koodi sisse.

Turvaaukude leidmine ja eemaldamine 
Leidub mitmeid tarkvara tööriistu, mis aitavad turvaaukude leidmist (ja mõnikord eemaldamist) arvutisüsteemist. Need tööriistad annavad küll hea ülevaate süsteemis leiduvatest võimalikest nõrkustest, kuid nad ei asenda inimotsuseid. Ainult sellistele skanneritele toetudes võib leida tulemusi, mis tunduvad kui nõrkused, kuid tegelikkuses ei ole (väärpositiivsed vastused), ning piiratud ulatusega vaateid probleemidest süsteemis. 

Nõrkusi on leitud igas levinumas operatsioonisüsteemis, kaasaarvatud Windowsis, macOS-is, erinevad Unixi ja Linuxi süsteemid, OpenVMS-is jt. Ainus võimalus vähendada turvaaukude ärakasutamisvõimalust on olles pidevalt valvel. Valvelolek tähendab hoolsat süsteemihooldust (näiteks luues tootja paike ehk patche), heade tavade harrastamist juurutamisel ehk deploymisel (näiteks tulemüüri kasutamine) ja auditeerides (nii juurutamise ajal kui ka läbi terve juurutamise tsükli).

Turvanõrkuste näiteid
Nõrkused on seotud eelmainitud liikidega:

 füüsiline keskkond süsteemi ümber
 personal
 haldamine
 administreerimine ja turvameetmed organisatsioonis
 riistvara
 tarkvara
 võrk
 kõikide eelnevate kombinatsioonid

Neli näidet turvanõrkuse ärakasutamisest:

 ründaja leiab ja kasutab ületäitumisnõrkust süsteemis, et installida sinna pahavara, mis transpordib välja tundliku infot;
 ründaja veenab kasutajat avama e-kirja, milles on sees pahavara;
 siseinfo valdaja kopeerib krüpteeritud programmi andmekandjale ning murrab selle lahti muus asukohas;
 üleujutus kahjustab arvutisüsteemi, mis on üles pandud esimesele korrusele.

Tarkvara turvaaugud
Levinud tüübid tarkvaravigu, mis viivad nõrkuse tekkimiseni, on näiteks:

 Mälu turvalisuse rikkumised, nagu
puhvri ületäitumised
 rippuvad viidad ehk viidad, mis ei viita sobiva tüübiga kehtiva objekti poole ning võivad põhjustada sellepärast programmi ennustamatut käitumist
 Sisendi valideerimisvead, nagu
koodisüst ehk salajane koodi sisestamine, mis muudab tarkvara käitumist
 XSS, pikemalt murdskriptimine (inglise keeles cross-site scripting) veebirakendustes
kataloogihüpe, mis on failikataloogi läbimine sisendfaili nime karakterite (näiteks "../") abil, mis viivad volitusteta ründaja rakenduse kõrgema taseme kataloogi ja selle kaudu edasi mitteavalike kataloogide ja failideni
meilisüst ehk e-kirja injektsioon, mis on meilimisvormi nõrkuste ärakasutamine MIME-vormingu kaudu
 sõne formaadi rünnak ehk sisendvormingurünne, mis on kitsendusteta vormingustringi nõrkusi ärakasutav rünne, kus sisendisse võib näiteks skripti anda
HTTP-päisesüst, mille korral genereeritakse dünaamiliselt HTTP-päis kasutaja sisestatud andmete põhjal, mistõttu lubatakse HTTP-vastuse lõhestust, murdskriptimist või muid rünnakuid
HTTP-vastuse lõhestus, mis petab serverit andma ühe HTTP-vastuse asemel mitut ja lubab näiteks skriptisüsti
SQL-süst, mis on rünne andmebaasipõhisele rakendusele, et andmebaasile lubamatuid käske anda
Õigusepette vead, nagu
klõpsurööv, kus rünnatakse veebilehega, millel olevate nuppude tegelik toime ei ole vastav näilisele otstarbele ning videoklipi esitamise nupu vajutamine võib näiteks sooritada ostu veebipoest
päringuvõltsing, mis petab laadima veebilehte, mille kaudu tehakse veebirakenduse kasutaja nimel ja õigustega mingi kahjulik toiming, näiteks ostetakse midagi
FTP-dublee rünne, mis taotleb rünnatava kolmanda arvuti kaudu teise arvuti portide skaneerimist ja kaudset juurdepääsu teatud portidele 
Privileegide vallutus
Trügimine (sündmustevahelist siirdelist ajalõiku nõrkusena ärakasutav rünne), nagu
sümbollinkrünne, kus luuakse pettesümbollingid, mis annavad juurdepääsu muidu kättesaamatuile failidele
Kõrvalkanalründed, mis on ründed, mis põhinevad arvutisüsteemi implementeerimise infol (näiteks signaalide ajastus, voolutarve, soojusmuster jne), mitte nõrkustel algoritmides ja paroolides
Kasutajaliidese vead

Viited

Küberturvalisus