Puoi provare l'esistenza di qualcosa, ma non puoi provare la sua assenza. Se non esiste, non puoi trovare alcuna prova di ciò, dalla definizione stessa di "non esiste".
Per essere sicuro, un'applicazione software non deve presentare alcuna vulnerabilità. Per verificare che sia sicuro, è necessario verificare che le vulnerabilità non esistano nell'applicazione. Come sopra, questo non può essere fatto. Dobbiamo avere un obiettivo diverso.
Possiamo raggiungere l'obiettivo, "non avere vulnerabilità note inaccettabili". Questo è l'obiettivo scelto dalla maggior parte delle applicazioni che eseguono test di sicurezza. Per questo obiettivo possiamo utilizzare strumenti come la modellazione delle minacce, l'analisi del codice statico, l'analisi statica binaria e l'analisi dinamica.
Possiamo raggiungere l'obiettivo "i controlli di sicurezza della nostra applicazione devono funzionare come previsto in tutte le condizioni prevedibili. Ciò significa testare i controlli di sicurezza dell'applicazione, proprio come il QA verifica il funzionamento, le prestazioni e altre caratteristiche dell'applicazione.
Possiamo raggiungere l'obiettivo ", la nostra applicazione deve essere costruita in base a un processo che riduca al minimo le probabilità di introduzione della vulnerabilità. In questo caso, utilizziamo un ciclo di vita sicuro per lo sviluppo del software che comprende formazione, foglietti elettronici, checklist per sviluppatori, checklist QA, uso di strumenti automatici, uso di tester esperti (test di penetrazione), modellazione di minacce e altri processi progettati per ridurre al minimo il rischio di nuovi vulnerabilità.
Mentre questi stanno tutti costruendo l'applicazione, non usando l'applicazione, possono essere estesi al punto di vista dell'utente. Puoi provare a identificare le vulnerabilità nell'applicazione da te - reso più facile se hai il codice sorgente. Puoi provare a verificare la correttezza dei controlli di sicurezza con il tuo test di stile QA, se puoi decomporre correttamente il prodotto e determinare gli scopi dei controlli. È possibile osservare il ciclo di vita di sviluppo sicuro dell'OEM e vedere come si impila contro gli altri (vedere BSIMM). Puoi anche guardare il record pubblico storico di un prodotto (vedi NVD) e provare a tirare conclusioni: per esempio, quando l'OEM ha una vulnerabilità di un tipo in un prodotto, hanno sempre quella vulnerabilità in quel prodotto di nuovo (sembrano fissare architettonicamente o bandire il problema?