INF8420: Éléments de Sécurité Informatique

Preview:

DESCRIPTION

INF8420: Éléments de Sécurité Informatique. Sécurité des applications web. Architecture des applications web. Client légitime. Server Web. Internet. HTTP HTML. Architecture des applications web. Client légitime. Server BD. Server Web. Internet. SQL. HTTP HTML. - PowerPoint PPT Presentation

Citation preview

Daniel Boteanu

INF8420: Éléments de Sécurité InformatiqueINF8420: Éléments de Sécurité Informatique

Sécurité des applications web

INF8420Sécurité Informatique

INF8420Sécurité Informatique

2

Architecture des applications webArchitecture des applications web

Client légitime

Internet Server Web

HTTP

HTML

INF8420Sécurité Informatique

INF8420Sécurité Informatique

3

Architecture des applications webArchitecture des applications web

Client légitime

Internet Server Web Server BD

HTTP

HTML

SQL

INF8420Sécurité Informatique

INF8420Sécurité Informatique

4

Architecture des applications webArchitecture des applications web

Client légitime

Internet Server Web Server BD

Serveur

d’application

HTTP

HTML

SQLXML

INF8420Sécurité Informatique

INF8420Sécurité Informatique

5

Architecture des applications webArchitecture des applications web

Client légitime

Internet Server Web Server BD

Serveur

d’application

Serveur

d’authentification

HTTP

HTML

SQLXML

Kerberos

LDAP

INF8420Sécurité Informatique

INF8420Sécurité Informatique

6

Architecture des applications webArchitecture des applications web

Client légitime

Client malicieux

Internet Server Web Server BD

Serveur

d’application

Serveur

d’authentification

HTTP

HTML

SQLXML

Kerberos

LDAP

INF8420Sécurité Informatique

INF8420Sécurité Informatique

7

Architecture des applications webArchitecture des applications web

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Serveur

d’authentification

HTTP

HTML SQLXMLHTTP

HTML

Kerberos

LDAP

INF8420Sécurité Informatique

INF8420Sécurité Informatique Problèmes de sécurité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

INF8420Sécurité Informatique

INF8420Sécurité Informatique

AUTHENTIFICATIONAUTHENTIFICATION

9

INF8420Sécurité Informatique

INF8420Sécurité Informatique

10

AuthentificationAuthentification

Composantes impliquées

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Serveur

d’authentification

INF8420Sécurité Informatique

INF8420Sécurité Informatique AuthentificationAuthentification

Canal de communication sécurisé (https) Challenge – response (NTLM, Kerberos) Réauthentification à des intervalles sécurisés Permission des usagers Tester Authentifier le client Authentifier le serveur

11

INF8420Sécurité Informatique

INF8420Sécurité Informatique AuthentificationAuthentification

Authentification du serveur Certificat SSL

12

INF8420Sécurité Informatique

INF8420Sécurité Informatique AuthentificationAuthentification

Authentification du serveur Certificat SSL Autre

13

INF8420Sécurité Informatique

INF8420Sécurité Informatique

VÉRIFICATION DES DONNÉES USAGER VÉRIFICATION DES DONNÉES USAGER

(Input validation)

14

INF8420Sécurité Informatique

INF8420Sécurité Informatique

15

Vérification des données usager (Input validation)

Vérification des données usager (Input validation)

Ce qu’on fait

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Serveur

d’authentification

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Code source html

16

<form action="mailto:yourname@yourdomain.com" 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>

INF8420Sécurité Informatique

INF8420Sécurité Informatique

17

Vérification des données usager (Input validation)

Vérification des données usager (Input validation)

Ce qu’on devrais faire

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Serveur

d’authentification

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Attaques Injection SQL (SQL Injection) Cross Site Scripting (XSS) Variable tampering

18

INF8420Sécurité Informatique

INF8420Sécurité Informatique

SQL INJECTIONSQL INJECTIONVérification des données usager

19

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Injection SQL (SQL Injection)

20

extract($_POST);

$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

Client légitime

Server Web

Server BD

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Injection SQL (SQL Injection)

21

extract($_POST);

$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

Client légitime

Server Web

Server BD

danielXa4!dfga

select mem_code from MEMBRES

where mem_login = 'daniel'

and mem_pwd = 'Xa4!dfga'

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Injection SQL (SQL Injection)

22

extract($_POST);

$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

Server Web

Server BD

daniel' or '1'='1

select mem_code from MEMBRES

where mem_login = 'daniel'

and mem_pwd = '' or '1'='1'Client malicieux

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Injection SQL (SQL Injection)

23

daniel

x'; INSERT INTO members

('email','passwd','login_id','full_name') VALUES

('steve@unixwiz.net','hello','steve','Steve Friedl');--

Client malicieux

INF8420Sécurité Informatique

INF8420Sécurité Informatique

CROSS SITE SCRIPTINGCROSS SITE SCRIPTINGVérification des données usager

24

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Cross site scripting (XSS)

25

extract($_POST);

$req = "select * from POSTS

where title = '$stitle'

Client légitime

Server Web

Search

Gagner de l’argent

Search results for 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 …

<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>

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Cross site scripting (XSS)

26

extract($_POST);

$req = "select * from POSTS

where title = '$stitle'

Server Web

Search

<b>Super</b>

Search results for Super:

No results found

<html>

<head></head>

<body>

<h1>Search results for <b>Super</b> :</h1>

No results found

</itemize>

</body>

</html>

Client malicieux

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Cross site scripting (XSS)

27

Post

Your message has been posted

Client malicieux

<script type="text/javascript">document.location.href=“http://boteanu.com"</script>

id message

1 Hello

2 Bien fait ...

Server BD

3 <script type="text/javascript">document.location.href=“http://boteanu.com"</script>

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Cross site scripting (XSS)

28

<h1>Guestbook messages:</h1>

Hello<br>

Bien fait<br>

<script

type="text/javascript">document.location.hr

ef=“http://boteanu.com"</script><br>

...

Guestbook messages:Hello

Bien fait ...

id message

1 Hello

2 Bien fait ...

3 <script type="text/javascript">document.location.href=“http://b

oteanu.com"</script>

Server BD

Client légitime

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)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

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)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

INF8420Sécurité Informatique

INF8420Sécurité Informatique

HAMEÇONNAGE HAMEÇONNAGE Phishing

31

INF8420Sécurité Informatique

INF8420Sécurité Informatique

32

Hameçonnage(Phishing)

Hameçonnage(Phishing)

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Server Web Faux

Vous avez gagné 1 million.

Connectez vous sur le site de la banque en cliquant sur

https://www.desjard1ns .com

INF8420Sécurité Informatique

INF8420Sécurité Informatique Hameçonnage

(Phishing)Hameçonnage

(Phishing)

Comment se protéger ?

Filtrer le spam Authentification du serveur Eduquer les utilisateurs

33

INF8420Sécurité Informatique

INF8420Sécurité Informatique

LOGIQUE DE L’APPLICATIONLOGIQUE DE L’APPLICATION

34

INF8420Sécurité Informatique

INF8420Sécurité Informatique Logique de l’applicationLogique 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

INF8420Sécurité Informatique

INF8420Sécurité Informatique

CONCLUSIONSCONCLUSIONS

36

INF8420Sécurité Informatique

INF8420Sécurité Informatique ConclusionsConclusions

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

Recommended