Granularità per le risorse di dati quando si determina il rischio durante lo sviluppo del software

4

Attualmente stiamo costruendo un ciclo di vita per lo sviluppo della sicurezza nella nostra società di sviluppo software. La nostra idea principale è di avere un approccio asset-driven, in cui:

  1. Inserisci le risorse in un inventario di asset mentre il sistema è costruito;
  2. Determina gli obiettivi di sicurezza per ciascun asset (e implicitamente la criticità del bene);
  3. Segui le risorse critiche per tutto il loro ciclo di vita e applica le opportune attenuazioni dove lo riteniamo necessario.

Mentre asset come l'hardware e l'infrastruttura generale sono per lo più protetti a seguito di rafforzamento del sistema e altre attività basate su liste di controllo (oltre alla sicurezza fisica), siamo particolarmente interessati alle risorse di dati elettroniche, utilizzate e manipolate dal software.

Dato che il sistema è abbastanza grande e ci sono molti dati in giro, abbiamo scoperto che mantenere l'inventario delle risorse può essere un'attività faticosa. Vale a dire, ci sono molte risorse di dati che richiedono un'elevata integrità in quanto si tratta di un sistema di infrastrutture critiche, quindi non possiamo permetterci di trascurare queste risorse di dati.

Nel nostro approccio ogni asset ha un proprietario, una persona che è responsabile dell'introduzione del bene nell'inventario, e questo è più spesso un architetto che capisce l'immagine più ampia del componente. Tuttavia, i nostri sviluppatori sono liberi di aggiungere nuove risorse di dati secondarie sotto forma di strutture di dati per contenere i risultati del calcolo o del calcolo parziale. La domanda diventa quindi - dovrebbero essere aggiunti all'inventario?

In sostanza, si tratta della granularità delle risorse di dati nel nostro inventario. Se andiamo troppo nei dettagli, creiamo documentazione che non è gestibile, ma se raggruppiamo attività specifiche in categorie di attività rischiamo di perdere risorse specifiche che potrebbero risultare insufficientemente protette.

Quale sarebbe un livello ottimale di granularità? Come ragionerai su questo?

Ulteriori informazioni sul nostro precedente approccio incentrato sul software

Il metodo di modellazione delle minacce MS (descritto in Modellazione delle minacce: progettazione per la sicurezza) era qualcosa che inizialmente implementavamo. Abbiamo sviluppato materiali di formazione e utilizzato lo Strumento per la modellazione di minacce MS nel processo, che è stato insegnato ai nostri architetti di software. Sfortunatamente, il progetto non è stato un successo a causa di diversi fattori, in particolare dei finanziamenti adeguati.

Abbiamo riscontrato diversi problemi con questo approccio, che non siamo riusciti a risolvere correttamente (a causa della nostra mancanza di esperienza). Questo include:

  • Sicurezza: è stato difficile convincere il cliente che particolari risorse di dati erano protette senza tracciare le risorse;
  • Analisi del rischio - senza esaminare le risorse che un componente software stava manipolando (e in che modo una minaccia potrebbe mettere in pericolo un obiettivo di sicurezza di quell'asset), non siamo stati in grado di determinare il livello di rischio in modo affidabile.
  • Priorità di modellazione delle minacce: senza le risorse non siamo stati in grado di determinare quali componenti fossero "più critici", ovvero quali componenti richiedevano un'analisi delle minacce più approfondita e l'aiuto delle risorse molto limitate del team di sicurezza.

Ancora una volta, tutti questi problemi potrebbero essere stati causati dalla nostra inesperienza con il metodo e non da qualsiasi errore del metodo stesso.

    
posta Nikola Luburić 25.12.2017 - 10:41
fonte

2 risposte

3

Il modo in cui dovrei ragionare su questo è tornare alla decisione iniziale, che era concentrarsi sulle risorse. Gli approcci basati sulle risorse alla modellazione delle minacce tendono a finire con un problema come il tuo, che è "Fai un elenco di tutto". Quella lunga lista rende difficile mettere a fuoco. (L'altro problema che incontrano è "che cos'è un vantaggio?")

La maggior parte dei gruppi di progettazione trova più semplice apportare modifiche nelle aree in cui apportano modifiche al sistema, pertanto concentrarsi sul software / sistema nell'ambito dello sprint / iterazione corrente consente di individuare le minacce che diventano perseguibili.

Se, invece di concentrarti sulla risorsa, ti concentri sul software e chiedi "questo ci espone a nuove minacce", allora la tua domanda è più facile da rispondere. Per i moduli minori, tale domanda può essere incentrata su "questo aggiunge un'API, modifica un argomento API o modifica i dati che questo modulo sta elaborando?"

Se è così, puoi usare un comando mnemonico come STRIDE per cercare spoofing, manomissione, ripudio, rivelazione di informazioni, denial of service o elevazione del privilegio per esaminare gli elementi modificati.

Risposte aggiuntive (SE ha perso il mio precedente tentativo a questo, questo è più breve)

Innanzitutto, se il tuo cliente richiede di fornire un modello di minaccia incentrato sulle risorse, allora questa è la tua risposta a ciò che conta. Esegui assolutamente il rischio che identifichi, "rischiamo di perdere determinate risorse che potrebbero risultare insufficientemente protette", ma se non disponi di budget, devi affrontare comunque quel rischio. SE non può dirti quale risorsa le regole di categorizzazione renderanno felici i tuoi clienti. (testo in grassetto aggiunto qui per correggere un errore di modifica)

In secondo luogo, sembra che tu stia provando a fare qualcosa come l'impatto del rischio = probabilità *. Nessuno dei due input è difendibile. Devi sistemare le cose facili, quindi concentrarti su una finestra di dialogo sulle soluzioni potenzialmente difficili.

Infine, la tua terza domanda pone il carro davanti al cavallo. È un modello di minaccia per determinare cosa è importante, non determinare cosa è importante, quindi modello di minaccia. Se ti concentri sulle risorse, quali risorse contiene la tua directory attiva? Cosa contiene il tuo firewall? Scommetto che entrambi sono importanti per proteggere il tuo sistema, non per le risorse che conservano.

Infine, se il tuo problema è il budget, le modifiche che stai apportando, come documenti, non risolvono il problema. Devi trovare un modo per ottenere alcune vittorie veloci e usarle per giustificare il budget appropriato.

    
risposta data 27.12.2017 - 17:39
fonte
2

Questa è un'ottima domanda. La gestione del rischio è un affare complicato. Nel processo del ciclo di vita, dovresti trovare il saldo tra il livello di dettaglio di inventario delle risorse.

La definizione di asset è Any resource or information an organization needs to conduct its business . Sulla base di questo, dovresti classificare le risorse introdotte dagli sviluppatori per sapere se sono davvero delle risorse. Per identificare un asset, chiediti: "What are you trying to protect?" . E per provare ad identificare il thread associato, chiedi: "What are you afraid of happening?" . Se non riesci a trovare chiaramente la risposta per un caso concreto, non metterlo nel tuo inventario. Forse questo metodo può farti risparmiare tempo.

Non possiamo sapere da qui quanto sia complesso il tuo progetto. Ma dovresti seguire il "manuale". La modellazione delle minacce è qualcosa che deve essere praticato ancora e ancora per essere migliorato. Mai ci sono verità universali al 100%.

Considera di studiare una certificazione incentrata su questo genere di cose. Ad esempio, CSSLP (Certified Secure Software Lifecycle Professional) è una certificazione ISC. C'è una sezione completa che parla della gestione del rischio. Qui puoi apprendere metodologie, processi e alcuni suggerimenti e suggerimenti da seguire.

Spero che aiuti. Ma come ho detto prima, penso che nessuno abbia la risposta perfetta per questo.

    
risposta data 25.12.2017 - 12:48
fonte

Leggi altre domande sui tag