I F8420: Éléments de Sécurité Informatique
Transcription
I F8420: Éléments de Sécurité Informatique
IF8420: Éléments de Sécurité Informatique Sécurité des applications web Daniel Boteanu INF8420 Sécurité Informatique Architecture des applications web Client légitime Server Web Internet HTTP 浀׆ HTML 2 INF8420 Sécurité Informatique Architecture des applications web Client légitime Server BD Server Web Internet HTTP HTML SQL 3 INF8420 Sécurité Informatique Architecture des applications web Client légitime Server Web XML Internet Server BD SQL HTTP HTML Serveur d’application 4 INF8420 Sécurité Informatique Architecture des applications web Client légitime Server Web XML Internet Server BD SQL HTTP 浀׆ HTML Kerberos LDAP Serveur d’application Serveur d’authentification 5 INF8420 Sécurité Informatique Architecture des applications web Client légitime Server Web XML Internet Server BD SQL HTTP HTML Client malicieux Kerberos LDAP Serveur d’application Serveur d’authentification 6 INF8420 Sécurité Informatique Architecture des applications web Client légitime Internet Server Web HTTP XML HTTP HTML Server BD SQL HTML 浀׆ Client malicieux Pare-feu Kerberos LDAP Serveur d’application Serveur d’authentification 7 INF8420 Sécurité Informatique Problèmes de sécurité Authentification Vérification des données usager SQL injection Cross site scripting Parameter tampering Phishing (hameçonnage) Logique application 8 INF8420 Sécurité Informatique AUTHETIFICATIO 9 INF8420 Sécurité Informatique Authentification Composantes impliquées Client légitime Server Web Internet Server BD Pare-feu Serveur d’application Client malicieux Serveur d’authentification 10 INF8420 Sécurité Informatique Authentification Canal de communication sécurisé (https) Challenge – response (#TLM, Kerberos) Réauthentification à des intervalles sécurisés Permission des usagers Tester Authentifier le client Authentifier le serveur 浀׆ 11 INF8420 Sécurité Informatique Authentification Authentification du serveur Certificat SSL 12 INF8420 Sécurité Informatique Authentification Authentification du serveur Certificat SSL Autre 13 INF8420 Sécurité Informatique ө (Input validation) VÉRIFICATIO DES DOÉES USAGER 14 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Ce qu’on fait Client légitime Server Web Internet Server BD Pare-feu Serveur d’application Client malicieux Serveur d’authentification 15 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Code source html <form action="mailto:[email protected]" method="post" onsubmit="return checkform(this);"> <script language="JavaScript" type="text/javascript"> <!-function checkform ( form ) { // see http://www.thesitewizard.com/archive/validation.shtml // for an explanation of this script and how to use it on your // own website // ** START ** if (form.email.value == "") { alert( "Please enter your email address." ); form.email.focus(); return false ; } // ** END ** return true ; } //--> </script> 16 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Ce qu’on devrais faire Client légitime Server Web Internet Server BD Pare-feu Serveur d’application Client malicieux Serveur d’authentification 17 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Attaques Injection SQL (SQL Injection) Cross Site Scripting (XSS) Variable tampering 18 INF8420 Sécurité Informatique Vérification des données usager SQL IJECTIO 19 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Injection SQL (SQL Injection) Server BD Client légitime extract($_POST); Server Web $req = "select mem_code from MEMBRES where mem_login = '$login' and mem_pwd = '$pass'"; $result = mysql_query($req) or die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error()); list($mem_code) = mysql_fetch_array($result); if (empty($mem_code)) { //verifier que la requette a retourne une reponse positive 20 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Injection SQL (SQL Injection) Client légitime Server BD daniel Xa4!dfga select mem_code from MEMBRES where mem_login = 'daniel' and mem_pwd = 'Xa4!dfga' 5 extract($_POST); Server Web $req = "select mem_code from MEMBRES where mem_login = 'daniel' and mem_pwd = 'Xa4!dfga'"; $result = mysql_query($req) or die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error()); list($mem_code) = mysql_fetch_array($result); if (empty($mem_code)) { //verifier que la requette a retourne une reponse positive 21 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Injection SQL (SQL Injection) Server BD daniel ' or '1'='1 select mem_code from MEMBRES where mem_login = 'daniel' and mem_pwd = '' or '1'='1' Client malicieux extract($_POST); Server Web $req = "select mem_code from MEMBRES where mem_login = 'daniel' and mem_pwd = '' or '1'='1'"; $result = mysql_query($req) or die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error()); list($mem_code) = mysql_fetch_array($result); if (empty($mem_code)) { //verifier que la requette a retourne une reponse positive 22 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Injection SQL (SQL Injection) daniel Client malicieux x'; INSERT INTO members ('email','passwd','login_id','full_name') VALUES ('[email protected]','hello','steve','Steve Friedl');-- 23 INF8420 Sécurité Informatique Vérification des données usager CROSS SITE SCRIPTIG 24 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Cross site scripting (XSS) Search results for Gagner de l’argent: Client légitime Gagner de l’argent Comment gagner de l'argent facile et des cadeaux sur internet… L' objectif du blog est de présenter toutes les idées qui permettent d' économiser … Search Server Web extract($_POST); $req = "select * from POSTS where title = '$stitle' <html> <head></head> <body> <h1>Search results for Gagner de l’argent :</h1> <itemize> <item>Comment gagner deacile et des cadeaux sur internet…</item> <item>L' objectif du blog est de présenter toutes les idées qui permettent d' économiser …</item> </itemize> </body> </html> 25 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Cross site scripting (XSS) Search results for Super: No results found <b>Super</b> Client malicieux Search Server Web extract($_POST); <html> <head></head> <body> <h1>Search results for <b>Super</b> :</h1> No results found </itemize> </body> </html> $req = "select * from POSTS where title = '$stitle' 26 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Cross site scripting (XSS) Client malicieux Server BD Post id message 1 Hello 2 3 Bien fait ... <script type="text/javascript">do cument.location.href=“htt p://boteanu.com"</script> <script type="text/javascript">document.location.href=“http://boteanu.com"</script> Your message has been posted 27 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Cross site scripting (XSS) Server BD Client légitime Guestbook messages: Hello Bien fait ... <h1>Guestbook messages:</h1> Hello<br> Bien fait<br> <script type="text/javascript">document.location.hr ef=“http://boteanu.com"</script><br> ... id message 1 Hello 2 Bien fait ... 3 <script type="text/javascript">docu ment.location.href=“http://b oteanu.com"</script> 28 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Comment se protéger ? Valider les données de l’usager sur le serveur Web et/ou sur le serveur d’applications limiter la taille de l’entrée refuser les caractères spéciaux ‘ “ \ / ; - < > accepter seulement les caractères nécessaires Utiliser les SQL Stored Procedures Gérer les permissions sur la basé de données usagers, rôles, permissions Messages d’erreur Vérifications 29 INF8420 Sécurité Informatique Vérification des données usager (Input validation) Comment vérifier si un site est vulnérable ? Rien fait pour protéger -> probablement vulnérable Développé sans gestion de projet -> probablement vulnérable Outils automatiques Nikto Acunetix ($$) WebScarab Autres (http://sectools.org/web-scanners.html) 30 INF8420 Sécurité Informatique Phishing HAMEÇOAGE 31 INF8420 Sécurité Informatique Hameçonnage (Phishing) Server Web Faux Client malicieux Vous avez gagné 1 million. Connectez vous sur le site de la banque en cliquant sur https://www.desjard1ns .com Client légitime Server Web Internet Pare-feu Server BD Serveur d’application 32 INF8420 Sécurité Informatique Hameçonnage (Phishing) Comment se protéger ? Filtrer le spam Authentification du serveur Eduquer les utilisateurs 33 INF8420 Sécurité Informatique LOGIQUE DE L’APPLICATIO 34 INF8420 Sécurité Informatique Logique de l’application Chaque attaque est différente Exploite la logique de l’application Difficile à détecter Exemples: Acheter un livre de -20$ Créer un million d’usagers et écrire des messages Enlever le câble réseau au milieu d’une partie d’échec 35 INF8420 Sécurité Informatique COCLUSIOS 36 INF8420 Sécurité Informatique Conclusions Attaques web très populaires Facile de créer une application vulnérable Validation des données usager Éducation des usagers Principe de sécurité de l’oignon (layered security) 37