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. 
Tihti 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 funktsioone 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:
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:
Põhjused.
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 kaitset murda. Parim viis professionaalselt hallata infotehnoloogilisi 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, mille abil saab ennetada nõrkuse ärakasutust, ära tunda rünnakuid ja vajadusel sekkuda ning 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:
Neli näidet turvanõrkuse ärakasutamisest:
Tarkvara turvaaugud.
Levinud tüübid tarkvaravigu, mis viivad nõrkuse tekkimiseni, on näiteks: