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

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

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

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

ScritturaScrittura didi codicecodice protetto:protetto: procedureprocedure consigliateconsigliate

Marco RussoMarco Russo.NET Consultant & Trainer.NET Consultant & TrainerDevLeapDevLeap

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

ArgomentiArgomenti trattatitrattati

ProcessoProcesso didi svilupposviluppo protettoprotetto

Modellizzazione delle minacceModellizzazione delle minacce

Contenimento dei rischiContenimento dei rischi

Procedure ottimali per la protezioneProcedure ottimali per la protezione

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

PrerequisitiPrerequisiti didi sessionesessione

EsperienzaEsperienza didi svilupposviluppo concon MicrosoftMicrosoft VisualVisual Basic®,Basic®, MicrosoftMicrosoft VisualVisual C++®C++® oo C#C#

LivelloLivello 200200

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

AgendaAgenda

ProcessoProcesso didi svilupposviluppo protettoprotetto

Modellizzazione delle minacceModellizzazione delle minacce

Contenimento dei rischiContenimento dei rischi

Procedure ottimali per la protezioneProcedure ottimali per la protezione

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

MiglioramentoMiglioramento deldel processoprocesso di sviluppodi sviluppo delledelle applicazioniapplicazioni

PrenderePrendere inin considerazioneconsiderazione lala protezioneprotezione

All'inizio del processoAll'inizio del processo

Nel corso dello sviluppoNel corso dello sviluppo

Fino alla distribuzioneFino alla distribuzione

Durante tutte le fasi di verifica del Durante tutte le fasi di verifica del softwaresoftware

Non smettere di cercare bug di Non smettere di cercare bug di protezione fino alla fine del processo protezione fino alla fine del processo di sviluppodi sviluppo

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

SDSD33

ProtezioneProtezione comecome

caratteristicacaratteristica didi progettazioneprogettazione

ProtezioneProtezione perper impostazioneimpostazione

predefinitapredefinita

ProtezioneProtezione nellanella distribuzionedistribuzione

ArchitetturaArchitettura ee codicecodice protettiprotettiAnalisi delle minacceAnalisi delle minacceRiduzione delle vulnerabilitàRiduzione delle vulnerabilità

RiduzioneRiduzione delladella superficiesuperficie didi attaccoattaccoDisattivazione delle funzioni non Disattivazione delle funzioni non utilizzate per impostazione utilizzate per impostazione predefinitapredefinitaUtilizzo di privilegi minimiUtilizzo di privilegi minimi

Protezione:Protezione: rilevamento,rilevamento, difesa,difesa, ripristinoripristino ee gestionegestioneProcesso: guide all'esecuzione delle Processo: guide all'esecuzione delle operazioni, guide all'architetturaoperazioni, guide all'architetturaUtenti: formazioneUtenti: formazione

StrutturaStruttura didi protezioneprotezione SDSD33

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

CronologiaCronologia didi svilupposviluppo protettoprotetto dei prodottidei prodotti

ProcedureProcedure didi verificaverificacompletatecompletate

ProgettazioneProgettazionecompletatacompletata

ConcettoConcetto CodiceCodicecompletatocompletato

Commer-Commer-cializzazionecializzazione

Post-Post-commercializzazionecommercializzazione

Verifica dellevulnerabilità di protezione

Valutazionedella conoscenza

relativa alla protezione durante l'assunzione di membri del team

Determinazione deicriteri di approvazione

della protezione

Esecuzione di verifiche esterne

Analisi delle minacce Apprendimento

e perfezionamento

Esecuzione diverifiche di teamdella protezione

Formazione deimembri del team

Verifica della mutazione dei dati e dei privilegipiù ridotti possibili

Risoluzione dei problemi di protezione, verifica del codice rispetto alle linee guida

di protezione

= Attività continue

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

ProtezioneProtezione comecome caratteristicacaratteristica di progettazionedi progettazione

AumentareAumentare lala consapevolezzaconsapevolezza inin fattofatto di protezionedi protezione deldel teamteam didi progettazioneprogettazione

Prevedere una formazione continuaPrevedere una formazione continuaCombattere gli atteggiamenti come "Ciò Combattere gli atteggiamenti come "Ciò che non conosco non potrà crearmi che non conosco non potrà crearmi problemi"problemi"

Prendere in considerazione la Prendere in considerazione la protezione fin dalla fase di protezione fin dalla fase di progettazioneprogettazione

Definire gli obiettivi di protezione del Definire gli obiettivi di protezione del prodottoprodottoImplementare la protezione come una Implementare la protezione come una funzione chiave del prodottofunzione chiave del prodottoUtilizzare la modellizzazione delle minacce Utilizzare la modellizzazione delle minacce durante la fase di progettazionedurante la fase di progettazione

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

AgendaAgenda

ProcessoProcesso didi svilupposviluppo protettoprotetto

Modellizzazione delle minacceModellizzazione delle minacce

Contenimento dei rischiContenimento dei rischi

Procedure ottimali per la protezioneProcedure ottimali per la protezione

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

DefinizioneDefinizione didi modellizzazionemodellizzazione delledelle minacceminacce

LaLa modellizzazionemodellizzazione delledelle minacceminacce èè un'analisiun'analisi basatabasata sullasulla protezioneprotezione che:che:

Consente al team di un prodotto di Consente al team di un prodotto di identificare identificare i punti in cui il prodotto è più vulnerabilei punti in cui il prodotto è più vulnerabileConsente di valutare le minacce a Consente di valutare le minacce a un'applicazioneun'applicazione Ha come obiettivo quello di ridurre i rischi Ha come obiettivo quello di ridurre i rischi di protezione complessividi protezione complessiviConsente di individuare le risorseConsente di individuare le risorseConsente di rilevare le vulnerabilitàConsente di rilevare le vulnerabilitàConsente di identificare le minacceConsente di identificare le minacceDovrebbe essere alla base delle specifiche Dovrebbe essere alla base delle specifiche di progettazione relative alla protezionedi progettazione relative alla protezione

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

VantaggiVantaggi delladella modellizzazionemodellizzazione delledelle minacceminacce

MiglioreMigliore comprensionecomprensione dell'applicazionedell'applicazione

Individuazione di bugIndividuazione di bug

Identificazione di Identificazione di bug di progettazione bug di progettazione complessicomplessi

Integrazione dei nuovi Integrazione dei nuovi membri del teammembri del team

Definisce piani di testing per la Definisce piani di testing per la protezione ben progettatiprotezione ben progettati

Minaccia

Vulnerabilità

Risorsa

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

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacce

Identificazione delle risorse1

Creazione di una panoramica dell'architettura2

Scomposizione dell'applicazione3

Identificazione delle minacce4

Documentazione delle minacce5

Classificazione delle minacce6

Processo di modellizzazione delle minacce

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

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacceFaseFase 1:1: identificazioneidentificazione delledelle risorserisorse

CreareCreare unun elencoelenco didi risorserisorse dada proteggereproteggere tra cui:tra cui:

Dati riservati, come database di clientiDati riservati, come database di clienti

Pagine WebPagine Web

Disponibilità del sistemaDisponibilità del sistema

Altri componenti che, se danneggiati, Altri componenti che, se danneggiati, impedirebbero il corretto funzionamento impedirebbero il corretto funzionamento dell'applicazionedell'applicazione

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

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacceFaseFase 2:2: creazionecreazione didi unauna panoramicapanoramica dell'architetturadell'architettura

IdentificazioneIdentificazione delladella funzionefunzione dell'applicazionedell'applicazioneCreazione di un diagramma dell'architettura Creazione di un diagramma dell'architettura dell'applicazionedell'applicazione

Identificazione delle tecnologieIdentificazione delle tecnologie

Autorizzazioni NTFS(autenticazione)

Autorizzazione di fileAutorizzazione di URL

Ruoli di .NET(autenticazione)

Ruolo definito dall'utente(autenticazione)

SSL(privacy/integrità)

Limite di attendibilità

MarcellaMonicaAlberto IISIIS

Autenticazioneanonima

Autenticazionebasata su form

IPSec(privacy/integrità)

Limite di attendibilità

ASP .NET(identità del processo)Microsoft

ASP .NETMicrosoft ASP .NET

Autenticazione diMicrosoft Windows®

MicrosoftSQL Server™

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

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacceFaseFase 3:3: scomposizionescomposizione dell'applicazionedell'applicazioneScomporreScomporre

l'applicazionel'applicazione

Creare un profilo di Creare un profilo di protezione basato sulle protezione basato sulle tradizionali aree di tradizionali aree di vulnerabilitàvulnerabilità

Esaminare l'interazione Esaminare l'interazione tra i diversi sottosistemitra i diversi sottosistemi

Utilizzare i diagrammiUtilizzare i diagrammiDFD o UMLDFD o UML

IdentificazioneIdentificazione deidei limitilimiti didi attendibilitàattendibilità

IdentificazioneIdentificazione deldel flussoflusso didi datidati

IdentificazioneIdentificazione deidei puntipunti didi ingressoingresso

IdentificazioneIdentificazione didi codicecodice privilegiatoprivilegiato

DocumentazioneDocumentazione deldel profiloprofilo didi protezioneprotezione

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

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacceFaseFase 4:4: identificazioneidentificazione delledelle minacceminacce

CreazioneCreazione deldel teamteam

Identificazione delle minacceIdentificazione delle minacceMinacce alla reteMinacce alla rete

Minacce all'hostMinacce all'host

Minacce all'applicazioneMinacce all'applicazione

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

Tipi di minacce •Esempi

Spoofing Falsificazione di messaggi di posta elettronica Riproduzione di pacchetti di autenticazione

•Tampering Alterazione di dati durante la trasmissione Modifica dei dati contenuti nei file

•Repudiation Eliminazione di un file importante e negazione di tale operazioneAcquisto di un prodotto e negazione di tale operazione

•Information disclosure

Esposizione di informazioni in messaggi di errore Esposizione di codice su siti Web

•Denial of serviceSaturazione di una rete con pacchetti SYNSaturazione di una rete con pacchetti ICMP contraffatti

•Elevation of privilege

Sfruttamento di sovraccarichi buffer per ottenere privilegi di sistema Ottenimento di privilegi di amministratore in maniera illegale

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacceIdentificazioneIdentificazione delledelle minacceminacce mediantemediante STRIDESTRIDE

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

1.0 Visualizzazione dei dati sullo stipendio (I) 1.1 Il traffico non è protetto (E) 1.2 L'hacker visualizza il traffico 1.2.1 Intercettazione del traffico mediante

l'analizzatore di protocolli 1.2.2 Ascolto del traffico del router 1.2.2.1 Il router non è provvisto di patch (E) 1.2.2.2 Compromissione del router 1.2.2.3 Tentativo di indovinare la password

del router

Minaccia 1 (I)Visualizzazione deidati sullo stipendio

1.1Il traffico non è protetto

1.2L'hacker visualizzail traffico

1.2.1Intercettazione del traffico mediante l'analizzatore di protocolli

1.2.2Ascolto del trafficodel router

1.2.2.1Il router non è provvisto di patch

1.2.2.2Compromissionedel router

1.2.2.3Tentativo di indovinarela password del router

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacceIdentificazioneIdentificazione delledelle minacceminacce mediantemediante l'utilizzol'utilizzo didi strutturestrutture didi attaccoattacco

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

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacceFaseFase 5:5: documentazionedocumentazione delledelle minacceminacceUtilizzareUtilizzare unun modellomodello perper documentaredocumentare le minaccele minacce

Lasciare vuoto il campo Rischio (per il Lasciare vuoto il campo Rischio (per il momento)momento)

Descrizione della minaccia

Inserimento di comandi SQL

Obiettivo della minaccia Componente di accesso ai dati

RischioTecniche 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

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

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacceFaseFase 6:6: classificazioneclassificazione delledelle minacceminacce

UtilizzareUtilizzare lala seguenteseguente formula:formula: Rischio = probabilità * potenziale del dannoRischio = probabilità * potenziale del danno

Utilizzare il modello DREAD per Utilizzare il modello DREAD per classificare le minacceclassificare le minacce

DDamage potential (potenziale del danno)amage potential (potenziale del danno)  

RReproducibility (riproducibilità)eproducibility (riproducibilità)  

EExploitability (sfruttabilità)xploitability (sfruttabilità)     

AAffected Users (utenti interessati)ffected Users (utenti interessati)  

DDiscoverability (identificabilità)iscoverability (identificabilità)  

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

ProcessoProcesso didi modellizzazionemodellizzazione delledelle minacceminacce Esempio:Esempio: classificazioneclassificazione delledelle minacceminacce

Minaccia 1 (I)Visualizzazione deidati sullo stipendio

1.1Il traffico nonè protetto

1.2L'hacker visualizzail traffico

1.2.1Intercettazione del traffico mediante l'analizzatore di protocolli

1.2.2Ascolto del trafficodel router

1.2.2.1Il router non è provvisto di patch

1.2.2.2Compromissionedel router

1.2.2.3Tentativo di indovinarela password del router

•Damage potential (potenziale del danno)•Affected users (utenti interessati)- oppure -•Danno

•Reproducibility (riproducibilità)•Exploitability (sfruttabilità)•Discoverability (identificabilità)- oppure -•Probabilità

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

CodificaCodifica inin basebase aa unun modellomodello di minacciadi minaccia

UtilizzareUtilizzare lala modellizzazionemodellizzazione delledelle minacceminacce per:per:

Determinare i componenti più pericolosi Determinare i componenti più pericolosi dell'applicazionedell'applicazione

Assegnare priorità agli sforzi per Assegnare priorità agli sforzi per implementare implementare la protezionela protezione

Assegnare priorità alle continue verifiche Assegnare priorità alle continue verifiche del codicedel codice

Determinare le tecniche di contenimento Determinare le tecniche di contenimento delle minacce da utilizzaredelle minacce da utilizzare

Determinare il flusso di datiDeterminare il flusso di dati

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

AgendaAgenda

ProcessoProcesso didi svilupposviluppo protettoprotetto

Modellizzazione delle minacceModellizzazione delle minacce

Contenimento dei rischiContenimento dei rischi

Procedure ottimali per la protezioneProcedure ottimali per la protezione

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

OpzioniOpzioni didi contenimentocontenimento deidei rischirischi

OpzioneOpzione 1:1: nonnon intraprendereintraprendere alcunaalcuna misuramisura

Opzione 2: avvisare l'utenteOpzione 2: avvisare l'utente

Opzione 3: eliminare il problemaOpzione 3: eliminare il problema

Opzione 4: correggere il problemaOpzione 4: correggere il problemaControllo

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

ProcessoProcesso didi contenimentocontenimento deidei rischirischi

Tipo di minaccia(STRIDE)

Tecnica di contenimento

Tecnica di contenimento

Tecnologia Tecnologia Tecnologia Tecnologia

Spoofing Autenticazione

NTLMCertificati X.509Chiavi PGPAutenticazione di baseDigestKerberosSSL/TLS

1.1. IdentificareIdentificare lala categoria,categoria,adad esempio:esempio: spoofingspoofing

2.2. SelezionareSelezionare lele tecniche,tecniche,adad esempio: autenticazioneesempio: autenticazione oo protezioneprotezione didi datidati riservatiriservati

3.3. ScegliereScegliere lala tecnologia,tecnologia,adad esempio:esempio: KerberosKerberos

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

TecnicheTecniche didi contenimentocontenimento di esempiodi esempio

Client Server

Datipermanenti

Dati diautenticazione

Dati diconfigurazione SSTTRRIDIDEE

STSTRRIDEIDE

STRISTRIDDEE

SSTTRRIIDEDESSTRIDTRIDEE

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 nonprotetta

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

AgendaAgenda

ProcessoProcesso didi svilupposviluppo protettoprotetto

Modellizzazione delle minacceModellizzazione delle minacce

Contenimento dei rischiContenimento dei rischi

Procedure ottimali per la protezioneProcedure ottimali per la protezione

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

EsecuzioneEsecuzione concon ii privilegiprivilegi piùpiù ridottiridotti possibilipossibili

DottrinaDottrina didi protezioneprotezione nota:nota:Un'applicazione dovrebbe essere eseguita Un'applicazione dovrebbe essere eseguita con con i privilegi minimi necessari per il i privilegi minimi necessari per il funzionamentofunzionamento

L'elevazione dei privilegi può avere L'elevazione dei privilegi può avere conseguenze disastroseconseguenze disastrose

Codice dannoso in esecuzione in un Codice dannoso in esecuzione in un processo altamente privilegiato viene processo altamente privilegiato viene eseguito con privilegi elevatieseguito con privilegi elevati

Molti virus si diffondono perché il Molti virus si diffondono perché il destinatario dispone di privilegi di destinatario dispone di privilegi di amministratoreamministratore

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

DimostrazioneDimostrazione 11 ProtezioneProtezione delledelle applicazioniapplicazioni

ASPASP .NET.NET

AnalisiAnalisi deidei privilegiprivilegi delledelle applicazioniapplicazioni

ASPASP .NET.NETLimitazioneLimitazione deidei livellilivelli didi attendibilitàattendibilità delledelle

applicazioniapplicazioni ASPASP .NET.NETSandboxingSandboxing didi codicecodice privilegiatoprivilegiatoUtilizzoUtilizzo didi assemblyassembly sottopostisottoposti aa

sandboxingsandboxing

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

RiduzioneRiduzione delladella superficiesuperficie didi attaccoattacco

EsporreEsporre solosolo interfacceinterfacce dell'applicazionedell'applicazione limitatelimitate ee benben documentatedocumentate

Utilizzare solo i servizi richiesti Utilizzare solo i servizi richiesti dall'applicazionedall'applicazione

I virus Slammer e CodeRed non si I virus Slammer e CodeRed non si sarebbero diffusi se determinate funzioni sarebbero diffusi se determinate funzioni fossero state disattivate per impostazione fossero state disattivate per impostazione predefinitapredefinita

ILoveYou (e altri virus) non si sarebbero ILoveYou (e altri virus) non si sarebbero diffusi diffusi se la funzione di script fosse stata se la funzione di script fosse stata disattivatadisattivata

Disattivare tutte le funzioni non Disattivare tutte le funzioni non necessarienecessarie

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

NonNon ritenereritenere attendibileattendibile l'inputl'input dell'utentedell'utente

ConvalidareConvalidare tuttotutto l'inputl'inputConsiderare dannoso tutto l'input fino a prova Considerare dannoso tutto l'input fino a prova contrariacontraria

Cercare dati validi e rifiutare tutto il restoCercare dati validi e rifiutare tutto il resto

Vincolare, rifiutare e sterilizzare l'input Vincolare, rifiutare e sterilizzare l'input dell'utente mediantedell'utente mediante

Verifiche dei tipiVerifiche dei tipi

Verifiche della lunghezzaVerifiche della lunghezza

Verifiche dell'intervalloVerifiche dell'intervallo

Verifiche del formatoVerifiche del formatoValidator.ValidationExpression =

"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";

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

DimostrazioneDimostrazione 22 ConvalidaConvalida didi WindowsWindows FormForm

VisualizzazioneVisualizzazione didi un'applicazioneun'applicazione inin cuicui

nonnon vieneviene eseguitaeseguita lala convalidaconvalidaAggiuntaAggiunta delladella convalidaconvalida dell'inputdell'input

ConvalidaConvalida deldel formform completocompleto

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

DifesaDifesa aa piùpiù livellilivelli (1(1 didi 3)3)UtilizzoUtilizzo didi piùpiù gatekeepergatekeeper

SSL

Firewall ISA

IIS

SQL Server

Firewall ISAIPSec

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

DifesaDifesa aa piùpiù livellilivelli (2(2 didi 3)3)ApplicazioneApplicazione didi misuremisure appropriateappropriate perper ogniogni livellolivello

Verifica della protezione

Verifica della protezione

Applicazione.dll

Applicazione.exe

Verifica della protezione

Verifica della protezione

Protezione delle risorse mediante un ACL

Applicazione.dll

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

DifesaDifesa aa piùpiù livellilivelli (3(3 didi 3)3)UtilizzoUtilizzo didi ACLACL efficientiefficienti perper lele risorserisorseProgettareProgettare gligli ACLACL nell'applicazionenell'applicazione

dall'iniziodall'inizio

Applicare gli ACL a file, cartelle, pagine Applicare gli ACL a file, cartelle, pagine Web, impostazioni del Registro di Web, impostazioni del Registro di sistema, file di database, stampanti e sistema, file di database, stampanti e oggetti presenti in Active Directoryoggetti presenti in Active Directory

Creare ACL personalizzati durante Creare ACL personalizzati durante l'installazione dell'applicazionel'installazione dell'applicazione

Includere ACE DENYIncludere ACE DENY

Non utilizzare DACL NULLNon utilizzare DACL NULL

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

ProtezioneProtezione nonnon basatabasata sulsul nascondimentonascondimento

NonNon nasconderenascondere lele chiavichiavi didi protezioneprotezione neinei filefile

Non fare affidamento su chiavi del Non fare affidamento su chiavi del Registro Registro di sistema non documentatedi sistema non documentate

Supporre sempre che un hacker abbia a Supporre sempre che un hacker abbia a disposizione le stesse informazioni dello disposizione le stesse informazioni dello sviluppatoresviluppatore

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

UtilizzoUtilizzo dell'APIdell'API didi protezioneprotezione deidei datidati (DPAPI,(DPAPI, DataData ProtectionProtection API)API) perper lala protezioneprotezione didi informazioniinformazioni riservateriservateDueDue funzionifunzioni DPAPI:DPAPI:

CryptProtectDataCryptProtectData

CryptUnprotectDataCryptUnprotectData

Due archivi per i dati crittografati Due archivi per i dati crittografati mediante DPAPI:mediante DPAPI:

Archivio dell'utenteArchivio dell'utente

Archivio del computerArchivio del computer

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

DimostrazioneDimostrazione 33 DPAPIDPAPI

MemorizzazioneMemorizzazione delledelle stringhestringhe didi connessioneconnessione

inin Web.configWeb.configCrittografiaCrittografia delledelle stringhestringhe didi connessioneconnessione

mediantemediante DPAPIDPAPIInstallazioneInstallazione dell'utilitàdell'utilità Aspnet_setregAspnet_setreg

UtilizzoUtilizzo didi attributiattributi crittografaticrittografati inin unun filefile didi configurazioneconfigurazione

ConcessioneConcessione didi autorizzazioniautorizzazioni sullesulle chiavichiavi deldel RegistroRegistro didi sistemasistema

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

Gestione degli erroriGestione degli errori (1(1 didi 2)2)

AssicurarsiAssicurarsi cheche unun eventualeeventuale erroreerrore deldel codicecodice sisi verifichiverifichi inin modomodo protettoprotetto

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?

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

Gestione degli errori (2Gestione degli errori (2 didi 2)2)

OperazioniOperazioni sconsigliate:sconsigliate:Rivelazione di informazioni in messaggi Rivelazione di informazioni in messaggi di erroredi errore

Utilizzo di risorse a lungo dopo un erroreUtilizzo di risorse a lungo dopo un errore

Operazioni consigliate:Operazioni consigliate:Utilizzo di blocchi di gestione delle Utilizzo di blocchi di gestione delle eccezioni per evitare la propagazione eccezioni per evitare la propagazione degli errori al chiamantedegli errori al chiamante

Scrittura di errori sospetti in un log Scrittura di errori sospetti in un log eventieventi

<customErrors mode="On"/>

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

VerificaVerifica delladella protezioneprotezioneCoinvolgereCoinvolgere ii teamteam didi testing all'iniziotesting all'inizio deidei progettiprogettiUtilizzare la modellizzazione delle minacce per Utilizzare la modellizzazione delle minacce per sviluppare la strategia di verifica della sviluppare la strategia di verifica della protezioneprotezionePrevedere i possibili attacchi e verificare il Prevedere i possibili attacchi e verificare il livello livello di protezionedi protezione

Automatizzare gli attacchi con script e linguaggi Automatizzare gli attacchi con script e linguaggi di programmazione di basso livellodi programmazione di basso livelloInviare numerosi dati non validiInviare numerosi dati non validiEliminare o negare l'accesso a file o voci del Registro Eliminare o negare l'accesso a file o voci del Registro

di sistemadi sistemaEseguire le verifiche con un account che non Eseguire le verifiche con un account che non disponga disponga di privilegi di amministratoredi privilegi di amministratore

Conoscere il nemico e conoscere se stessiConoscere il nemico e conoscere se stessiConoscere le tecniche e le tecnologie utilizzabili dagli Conoscere le tecniche e le tecnologie utilizzabili dagli hackerhackerConoscere le tecniche e le tecnologie utilizzabili dai Conoscere le tecniche e le tecnologie utilizzabili dai testertester

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

ComeCome imparareimparare daglidagli errorierrori

SeSe sisi rilevarileva unun problemaproblema didi protezione,protezione, imparareimparare dall'erroredall'errore

Come si è verificato l'errore di protezione?Come si è verificato l'errore di protezione?

Lo stesso errore è presente in altre parti Lo stesso errore è presente in altre parti del codice?del codice?

Come avrebbe potuto essere impedito?Come avrebbe potuto essere impedito?

Cosa è necessario modificare per evitare Cosa è necessario modificare per evitare il ripetersi di questo tipo di errore?il ripetersi di questo tipo di errore?

È necessario aggiornare materiale di È necessario aggiornare materiale di formazione o strumenti di analisi?formazione o strumenti di analisi?

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

RiepilogoRiepilogo delladella sessionesessione

ProcessoProcesso didi svilupposviluppo protettoprotetto

Modellizzazione delle minacceModellizzazione delle minacce

Contenimento dei rischiContenimento dei rischi

Procedure ottimali per la protezioneProcedure ottimali per la protezione

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

FasiFasi successivesuccessive1.1. PerPer essereessere sempresempre aggiornatiaggiornati nelnel campocampo

delladella protezioneprotezione1.1. Abbonarsi ai bollettini sulla protezione all'indirizzo:Abbonarsi ai bollettini sulla protezione all'indirizzo:2.2.

http://www.microsoft.com/security/security_bulletins/alerts2.ahttp://www.microsoft.com/security/security_bulletins/alerts2.aspsp (in lingua inglese)(in lingua inglese)

3.3. Informazioni aggiornate relative alla protezione Informazioni aggiornate relative alla protezione Microsoft sono disponibili all'indirizzo:Microsoft sono disponibili all'indirizzo:

4.4. http://www.microsoft.com/security/guidance/http://www.microsoft.com/security/guidance/ (in (in lingua inglese)lingua inglese)

2.2. Accesso a materiale di formazione Accesso a materiale di formazione aggiuntivo sulla protezioneaggiuntivo sulla protezione

1.1. Seminari di formazione on-line e con istruttore sono Seminari di formazione on-line e con istruttore sono disponibili all'indirizzo:disponibili all'indirizzo:

2.2. http://www.microsoft.com/seminar/events/http://www.microsoft.com/seminar/events/security.mspxsecurity.mspx (in lingua inglese)(in lingua inglese)

3.3. Per trovare un CTEC di zona che offre corsi di Per trovare un CTEC di zona che offre corsi di formazione pratica, visitare l'indirizzo:formazione pratica, visitare l'indirizzo:

http://www.microsoft.com/http://www.microsoft.com/italy/traincert/Default.mspxitaly/traincert/Default.mspx

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

UlterioriUlteriori informazioniinformazioniSitoSito MicrosoftMicrosoft dedicatodedicato allaalla protezioneprotezione (per(per tuttitutti gligli utenti)utenti)

http://www.microsoft.com/http://www.microsoft.com/italyitaly/security/security

Sito MSDN dedicato alla protezione Sito MSDN dedicato alla protezione (per sviluppatori)(per sviluppatori)

http://http://msdn.microsoft.commsdn.microsoft.com/security/security (in lingua inglese)(in lingua inglese)

Sito TechNet dedicato alla protezione Sito TechNet dedicato alla protezione (per professionisti IT)(per professionisti IT)

http://www.microsoft.com/http://www.microsoft.com/italy/technetitaly/technet//sicurezza.aspsicurezza.asp

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