• Aucun résultat trouvé

Sécurité des bases de données Nicolas Jombart Alain Thivillon

N/A
N/A
Protected

Academic year: 2022

Partager "Sécurité des bases de données Nicolas Jombart Alain Thivillon"

Copied!
24
0
0

Texte intégral

(1)

HERVÉ SCHAUER CONSULTANTS HERVÉ SCHAUER CONSULTANTS

Cabinet de Consultants en Sécurité Informatique depuis 1989 Cabinet de Consultants en Sécurité Informatique depuis 1989

Spécialisé sur Unix, Windows, TCP/IP et Internet Spécialisé sur Unix, Windows, TCP/IP et Internet

Sécurité des bases de Sécurité des bases de

données données

Nicolas Jombart – Alain Thivillon

Nicolas Jombart – Alain Thivillon

(2)

Place des bases de données Place des bases de données

dans la sécurité du SI dans la sécurité du SI

Budgets Securité

vont d'abord à l'achat de système de sécurité (firewalls, IDS, ...) à la formation

à la sécurisation des applications

☞ le SGBD est le parent pauvre de la sécurité

Complexité

Les BD sont une affaire de spécialistes:

au niveau de leur 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, la sécurité est encore pire !

(3)

Contraintes sur la sécurité Contraintes sur la sécurité

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

d'expérience, 80% des serveurs de BD meurent avec le système et le SGBD initial: (Informix 7.2, Oracle 7.2, ...)

« If it works, don't fix it »

Conséquence : de nombreuses failles système et applicatives ne sont JAMAIS corrigées, surtout sur les réseaux internes

Criticité des applications : Arrêts impossibles

La sécurité passe en dernier

(4)

Contraintes (2) Contraintes (2)

Le SGBD est souvent un composant

installé par ou avec un logiciel tiers

ERP (SAP, Lawson) DataMining

Gestion de parc (SMS, ...)

Pour SQL Server : 223 Applications recensées en 2003

Géré via ce logiciel tiers

Dans une version limitée (exemple MSDE pour Epolicy Manager) dans un mode d'installation par défaut

☞ Sa configuration de sécurité est bien souvent encore plus

obscure !

et personne ne veut/peut prendre la responsabilité de modifier le paramétrage

(5)

Types d'attaques Types d'attaques

Attaques sur le SGBD lui même

failles connues classiques (buffer overflows, bugs d'autentification, injections SQL dans les procédures stockées, ...)

failles dans les applications associées: serveurs Web d'administration, applications Web, serveurs LDAP, démons snmp, programmes setuid root installés par le SGBD, ...

Mauvaises configurations

modes d'authentification dégradés (.rhosts, OPS$... ...) mots de passe par défaut

Interception de mots de passe

par écoute du réseau

par lecture de fichiers de configuration sur disque

(6)

Types d'attaques (2) Types d'attaques (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 chroot

critique chez les hébergeurs Web mutualisés

load data infile '/web/data/a/anotheruser/db.param' INTO hack ...

(7)

Securité Listener Securité Listener

Gestion des accès réseaux Oracle Problèmes de sécurité

Peut être arrêté à distance sans mot de passe

Peut être utilisé (via la fonction de trace) pour écraser n'importe quel fichier Oracle.

Attention aux entrées ExtProc qui peuvent permettre à des anonymes d'exécuter du code arbitraitre via les appels de procédures externes Multiples dénis de service

Possibilité:

De placer un mot de passe

De limiter l'accès réseau Oracle : tcp.validnode_checking = yes, tcp.invited_nodes = (x.x.x.x, ...)

Cf

http://www.integrigy.com/info/Integrigy_OracleDB_Listener_Security.pdf

(8)

Mots de passe par défaut Mots de passe par défaut

Combien d'installations Oracle 8 ont encore

SYSTEM/MANAGER et SYS/CHANGE_ON_INSTALL ?

Au moins 80% de nos audits (et c'est bien pratique, ...) Permet d'accéder à tous l'environnement à distance

Permer d'écrire des procédures stockées appelant le système

Mots de passe des comptes applicatifs

appli/appli ...

Comptes par défaut installés par Oracle ...

Possession des tables, privilèges DBA attribués abusivement, ..

(9)

Vulnérabilités Oracle Vulnérabilités Oracle

Multiples vulnérabilités découvertes en permanence

25 vulnérabilités en un seul jour

Principalement liées aux extensions (mod_plsql, ...)

Beaucoup de problèmes liées aux procédures stockées nécessaires au fonctionnement de IAS et autres ...

Exemple: gain des privilèges via le compte CTXSYS

Produit difficile à patcher

La suppression des comptes par défaut, une installation

minimalisée permet de réduire beaucoup de problèmes

(10)

Vulnérabilités Oracle Vulnérabilités Oracle

Problème le plus évident: utilisation d'une fonctionnalité dangereuse: « remote_os_authent »

Oracle fait confiance au client pour authentifier l'utilisateur

s'il envoie POUET, il est transformé en OPS$POUET (pas de mot de passe)

Hello, je suis POUET

ROMINET

sqlplus /@ROMINET



OK POUET !



(11)

En environnement Internet En environnement Internet

Typiquement utilisé pour « dynamiser » les sites Web

Contenu mobile (publications)

Commerce électronique / Notion de compte

Risques principaux sur la base de données :

Injection SQL

Compromission de la base depuis une autre machine compromise

Les bases de données sont souvent moins durcies

Comptes oracle/oracle

Systèmes d'exploitation non configurés pour la sécurité

Déni de service

(12)

Défense en profondeur Défense en profondeur











HTTP/HTTPS

Sqlnet/1521

Servlet/8080

Architecture en strates

(13)

Conseils de sécurité Conseils de sécurité

Durcir le système d'exploitation

Notamment l'accès, et les comptes

Supprimer les exemples, les autres applications satellites

Pour l'écriture de l'application

Principe de séparation des privilèges

Savoir quels comptes sont nécessaires (Création, Lecture, Mise à jour, Sauvegarde)

Appliquer ces rôles dans la base de données

Comptes SELECT seulement

Comptes ayant accès à toutes les tables/à certaines tables ...

Se prémunir contre l'injection SQL et le déni de service

En contrôlant ce qui est envoyé à la base de données

(14)

Risques applicatifs Risques applicatifs

Protection contre le déni de service

Conception de la base

Empêcher de générer trop de calculs ou trop de réponses

Injection SQL

Le principe de l'attaque : Insérer du code SQL dans une requête construite dynamiquement, pour modifier son comportement

Outrepasser par exemple un contrôle effectué par l'application

Fonctionnement d'une application :

1. Récupération de données client (formulaires, fichiers XML, ...)

2. Construction d'une requête SQL (SELECT, INSERT, procédure, ...) 3. Exécution de celle-ci sur la base

4. Traitement des résultats et présentation

(15)

Injection SQL Injection SQL

Différentes méthodes :

Modification simple de comportement

SELECT * FROM users WHERE name='hsc' and password='xxx' or 'x'='x'

Enchaînement de deux requêtes

SELECT * FROM table WHERE login='hsc' ; SELECT * FROM  passwords ­­'

Ne fonctionne plus avec la plupart des drivers Utilisations de fonctions spécifiques

master..xp_cmdshell (MS­SQL) shell("ping.exe 10.20.30.40")|

Utilisation de UNION

SELECT Ccnum, Ccexp FROM Creditcards WHERE Ccnum='xxx' 

(16)

Injection SQL Injection SQL

Exemple : Vulnérabilité IMP (Webmail) de janvier 2003

Écueils

Utilisation des quotes (simples ou doubles) et des commentaires Les résultats ne sont pas toujours visibles

Couche de présentation

Les possibilités peuvent dépendre du driver utilisé et de la base attaquée

$sql="select username from $default->db_pref_table where username='$user@$server'";

http://webmail/imp/mailbox.php3

?actionID=6&server=x&imapuser=x';somesql+--&pass=x"

(17)

De l'utilité des messages d'erreur De l'utilité des messages d'erreur

Exemple avec le driver ODBC/ASP

http://webserver/script.asp?id=0--%20%28SELECT%20*%20FROM%20table%29 Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] You have written a subquery that can return more than one field without using the EXISTS reserved word in the main query's FROM clause. Revise the SELECT statement of the subquery to request only one field.

/script.asp, line 15

(18)

Se prémunir Se prémunir

Sécurité du développement : valider les entrées

Règle fondamentale, ne protégera pas que contre l'injection SQL

Injection de code, modification de comportements, buffer overflows, ...

Utiliser les fonctions spécialement conçues par le driver

->quote() (Perl DBI)

mysql_escape_string (PHP) magic_quotes (PHP)

...

Se connecter avec des comptes différents si nécessaire

Compte read-only Compte read-write

(19)

Sécurité des ERP Sécurité des ERP

Plusieurs niveaux:

Sécurité systèmes

Sécurité réseau (chiffrement, firewalls, accès distants, ...) Sécurité intrinsèque (accès, rôles, interfaces, ...)

Sécurité de la base de données Télémaintenance

Doit être étudiée:

Par les équipes fonctionnelles Par les consultants ERP

Par l'équipe sécurité

(20)

Exemple : SAP Exemple : SAP

Peu d'études publiques de sécurité sur SAP (« La sécurité SAP pour les nuls »):

http://www.sapsecurity.net/

http://www.auditnet.org/sapaudit.htm

http://www.giac.org/certified_professionals/practicals/gsec/0760.php

Comptes systèmes créés sur Unix

<SID>adm, ora<SID>

Privilèges SAP :

SAP_ALL

S_A.SYSTEM

Certaines transactions permettent d'exécuter du code système (SM59, rôle S_RSZ_ADM).

SIDADM

(21)

SAP et Oracle SAP et Oracle

Mot de passe par défaut sur l'utilisateur SAPR3 : SAP Oracle en mode insécurisé

remote_os_authent = TRUE

Utilisateurs OPS$SIDADM et OPS$ORASID ont le pribilège SAPDBA

Pas de restrictions dans le LISTENER

(22)

Télémaintenance SAP Télémaintenance SAP

SAP Router:

Relais TCP générique authentifié

Permet d'atteindre toutes les applications du LAN (!)

Restrictions

Limitations IP Sources

Limitations IP Destinations et protocoles

http://help.sap.com/saphelp_nw04/helpdata/en/4f/992dbd446d11d189700000e8322d00/content.htm

Doit être placé dans une DMZ

(23)

Internet

VPN SSL Proxy HTTPS

LAN Infrastructure SAP

Mobiles

Sap Router

SAP HTTPS

Sap Waldorf

IPSEC

Firewall SAP

(24)

Conclusions Conclusions

Les SGBD sont:

Complexes

Leur sécurité n'est pas toujours maîtrisée

Les risques sont réels et parfois ignorés

expériences HSC

Il faut sensibiliser la chaîne:

appels d'offre/cahier des charges développeurs

recettes

dba, admins, réseau, ...

Questions ?

Références

Documents relatifs

A partir des informations du RCP des 2 produits PRIMALAN SIROP 125ML et 60ML, la posologie structurée devrait être : Enfant – Nourrisson de 2 ans à 12 ans de moins de 40Kg..

Toxicité Sur la base des données relatives aux composants individuels, ce produit est supposé avoir des valeurs expérimentales pour LC50/EC50/IC50 se situant entre 1 et 10 mg/l pour

Système de Gestion de Bases de Données SGBD Rappel sur les niveaux d’abstraction MySQL Principaux types de données disponibles Créer une BD phpMyAdmin Pour finir... Système de

Compte tenu des données disponibles, les critères de classification ne sont pas remplis. Substance

7.1 Précautions à prendre pour une manipulation sans danger Ni manger, ni boire et ni fumer dans les zones de travail. Pour manutentionner les récipients, utiliser des dispositifs

Dans l'état actuel des connaissances du fournisseur et dans les concentrations d'application, aucun ingrédient présent n'est classé comme dangereux pour la santé ou l'environnement,

Dans des conditions normales d'utilisation avec des conditions de ventilation suffisantes, aucune protection n'est nécessaire... Informations sur les propriétés physiques et

R51/53 Toxique pour les organismes aquatiques, peut entraîner des effets néfastes à long terme pour l'environnement aquatique. R65 Nocif: peut provoquer une atteinte des poumons