Sécurité dans les SGBD
Olivier PerrinIUT Nancy-CharlemagneDépartement InformatiqueUniversité Nancy 2
Plan
• Introduction sur la sécurité
• Contrôle d’accès
• Bases statistiques
• Sécurité discrétionnaire
• Sécurité obligatoire
• Architectures des bases de données multi-niveaux
• Contre-mesures
2
Introduction
• Un SGBD organise les données et donne aux utilisateurs des moyens pour extraire de l’information
• Cette information est basée sur des données: fonctions statistiques par exemple
• Si l’accès est incontrôlé, on n’y mettrait pas de données sensibles
• Problème de confidentialité: prévention de la divulgation non autorisée de données/d’information
• Au sens large, la sécurité informatique inclut également
• les problèmes d’intégrité: prévention de modification non autorisée des données
• disponibilité: prévention de refus d’accès autorisé à des données
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
3
Principes fondamentaux de la sécurité
• Identification/Authentification: qui êtes-vous, pouvez-vous le prouver ?
• Autorisation: pouvez-vous faire cette opération sur cet objet ?
• Intégrité: les données sont protégées contre toute modification accidentelle ou malveillante
• Confidentialité: les données restent privées et elles ne peuvent pas être vues par des utilisateurs non autorisés
• Audit: un audit et une journalisation sont essentiels pour résoudre les problèmes de sécurité a posteriori
• Non-répudiation: le système peut prouver qu’un utilisateur a fait une opération
• Disponibilité: capacité pour des systèmes de rester disponibles pour les utilisateurs légitimes (ex.: pas de refus de service)
4
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Définitions: menaces, vulnérabilités et attaques
• Une menace est un événement potentiel, malveillant ou pas, qui pourrait nuire à une ressource
• toute opération préjudiciable à vos ressources est une menace
• Une vulnérabilité est une faiblesse qui rend possible une menace
• peut être due à une mauvaise conception,
• à des erreurs de configuration ou
• à des techniques de codage inappropriées et non fiables
• Une attaque est une action qui exploite une vulnérabilité ou exécute une menace
• par ex., envoyer des données d'entrée malveillantes à une application ou
• saturer un réseau en vue d'entraîner un refus de service
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
5
Sécurité et SGBDs
• Les budgets autour de la sécurité vont d’abord
• à l'achat de système de sécurité (firewalls, systèmes de détection d’intrusion,…)
• à la formation
• à la sécurisation des applications
• le SGBD est le parent pauvre de la sécurité
• Complexité
• un SGBD est une affaire de spécialistes:
• au niveau de la gestion (DBA), au niveau de la programmation
• On ne peut pas sérieusement faire de l'Oracle deux fois par an
• Quand c'est le cas, c’est encore pire pour la sécurité !
6
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Sécurité et SGBDs (2)
• Rôle du DBA
• maintenir le SGBD, gérer les comptes, les applications, ...
• pas de formation sécurité : ne peut pas « imaginer » les attaques possibles
• Mises à jour des systèmes
• 80% des serveurs de BD meurent avec le système et le SGBD initial
• « If it works, don't fix it »
• conséquence: failles système et applicatives qui ne sont JAMAIS corrigées
• Criticité des applications
• arrêts impossibles
• la sécurité passe en dernier
7
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Les risques
• Attaques sur le SGBD lui même
• failles connues classiques (buffer overflows, bugs d'authentification…)
• failles dans les applications associées: serveurs Web d'administration, démons SNMP (Simple Network Management Protocol), programmes setuid root installés par le SGBD…
• Mauvaises configurations
• modes d'authentification dégradés (.rhosts…)
• mots de passe par défaut
• fichiers de la BD non sécurisés (lecture par tous)
• Interception de mots de passe
• par écoute du réseau
• par lecture de fichiers de configuration sur disque
8
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Les risques (2)
• Attaques sur les applicatifs
• injection SQL sur les applications Web
• détournement des requêtes effectuées par un ERP
• autorisations trop larges
• Attaques sur l'OS via le SGBD
• écriture/lecture de fichiers, exécution de commandes
• la base de données tourne avec des privilèges différents
• contournement de la politique de sécurité: 'safe_mode' de PHP par ex.
• critique chez les hébergeurs Web mutualisés
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
9
Quelques exemples: MS-SQL Server
• Produit complexe
• tourne avec les droits LocalSystem
• Deux modes d’authentification
• NT Only: authentification sur le domaine NT/2000
• Mixed-mode: idem + comptes internes (potentiellement, tous les utilisateurs du domaine ont accès au serveur)
• Jusqu’à SQL2000, compte SA sans mot de passe par défaut à la création !
• Ver SQLSlammer: buffer overflow, déni de service réseau, heap overflow
• Problème dans l'authentification (août 2002)
• débordement de buffer: http://www.securityfocus.com/bid/5411
10
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Quelques exemples: MS-SQL Server (2)
• Passage du mot de passe en clair pour les logins non NT
• simple XOR avec 0xA5
• Débordement de buffer/tas dans les procédures externes
• un seul octet à écraser et le système de privilèges est ignoré
• Procédures dangereuses
• xp_readerrorlog : lecture de fichiers
• xp_regread : lecture de la registry
• SQL Agent Job : submission de jobs, permet de monter les privilèges
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
11
Quelques exemples: MySQL
• SGBD "Light" et facile à mettre en place
• très très utilisé dans les « petits » sites
• système de privilèges mais fonctions manquantes (vues notamment)
• 2000 : gros problème d'authentification
• dans la phase d'authentification, le serveur ne vérifie que le nombre de caractères envoyés par le client : avec 32 essais il est possible de compromettre n'importe quel compte
• resurgit en 2002 dans COM_CHANGE_USER (changement d'identité)
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
12
Quelques exemples: MySQL (2)
• 2001: Buffer Overflow dans SELECT
• Plusieurs corruptions de mémoire dans certaines fonctions
• Lecture du fichier de configuration dans $DATADIR/my.cnf
• tous les utilisateurs ayant le privilège 'FILE' peuvent écrire dans ce répertoire
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
13
Quelles sont les informations visées ?
• Dans un SGBD, qu’est-ce qui intéresse l’adversaire ?
• contenu exact: salaire d’un employé
• bornes: salaire > 2000
• résultat négatif: nombre d’infractions n’est pas égal à 0
• existence: casier judiciaire
• valeur probable: inférence en combinant plusieurs attaques
• On doit appliquer les mesures de sécurité avec précision
• protéger les informations sensibles
• laisser libre accès aux informations non sensibles
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
14
Plan
• Introduction sur la sécurité
• Contrôle d’accès
• Bases statistiques
• Sécurité discrétionnaire
• Sécurité obligatoire
• Architectures des bases de données multi-niveaux
• Contre-mesures
15
Contrôle d’accès et SGBD
• Deux niveaux d’accès à un SGBD
• manipulation des données sur les relations de la base: protection sur les entrées de la base
• opérations composées comme des vues: restriction de ce que l’utilisateur peut faire sur la base
• Une politique de sécurité doit viser deux propriétés
• complétude: tous les attributs sont protégés, même si la protection indique accès libre
• cohérence: pas de conflit entre les différentes règles de sécurité
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
16
Contrôle d’accès et SGBD (2)
• Modèle de sécurité SQL: utilisateurs, opérations SQL, objets (tables, vues, attributs)
• À la création d’un objet, son propriétaire a tous les droits, y compris celui d’accorder ou de révoquer des privilèges à d’autres utilisateurs
• Un privilège est composé des éléments suivants
• utilisateur qui accorde le privilège
• utilisateur qui reçoit le privilège
• objet
• action permise
• transmission possible du privilège
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
17
Contrôle d’accès et SGBD (3)
• Exemple
• si Alice est propriétaire de la relation R, elle peut accorder le privilège de la consulter (SELECT) à Bob
• si elle indique que ce privilège est transmissible, Bob pourra à son tour accorder ce privilège à un autre utilisateur
• si Alice révoque le privilège à Bob, alors Bob et tous ceux qui ont reçu ce privilège de Bob perdent l’accès à la relation R
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
18
Plan
• Introduction sur la sécurité
• Contrôle d’accès
• Bases statistiques
• Sécurité discrétionnaire
• Sécurité obligatoire
• Architectures des bases de données multi-niveaux
• Contre-mesures
19
Les bases statistiques
• Une BD statistique permet de faire des requêtes statistiques sur des groupes de n-uplets
• Ces opérations sont:
• COUNT: nombre de valeurs dans une colonne
• SUM: somme des valeurs dans une colonne
• AVG: moyenne des valeurs dans une colonne
• MAX: maximum des valeurs dans une colonne
• MIN: minimum des valeurs dans une colonne
• Dans une requête statistique, il y a un prédicat à satisfaire et l'opération se fait sur les n-uplets qui satisfont ce prédicat
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
20
Les bases statistiques (2)
• Les BD statistiques posent le problème de sécurité suivant:
• ces BD contiennent des données qui sont sensibles individuellement
l'accès direct à ces données n'est donc pas permis
• les requêtes statistiques statistiques sont permises
mais elles doivent lire chaque donnée individuellement
• Propriété d'agrégation
• le niveau de sensibilité d'une opération calculée sur un groupe de valeurs est bien souvent inférieur au niveau de sensibilité des valeurs individuelles
• Problème d'inférence
• dans un tel cadre, il devient possible d'inférer de l'information sensible à partir de résultats statistiques moins sensibles
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
21
Les bases statistiques (3)
• Les attaques sur les BD statistiques sont de plusieurs types:
• attaque directe: opération sur un très petit échantillon
• attaque indirecte: combine le résultat de plusieurs opérations
• attaque par pisteur: une attaque indirecte redoutable
• attaque par système linéaire d'équations
• On peut résister aux attaques directes en forçant la taille de l'échantillon à être plus grand qu'un seuil
• il faut aussi forcer la taille du complément de l'échantillon
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
22
Les bases statistiques (4)
• Attaque par pisteur
• on doit d'abord identifier un pisteur général, un critère qui découpe la relation en 2 ensembles qui sont chacun plus grands que le seuil d'attaque directe (ex: 3)
• ex: dans la relation Étudiants, 'Prog = DESS' est un tel critère
• Ex: connaître la moyenne de Bob en 3 requêtes
Nom Sexe Prog Moyenne
Alice F DESS 65
Bob M M.Sc. 80
Carole F POLY 70
Diane F DESS 90
Éric M POLY 85
Frank M DESS 70
Relation Étudiants
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
23
Les bases statistiques (5)
• Comment procéder ?
• R1: Moyenne de ((étudiants de DESS) ou Bob):
• résultat du calcul de la moyenne d'Alice, Bob, Diane et Frank = 76,25
• R2: Moyenne de (étudiants pas de DESS) ou Bob):
• résultat du calcul de la moyenne de Bob, Carole et Éric = 78,33
• R3: Moyenne de tous les étudiants = 76,67
• On calcule ensuite: 4 x R1 + 3 x R2 - 6 x R3 = 80, la moyenne de Bob
• Pourquoi ?
• cela correspond aux sommes de moyenne: (Alice+Bob+Diane+Frank)+(Bob+Carole+Éric)-(Alice+Bob+Carole+Diane+Éric+Frank) = Bob
• Dans presque toutes les BD statistiques, il existe un pisteur général
24
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Plan
• Introduction sur la sécurité
• Contrôle d’accès
• Bases statistiques
• Sécurité discrétionnaire
• Sécurité obligatoire
• Architectures des bases de données multi-niveaux
• Contre-mesures
25
Sécurité discrétionnaire
• SQL gère les contrôles d’accès discrétionnaires
• Deux mécanismes
• les vues: permet de cacher des informations sensibles à des utilisateurs non autorisés
• sous-système d’autorisation: permet aux utilisateurs ayant des privilèges d’attribuer sélectivement et dynamiquement ces privilèges à d’autres utilisateurs (et de les révoquer)
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
26
Sécurité discrétionnaire (2)
• Contrôle d'accès discrétionnaire
• par des vues et le contrôle d'accès sur ces vues
• l'accès aux données seulement par des vues rappelle le modèle formel de Clark-Wilson
• comment donner accès à un utilisateur l'accès à une vue sans avoir à lui donner l'accès à toutes les relations sous-jacentes?
• par l'introduction d'un mode de référence
• ce mode est protégé par un privilège (comme les requêtes SQL)
• l’utilisateur n'a donc besoin que du privilège de voir la vue et de celui du mode référence sur les relations sous-jacentes à cette vue
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
27
Vues
• Les vues ont plusieurs avantages
• elles sont flexibles et permettent de définir des critères qui sont très proches de ce que les applications ont besoin
• elles permettent de définir des politiques de sécurité qui dépendent des données et des contextes d'opérations
• elles forment une sorte d'invocation contrôlée
• une vue sécure peut remplacer une étiquette de sécurité
• les données peuvent facilement être reclassées
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
28
Vues (2)
• Supposons une relation Employé qui indique s’il s’agit d’un homme ou d’une femme, son âge, son salaire et sa profession
• On définit la vue suivante
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
29
Vues (3)
• Permet de diviser conceptuellement la base de données en plusieurs parties
• Les informations sensibles peuvent être cachées aux utilisateurs non autorisés
• Ne permet pas de spécifier les opérations que certains utilisateurs sont autorisés à exécuter sur ces parties de la base
• Cette fonction est réalisée par l'instruction GRANT (cf. Privilèges)
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
30
Vues (4)
• Si l'application inclut une relation décrivant une table de contrôle d'accès, les vues peuvent y faire référence
• Pour qu'une vue permette la mise à jour, il faut que tous les attributs formant la clé primaire soient inclus dans la vue:
• de plus, il se peut que la mise à jour fasse en sorte que le n-uplet modifié ne satisfasse plus aux critères de la vue
• ex: dans la vue DESS, une requête pour modifier le programme à POLY ferait disparaître l’attribut de la vue
• une option dans la définition de la vue permet de bloquer ces écritures à l'aveugle
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
31
Vues (5)
• Une vue n'est pas qu'un objet. On peut aussi le considérer comme un sujet qui a ses propres privilèges d'accès: invocation contrôlée
• Désavantages des vues
• la vérification des conditions d'accès peut devenir lourde et lente
• il faut vérifier que l'ensemble des définition de vues capture complètement la politique de sécurité voulue
• certaines vues peuvent se superposer: incohérences dans les accès
• la partie sécuritaire du SGBD devient très grosse
• il faudra peut-être compléter la définition par l'ajout de procédures stockées sur le serveur de BD
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
32
Les privilèges
• Le créateur d'un objet obtient automatiquement tous les privilèges pour cet objet
• Par exemple, le créateur d'une relation T obtient automatiquement tous les privilèges sur T
• En outre, ces privilèges sont obtenus avec l'option « grant authority » (le privilège peut être donné à un autre utilisateur)
• Voici la syntaxe complète de l'instruction GRANT :
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
33
Les privilèges (2)
• Si Bob donne un privilège à Alice, Bob peut ensuite révoquer ce privilège accordé à Alice
• On utilise l'instruction REVOKE dont voici la syntaxe :
• GRANT OPTION FOR signifie que seul le droit de transfert doit être révoqué
• <liste privileges>, <objet> et <liste ID utilisateur> sont similaires à l'instruction GRANT
• <option> est égal à RESTRICT ou bien CASCADE
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
34
Les privilèges (3)
• RESTRICT vs. CASCADE
• supposons que p soit un privilège sur un objet et que l'utilisateur Bob accorde p à l'utilisateur Alice, qui à son tour l'accorde à l'utilisateur Charlie
• que se passe-t-il maintenant si Bob révoque p à Alice?
• le privilège p détenu par Charlie doit être « abandonné » car il provient de l'utilisateur Alice qui ne le détient plus
• L'objectif de l'option RESTRICT vs. CASCADE est d'éviter l'abandon de privilèges
• l'option RESTRICT a pour conséquence que le REVOKE échoue s'il conduit à l'abandon de privilèges
• CASCADE a pour conséquence que de tels privilèges sont également révoqués
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
35
Plan
• Introduction sur la sécurité
• Contrôle d’accès
• Bases statistiques
• Sécurité discrétionnaire
• Sécurité obligatoire
• Architectures des bases de données multi-niveaux
• Contre-mesures
36
Sécurité obligatoire
• Sécurité multi-niveaux (cas particulier)
• Dans une politique de sécurité multi-niveaux:
• les utilisateurs reçoivent un niveau d’habilitation
• les informations reçoivent un niveau de classification
• Niveaux dans un ensemble partiellement ordonné
• Très secret > Secret > Confidentiel > Public
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
37
SGBD et sécurité multi-niveaux
• Comment obtenir un niveau élevé de protection sur les éléments d'un SGBD?
• contrôle d'accès obligatoire (étiquettes de sécurité)
• les principaux vendeurs de SGBD (Oracle, Informix, Sybase) ont tous une version MAC de leur système, évaluée au niveau B1 du Livre Orange
• Modèle simplifié de Bell-La Padula
• soit S, un ensemble d’utilisateurs du système du SGBD
• soit O, un ensemble d'objets (ex: tables, relations, n-uplets, ...)
• une relation d'ordre partiel sur les étiquettes L, aussi appelées classes d'accès
• soit fs : S L et fo : O L, assignant respectivement des classes d'accès aux utilisateurs et aux objets
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
38
BD et sécurité multi-niveaux (2)
• Règle de simple sécurité:
• un sujet s peut lire un objet o seulement si sa classe d'accès domine celle de l'objet, c'est-à-dire fo(o) fs(s)
• Règle étoile:
• un sujet s peut modifier un objet o seulement si sa classe d'accès est dominée par celle de l'objet, c'est-à-dire fs(s) fo(o)
• Ces politiques s'appliquent aux manipulations sur le SGBD et s'adressent aux flots d'information directs
• L'information peut aussi s'échapper par des canaux cachés
• refuser l'accès à une requête donne de l'information à un utilisateur s'il ne savait pas déjà que la requête allait échouer...
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
39
Mise en œuvre d’une politique
• La mise en œuvre d’une politique de sécurité multi-niveaux dans un SGBD pose plusieurs problèmes:
• granularité de classification
• gestion des leurres
• inférence d’information
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
40
Granularité de la classification
• Quel est le grain d’information qui reçoit la classification ?
• Possibilités: schéma, relation, n-uplet, attribut de n-uplet
• Interprétation de la granularité n-uplet
• si on attribue un niveau de classification n à un n-uplet, l’information représentée par le n-uplet est de niveau n
• soit Employe(Dupont, H, 30, 30 000, programmeur) un n-uplet avec le niveau de classification Secret
• l’information «Dupont est un employé masculin ayant 30 ans, gagnant 30 000 euros et travaillant comme programmeur» est classée au niveau Secret
• pas très fin, pourquoi ?
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
41
Granularité de la classification (2)
• Dupont est un employé
• Dupont est un homme
• Dupont a 30 ans
• Dupont gagne 30000 euros
• Dupont est programmeur
• Toutes ces informations sont au même niveau
• Gestion par le SGBD:
• ajout d’un attribut TC (Tuple-Class) qui décrit le niveau
• Employé(Nom, H/F, Age, Salaire, Profession, TC)
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
42
Granularité de la classification (3)
• Interprétation de la granularité attribut de n-uplet
• Employé(Nom, P, H, P, Age, C, Salaire, S, Profession, C)
• Interprétation
• si on affecte un niveau de classification ni à l’attribut Ai d’un n-uplet t, alors ni représente la classification de l’information correspondant à l’association entre les attributs Ak et Ai où Ak est la clé de la relation
• exemple: Employé(Dupont, P, H, P, Age, C, Salaire, S, Profession, C)
• l’information «Dupont est un employé» est classée au niveau P
• l’information «Dupont gagne 30000 euros» est classée au niveau S
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
43
Étiquetage des objets
• Chaque élément de la BD reçoit une étiquette: attribut, n-uplet, relation ou BD
• un n-uplet pourrait contenir des attributs ayant des étiquettes différentes
• ces étiquettes ne sont pas visibles aux utilisateurs
• L'étiquette a un rôle différent à chaque niveau:
• BD: l'utilisateur peut-il accéder aux relations de la BD?
• relation: l'utilisateur peut-il accéder aux n-uplets de la relation?
• n-uplet: l'utilisateur peut-il accéder aux attributs du n-uplet?
• attribut: l'utilisateur peut-il accéder à cet attribut en particulier?
• Le schéma d'étiquetage devra être complet et cohérent
• complet signifie que chaque élément a son étiquette
• cohérent signifie que les étiquettes n'entrent pas en conflit
44
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Étiquetage des objets (2)
• Exemple
• la relation Réservations [P]
• les lettres entre crochets indique la classe d'accès
• C = Confidentiel, P = Public
• pour chaque attribut, la classe d'accès suit la valeur de l’attribut
• pour chaque n-uplet, la classe d'accès est à droite du n-uplet
Vols Dest Sièges
AC909 [C] Montréal [C] 4 [C] [C]
AA334 [P] Chicago [P] 10 [P] [P]
AF211 [P] Paris [C] 7 [C] [C]
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
45
Étiquetage des objets (3)
• Pour qu'un utilisateur puisse observer les attributs d'un n-uplet, il faudra que:
• la classe d'accès de chaque attribut domine celle du n-uplet,
• la classe d'accès du n-uplet domine celle de sa relation,
• la classe d'accès de la relation domine celle de la BD
• Règle d'intégrité des entités (multi-niveaux)
• aucune composante de la clé primaire d'une relation de base ne peut être nulle
• toutes les composantes de la clé primaire d'une relation de base ont la même classe d'accès
• les classes d'accès de tous les autres attributs du n-uplet dominent la classe d'accès de la clé primaire
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
46
Étiquetage des objets (4)
• Règle d'intégrité référentielle (multi-niveaux)
• le n-uplet référencé par une clé étrangère doit exister
• la classe d'accès de la clé étrangère domine celle de la clé primaire correspondante
• Données visibles
• une relation R est visible à un utilisateur s si la classe d'accès de l’utilisateur domine celle de la relation (fo(R) fs(s))
• un attribut ri est visible à un utilisateur s si la classe d'accès de l’utilisateur domine celle de l’attribut (fo(ri) fs(s)). Dans le cas contraire,
• si l’attribut ri fait partie de la clé primaire, tout le n-uplet est invisible
• sinon, seul l’attribut est invisible à l’utilisateur
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
47
Étiquetage des objets (5)
• Relations dérivées
• la classe d'accès d'une vue domine celles de toutes les relations utilisées dans la définition de la vue
• l'instance d'une vue à une classe d'accès donnée correspond au résultat de l'évaluation de la définition de la vue à cette classe.
Relationsde base
Vue (c) Usager
Vue (*)
Évaluer (c) Observer (c)
Observer (*)
Évaluer (*)
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
48
Polyinstanciation
• Dans un SGBD multi-niveaux, un utilisateur 'bas' ne peut connaître l'existence de données 'hautes'.
• il pourrait être tenter de mettre à jour un attribut contenant une donnée 'haute'
• ex: pour le 'Vol = AF211', il veut changer 'Dest = Nice' et 'Sièges = 0'
Vols Dest Sièges
AC909 [C] Montréal [C] 4 [C] [C]
AA334 [P] Chicago [P] 10 [P] [P]
AF211 [P] Paris [C] 7 [C] [C]
AF211 [P] Paris [C] 0 [P] [C]
AF211 [P] Nice [P] 7 [C] [C]
49
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Polyinstanciation (2)
• Comment la BD doit-elle réagir?
• interdire la mise à jour
canal caché !
• remplacer les anciennes valeurs par les nouvelles
perte de l'information qui était mise en place par un utilisateur 'haut'
• effectuer la mise à jour tout en conservant l'ancienne valeur !
polyinstantiation
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
50
Polyinstanciation (3)
• On insère le n-uplet
• Ceci donne plusieurs n-uplets avec la même clé primaire !
• pour résoudre cette situation, on étend la notion de clé primaire, en y incorporant les classes d'accès de chaque attribut du n-uplet
• cette définition nous donne de nouveau une clé primaire unique
• Règle d'intégrité de la polyinstantiation
• si 2 n-uplets d'une relation de base ont la même clé primaire et qu'un des attributs a la même classe d'accès dans les 2 n-uplets, alors la valeur de l’attribut sera la même dans les 2 n-uplets
• si 2 n-uplets d'une relation de base ont la même clé primaire et que, pour un des attributs, les classes d'accès diffèrent, alors la valeur de l’attribut pourra être différente entre les 2 n-uplets
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
51
Polyinstanciation (4)
• Exemple de polyinstantiation
• sur le n-uplet 'Vol = AF211'
• après mise à jour 'Dest = Nice' [P] et 'Sièges = 0' [P]
Vols Dest Sièges
AC909 [C] Montréal [C] 4 [C] [C]
AA334 [P] Chicago [P] 10 [P] [P]
AF211 [P] Paris [C] 7 [C] [C]
AF211 [P] Paris [C] 0 [P] [C]
AF211 [P] Nice [P] 7 [C] [C]
AF211 [P] Nice [P] 0 [P] [P]
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
52
Polyinstanciation: discussion
• Une BD représente normalement des faits réels
• la polyinstantiation introduit une ambiguïté autour de ces faits, puisqu'il existe plusieurs entrées pour la même entité externe
• à quel point est-il nécessaire de protéger un objet de haut niveau par un objet de plus bas niveau et une fausse histoire ?
• Ces problèmes découlent d'une décision de camoufler l'existence d'objets confidentiels
• on peut concevoir un SGBD multi-niveaux où tous les objets sont visibles, mais dont le contenu est protégé par les classes d'accès
• même les étiquettes de sécurité sur les objets sont visibles
• dans ce cas, la révélation de l'existence d'un objet ne constitue pas un flot d'information illégal (canal caché)
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
53
Polyinstanciation: discussion (2)
• Reprenons l'exemple qui nous a amené à parler de polyinstantiation
• pour 'Vol = AF211', il pourrait vouloir changer 'Dest = Nice' et 'Sièges = 0'
• dans ce cas, on peut maintenant indiquer sans danger à l’utilisateur que la requête est refusée
• Il reste un problème:
• comment ajouter des données à une relation sans violer la règle étoile ?
• en déléguant la création d'objet à un utilisateur spécial CRÉATEUR, dont la classe d'accès correspond au bas du système
• des données bidon sont écrites dans l'objet
• la classe d'objet est ensuite montée à celle désirée par l’utilisateur original
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
54
Insertion et contraintes d’intégrité
• Comment intégrer au SGDB multi-niveaux les contraintes d'intégrité (CI) ?
• ex: validation des attributs, des domaines et de la cohérence
• chaque CI est aussi un objet du SGBD, avec sa classe d'accès
• Règle sur les CI
• la classe d'accès d'une CI doit dominer la classe d'accès de toutes les relations sur lesquelles elle s'applique
• Problème:
• un utilisateur 'bas' essaie de mettre à jour un attribut 'bas', contrôlé par une CI 'haute' (donc invisible à l’utilisateur)
• si on refuse l'accès, on indique à l’utilisateur qu'il existe une CI qu'il ne voit pas (canal caché)
• si on accorde l'accès, on pourrait violer la contrainte d'intégrité
55
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Insertion et contraintes d’intégrité (2)
• Les contraintes d'intégrité peuvent elles aussi être créées à bas niveau et montées au niveau désiré
• les utilisateurs 'bas' connaissent l'existence de la contrainte, mais pas son contenu
• un utilisateur qui tente de mettre à jour un attribut 'bas' contrôlé par une contrainte 'haute' pourra sans problèmes se faire dire que la mise à jour lui sera refusée
• Si une relation contient des n-uplets dont la clé primaire est confidentielle, on pourra séparer la relation en 2 sous-relations:
• une relation où toutes les clés primaires sont publiques
• une relation où toutes les clés primaires sont confidentielles
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
56
Insertion et contraintes d’intégrité (3)
• Exemple de séparation de relation
• Désavantages de l'insertion à bas niveau
• la création d'objets et l'assignation de la classe d'accès finale est sous le contrôle d'utilisateurs de bas niveau
• ceci peut entrer en conflit avec la politique de sécurité déjà établie
• une étape supplémentaire est requise, donc délai d'opération
Vols Dest Sièges
AA334 [P] Chicago [P] 10 [P] [P]
AF211 [P] Paris [C] 7 [C] [C]
Vols Dest Sièges
AC909 [C] Montréal [C] 4 [C] [C]
Réservations publiques
Réservations confidentielles
57
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Gestion des leurres
• Un leurre est une information fausse introduite dans une base de données multi-niveaux pour protéger l’existence d’une information sensible
• Supposons que l’information «Dupont gagne 30000 euros» est classée au niveau Secret
• on note cette information [Secret]Salaire(Dupont, 30000) où [Secret]p signifie que l’information représenté par p est classée au niveau Secret
• Supposons que la base contient également [Public]Salaire(Dupont, 22000)
• c’est un leurre
• Pourquoi ?
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
58
Gestion des leurres (2)
• Supposons qu’un utilisateur U de niveau Public pose la question: quel est le salaire de Dupont ?
• La base ne peut pas répondre puisque l’information est secrète
• si la base répond: vous n’avez pas le droit de connaître cette information
• U peut déduire que le niveau de l’information n’est pas public, c’est déjà une information !
• cela est représenté par ∃x, [Secret]Salaire(Dupont, x)
• mais on peut considérer que cette information doit être secrète[Secret](∃x, [Secret]Salaire(Dupont, x))
• Dans ce cas, la base ne peut rien répondre, et utilise le leurre !
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
59
Inférence non autorisée d’informations
• Pour simplifier le discours, on ne considère que deux niveaux de classification: Secret et Public
• Le problème: est-il possible de déduire des informations de niveau Secret en utilisant des informations de niveau Public ?
• Premier exemple
• on suppose la relation suivante:
IDVol Avion Marchandise Classification
1254 A Bottes Public
1254 B Yahourts Public
1254 C Bombe atomique Secret
1254 D Beurre Public
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
60
Inférence non autorisée d’informations (2)
• Un utilisateur sans le niveau Secret verra:
• S’il essaie d’insérer le n-uplet(1254,C,Toto,Public), il y aura un message d’erreur, et donc il pourra déduire qu’il y a une marchandise secrète dans (1254,C) !
IDVol Avion Marchandise Classification
1254 A Bottes Public
1254 B Yahourts Public
1254 D Beurre Public
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
61
Inférence non autorisée d’informations (3)
• On considère la base suivante:
• On suppose que l’on n’a pas le droit de demander dans quel département travaille un employé
• Exemples d’inférence
• Q1 = (Âge; Nom = ‘Alice’)
• Q2 = (Département; Âge < 40)
62
Nom Emploi Âge Salaire Département Bureau
Alice Manager 35 60000 Marketing 2ème
Bob Secrétaire 35 25000 Marketing 2ème
Charles Secrétaire 40 30000 Production 1er
Denise Manager 45 65000 Ventes 2ème
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Inférence non autorisée d’informations (3)
• On considère la base suivante:
• On suppose que l’on n’a pas le droit de demander dans quel département travaille un employé
• Exemples d’inférence
• Q1 = (Âge; Nom = ‘Alice’)
• Q2 = (Département; Âge < 40)
62
Nom Emploi Âge Salaire Département Bureau
Alice Manager 35 60000 Marketing 2ème
Bob Secrétaire 35 25000 Marketing 2ème
Charles Secrétaire 40 30000 Production 1er
Denise Manager 45 65000 Ventes 2ème
Alice travaille dans ledépartement Marketing
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Inférence non autorisée d’informations (4)
• On considère la base suivante:
• On suppose que l’on ne peut pas demander quel est le salaire d’un employé
• Exemples d’inférence
• Q1 = (Âge; Nom = ‘Charles’)
• Q2 = (Âge, Salaire; Âge 40)
63
Nom Emploi Âge Salaire Département Bureau
Alice Manager 35 60000 Marketing 2ème
Bob Secrétaire 35 25000 Marketing 2ème
Charles Secrétaire 40 30000 Production 1er
Denise Manager 45 65000 Ventes 2ème
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Inférence non autorisée d’informations (4)
• On considère la base suivante:
• On suppose que l’on ne peut pas demander quel est le salaire d’un employé
• Exemples d’inférence
• Q1 = (Âge; Nom = ‘Charles’)
• Q2 = (Âge, Salaire; Âge 40)
63
Nom Emploi Âge Salaire Département Bureau
Alice Manager 35 60000 Marketing 2ème
Bob Secrétaire 35 25000 Marketing 2ème
Charles Secrétaire 40 30000 Production 1er
Denise Manager 45 65000 Ventes 2ème
Charles gagne 30000
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Inférence non autorisée d’informations (5)
• On considère la base suivante:
• Exemples d’inférence
• Q1 = (Nom; Emploi = ‘Manager’ ^ Âge = 35)
• Q2 = (Salaire; Emploi = ‘Manager’)
• Q3 = (Salaire; Âge = 35)
64
Nom Emploi Âge Salaire Département Bureau
Alice Manager 35 60000 Marketing 2ème
Bob Secrétaire 35 25000 Marketing 2ème
Charles Secrétaire 40 30000 Production 1er
Denise Manager 45 65000 Ventes 2ème
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Inférence non autorisée d’informations (5)
• On considère la base suivante:
• Exemples d’inférence
• Q1 = (Nom; Emploi = ‘Manager’ ^ Âge = 35)
• Q2 = (Salaire; Emploi = ‘Manager’)
• Q3 = (Salaire; Âge = 35)
64
Nom Emploi Âge Salaire Département Bureau
Alice Manager 35 60000 Marketing 2ème
Bob Secrétaire 35 25000 Marketing 2ème
Charles Secrétaire 40 30000 Production 1er
Denise Manager 45 65000 Ventes 2ème
Alice gagne 60000
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Inférence non autorisée d’informations (6)
• On considère la base suivante:
• Exemples d’inférence
• Q1 = (Salaire; Département = ‘Marketing’ ^ Bureau = ‘2ème’)
• Q2 = (Salaire; Emploi = ‘Manager’ ^ Bureau = ‘2ème’)
• Q3 = (Nom; Bureau = ‘2ème’)
65
Nom Emploi Âge Salaire Département Bureau
Alice Manager 35 60000 Marketing 2ème
Bob Secrétaire 35 25000 Marketing 2ème
Charles Secrétaire 40 30000 Production 1er
Denise Manager 45 65000 Ventes 2ème
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Inférence non autorisée d’informations (6)
• On considère la base suivante:
• Exemples d’inférence
• Q1 = (Salaire; Département = ‘Marketing’ ^ Bureau = ‘2ème’)
• Q2 = (Salaire; Emploi = ‘Manager’ ^ Bureau = ‘2ème’)
• Q3 = (Nom; Bureau = ‘2ème’)
65
Nom Emploi Âge Salaire Département Bureau
Alice Manager 35 60000 Marketing 2ème
Bob Secrétaire 35 25000 Marketing 2ème
Charles Secrétaire 40 30000 Production 1er
Denise Manager 45 65000 Ventes 2ème
Le manager qui travaille au 2ème gagne 60000
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Plan
• Introduction sur la sécurité
• Contrôle d’accès
• Bases statistiques
• Sécurité discrétionnaire
• Sécurité obligatoire
• Architectures des bases de données multi-niveaux
• Contre-mesures
66
Architectures des bases de données multi-niveaux
• Plusieurs types d’approches
• approche filtre
• approche noyau de sécurité
• approche sujet de confiance
• approche réplication
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
67
Approche filtre
• Principes
• on ajoute un filtre au SGBD, entre le client et le SGBD
• Chaque client est associé à un niveau de sécurité unique (mono-niveau)
• Le serveur gère toutes les données de la base (multi-niveaux)
• Comment fonctionne le filtre ?
• authentifie le client pour connaître son niveau de sécurité
• intercepte toutes les requêtes émises par les clients et toutes les réponses fournies par le serveur
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
68
Approche filtre (2)
• Fonctionnalités du filtre:
• modifie la requête émise par le client pour que l’évaluation de la requête ne fournisse pas de données ayant un niveau de classification supérieur au niveau du client
• filtre le résultat pour éliminer toutes les données qui n’auraient pas un niveau de sécurité inférieur ou égal à celui du client
• Avantages
• simplicité de mise en œuvre (pas de modification des fonctionnalités)
• le filtre est de confiance
• Inconvénients
• vulnérabilité aux attaques (le SGBD n’est pas de confiance)
• contournement du filtre
69
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Approche noyau de sécurité
• Principes
• développer un SGBD en s’appuyant sur un OS multi-niveaux
• l’authentification et les contrôles d’accès sont réalisés par l’OS
• un OS multi-niveaux ne gère que des fichiers mono-niveau (un fichier ne contient que des données ayant le même niveau de classification)
• partitionnement des données du SGBD sur plusieurs fichiers
• Avantages
• le SGBD n’a pas besoin d’être de confiance (on se repose sur l’OS)
• en fait, on fait l’hypothèse que certaines fonctions du SGBD sont de confiance
70
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Approche noyau de sécurité (2)
• Inconvénients
• performances à cause du partitionnement lié à la gestion mono-niveau des fichiers
• avoir un OS multi-niveaux
• Exemple
• Oracle OS-MAC et DB-MAC
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
71
Approche sujet de confiance
• Principe
• variante de l’approche noyau de sécurité
• les contrôles (accès et authentification) ne sont pas effectués par l’OS mais par le SGBD
• le SGBD gère son propre ensemble de niveaux de sécurité
• il effectue les contrôles d’accès conformément à la relation d’ordre sur cet ensemble
• Avantages
• gain de performance
• Inconvénients
• adaptation du SGBD à l’OS
72
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Approche réplication
• Principe
• un serveur séparé pour gérer toutes les données de niveau inférieur à un niveau donné
• autant de serveurs que de niveaux
• les données sont répliquées
• une donnée de niveau n est répliquée dans tous les serveurs de niveau supérieur à n
• les serveurs SGBD peuvent ne pas être de confiance
• c’est le serveur frontal qui est de confiance (authentification et contrôle d’accès)
73
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Approche réplication (2)
• Avantages
• un seul serveur intervient pour évaluer la requête du client
• le serveur ne contient que les données que le client le droit d’observer
• pas de possibilité de détourner les données/requêtes
• Inconvénients
• réplication des données: cohérence, dégradation des performances
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
74
Plan
• Introduction sur la sécurité
• Contrôle d’accès
• Bases statistiques
• Sécurité discrétionnaire
• Sécurité obligatoire
• Architectures des bases de données multi-niveaux
• Contre-mesures
75
Contre-mesures
• Contre-mesures SGBD statistiques
• exiger une taille très grande de l'échantillon
• permutation aléatoire des lignes de la relation
• ajout de petites perturbations autour des données
• meilleur design de la BD
• ex: séparation de la relation Étudiants en 2 sous-relations
Nom ID
Alice 108
Bob 204
Carole 833
Diane 048
Éric 564
Frank 444
ID Sexe Prog Moyenne
108 F DESS 65
204 M M.Sc. 80
833 F POLY 70
048 F DESS 90
564 M POLY 85
444 M DESS 70
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
76
Contre-mesures (2)
• Ne jamais exposer un serveur BD sur Internet
• s'il y a besoin d'accès directs au SGBD, il faut utiliser des tunnels, un firewall avec authentification forte ouvrant le flux, ...
• il faut être sûr de filtrer les ports SGBD (1521, 1527, 3306, 1434, 135 ...)
• attention aux hébergeurs pas chers !
• Ne jamais partager un serveur BD
• Durcissement de l'OS
• va limiter l'exploitation de failles
• appliquer les procédures classiques
• non installation des composants annexes, limitation des services réseaux, application régulière des correctifs de sécurité…
77
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Contre-mesures (3)
• Appliquer le principe de défense en profondeur et de cloisonnement par une architecture en strates
Internet
WWW
Tomcat
SGBD
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
78
Contre-mesures (4)
• Durcissement installation SGBD
• changer les mots de passe par défaut, supprimer les comptes par défaut
• ne pas installer les exemples, les applications annexes,…
• Séparation des privilèges
• recenser les rôles dans l'application (admin, mise à jour, lecture…)
• appliquer ces rôles dans les privilèges attribués
• Audit des applicatifs
• parler sécurité avec les développeurs (SQL Injection, débordements de buffer, validation d'entrées…)
• recherche des points critiques, des flux utilisateurs…
• audit des sources Java, ASP, PHP, Perl, C…
79
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
Contre-mesures (5)
• Se connecter avec des comptes différents si nécessaire
• compte read-only
• compte read-write
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
80
Contre-mesures: injection
• Valider les entrées
• ne protégera pas que des problèmes d'injection SQL
• Utiliser les fonctions spécialement conçues du driver
• exemple avec perl DBI : $dbh->quote(); mysql_escape_string(), etc.
• attention, ça ne règle pas tout : il devient possible d'insérer du code SQL dans la base elle-même (par exemple, création d'un compte admin'--)
• problème des entiers : vérifier que les entiers sont bien numériques ...
• Ne donner à l'utilisateur (SGBD) de l'application que les droits nécessaires
• par exemple SELECT dans le cas d'une simple consultation
• SELECT, INSERT et UPDATE dans la plupart des cas
Introduction » Contrôle d’accès » Bases statistiques » Discrétionnaire » Obligatoire » Architectures » Contre-mesures
81