I test di penetrazione hanno segnalato vulnerabilità ZERO. Questo significa che la mia app web è sicura?

5

Ho trascorso molte ore sui test di whitebox per assicurarmi che il mio codice fosse sicuro. Da un punto di vista teorico, il codice DOVREBBE essere sicuro. Ho quindi utilizzato diversi strumenti di test ampiamente noti (incluso uno che costa $ 3500) per testare le iniezioni SQL, lo scripting cross-site, le iniezioni CRLF, la sicurezza della gestione dei file e altro ancora. Tutto il software ha trovato 0 vulnerabilità trovate. Posso presumere che la mia app sia sicura al 99% a questo punto? Qualcuno di voi ha mai fatto un test Blackbox e ha pensato che fosse sicuro solo scoprire altrimenti?

    
posta Dax 07.01.2014 - 08:22
fonte

5 risposte

11

Il test automatizzato è un buon passo avanti, ma non è la sostituzione di un hacker etico umano esperto alla ricerca di vulnerabilità. Ciò può avvenire attraverso test in bianco e nero, revisione del codice e strumenti specializzati come metasploit e codice personalizzato. Tuttavia, le persone con le competenze e l'esperienza scavano molto più in profondità e ottengono molti più risultati degli strumenti automatici, indipendentemente da quanto siano buoni.

È impossibile fornire una cifra per quanto sei sicuro, se tutto ciò che hai fatto è stato utilizzato strumenti automatici, allora ti sei protetto da una buona parte degli strumenti di exploit automatizzati disponibili, ma una persona esperta probabilmente avrà molto migliore possibilità di trovare qualsiasi cosa.

    
risposta data 07.01.2014 - 10:08
fonte
3

Anche se hai un paio di risposte che indicano che in effetti non puoi essere sicuro che la tua applicazione sia sicura sulla base dell'output dei test automatici, potrebbe essere utile illustrare alcuni problemi che uno strumento automatico probabilmente mancherebbe, che può ancora essere abbastanza serio.

  • I difetti di autorizzazione sono di solito l'esempio canonico di cose difficili da trovare con uno scanner dritto. Ad esempio, supponendo che si disponga di più livelli di privilegio utente, una situazione in cui un tipo di utente non dovrebbe essere in grado di accedere a una specifica funzionalità che risulta essere disponibile sarebbe potenzialmente un serio problema di sicurezza, ma uno scanner dritto non necessariamente riconoscere cosa dovrebbe o non dovrebbe essere in grado di accedere

  • Difetti della logica aziendale. Un esempio classico è l'abilità in un negozio di e-commerce di acquistare qualcosa per -0,99 unità della valuta locale. Ho visto questo nei test dal vivo, ma ancora una volta lo scanner manca del contesto per poter dire che questo è un problema.

  • Qualcosa di fondamentale come una directory nascosta può ingannare gli scanner black-box. Verranno cercati ma, ad esempio, se avessi una directory nascosta con un'interfaccia di amministrazione non protetta su / my_totally_secret_dir_honest_guv / uno scanner probabilmente non lo localizzerà.

  • Problemi di iniezione del secondo ordine. Ad esempio, l'applicazione front-end riceve input da un utente, ma non la rappresenta mai all'utente. Viene invece presentato in un'applicazione diversa (ad esempio, le applicazioni di helpdesk in cui il ticket viene inviato a un amministratore per lavoro). Se la prima applicazione non fa eco al contenuto, gli scanner non possono trovare cose come XSS che potrebbero ancora essere presenti (anche se ovviamente si potrebbe sostenere che è il problema con le altre applicazioni qui)

Ecco alcuni esempi, ce ne sono altri. Quello che suggerirei è che la revisione del codice è valida per trovare alcune di queste e anche la revisione manuale è molto utile. Una buona risorsa per avere un'idea più precisa delle possibilità è Manuale degli hacker di app Web

    
risposta data 07.01.2014 - 13:03
fonte
2

Non sono sicuro del 99% sicuro, tutto quello che posso dire è che non è sicuro al 100%. Qualsiasi strumento o tester penna può solo testare vulnerabilità e exploit attualmente noti. I problemi di sicurezza potrebbero venire alla luce nelle prossime settimane / mesi / anni che potrebbero compromettere la tua app. Per quello che sai, ci possono essere degli attaccanti là fuori che sanno di un exploit non coperto dai tuoi test.

Tutto quello che puoi dire è che hai adottato tutte le misure ragionevoli per garantire la sicurezza della tua applicazione.

    
risposta data 07.01.2014 - 08:33
fonte
1

No, non puoi dire che la tua applicazione sia sicura al 99%, sicura al 100% o al 25%. Puoi solo confermare che la tua domanda ha superato un test di penetrazione e il test di penetrazione ha riportato 0 non conformità. Suona bene, ma con questa informazione non puoi infere una percentuale di sicurezza.

La tecnologia per certificare che una parte di codice non ha alcuna vulnerabilità di sicurezza non è stata completamente sviluppata. Le ricerche sono state eseguite solo per certificare che alcuni tipi di vulnerabilità non esistono nel codice con alcuni caratteristiche come il codice C che non allocano la memoria dinamicamente ma, in generale, è molto molto difficile certificare che una parte di codice non ha alcuna vulnerabilità di sicurezza.

Se hai bisogno di tale percentuale, puoi eseguire un test di penetrazione conforme a OSSTMM dove viene calcolata la superficie di attacco e poi i RAV . Questo è un modo per calcolare qualcosa di simile alla percentuale menzionata e seguendo una metodologia ripetibile.

Per dare il giusto valore a questo particolare test di penetrazione, è importante sapere cosa esattamente sono stati testati (lo scopo) e come (metodologia, strumenti, ecc.). Se il tuo fornitore ti ha fornito l'elenco degli strumenti e dei risultati, tale informazione può essere analizzata da un altro esperto nel caso tu abbia bisogno di ripetibilità (interessante per qualsiasi verifica).

Se il test di penetrazione si basa su strumenti automatici, come commentato da altri esperti, la mia opinione è che si possa essere sicuri di poter fare affidamento su questo test di penetrazione. Gli strumenti automatici hanno limitazioni importanti e quando non rilevano alcuna vulnerabilità, ulteriori analisi dovrebbero sapere per quale motivo.

Se hai una documentazione adeguata su quanto testato e sui risultati, se in futuro hai un incidente di sicurezza, puoi consultare la documentazione per scoprire perché la vulnerabilità non è stata rilevata e migliorare la tua metodologia di pentesting.

    
risposta data 07.01.2014 - 17:31
fonte
0

Ciò che hai eseguito è stato il test di vulnerabilità nel migliore dei casi. Gli strumenti di test automatici, come quelli che descrivi, semplicemente testano vulnerabilità note. Un test di penetrazione ha la componente umana ad esso, in cui l'aggressore non solo localizza le vulnerabilità note, ma scopre potenziali nuovi e quindi li sfrutta.

Anche se hai fatto un primo passo importante, dovresti prendere in considerazione l'investimento che hai fatto nello sviluppo della tua applicazione, e quindi determinare se un test di penetrazione reale è qualcosa che vale la pena esplorare dal punto di vista del rischio.

    
risposta data 07.01.2014 - 21:06
fonte

Leggi altre domande sui tag