Senikaua, kuni arvutiprogramme loovad inimesed, esineb neis ikka mõningal määral vigu. Mida keerulisem süsteem ja mida rohkem inimesi selle valmimisel osales, seda suurem on ka vigade tõenäosus. Enamik vigu õnnestub välja selgitada ja kõrvaldada süsteemi testimise käigus, kuid kõikide mõeldavate vigade väljaselgitamine on tavaliselt ebamõistlikult kallis ja aeganõudev, nii et midagi jääb kindlasti märkamata. Tavaliselt ei mõjuta niisugused vead arvutisüsteemi tööd üldse või avalduvad vaid äärmusliku koormuse tingimustes. Samuti kaldub enamik programmeerijaid alahindama kasutajate leidlikkust ning eeldama, et nende loodud tarkvara kasutataksegi selleks, mida ta oli programmeeritud tegema.
Turvaauk on arvutiprogrammi või -süsteemi niisugune omadus, mida selle loomise käigus kas ei mõeldud korralikult läbi, ei osatud ette näha, tehti hooletult või otsustati ignoreerida, ning mille kaudu saab sedasama süsteemi kuritarvitada.
Näiteks XSS-rünne (cross-site scripting) kasutab ära asjaolu, et ehkki veebilehitsejatesse on sisse ehitatud kaitsemehhanismid, mis lubavad skripte käivitada ainult siis, kui nad on alla laetud samalt leheküljelt, mida kasutaja parasjagu vaatab ja peab usaldusväärseks, on samale leheküljele võimalik sokutada näiteks viide pahatahtliku skriptiga leheküljele, mille päritolu brauser alati ei kontrolli ning mis seetõttu usaldusväärsena käima tõmmatakse.
Aus leidja annab avastatud turvaaugust teada tarkvara tootjale, kes omakorda üritab võimalikult kiiresti selle ära parandada. Pahatahtlik leidja seevastu kasutab leitud turvaauku kas ise või pakub seda mõnes internetifoorumis teistele kasutada.
Turvapaikade ja teiste programmiparanduste allalaadimine aitab turvaaukudest tulenevat riski vähendada.