Nel mondo reale, quanti qui sono sottoposti a approfondite revisioni del codice di sicurezza? Quelli che fanno, quanto spesso - una volta un quarto, una volta una versione, una volta una luna blu? Quelli che non lo fanno - perché no? (Non mi riferisco ai programmatori di piccole o hobbies - non che li sto banalizzando, è solo che non mi aspetto che loro ;-)).Quanto sono popolari le revisioni del codice di sicurezza?
In qualità di consulente di sicurezza, sono solitamente chiamato a fare le revisioni di sicurezza, tuttavia questo di solito è solo per organizzazioni molto sensibili alla sicurezza (ad esempio grandi banche, fornitori di software, militari, ecc.) O come un risultato dei requisiti normativi (es. PCI-DSS).
Ora, pochi gruppi (eccetto quelli delle più grandi aziende come Microsoft, Intel, RSA, ecc.) Apprezzano davvero la recensione, anche se in realtà dovrebbe essere un'esperienza positiva. Mi sembra che ciò sia dovuto principalmente all'elevato investimento percepito - delle risorse, del tempo e, naturalmente, del denaro per portare i consulenti.
Ok, quindi non è solo percepito, è abbastanza reale: è comunemente accettato che un singolo recensore può coprire tra 50-100 LoC all'ora. Anche se siamo riusciti a moltiplicare questo aspetto - dal momento che siamo alla ricerca di specifici problemi di sicurezza (e i clienti stanno facendo pressioni per costi inferiori) e possiamo ridurre l'ambito in base al rischio - possiamo massimizzare a circa 1000 LoC per ora. Per qualsiasi sistema medio-grande, si tratta ancora di centinaia di ore di consulenza costose, non banali affatto.
L'alternativa suggerita comune è scanner automatico di codice sorgente, ala Fortify, laboratori oncia, ecc, tuttavia, oltre ai costi di licenza, questo è ben lungi dall'essere efficiente - in genere troviamo questi strumenti per produrre risultati nei 100 migliaia, con un molto alto (70-90%) tasso di falsi positivi (e duplicati). Quindi stai ancora spendendo grandi quantità di tempo tra i risultati, E questi strumenti non coprono una serie sostanziale di potenziali vulnerabilità (es. Falle logiche, business logic, ecc.)
Detto questo, (e un grande ESCLUDE dovrebbe vai qui :) Ho lavorato negli ultimi mesi con uno dei fornitori di strumenti per sviluppare un servizio che lo avrebbe fatto in modo molto efficiente - ad es. essere in grado di coprire 500 K LoC in appena una settimana di lavoro, e tuttavia fornire risultati reali, reali, accurati e completi - praticamente zero falsi positivi e quasi nessun mancato falso negativo.
Quelli di voi che dovrebbero fare SCR, ma non lo sono, sarebbe sufficiente a convincervi del contrario? o c'è qualcos'altro che ti trattiene? O semplicemente non è un problema per te?
Per chiarire, non sto cercando di promuovere me stesso o il mio servizio, solo cercando di ottenere qualche punto di vista del mondo reale oltre la mia agenda di sicurezza-evangelistico. Mi piacerebbe vedere i problemi come gli altri programmatori li vedono ...
Ulteriori chiarimenti, NON sto chiedendo COME eseguire revisioni del codice, quali opzioni ci sono, ecc. Ho molta esperienza in questo campo, e è questa esperienza che vendo ai miei clienti. La mia domanda è SE le revisioni del codice sono impopolari come sembrano, PERCHÉ questa attività specifica non è così popolare come dovrebbe essere, e COME possiamo andare a cambiarla. (Irrilevante di scelta della metodologia, strumento, ecc)
Inoltre, come Corneliu e altri hanno sottolineato, revisioni del codice di sicurezza non dovrebbe essere presa solo come unica protezione e la verifica della sicurezza di un sistema, piuttosto dovrebbe essere un elemento di un completo, olistico framework SDLC (secure development lifecycle). Tuttavia, nemmeno dovrebbe essere dimenticato. Quindi la mia domanda si concentra davvero su quell'unico elemento, sia nel contesto dell'intero SDLC che da solo come un passo avanti da penetrate-and-patch.
BTW, complimenti per l'utente # 100.000! –