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.