Académique Documents
Professionnel Documents
Culture Documents
à la Sécurité des
Bases de Données
Jean-Luc Hainaut
Plan de l’exposé
Motivations et introduction
Eléments de bases de données
Intégrité des données
Disponibilité des données
Confidentialité des données et données privées
Protection contre les intrusions (vol et fraude)
Conclusions
Références
2 2007-2008
Motivations et introduction
Eléments de bases de données
Intégrité des données
Disponibilité des données
Confidentialité des données et données privées
Protection contre les intrusions (vol et fraude)
Conclusions
Références
3 2007-2008
Motivations et introduction
4 2007-2008
Motivations et introduction
5 2007-2008
Motivations et introduction
Toute attaque contre les données met en danger le SI lui-même, et par là,
l'organisation toute entière.
6 2007-2008
Motivations et introduction
7 2007-2008
Motivations et introduction
Objectifs de la présentation :
présentation des concepts de base
identification et description de quelques menaces majeures
description d'éléments de solution
8 2007-2008
Motivations et introduction
Eléments de bases de données
Intégrité des données
Disponibilité des données
Confidentialité des données et données privées
Protection contre les intrusions (vol et fraude)
Conclusions
Références
9 2007-2008
Eléments de bases de données
Architecture d'un SI
BD et SGBD
Les acteurs
Le marché des SGBD
Le langage SQL (DDL, DML, statique, dynamique)
10 2007-2008
Eléments de bases de données
Architecture d'un SI
Système d'information :
sous-système de l'organisation chargé de la collecte, de la
mémorisation, de la gestion, de la distribution, du traitement et de la
présentation des informations nécessaires à son fonctionnement
(production + gestion);
transversal aux autres sous-systèmes de l'organisation : personnel,
financier, physique, etc.
échange des informations avec son environnement;
utilise des ressources techniques (équipement informatique,
logiciels) et humaines (programmeurs, concepteurs, analystes, chefs
de projet, gestionnaires)
11 2007-2008
Eléments de bases de données
Architecture d'un SI
12 2007-2008
Eléments de bases de données
Architecture d'un SI
communications
Interface Application
usagers utilisateur (business logic)
SGBD
BD
BD schéma
données
13 2007-2008
Eléments de bases de données
14 2007-2008
Eléments de bases de données
identifiant schéma
(primary key)
ligne
données
colonne colonne
obligatoire facultative
15 2007-2008
Eléments de bases de données
16 2007-2008
Eléments de bases de données
clé étrangère
(foreign key)
17 2007-2008
Eléments de bases de données
18 2007-2008
Eléments de bases de données
19 2007-2008
Eléments de bases de données
Les acteurs
20 2007-2008
Eléments de bases de données
Oracle : Oracle
IBM : DB2, Informix
Microsoft : SQL Server (issu de Sybase), Access
Sybase : Sybase ASE, SQL Anywhere
Sun : MySQL, Postgres (Open source)
+ une cinquantaine de moteurs SQL
Autres
IMS d'IBM (1969, toujours utilisé)
CODASYL (IDS de Bull, UDS de Siemens, IDMS de CA, etc., 1973,
toujours utilisés)
SGBD orientés objet (fin 90, faible pénétration, absorbés par
SGBDR)
SGBD XML (début 2000, faible pénétration, absorbés par SGBDR)
21 2007-2008
Eléments de bases de données
22 2007-2008
Eléments de bases de données
23 2007-2008
Eléments de bases de données
create table PRODUIT (NPRO .., LIBELLE .., PRIX .., QSTOCK ..,
primary key (NPRO), prédicat check définissant une
check (PRIX > 0) ) contrainte sur les valeurs de la
colonne PRIX.
24 2007-2008
Eléments de bases de données
25 2007-2008
Eléments de bases de données
26 2007-2008
Eléments de bases de données
27 2007-2008
Eléments de bases de données
select NCLI, NOM, ADRESSE from CLIENT cette condition sera toujours vraie,
même s'il n'existe pas de client dont
where NCLI = 'C400' or 'A' = 'A'; NCLI = 'C400'; toutes les lignes seront
sélectionnées
28 2007-2008
Eléments de bases de données
29 2007-2008
Eléments de bases de données
30 2007-2008
Eléments de bases de données
update CLIENT set CAT = 'B2 where CAT is null; -- ajouté le 8/3/2008
31 2007-2008
Eléments de bases de données
32 2007-2008
Eléments de bases de données
33 2007-2008
Eléments de bases de données
résultats
select NCLI, NOM into :R1, :R2
from CLIENT
where LOCALITE = :D1 and CAT = :D2
données
D1 = 'Toulouse';
acquisition des données
D2 = 'B1';
select NCLI, NOM into :R1, :R2
from CLIENT instruction SQL
34 2007-2008
Eléments de bases de données
35 2007-2008
Eléments de bases de données
36 2007-2008
Eléments de bases de données
37 2007-2008
Motivations et introduction
Eléments de bases de données
Intégrité des données
Disponibilité des données
Confidentialité des données et données privées
Protection contre les intrusions (vol et fraude)
Conclusions
Références
38 2007-2008
Intégrité des données
39 2007-2008
Intégrité des données
Intégrité (théorique) : Etat d'une base de données qui constitue une image
fidèle du domaine d'application. Remarque : impossible à vérifier.
Intégrité (pratique) : Etat d'une base de données qui respecte un ensemble
de contraintes d'intégrité. Remarque : techniquement vérifiable; simulation
imparfaite de l'intégrité théorique.
Contrainte d'intégrité : Propriété formelle que les données et leur évolution
doivent respecter à défaut de quoi elles sont réputées corrompues.
Contrainte d'intégrité statique : Propriété formelle que les données doivent
respecter à tout instant (ou à des instants prédéfinis), à défaut de quoi
elles sont réputées corrompues. Définit les états valides.
Contrainte d'intégrité dynamique : Ensemble des transitions d'état d'un
objet considérées comme valides. Toute transition non valide partant d'un
état valide conduit à un état corrompu des données, même si cet état
respecte toutes les contraintes d'intégrité statiques.
40 2007-2008
Intégrité des données
41 2007-2008
Intégrité des données
42 2007-2008
Intégrité des données
43 2007-2008
Intégrité des données
Menaces et contre-mesures
44 2007-2008
Intégrité des données
Menaces et contre-mesures
45 2007-2008
Intégrité des données
Menaces et contre-mesures
46 2007-2008
Intégrité des données
Menaces et contre-mesures
47 2007-2008
Intégrité des données
Menaces et contre-mesures
48 2007-2008
Intégrité des données
Menaces et contre-mesures
49 2007-2008
Intégrité des données
Menaces et contre-mesures
Incident matériel
Panne ou comportement inadéquat d'un composant matériel : mémoire
RAM, bus, processeur, carte contrôleur, terminal, modem, ligne, serveur
distant, etc.
Contre-mesures : maintenance préventive, redondance matérielle, ces
incidents doivent être prévus dans les procédures d'exploitation et les
programmes; application des procédures de reprise (check points,
transactions).
Perte du support
Le support de la base de données (en général disque magnétique) subit
un incident qui le rend irrécupérable. Les données qu'il contenait sont
perdues.
Contre-mesures : maintenance préventive, surveillance hardware
(SMART), redondance matérielle (mirroring, RAID), procédure de
restauration détaillée et bien maîtrisée (simulations régulières).
50 2007-2008
Intégrité des données
Menaces et contre-mesures
51 2007-2008
Motivations et introduction
Eléments de bases de données
Intégrité des données
Disponibilité des données
Confidentialité des données et données privées
Protection contre les intrusions (vol et fraude)
Conclusions
Références
52 2007-2008
Disponibilité des données
53 2007-2008
Disponibilité des données
54 2007-2008
Disponibilité des données
Menaces (1)
55 2007-2008
Disponibilité des données
Menaces (2)
56 2007-2008
Disponibilité des données
Contre-mesures
57 2007-2008
Disponibilité des données
• Définition
Suite d'instructions représentant une unité logique de traitement. Une
transaction comprend généralement plusieurs instructions de lecture et de
modification de données.
Exemples :
enregistrement d'une commande
réapprovisionnement d'un article en stock
transfert d'un montant d'un compte vers un autre
• Les programmes travaillant sur une base de données sont généralement
organisés en transactions
58 2007-2008
Disponibilité des données
• A.C.I.D
Le déroulement d'une transaction doit garantir quatre propriétés :
Atomicité, Cohérence, Indépendance et Durabilité.
• Atomicité
Une transaction est exécutée complètement ou pas du tout.
• Cohérence
Si les données sont intègres (respectent les contraintes d'intégrité) avant
l'exécution de la transaction, elle le sont encore après son exécution.
• Indépendance
La transaction est rédigée et exécutée indépendamment des autres
transactions qui s'exécutent simultanément.
• Durabilité
Si une transaction se termine normalement, les modifications qu'elle a
effectuées sont permanentes.
59 2007-2008
Disponibilité des données
Toutes les instructions SQL (DDL et DML) respectent les propriétés ACID.
60 2007-2008
Disponibilité des données
61 2007-2008
Disponibilité des données
Notion de journal
62 2007-2008
Disponibilité des données
Reprise à chaud
63 2007-2008
Disponibilité des données
64 2007-2008
Motivations et introduction
Eléments de bases de données
Intégrité des données
Disponibilité des données
Confidentialité des données et données privées
Protection contre les intrusions (vol et fraude)
Conclusions
Références
65 2007-2008
Confidentialité des données et données privées
Menaces
Modèles de contrôle d'accès
Contrôle d'accès en SQL
Inférence statistique
Suppression sécurisée des données
66 2007-2008
Confidentialité des données et données privées
Menaces
67 2007-2008
Confidentialité des données et données privées
Menaces
68 2007-2008
Confidentialité des données et données privées
Principes
• ce qui n'est pas autorisé est interdit
• l'utilisateur doit être enregistré
• l'utilisateur qui se connecte à une base de données doit avoir été
identifié et authentifié (généralement via le logiciel d'application)
69 2007-2008
Confidentialité des données et données privées
70 2007-2008
Confidentialité des données et données privées
71 2007-2008
Confidentialité des données et données privées
72 2007-2008
Confidentialité des données et données privées
F2 Lo2
R x
W
Ls
R
W x Lo1
F1
73 2007-2008
Confidentialité des données et données privées
74 2007-2008
Confidentialité des données et données privées
R
F1
U1
R
R/W
U2 F2
75 2007-2008
Confidentialité des données et données privées
R
F1
U1
W
R/W
U2 F2
U1 P F1
cT
! F1
U2 F2
76 2007-2008
Confidentialité des données et données privées
77 2007-2008
Confidentialité des données et données privées
Lu1
U1 P F1 Lf1
cT
x
no write-down F2
U2
Lu2 Lf2
78 2007-2008
Confidentialité des données et données privées
79 2007-2008
Confidentialité des données et données privées
80 2007-2008
Confidentialité des données et données privées
grant select
on PRODUIT Ce privilège est accordé à tous les
to public; utilisateurs, présents et futurs.
81 2007-2008
Confidentialité des données et données privées
to MERCIER;
82 2007-2008
Confidentialité des données et données privées
1. L'utilisateur U possède Dp
U P BD
les privilèges Du.
2. La procédure P possède
Du
les privilèges Dp.
3. L'utilisateur demande l'exécution de la procédure P.
4. Quels sont les privilèges de U vis-à-vis de la BD lors de l'exécution de P par U ?
Il est évident que les politiques Dp et Du Dp peuvent être dangereuses dès que
P possède plus de privilèges que U, lorsque ce dernier est un attaquant.
83 2007-2008
Confidentialité des données et données privées
84 2007-2008
Confidentialité des données et données privées
EMPLOYE
NEMP NOM LOCALITE CAT SALAIRE
B062 GOFFIN Namur B2 2.800
B112 HANSENNE Poitiers C1 3.050
B332 MONTI Genève B2 3.200
B512 GILLET Toulouse B1 3.355
C003 AVRON Toulouse B1 2.600
C123 MERCIER Namur C1 2.900
C400 FERARD Poitiers B2 2.650
D063 MERCIER Toulouse C2 2.800
F010 TOUSSAINT Poitiers C1 2.950
F011 PONCELET Toulouse B2 3.400
F400 JACOB Bruxelles C2 1.900
K111 VANBIST Lille B1 3.800
K729 NEUMAN Toulouse B1 2.450
L422 FRANK Namur C1 2.650
S127 VANDERKA Namur C1 3.600
S712 GUILLAUME Paris B1 1.950
85 2007-2008
Confidentialité des données et données privées
select NEMP
from EMPLOYE requête refusée
where SALAIRE between 3000 and 3500
On essaye la deuxième :
select count(*) as N N
from EMPLOYE 5
where LOCALITE = 'Toulouse'
86 2007-2008
Confidentialité des données et données privées
87 2007-2008
Confidentialité des données et données privées
88 2007-2008
Confidentialité des données et données privées
N Moy2
select count(*) as N, avg(SALAIRE) as Moy2
from EMPLOYE 16 2.878,4375
89 2007-2008
Confidentialité des données et données privées
90 2007-2008
Confidentialité des données et données privées
91 2007-2008
Confidentialité des données et données privées
ET R - ET
On observe que
ni R (trop grand) ni E (trop petit) n'ont une taille légale,
on ne peut donc pas calculer directement N, sumSR, n ni sum(S,C).
les échantillons ET et (R - ET) ont une taille légale,
les échantillons (ET - E) et (ET E) ont aussi une taille légale,
en effet : k count(T and not C) et count(T or C) (N - k)
92 2007-2008
Confidentialité des données et données privées
ET R - ET
93 2007-2008
Confidentialité des données et données privées
ET R - ET
94 2007-2008
Confidentialité des données et données privées
Un exemple
Soient
C (LOCALITE = 'Namur' and CAT = 'B2') (devrait identifier B062)
T (NOM < 'M') (M est la 13e lettre de l'alphabet)
E: EMPLOYE where
LOCALITE = 'Namur and CAT = 'B2'
R: EMPLOYE
95 2007-2008
Confidentialité des données et données privées
E: EMPLOYE where
LOCALITE = 'Namur' and CAT = 'B2'
R: EMPLOYE
96 2007-2008
Confidentialité des données et données privées
97 2007-2008
Confidentialité des données et données privées
E: EMPLOYE where
LOCALITE = 'Namur' and CAT = 'B2'
R: EMPLOYE
98 2007-2008
Confidentialité des données et données privées
99 2007-2008
Confidentialité des données et données privées
100 2007-2008
Confidentialité des données et données privées
101 2007-2008
Confidentialité des données et données privées
102 2007-2008
Confidentialité des données et données privées
104 2007-2008
Confidentialité des données et données privées
11. Même phénomène pour une mémoire flash : il est possible d'identifier
les données surchargées.
105 2007-2008
Motivations et introduction
Eléments de bases de données
Intégrité des données
Disponibilité des données
Confidentialité des données et données privées
Protection contre les intrusions (vol et fraude)
Conclusions
Références
106 2007-2008
Protection contre les intrusions (vol et fraude)
Menaces
Consultation non autorisée de données confidentielles
Vol de données
Modification frauduleuse de données
Destruction de données
Techniques d'attaque
Débordement de tampon (buffer overflow)
Injection de code SQL
Détournement de curseur
107 2007-2008
Protection contre les intrusions (vol et fraude)
108 2007-2008
Protection contre les intrusions (vol et fraude)
• pour rappel
• Attaque dirigée vers le SGBD ou vers l'application
• Attaque profitant de vulnérabilités des logiciels systèmes, et
particulièrement les SGBD.
109 2007-2008
Protection contre les intrusions (vol et fraude)
110 2007-2008
Protection contre les intrusions (vol et fraude)
N=1
111 2007-2008
Protection contre les intrusions (vol et fraude)
112 2007-2008
Protection contre les intrusions (vol et fraude)
113 2007-2008
Protection contre les intrusions (vol et fraude)
N=3
114 2007-2008
Protection contre les intrusions (vol et fraude)
where USER_ID = ' ' or ' ' = ' ' and PW = ' ' or ' ' = ' ' ;
True
115 2007-2008
Protection contre les intrusions (vol et fraude)
Identification agent
Login : ' or ' ' = ' ' --
select count(*) into :N
from SYS_USERS
where USER_ID = ' ' or ' ' = ' ';
116 2007-2008
Protection contre les intrusions (vol et fraude)
117 2007-2008
Protection contre les intrusions (vol et fraude)
118 2007-2008
Protection contre les intrusions (vol et fraude)
119 2007-2008
Protection contre les intrusions (vol et fraude)
SYS_USERS
Extraction des comptes d'un client
USER_ID PW autres
Client Compte Solde
B512 8400254-37 - 7250
B512 0309477-30 - 50
! ! !
120 2007-2008
Protection contre les intrusions (vol et fraude)
121 2007-2008
Protection contre les intrusions (vol et fraude)
Merci mille fois ! Je sais maintenant que je dois affiner mon attaque par Surcharge de
l'extraction en modifiant le nombre de colonnes de la 2e requête jusqu'à ce que ce message
disparaisse.
122 2007-2008
Protection contre les intrusions (vol et fraude)
123 2007-2008
Protection contre les intrusions (vol et fraude)
124 2007-2008
Protection contre les intrusions (vol et fraude)
125 2007-2008
Protection contre les intrusions (vol et fraude)
126 2007-2008
Protection contre les intrusions (vol et fraude)
127 2007-2008
Protection contre les intrusions (vol et fraude)
128 2007-2008
Protection contre les intrusions (vol et fraude)
129 2007-2008
Protection contre les intrusions (vol et fraude)
130 2007-2008
Protection contre les intrusions (vol et fraude)
131 2007-2008
Protection contre les intrusions (vol et fraude)
132 2007-2008
Protection contre les intrusions (vol et fraude)
133 2007-2008
Protection contre les intrusions (vol et fraude)
134 2007-2008
Protection contre les intrusions (vol et fraude)
135 2007-2008
Protection contre les intrusions (vol et fraude)
• Si, entre [2] et [4] on provoque artificiellement une erreur (on transmet
une valeur anormalement longue) et si ce type d'erreur n'est pas traité,
alors la procédure se termine mais la connexion et le curseur restent
ouverts (dangling cursor).
• Un attaquant peut alors récupérer le curseur ouvert pour extraire
illégalement les données selon la requête Q.
• Le curseur est souvent désigné par un nombre entier; sa valeur est soit
affichée dans le message d'erreur, soit retrouvée par essais successifs
par l'attaquant.
• L'attaquant
• est un utilisateur enregistré (légalement ou illégalement) mais qui
ne posséde pas assez de privilèges pour exécuter Q,
• peut créer une procédure et l'exécuter,
• exécute cette procédure pour récupérer le curseur laissé ouvert.
136 2007-2008
Motivations et introduction
Eléments de bases de données
Intégrité des données
Disponibilité des données
Confidentialité des données et données privées
Protection contre les intrusions (vol et fraude)
Conclusions
Références
137 2007-2008
Conclusions
138 2007-2008
Références
139 2007-2008
Références
140 2007-2008
Références
Connolly, T., Begg, C., Database Systems, Addison Wesley, 2005 [Chapter 18,
Security, 29 pages]
Litchfield, D., Dangling Cursor Snarfing: A New Class of Attack in Oracle, 23rd
November 2006, http://securitywatch.eweek.com/cursor-snarfing.pdf
Litchfield, D., Anley, C., Heasman, J., Grindlay, B., The Database Hacker's Handbook:
Defending Database Servers, Wiley, 2005
Workbench d'expérimentation des différentes vulnérabilités d'un site web :
http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
Clarke, J., SQL Injection Attacks and Defense, Syngress Publish., Elsevier, 2009
141 2007-2008