La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

TYPO3 et la Sécurité de linformation 29.06.2011 Julien BOURDIN.

Présentations similaires


Présentation au sujet: "TYPO3 et la Sécurité de linformation 29.06.2011 Julien BOURDIN."— Transcription de la présentation:

1 TYPO3 et la Sécurité de linformation 29.06.2011 Julien BOURDIN

2 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Julien Bourdin Architecte PHP / Développeur TYPO3 KLEE GROUP Profil : Architecte, chef de projet Certifié TYPO3 Integrator

3 Introduction

4 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Objectif de la présentation Cette présentation a pour but de présenter un large ensemble de problèmes à prendre en compte dans un projet TYPO3. La présentation précisera en premier ce qui rentre dans le périmètre du terme « sécurité » et les premières conséquences. Ensuite, la présentation passera en revu un certain nombre des attaques possibles contre une application web en expliquant comment elles procèdent et surtout comment sen prémunir

5 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Sommaire Le concept de sécurité Les failles humaines et les piratages sociaux Les failles évidentes La stratégie pour limiter la portée des intrusions Les Deny Of Services (DOS) Le spam côté serveur Linjection SQL Linjection de script (XSS) Le Cross Site Request Forgery (CSRF)

6 Le concept de sécurité

7 La sécurité est une gestion des risques.

8 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Les différents risques Intégrité des données Confidentialité des données Disponibilité des services Responsabilité des personnes

9 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Les différents risques Intégrité des données Confidentialité des données Disponibilité des services Responsabilité des personnes => Transactions, Détection des incohérences, Sauvegarde => Authentification, Droits daccès, Détection dintrusion => Redondance, Récupération après incident, DOS, Supervision => Usage indu, Traçabilité, Maintenance

10 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 La gestion des risques Lister les évènements qui peuvent survenir Estimer la probabilité de les voir arriver Estimer le coût lorsquun évènement se produit Estimer le coût pour réduire la chance que lévènement en question se produise

11 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Le coût du risque Probabilité du risque que multiplie le coût de lévènement : P e x C /e A comparer avec le coût pour réduire le risque et au coût des autres risques. Conséquences Tout risque identifié nest pas un risque à corriger, on compare le coût de chacun des risques Tout comme il existe de la sur-qualité, il existe des abus de sécurité Il nest pas possible de réduire à 0 lensemble des risques !

12 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 La sécurité est une chaîne Chaque composant et chaque acteur apporte des risques Sur un type de menace donné, lapplication à la sécurité de son maillon le plus faible La solution la plus efficace pour réduire le risque nest pas nécessairement une solution technique Inutile de mettre une porte blindée si les murs sont en papier Inutile davoir une serrure 5 points si on laisse les clefs sous le paillasson Inutile davoir un SSO complexe si votre mot de passe est « 1234 » ou « password »

13 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 La sécurité est un investissement Pour les responsables de lapplication Pour les utilisateurs Pour les développeurs Les bonnes pratiques, une fois acquises, permettent un niveau de sécurité correcte à moindre coût.

14 Les failles humaines et les piratages sociaux

15 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Lêtre humain est la première faille de sécurité Tout collaborateur nest pas aussi bienveillant quon le souhaiterait : la majorité des sabotages sont le fait de collaborateurs dans les entreprises Les relations hiérarchiques sont plus fortes que les règles de sécurité : une secrétaire donne à son patron le mot de passe par téléphone sil lui demande. La vigilance nest pas une culture On ne vérifie pas lidentité de la personne qui arrose les plantes On prête son compte à son collègue pour ses congés On aime pas les contraintes pesantes !

16 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Il est important de former et dinformer Ce qui est vécu comme une contrainte est souvent contourné Ce qui semble anodin nest pas source dattention Il faut donc responsabiliser Les utilisateurs Les décideurs Les concepteurs Les développeurs Les exploitants

17 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Gestion des comptes Un compte utilisateur doit être attaché à une unique personne Laccès doit être restreint par des mots de passe non triviaux Interdiction dutiliser le login ou un mot de passe par défaut ! Interdiction dutiliser le prénom de sa fille ou son année de naissance ! Les droits doivent appartenir à des groupes Les droits données sont ceux nécessaires et suffisant pour les tâches confiées La délégation se fait en donnant des droits au compte du responsable par délégation Un mot de passe ne doit jamais être transmis, encore moins pas courriel

18 Les failles évidentes

19 Essayez donc /typo3/install avec joh316 !

20 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Les évidences quon oublie quand même Changer les mots de passe par défaut (admin/password et joh316) Mettez à jour TYPO3, ses extensions, ainsi que les logiciels support (LAMP) Supprimer les dossiers et fichiers inutiles (MISC,.bak,.sql) Désactivez l'opions "indexes" d'APACHE Limitez l'accès au BE aux personnes pertinentes par une technique forte (LAN ou VPN) Choisissez vos extensions (en évitant les "alpha/expérimental" de 2006)

21 Limiter la portée des intrusions

22 Une brèche ne doit pas emporter tout le système !

23 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Pour limiter la portée dune intrusion dans TYPO3 Limitez les comptes admin le plus possible (1 pour vous, 1 pour le client) Activez l'envoi de mail avertissant de la connexion dun compte admin Les droits décriture sur les fichiers ne sont pas donnés à APACHE en dehors de typo3temp et quelques répertoires bien choisis (idéalement les livraisons sont faites avec un compte distinct) Ne laissez pas en production d'extension donnant accès à la base de données ou au système de fichiers (quixplorer, phpmyadmin, terminal virtuel, etc...) Interdisez la livraison dextension en production depuis le BE (option dans l'install tool + droit sur le repertoire typo3conf/ext)

24 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Surveillez les indicateurs de votre site Vérifiez dans les logs si des URL inconnues existent (avec Awstats par exemple) Cherchez si des variations de bande passante/nombre de hit apparaissent Vérifiez que lespace disque, la mémoire occupée ou la charge CPU ne changent pas façon inattendue Réagissez en cas de doute !

25 Les déni de services

26

27 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Quest-ce que le déni de service ? Une attaque en déni de service vise à rendre impossible le bon fonctionnement dun service en saturant un composant de larchitecture rendant ces services. Il peut donc sagir de saturer de requête la plateforme mais cela peut aussi prendre des tours plus particuliers Saturation de la base de données Appel répété sur le moteur de recherche ou sur certaines pages vulnérables Ajout de scripts infinis dans un contenu Lobjet peut être simplement le déni de service mais cela peut aussi avoir comme but de faire disparaitre le serveur pour usurper ensuite son identité (spoofing)

28 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Se protéger contre le déni de service : attaque frontale Dimensionnez votre plateforme pour un traffique de pointe pertinent Activez les caches de TYPO3 et interdisez lutilisation de « no_cache » dans lURL (typo3/install) Mettez un reverse proxy avec du cache Limitez les pools de connexions MySQL et les processus Apache et mettez un timeout sur le reverse-proxy (Il faut pouvoir délester en retournant un message derreur) Supervisez et alertez en cas de montée en charge non anticipée

29 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Se protéger contre le déni de service : écritures Limitez les possibilités décriture sur le serveur : pas de dépôt de fichiers non régulés ni décriture en base N'écrivez pas en base de données depuis un accès anonyme sauf avec protection anti-robot (livre d'or, commentaire, etc...) Supervisez l'espace sur file system et dans la BDD : alerte lors de franchissement de seuils !

30 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Se protéger contre le déni de service : le cHash Le cache de TYPO3 est en base de données ! Une URL nest mise en cache que si elle répond à un certain nombre de critère dont la validité des paramètres soumis. Sont acceptées par défaut les variables « id » et « type » Sont acceptées sans signature les variables déclarées dans config.linkVars (TSsetup) A limiter par une plage de valeur config.linkVars=L(0-4) Les autres variables ne sont valables que si elles ont été signées par la génération dune URL depuis TYPO3. La signature, le cHash, est le résultat dun MD5 des données concaténées et dune clef privée du serveur

31 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Se protéger contre le déni de service : le cHash Ex : http://monsite.com/index.php?id=2&L=3&tx_ttnews[tt_news]=23 &cHash=a7024cb7 Générez vos URL à laide des méthodes de lAPI TYPO3 : TYPOLINK ou tslib_pibase->pi_linkTP_keepPIvars Générez une clef unique après linstallation de TYPO3 (install TOOLS) Forcez vos plugin à prendre en compte la validité des hachage : var $pi_checkCHash = TRUE; dans class tx_monplugin_pi1 extends tslib_pibase

32 Le spam côté serveur

33 Votre serveur peut devenir une source de spam !

34 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Un serveur capable denvoyer des mails doit être maîtrisé Le risque est de voir un écran exploité par un robot pour diffuser largement des publicités Un écran pouvant provoquer lenvoi dun mail doit respecter au moins une des règles ci-dessous : Le courriel est destiné à une unique boite à lettre (contact) Le formulaire ne peut être soumis quaprès un test identifiant un humain plutôt quun robot Le courriel aura un contenu fixe, dépendant de paramètre non modifiable sur lécran Les courriels ne peuvent être envoyés que sur un domaine interne (intranet) La quantité de mail envoyés par lapplication doit être supervisée Vous risquez, en cas de souci, de voir votre serveur denvoi de courriel dans les listes noires

35 Linjection SQL

36

37 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Linjection SQL Une injection SQL est lutilisation dinstruction du langage SQL au sein dun paramètre sensé ne contenir que de la donnée. Elle est le plus couramment utilisée sur les champs dun formulaire front-office mais peut également se faire par lURL.

38 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Exemple : la connexion par login et mot de passe SELECT * FROM USERS WHERE LOGIN = '$_GET['login']' AND PASSWORD = '$_GET['password']'; Il lui suffit donc de saisir Monlogin';# pour que la requête devienne : SELECT * FROM USERS WHERE LOGIN = 'Monlogin';#' AND PASSWORD = ''; La bonne méthode consiste à considérer la saisie comme des caractères non susceptibles de déclencher des commandes MySQL (voir mysql_real_escape_string) SELECT * FROM USERS WHERE LOGIN = 'Monlogin\'; \#' AND PASSWORD = ''; Note : en aucun cas, la requête présentée est la bonne façon de gérer lauthentification !

39 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Se prémunir de linjection SQL Ne donner à lutilisateur SQL que le minimum de droit nécessaire (pas de DROP, TRUNCATE,…) Ne pas stocker en base de mot de passe lisibles (fe_users !) Avoir des sauvegardes régulières de nos bases Toujours vérifier la nature des données insérées dans les requêtes Si possible, préférer les requêtes préparées (prepared statement) qui nattendent que de la données pour leurs paramètres (disponibles depuis TYPO3 4.5 LTS)

40 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Se prémunir de linjection SQL dans TYPO3 Utiliser lAPI $GLOBALS['TYPO3_DB']->exec_SELECTquery() $GLOBALS['TYPO3_DB']->exec_SELECTgetRows() $GLOBALS['TYPO3_DB']->exec_INSERTquery() $GLOBALS['TYPO3_DB']->exec_UPDATEquery() $GLOBALS['TYPO3_DB']->exec_DELETEquery() Lire la documentation de chaque méthode pour vérifier lusage de fullQuoteStr() Optional additional WHERE clauses put in the end of the query. NOTICE: You must escape values in this argument with $this- >fullQuoteStr() yourself!

41 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Se prémunir de linjection SQL dans TYPO3 foreach ($this->piVars as $key => $value) { $value = $GLOBALS['TYPO3_DB']->fullQuoteStr($value,'fe_users'); switch ($key) { case 'nom': if(strlen($value) > 2)$cond_array[]="fe_users.name LIKE '$value%'"; break;... default: break;

42 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Se prémunir de linjection SQL dans TYPO3 : 4.5 LTS $statement = $GLOBALS['TYPO3_DB']->prepare_SELECTquery('*', 'pages', 'pid = :pid'); for ($i = 1; $i < 10; $i++) { $statement->execute(array(':pid' => $i)); while (($row = $statement->fetch()) !== FALSE) { // Do something with your $row } $statement->free(); }

43

44 Linjection de script (XSS)

45 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Le Cross Site Scripting Le principe de cette stratégie dattaque est de profiter de laffichage de données envoyées par lutilisateur pour inclure des éléments de HTML ou de script non prévu Le moyen den faire une agression est dinclure du script qui va soumettre à lextérieur la saisie de données confidentielles Pour arriver à créer ce contexte, il faut fournir par un moyen ou un autre, une URL portant ces données. Ce sera typiquement par lenvoi de mails malicieux ou par une mise en ligne dun lien sur un autre site

46 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Le Cross Site Scripting : cas concret Un moteur de recherche propose un champ de saisie et passe les données sous la forme : http://www.monsite.fr/index.php?wsearch=mot_recherche Les résultats sont présentés avec un rappel « votre recherche : mot_recherche » Si on remplace dans lURL par wsearch= … On obtient une page dans laquelle, selon le traitement, on a éventuellement un script inclus et interprété là où lon croyait avoir un simple mot

47 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Le Cross Site Scripting : vérifier le type de vos sorties ! Normalement, une donnée utilisateur est dun type simple : nombre, texte, choix dans un menu déroulant,… Ce ne sont pas des typages techniques ! Une chaine de caractère et un texte simple ne sont pas la même chose Le cas simple : prendre la donnée à afficher et sassurer que tous les caractères ne sont pas intérprétés en HTML : htmlspecialchars Les cas complexes : autorisations de certaines balises par une analyse spécifique

48 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Le Cross Site Scripting : le RTE Si vous devez autoriser des saisies contenu du HTML, passez par le RTE de TYPO3 Le RTE se positionne sur le Front-End comme sur le Back-End La liste des balises autorisées est paramétrable en TYPOSCRIPT Laffichage des contenus associés est validée soit par un rendu TYPOSCRIPT parseFunc_RTE soit par une méthode de lAPI tslib_pibase->pi_RTEcssText($variable)

49 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Bonne pratique général : la programmation par contrat Chaque méthode définit le format de ses entrées et de ses sorties Les variables sont vérifiées par des assertions qui, en cas de non respect, stoppent lexécution function mafonction($a,$b,…){ assertion(type1,$a); assertion(type2,$b); $retour = corpsdemethode(); assertion(typesortie,$retour); return $retour; }

50 Le Cross Site Request Forgery (CSRF)

51 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Le Cross Site Request Forgery La plupart des outils utilisent, avec raison, des URL explicite: http://www.monsite.fr/index.php?action=supprimer&id=35 Ces URL sont donc prévisibles même pour un utilisateur nayant pas le droit dexécuter celle-ci Une personne va donc tenter de faire jouer cette URL à une personne ayant les droits à son insu En proposant le lien dans le href dune balise image sur une page susceptible dêtre consultée En proposant un javascript de la même façon

52 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Le Cross Site Request Forgery Lagression est difficile à détecter : cest une personne ayant les droits qui fait les actions La faiblesse est accru par les contexte de type SSO : la personne peut ne pas encore sêtre authentifié à lapplication et faire toutefois laction Lattaque est dautant plus facile à mener que les URL décriture passent leur paramètre en GET (possibilité dutiliser des liens simple)

53 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Le Cross Site Request Forgery : sen prémunir Il faut ajouter un élément non prévisible dans les URL Il faut que les URL ne soient pas rejouable Exemple de solution : ajouter une date et le cHash de TYPO3 http://www.monsite.fr/index.php?txmonextension[action]=supprimer& txmonextension[id]=35 &txmonextension[date]=timestamp&cHash=jgs37829DE

54

55 T3UNI 2011 TYPO3 et la Sécurité de linformation 29.06.2011 Webographie https://www.owasp.org/index.php/Main_Page http://dmitry-dulepov.com/article/linking-properly-in-your-typo3- code.html http://buzz.typo3.org/teams/core/article/typo3-45-lts-prepared- queries-are-the-way-to-go/ http://php.net/manual/en/pdo.prepared-statements.php http://fr.wikipedia.org/wiki/Cross-site_scripting http://fr.wikipedia.org/wiki/Cross-site_request_forgery


Télécharger ppt "TYPO3 et la Sécurité de linformation 29.06.2011 Julien BOURDIN."

Présentations similaires


Annonces Google