La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Scrittura di codice protetto: procedure consigliate Marco Russo.NET Consultant & Trainer DevLeap.

Presentazioni simili


Presentazione sul tema: "Scrittura di codice protetto: procedure consigliate Marco Russo.NET Consultant & Trainer DevLeap."— Transcript della presentazione:

1 Scrittura di codice protetto: procedure consigliate Marco Russo.NET Consultant & Trainer DevLeap

2 Argomenti trattati Processo di sviluppo protetto Modellizzazione delle minacce Contenimento dei rischi Procedure ottimali per la protezione

3 Prerequisiti di sessione Esperienza di sviluppo con Microsoft Visual Basic®, Microsoft Visual C++® o C# Livello 200

4 Agenda Processo di sviluppo protetto Modellizzazione delle minacce Contenimento dei rischi Procedure ottimali per la protezione

5 Miglioramento del processo di sviluppo delle applicazioni Prendere in considerazione la protezione All'inizio del processo Nel corso dello sviluppo Fino alla distribuzione Durante tutte le fasi di verifica del software Non smettere di cercare bug di protezione fino alla fine del processo di sviluppo

6 SD 3 Protezione come caratteristica di progettazione Protezione per impostazione predefinita Protezione nella distribuzione Architettura e codice protetti Analisi delle minacce Riduzione delle vulnerabilità Riduzione della superficie di attacco Disattivazione delle funzioni non utilizzate per impostazione predefinita Utilizzo di privilegi minimi Protezione: rilevamento, difesa, ripristino e gestione Processo: guide all'esecuzione delle operazioni, guide all'architettura Utenti: formazione Struttura di protezione SD 3

7 Cronologia di sviluppo protetto dei prodotti Procedure di verifica completate Progettazionecompletata Concetto Codicecompletato Commer- cializzazione Post- commercializzazione Verifica delle vulnerabilità di protezione Valutazione della conoscenza relativa alla protezione durante l'assunzione di membri del team Determinazione dei criteri di approvazione della protezione Esecuzione di verifiche esterne Analisi delle minacce Apprendimento e perfezionamento Esecuzione di verifiche di team della protezione Formazione dei membri del team Verifica della mutazione dei dati e dei privilegi più ridotti possibili Risoluzione dei problemi di protezione, verifica del codice rispetto alle linee guida di protezione = Attività continue

8 Protezione come caratteristica di progettazione Aumentare la consapevolezza in fatto di protezione del team di progettazione Prevedere una formazione continua Combattere gli atteggiamenti come "Ciò che non conosco non potrà crearmi problemi" Prendere in considerazione la protezione fin dalla fase di progettazione Definire gli obiettivi di protezione del prodotto Implementare la protezione come una funzione chiave del prodotto Utilizzare la modellizzazione delle minacce durante la fase di progettazione

9 Agenda Processo di sviluppo protetto Modellizzazione delle minacce Contenimento dei rischi Procedure ottimali per la protezione

10 Definizione di modellizzazione delle minacce La modellizzazione delle minacce è un'analisi basata sulla protezione che: Consente al team di un prodotto di identificare i punti in cui il prodotto è più vulnerabile Consente di valutare le minacce a un'applicazione Ha come obiettivo quello di ridurre i rischi di protezione complessivi Consente di individuare le risorse Consente di rilevare le vulnerabilità Consente di identificare le minacce Dovrebbe essere alla base delle specifiche di progettazione relative alla protezione

11 Vantaggi della modellizzazione delle minacce Migliore comprensione dell'applicazione Individuazione di bug Identificazione di bug di progettazione complessi Integrazione dei nuovi membri del team Definisce piani di testing per la protezione ben progettati Minaccia Vulnerabilità Risorsa

12 Processo di modellizzazione delle minacce Identificazione delle risorse 1 Creazione di una panoramica dell'architettura 2 Scomposizione dell'applicazione 3 Identificazione delle minacce 4 Documentazione delle minacce 5 Classificazione delle minacce 6 Processo di modellizzazione delle minacce

13 Processo di modellizzazione delle minacce Fase 1: identificazione delle risorse Creare un elenco di risorse da proteggere tra cui: Dati riservati, come database di clienti Pagine Web Disponibilità del sistema Altri componenti che, se danneggiati, impedirebbero il corretto funzionamento dell'applicazione

14 Processo di modellizzazione delle minacce Fase 2: creazione di una panoramica dell'architettura Identificazione della funzione dell'applicazione Creazione di un diagramma dell'architettura dell'applicazione Identificazione delle tecnologie Autorizzazioni NTFS (autenticazione) Autorizzazione di file Autorizzazione di URL Ruoli di.NET(autenticazione) Ruolo definito dall'utente (autenticazione) SSL (privacy/integrità) Limite di attendibilità Marcella Monica Alberto IIS Autenticazione anonima Autenticazione basata su form IPSec (privacy/integrità) Limite di attendibilità ASP.NET (identità del processo) Microsoft ASP.NET Microsoft ASP.NET Autenticazione di Microsoft Windows ® Microsoft SQL Server

15 Processo di modellizzazione delle minacce Fase 3: scomposizione dell'applicazione Scomporre l'applicazione Creare un profilo di protezione basato sulle tradizionali aree di vulnerabilità Esaminare l'interazione tra i diversi sottosistemi Utilizzare i diagrammi DFD o UML Identificazione dei limiti di attendibilità Identificazione del flusso di dati Identificazione dei punti di ingresso Identificazione di codice privilegiato Documentazione del profilo di protezione

16 Processo di modellizzazione delle minacce Fase 4: identificazione delle minacce Creazione del team Identificazione delle minacce Minacce alla rete Minacce all'host Minacce all'applicazione

17 Tipi di minacce Esempi S poofing Falsificazione di messaggi di posta elettronica Riproduzione di pacchetti di autenticazione T ampering Alterazione di dati durante la trasmissione Modifica dei dati contenuti nei file R epudiation Eliminazione di un file importante e negazione di tale operazione Acquisto di un prodotto e negazione di tale operazione I nformation disclosure Esposizione di informazioni in messaggi di errore Esposizione di codice su siti Web D enial of service Saturazione di una rete con pacchetti SYN Saturazione di una rete con pacchetti ICMP contraffatti E levation of privilege Sfruttamento di sovraccarichi buffer per ottenere privilegi di sistema Ottenimento di privilegi di amministratore in maniera illegale Processo di modellizzazione delle minacce Identificazione delle minacce mediante STRIDE

18 1.0 Visualizzazione dei dati sullo stipendio (I) 1.1 Il traffico non è protetto (E) 1.2 L'hacker visualizza il traffico Intercettazione del traffico mediante l'analizzatore di protocolli Ascolto del traffico del router Il router non è provvisto di patch (E) Compromissione del router Tentativo di indovinare la password del router Minaccia 1 (I) Visualizzazione dei dati sullo stipendio 1.1 Il traffico non è protetto 1.2 L'hacker visualizza il traffico Intercettazione del traffico mediante l'analizzatore di protocolli Ascolto del traffico del router Il router non è provvisto di patch Compromissione del router Tentativo di indovinare la password del router Processo di modellizzazione delle minacce Identificazione delle minacce mediante l'utilizzo di strutture di attacco

19 Processo di modellizzazione delle minacce Fase 5: documentazione delle minacce Utilizzare un modello per documentare le minacce Lasciare vuoto il campo Rischio (per il momento) Descrizione della minaccia Inserimento di comandi SQL Obiettivo della minaccia Componente di accesso ai dati Rischio Tecniche di attacco L'hacker aggiunge comandi SQL al nome utente utilizzato per creare una query SQL Contromisure Utilizzare un'espressione regolare per convalidare il nome utente e una stored procedure con parametri per accedere al database

20 Processo di modellizzazione delle minacce Fase 6: classificazione delle minacce Utilizzare la seguente formula: Rischio = probabilità * potenziale del danno Utilizzare il modello DREAD per classificare le minacce Damage potential (potenziale del danno) Damage potential (potenziale del danno) Reproducibility (riproducibilità) Reproducibility (riproducibilità) Exploitability (sfruttabilità) Exploitability (sfruttabilità) Affected Users (utenti interessati) Affected Users (utenti interessati) Discoverability (identificabilità) Discoverability (identificabilità)

21 Processo di modellizzazione delle minacce Esempio: classificazione delle minacce Minaccia 1 (I) Visualizzazione dei dati sullo stipendio 1.1 Il traffico non è protetto 1.2 L'hacker visualizza il traffico Intercettazione del traffico mediante l'analizzatore di protocolli Ascolto del traffico del router Il router non è provvisto di patch Compromissione del router Tentativo di indovinare la password del router Damage potential (potenziale del danno) Affected users (utenti interessati) - oppure - Danno Reproducibility (riproducibilità) Exploitability (sfruttabilità) Discoverability (identificabilità) - oppure - Probabilità

22 Codifica in base a un modello di minaccia Utilizzare la modellizzazione delle minacce per: Determinare i componenti più pericolosi dell'applicazione Assegnare priorità agli sforzi per implementare la protezione Assegnare priorità alle continue verifiche del codice Determinare le tecniche di contenimento delle minacce da utilizzare Determinare il flusso di dati

23 Agenda Processo di sviluppo protetto Modellizzazione delle minacce Contenimento dei rischi Procedure ottimali per la protezione

24 Opzioni di contenimento dei rischi Opzione 1: non intraprendere alcuna misura Opzione 2: avvisare l'utente Opzione 3: eliminare il problema Opzione 4: correggere il problema Controllo

25 Processo di contenimento dei rischi Tipo di minaccia (STRIDE) Tecnica di contenimento Tecnica di contenimento Tecnologia Spoofing Autenticazione NTLM Certificati X.509 Chiavi PGP Autenticazione di base Digest Kerberos SSL/TLS 1.Identificare la categoria, ad esempio: spoofing 2.Selezionare le tecniche, ad esempio: autenticazione o protezione di dati riservati 3.Scegliere la tecnologia, ad esempio: Kerberos

26 Tecniche di contenimento di esempio Client Server Dati permanenti Dati di autenticazione Dati di configurazione STRIDE SSL/TLS IPSec RPC/DCO con Privacy Firewall Limitazione dell'utilizzo delle risorse per le connessioni anonime Controllo di accesso avanzato Firme digitali Controllo Rete non protetta

27 Agenda Processo di sviluppo protetto Modellizzazione delle minacce Contenimento dei rischi Procedure ottimali per la protezione

28 Esecuzione con i privilegi più ridotti possibili Dottrina di protezione nota: Un'applicazione dovrebbe essere eseguita con i privilegi minimi necessari per il funzionamento L'elevazione dei privilegi può avere conseguenze disastrose Codice dannoso in esecuzione in un processo altamente privilegiato viene eseguito con privilegi elevati Molti virus si diffondono perché il destinatario dispone di privilegi di amministratore

29 Dimostrazione 1 Protezione delle applicazioni ASP.NET Analisi dei privilegi delle applicazioni ASP.NET Limitazione dei livelli di attendibilità delle applicazioni ASP.NET Sandboxing di codice privilegiato Utilizzo di assembly sottoposti a sandboxing

30

31 Riduzione della superficie di attacco Esporre solo interfacce dell'applicazione limitate e ben documentate Utilizzare solo i servizi richiesti dall'applicazione I virus Slammer e CodeRed non si sarebbero diffusi se determinate funzioni fossero state disattivate per impostazione predefinita ILoveYou (e altri virus) non si sarebbero diffusi se la funzione di script fosse stata disattivata Disattivare tutte le funzioni non necessarie

32 Non ritenere attendibile l'input dell'utente Convalidare tutto l'input Considerare dannoso tutto l'input fino a prova contraria Cercare dati validi e rifiutare tutto il resto Vincolare, rifiutare e sterilizzare l'input dell'utente mediante Verifiche dei tipi Verifiche della lunghezza Verifiche dell'intervallo Verifiche del formato Validator.ValidationExpression =

33 Dimostrazione 2 Convalida di Windows Form Visualizzazione di un'applicazione in cui non viene eseguita la convalida Aggiunta della convalida dell'input Convalida del form completo

34

35 Difesa a più livelli (1 di 3) Utilizzo di più gatekeeper SSL Firewall ISA IIS SQL Server Firewall ISA IPSec

36 Difesa a più livelli (2 di 3) Applicazione di misure appropriate per ogni livello Verifica della protezione Applicazione.dll Applicazione.exe Verifica della protezione Protezione delle risorse mediante un ACL Applicazione.dll

37 Difesa a più livelli (3 di 3) Utilizzo di ACL efficienti per le risorse Progettare gli ACL nell'applicazione dall'inizio Applicare gli ACL a file, cartelle, pagine Web, impostazioni del Registro di sistema, file di database, stampanti e oggetti presenti in Active Directory Creare ACL personalizzati durante l'installazione dell'applicazione Includere ACE DENY Non utilizzare DACL NULL

38 Protezione non basata sul nascondimento Non nascondere le chiavi di protezione nei file Non fare affidamento su chiavi del Registro di sistema non documentate Supporre sempre che un hacker abbia a disposizione le stesse informazioni dello sviluppatore

39 Utilizzo dell'API di protezione dei dati (DPAPI, Data Protection API) per la protezione di informazioni riservate Due funzioni DPAPI: CryptProtectDataCryptUnprotectData Due archivi per i dati crittografati mediante DPAPI: Archivio dell'utente Archivio del computer

40 Dimostrazione 3 DPAPI Memorizzazione delle stringhe di connessione in Web.config Crittografia delle stringhe di connessione mediante DPAPI Installazione dell'utilità Aspnet_setreg Utilizzo di attributi crittografati in un file di configurazione Concessione di autorizzazioni sulle chiavi del Registro di sistema

41

42 Gestione degli errori (1 di 2) Assicurarsi che un eventuale errore del codice si verifichi in modo protetto DWORD dwRet = IsAccessAllowed(…); if (dwRet == ERROR_ACCESS_DENIED) { // Security check failed. // Inform user that access is denied } else { // Security check OK. // Perform task… } Cosa succederebbe se IsAccessAllowed() restituisse ERROR_NOT_ ENOUGH_MEMORY? Cosa succederebbe se IsAccessAllowed() restituisse ERROR_NOT_ ENOUGH_MEMORY?

43 Gestione degli errori (2 di 2) Operazioni sconsigliate: Rivelazione di informazioni in messaggi di errore Utilizzo di risorse a lungo dopo un errore Operazioni consigliate: Utilizzo di blocchi di gestione delle eccezioni per evitare la propagazione degli errori al chiamante Scrittura di errori sospetti in un log eventi

44 Verifica della protezione Coinvolgere i team di testing all'inizio dei progetti Utilizzare la modellizzazione delle minacce per sviluppare la strategia di verifica della protezione Prevedere i possibili attacchi e verificare il livello di protezione Automatizzare gli attacchi con script e linguaggi di programmazione di basso livello Inviare numerosi dati non validi Eliminare o negare l'accesso a file o voci del Registro di sistema Eseguire le verifiche con un account che non disponga di privilegi di amministratore Conoscere il nemico e conoscere se stessi Conoscere le tecniche e le tecnologie utilizzabili dagli hacker Conoscere le tecniche e le tecnologie utilizzabili dai tester

45 Come imparare dagli errori Se si rileva un problema di protezione, imparare dall'errore Come si è verificato l'errore di protezione? Lo stesso errore è presente in altre parti del codice? Come avrebbe potuto essere impedito? Cosa è necessario modificare per evitare il ripetersi di questo tipo di errore? È necessario aggiornare materiale di formazione o strumenti di analisi?

46 Riepilogo della sessione Processo di sviluppo protetto Modellizzazione delle minacce Contenimento dei rischi Procedure ottimali per la protezione

47 Fasi successive 1. Per essere sempre aggiornati nel campo della protezione Abbonarsi ai bollettini sulla protezione all'indirizzo: Abbonarsi ai bollettini sulla protezione all'indirizzo: (in lingua inglese) (in lingua inglese) Informazioni aggiornate relative alla protezione Microsoft sono disponibili all'indirizzo: Informazioni aggiornate relative alla protezione Microsoft sono disponibili all'indirizzo: (in lingua inglese) (in lingua inglese) 2. Accesso a materiale di formazione aggiuntivo sulla protezione Seminari di formazione on-line e con istruttore sono disponibili all'indirizzo: Seminari di formazione on-line e con istruttore sono disponibili all'indirizzo: (in lingua inglese) (in lingua inglese) Per trovare un CTEC di zona che offre corsi di formazione pratica, visitare l'indirizzo: Per trovare un CTEC di zona che offre corsi di formazione pratica, visitare l'indirizzo:

48 Ulteriori informazioni Sito Microsoft dedicato alla protezione (per tutti gli utenti) Sito MSDN dedicato alla protezione (per sviluppatori) (in lingua inglese) Sito TechNet dedicato alla protezione (per professionisti IT) sicurezza.asp sicurezza.asp

49


Scaricare ppt "Scrittura di codice protetto: procedure consigliate Marco Russo.NET Consultant & Trainer DevLeap."

Presentazioni simili


Annunci Google