Tarkvara turvaauk

Allikas: Vikipeedia
Mine navigeerimisribale Mine otsikasti

Arvutiteaduses nimetatakse tarkvara turvaauku (inglise keeles software vulnerability) nõrkuseks programmi ühesehituses, mida saab ründaja kuritarvitada pahatahtlikel eesmärkidel, näiteks et arvutisüsteemile ligi saada või volitamata rünnatavast süsteemist infot hankida. Turvanõrkuse ärakasutamiseks peab ründajal olema sobilik töövahend või tehnika, millega saab ühenduda nõrkust omava süsteemiga ja turvaauku enda huvides tarvitada. Sellises kontekstis võib turvaauku kutsuda ka ründepinnaks.

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

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õrkuseid, 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[muuda | muuda lähteteksti]

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

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.[4]

CNSS ehk Ameerika Ühendriigi Riigiturvasüsteemide Komitee defineerib turvaauku nende 2010. aastal välja antud "Rahvuslikus Informatsiooni Kindlustatuse Erialasõnastikus"[5] kui nõrkust informatsioonisüsteemis, süsteemi turvalisusprotseduurides, 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.[6]

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.[7]

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

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

Turvaaugud ja riskitegurite mudelid[muuda | muuda lähteteksti]

OWASP: suhe ohuallika ja ärimõju vahel

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.[10]

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[muuda | muuda lähteteksti]

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.[11]

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.[12]

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[muuda | muuda lähteteksti]

Turvaauke liigitatakse vastavalt varale, millega nad seotud on:[13]

  • 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
  • personal
    • puudulik värbamisprotsess
    • puudulik teadlikkus turvalisuse osas
  • füüsiline asukoht
    • üleujutuste oht
    • ebausaldusväärne energiaallikas
  • organisatoorne
    • regulaarsete turvarevisjonite puudumine
    • jätkuvusplaani puudumine
    • turvalisuse puudumine

Põhjused[muuda | muuda lähteteksti]

  • Keerukus – mahukad ja komplekssed süsteemid suurendavad vigade ning tahtmatute pääsupunktide tekkimise tõenäosust.[14]
  • 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.[15]
  • Seotus – mida rohkem on füüsilisi ühendusi, privileege, porte, protokolle ja teenuseid, seda suurem on turvaaugu leidumise tõenäosus.[16]
  • Paroolide haldamise vead – arvutile, milles on kasutusel nõrgad paroolid, on võimalik ligi saada jõuründe ehk brute force rünnaku abil.[17] Arvutikasutaja võib hoida parooli samas arvutis, millele saab programm ligi. Kasutajad võivad taaskasutada paroole mitme programmi ja lehekülje peale.[14]
  • Fundamentaalsed operatsioonisüsteemi disainivead – operatsioonisüsteemi disainer otsustab kasutada ebaoptimaalseid turvameetmeid kasutaja või programmide haldamisel.[14] 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.[18]
  • 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.[19]
  • Tarkvara puugid ehk vead – programmeerija jätab vea programmi. Selline viga annab võimaluse ründajale rakendust pahatahtlikult kasutada.[14]
  • 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).[14]
  • Vigadest mitteõppimine[20][21] – enamik turvaauke, mis on leitud iPv4 protokolli tarkvarast, leiti ka uuematest iPv6 implementatsioonidest.[22]

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

Turvaaugu tagajärjed[muuda | muuda lähteteksti]

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.[24] 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.[12]

Ü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[muuda | muuda lähteteksti]

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[muuda | muuda lähteteksti]

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õrkuseid kirjutatakse tahtmatult tarkvara koodi sisse.[25]

Turvaaukude leidmine ja eemaldamine[muuda | muuda lähteteksti]

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 skänneritele 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õrkuseid 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).

Näiteid turvanõrkustest[muuda | muuda lähteteksti]

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[muuda | muuda lähteteksti]

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
  • 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[muuda | muuda lähteteksti]

  1. Foreman, Park. Vulnerability Management. Taylor & Francis Group. lk 1. ISBN 978-1-4398-0150-5. 
  2. ISO/IEC, "Information technology -- Security techniques-Information security risk management" ISO/IEC FIDIS 27005:2008
  3. British Standard Institute, Information technology -- Security techniques -- Management of information and communications technology security -- Part 1: Concepts and models for information and communications technology security management BS ISO/IEC 13335-1-2004
  4. Internet Engineering Task Force RFC 4949 Internet Security Glossary, Version 2
  5. "CNSS Instruction No. 4009". 28. aprill 2019. Originaali arhiivikoopia seisuga 28.06.2013. 
  6. NIST SP 800-30 Risk Management Guide for Information Technology Systems
  7. "Glossary". europa.eu. 
  8. Technical Standard Risk Taxonomy Document Number: C081 Published by The Open Group, January 2009. ISBN 1-931624-77-1. 
  9. ISACA THE RISK IT FRAMEWORK (registration required) Mall:Webarchive
  10. Internet Engineering Task Force RFC 4949 Internet Security Glossary, Version 2
  11. ISO/IEC, "Information technology -- Security techniques-Information security management systems" ISO/IEC 27001:2013
  12. 12,0 12,1 Wright, Joe; Harmening, Jim (2009). "15". peatükis Vacca, John. Computer and Information Security Handbook. Morgan Kaufmann Publications. Elsevier Inc. lk 257. ISBN 978-0-12-374354-1. 
  13. ISO/IEC, "Information technology -- Security techniques-Information security risk management" ISO/IEC FIDIS 27005:2008
  14. 14,0 14,1 14,2 14,3 14,4 Kakareka, Almantas (2009). "23". peatükis Vacca, John. Computer and Information Security Handbook. Morgan Kaufmann Publications. Elsevier Inc. lk 393. ISBN 978-0-12-374354-1. 
  15. Krsul, Ivan (15. aprill 1997). "Technical Report CSD-TR-97-026". The COAST Laboratory Department of Computer Sciences, Purdue University. 
  16. "An Introduction to Factor Analysis of Information Risk (FAIR)", Risk Management Insight LLC, November 2006 Mall:Webarchive;
  17. Pauli, Darren (16. jaanuar 2017). "Just give up: 123456 is still the world's most popular password". The Register. Vaadatud 28.04.2019. 
  18. "The Six Dumbest Ideas in Computer Security". ranum.com. 
  19. "The Web Application Security Consortium / Web Application Security Statistics". webappsec.org. 
  20. Ross Anderson. Why Cryptosystems Fail. Technical report, University Computer Laboratory, Cam- bridge, January 1994.
  21. Neil Schlager. When Technology Fails: Significant Technological Disasters, Accidents, and Failures of the Twentieth Century. Gale Research Inc., 1994.
  22. Jon "Smibbs", Erickson. "Hacking: The Art of Exploitation 2nd Edition". ISBN 1-59327-144-1. 
  23. Kiountouzis, E. A.; Kokolakis, S. A. Information systems security: facing the information society of the 21st century. London: Chapman & Hall, Ltd. ISBN 0-412-78120-4. 
  24. Bavisi, Sanjay (2009). "22". peatükis Vacca, John. Computer and Information Security Handbook. Morgan Kaufmann Publications. Elsevier Inc. lk 375. ISBN 978-0-12-374354-1. 
  25. "Category:Vulnerability". owasp.org.