Domanda:
Ottenere una revisione manuale del codice di sicurezza - A cosa prestare attenzione?
matt74tm
2010-11-30 16:47:40 UTC
view on stackexchange narkive permalink

Abbiamo un'applicazione PHP che vogliamo far esaminare il codice da un consulente per la sicurezza esterno, ma non mi è chiaro "come" procedere con tale processo.

Abbiamo specificato che tipo di test che dovrebbe fare, e la prima parte del suo rapporto presentato solo indica "problemi" MOLTO standard nell'uso di eval (), fopen (), ecc - sotto il titolo di "convalida dell'input problemi '.

Ho visto TUTTI questi problemi segnalati da solo quando ho eseguito uno strumento di revisione automatica del codice di sicurezza.

(A) Non so se questo è il limite del problema nel mio codice e il ragazzo ha fatto un buon lavoro, OPPURE
(B) sta solo eseguendo questi strumenti automatici e filtrando l'output per rimuovere il rumore e il gioco è fatto!

Domande:

  1. Cosa dovrei chiedergli di fare?
  2. Come posso fare un controllo incrociato del suo lavoro in modo da sapere che sta effettivamente facendo un buon lavoro?

(copiato da https://stackoverflow.com/questions/4311151/gettin g-a-manual-security-code-review-done-what-to-watch-for)

Grazie ragazzi per le vostre risposte - Mi sembra di aver perso i miei cookie per questo account e non posso accedere a questa domanda come OP ...! @AviD, @Graham Lee - abbiamo "finito" con il nostro ragazzo precedente e siamo alla ricerca di una persona più competente - qualche idea in merito? Vedi http://security.stackexchange.com/questions/926/finding-security-consultant-for-doing-in-depth-code-review
Tre risposte:
AviD
2010-11-30 17:53:04 UTC
view on stackexchange narkive permalink

Rendersi conto che anche tu hai una domanda del genere ti mette già in vantaggio.
Aggiungerei anche:

(C) Non è molto bravo a rivedere il codice, quindi tu otterrà solo "frutti bassi"
(D) È davvero un pentester, che pensa che sia " oh così facile " espandersi in codice, quindi otterrai risultati simili come pentest, tracciato solo nel codice effettivo.
(E) È uno sviluppatore, senza molta conoscenza della sicurezza, ma conosce un codice errato.
ecc ...

Punto della questione è che sembra che non sia molto trasparente con te, quindi non importa quale sia l'opzione. Anche (A) Il mio codice non ha problemi non vale molto, a meno che non possa eseguirne il backup con la prova di quali problemi il tuo codice non ha (sic).
E no, in esecuzione uno strumento automatico non conta come revisione del codice di sicurezza, come apparentemente hai sentito, correttamente.

Quindi, alle tue domande:

1. Cosa dovresti chiedergli di fare "Revisione del codice di sicurezza". Lui dovrebbe dirti te cosa farà e / o consigliarti cos'altro hai bisogno (questo potrebbe / dovrebbe essere un elenco piuttosto lungo). Ovviamente puoi / dovresti dargli più input, come cosa fa la tua applicazione, chi ha accesso, quanto sono sensibili i dati, ecc. Ecc. Ma anche se non lo fai, dovrebbe chiedere queste informazioni. Senza di esso, semplicemente non è una revisione del codice a livello professionale.

2. Come faccio a controllare il suo lavoro ? Direi che in generale ci sono 3 possibilità:

  • Impara abbastanza sull'argomento per capire cosa afferma di fare, e per porre le domande difficili - o chiamare qualcuno che lo fa (sempre vero quando si tratta di un fornitore di un servizio che non capisci bene ...)
  • Chiedi a un altro consulente di fare una revisione concorrente, anche se solo su un sottoinsieme dell'applicazione.
  • (E questo è quello buono) Esegui un test di penetrazione della scatola nera esterna. Questo è il modo migliore per convalidare la revisione del codice. Ovviamente, chiedi a qualcun altro di eseguire il pentest e confrontare i risultati. Nota che non tutte le vulnerabilità trovate in pentest sono rilevanti per essere trovate in una revisione del codice e viceversa, ma dovrebbe darti qualche indicazione.
user185
2010-11-30 17:53:52 UTC
view on stackexchange narkive permalink

Sto arrivando dalla posizione di essere il ragazzo che esegue la revisione del codice di sicurezza (anche se non ho fatto la tua ;-). Quindi quello che vuoi scoprire è se il codice può essere distribuito a basso rischio e, in caso contrario, quali sono i rischi. Pertanto dovresti chiedere al tuo consulente che, invece di chiedere "puoi trovare alcune vulnerabilità nel mio codice". La risposta alla domanda relativa al rischio dovrebbe includere:

  • cosa ha provato per identificare i rischi
  • quali attacchi ha considerato (presumo che un'app PHP sarà basato sul web, nel qual caso la top 10 di OWASP è appropriata come inizio)
  • perché ha considerato quegli attacchi (in altre parole, quale modello di minaccia ha utilizzato)
  • quale rischio residuo rimane
Sebbene questi siano ottimi suggerimenti, questo non è direttamente correlato con "fare una buona revisione del codice di sicurezza". Certo, se può rispondere a queste domande in modo soddisfacente, è probabile che sappia cosa sta facendo ... ma sta solo cercando di capire se conosce la sicurezza. Inoltre, in molte società di consulenza, la revisione del codice potrebbe essere eseguita da un consulente junior e le risposte alle domande "difficili" sul rischio / scoping sarebbero gestite da un senior, il che non influirebbe sulla qualità del prodotto. Tuttavia è un buon segno.
@avid: Direi che una buona revisione del codice di sicurezza è focalizzata sul rischio, perché il punto è affrontare il rischio. Ad esempio, se fossi un fornitore UNIX, considererei uno spreco di denaro scoprire che un revisore ha passato una giornata alla ricerca di bug di perdita di dati in telnetd quando telnet _è_ un servizio di perdita di dati.
Oh assolutamente, sono completamente d'accordo. Tuttavia, solo perché capisci * rischio *, non significa che capisci * codice *. In effetti, se non capisci il codice, non puoi davvero analizzare il rischio, vero?
@AviD: ha ragione, ma non ne consegue che _non_ devi_ comprendere il rischio per eseguire una buona revisione del codice di _sicurezza_.
È vero, penso che siamo entrambi d'accordo sull'opposto di quello ...
planetlevel
2010-12-04 00:18:51 UTC
view on stackexchange narkive permalink

Devi considerare sia l'ampiezza che la profondità della recensione. Per ampiezza, intendo quale gamma di rischi / attacchi / minacce verrà trattata nella recensione. Dovresti iniziare con lo standard di verifica della sicurezza dell'applicazione OWASP per avere un'idea di cosa dovrebbe essere trattato qui. Per profondità intendo quanto bene il consulente verificherà che ogni area sia stata adeguatamente difesa. Nella fascia bassa, una scansione automatica degli strumenti fornisce poche garanzie. Nella fascia alta, un'ispezione manuale o un vero e proprio caso di test dovrebbe essenzialmente dimostrare che le difese corrette sono in atto, sono state progettate correttamente e vengono utilizzate ovunque sia necessario.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...