A questo punto, non esiste un metodo standardizzato per calcolare la dimensione (l'inventario) del debito tecnico. Ho lavorato con un gruppo di ricerca composto da ricercatori di dottorato dell'Università di Glasgow e del MIT per iniziare a creare un quadro per affrontare questo problema. Stiamo unendo l'Analisi dei Processi Teorici dei sistemi del MIT per la sicurezza ( STPA-Sec ) e i concetti dell'architettura navale navale, noti come Progettazione delle vulnerabilità . Sebbene le tecniche siano destinate all'analisi di un'organizzazione e di eventuali sottoprocessi, è anche adatta per una singola applicazione come target per l'analisi.
Quanto segue è in fase di sviluppo e test. I concetti sono comunque utili.
Ingegneria delle vulnerabilità dei sistemi di teoria
Il calcolo del "Debito per la sicurezza delle applicazioni", per il mio team, è solo un'altra forma di "Systems-Theory Vulnerability Engineering". Questo è diverso dalla tipica gestione delle vulnerabilità che può essere affrontata con scanner automatici, patch e configurazioni. Invece, considera il "sistema" in questione (la tua applicazione, in questo caso) nel suo intero contesto di persone, processi e tecnologia mentre si collega ad altri sistemi. Da questa prospettiva di teoria dei sistemi, si determina quindi dove si trovano le vulnerabilità e le debolezze (vulnerabilità prossime al futuro).
Queste vulnerabilità potrebbero essere nell'intero spettro di:
- SQLi nascosto dietro le mitigazioni (le vulnerabilità di SQLi nude ed esposte sono un problema , non un debito )
- sottosistemi senza patch
- processi di patch manuale che richiedono l'intervento umano per l'attivazione e il completamento
- mancanza di controllo
Tutte queste cose rappresentano un "debito di sicurezza" o una "vulnerabilità dei sistemi".
Si noti che questo approccio non riguarda le minacce anche se le vulnerabilità possono essere definite attraverso la comprensione delle minacce. Questo non è un processo di modellazione delle minacce (vedere l'ultima sezione).
Passaggio 1: Analisi delle vulnerabilità (modulo iper-condensato)
- Definisci il problema di sicurezza (di cosa ti preoccupi?)
- Identifica tipi di controllo non protetto (ad esempio logica del programma, manutenzione del sistema, garanzia)
- Identifica causa di tipi di controllo non sicuri (ad esempio processi, tecnologia, risorse, conoscenza, cultura, ecc.)
- Determina se esistono attualmente quelle cause (stato costante o intermittente)
Finisci con un'analisi sistematica delle attuali vulnerabilità del tuo sistema.
Ma ora devi ancora determinare se devi fare qualcosa a riguardo.
Passaggio 2: Analisi del controllo delle risposte (modulo iper-condensato)
- Determina i controlli di risposta / recupero attorno a ciascuna vulnerabilità identificata (possiamo rilevare e rispondere a eventi non sicuri?)
- Determina quali controlli di risposta / recupero non possono contenere sufficientemente gli incidenti che sfruttano o sono causati dalle vulnerabilità
- Determina se i controlli di risposta / ripristino sufficienti soffrono di vulnerabilità correnti che potrebbero determinare un controllo insufficiente.
Si finisce con un elenco di vulnerabilità di sicurezza con mitigazioni insufficienti. Questo è il tuo debito.
Si noti che non tutti gli elementi risultanti da questo processo sono tecnologici (in effetti, dai nostri casi di studio iniziali, pochi elementi sono tecnologici). Potresti scoprire che il tuo problema SQLi è in realtà un punto debole nei processi di revisione del codice che sono il risultato di una cultura dello sviluppo delle funzionalità e non della messa a fuoco della qualità del codice. Il debito, in questo caso, è culturale.
Passaggio 3: allineamento dei rischi
Questo è il punto in cui inizi a progettare i trade-off tra 1) riducendo le vulnerabilità in vari modi (persone o processi o tecnologia) e 2) migliorando i controlli di risposta in modo che gli obiettivi del sistema possano essere supportati .
Proprio come qualsiasi processo di mitigazione del rischio, è necessario mantenere i costi di mitigazione inferiori alle perdite attese e tutto deve essere completato per supportare gli obiettivi del sistema.
Modellazione delle vulnerabilità vs modellazione delle minacce
Utilizzando un approccio basato sulla teoria dei sistemi e sulla vulnerabilità, abbiamo scoperto che questo processo promuove rimedi che sono economicamente vantaggiosi e si rivolgono alla causa principale dei problemi, non agli effetti dei problemi. Identificherà inoltre le aree che devono essere rimosse al fine di ridurre le vulnerabilità (un processo sottrattivo).
Gli approcci incentrati sulla minaccia tendono ad essere reattivi, costosi, tecnologici e additivi (c'è una nuova minaccia, abbiamo bisogno di più cose!). Ciò ha l'effetto di creare più debito, non di ridurlo.