Présentation effectuée au RMLL 2018 sur "La securite au coeur des projets web" par Christophe Villeneuve .
A partir de cette conférence, vous allez mieux comprendre l'importance de la sécurité dans les projets webs et de se protéger
→ Lié à l’internet • Impliquant : – Problématique côté client – Problématique côté serveur • Concerne : – Les sites web – Les applications web – Les services web • Accélérer avec l’émergence du Web 2.0
– 40 millions de comptes • 2011 – Sony diversitissement – 77 millions de comptes (+ numéro CB) • 2014 – JP Morgan – 7,6 millions d'informations utilisateurs • Et bien d’autres : – Heartland – 130 millions de numéros de cartes bancaires – Deutsche Télécom : 17 millions de perdus – Wordpress – 18 millions de profils
: RGPD – Règlement Général sur la Protection des Données • Mise en place par Union Européenne • But : – Harmoniser et normaliser les différentes lois qui existent dans les pays de l’UE • En réalité : – une fuite de données, un piratage ou la simple consultation de données • Obligation d'alerter la CNIL mais aussi aux personnes impactées
Design Patterns Git Integration Continue Refactoring CMS WebServices Framework Tests DDOS Hijacking SQL Botnets XSS Injection CSRF Phishing Tronjan • Réalisation d'un projet web → avec peu de sécurité
DNS / Réseaux • Système d'authentification faible – SSH • La gestion des droits – Maillons faibles • Les mots de passes systèmes – Admin du poste / compte utilisateur • Bases de données – Stockage des informations sensibles • Partage de fichiers – Périphériques hardware • Serveurs à l'abandon • Vulnérabilités web – Voir les rapports OWASP
Serveur Web Firewall Base de données Access Control Points sensibles pour un attaquant XSS CSRF Click Jacking XML/JSON Injection SQL Injection Direct Object Reference Token Directory Traversal Packet Sniffing Paramètre facilfication
Security Project • Organisation à but non lucratif, • Communauté ouverte • Connu – Liste des risques de sécurité • Top 10 c'est : • Des outils • Des API • De la documentation • Des guides • Des conférences • Des blogs • Des contenus – Audio / Vidéo – Podcast
A2- Violation d'authentification et de Session A3- Données sensibles accessible A4- XML External Entity (XXE) A5- Contrôle d'accès cassé A6- Mauvaise configuration de sécurité A7- Cross-Site Scripting (XSS) A8- Désérialisation non sécurisée A9- Utilisation de composants connus vulnérables A10 -Gestion de log insuffisante et de monitoring 2013 2017 N M Hausse Baisse Identique Nouveau Baisse Merge A1- Failles d'injection A2- Violation d'authentification et de Session A3- Cross-Site Scripting (XSS) A4- Référence directe non sécurisée à un objet A5- Mauvaise configuration de sécurité A6- Données sensibles accessible A7- Manque de sécurité au niveau des rôles A8- Falsification de requête (CSRF) A9- Utilisation de composants connus vulnérables A10- Redirections non validées N M N N
n'est souvent qu'une affaire de secondes, voire de minutes • Ne pas contre-attaquer le hacker • Disparition • Il est énervé • TODO • Notez l'adresse IP de l'ordinateur victime de l'attaque • Notez l'heure de l'attaque. • Notez le temps de l'attaque. • Log(s)
commandes et des requêtes – Utiliser comme API sécurisée • Valider les données d'entrée côté serveur • Échapper les caractères spéciaux – Utiliser une syntaxe d'échappement spécifique pour l'interpréteur • Utilisez LIMIT • Prévoir des contrôles SQL dans les requêtes – pour empêcher la divulgation massive des enregistrements
de protection <?php echo "Un petit risque de <script>alert ('hack')</script>"; ?> • Avec une protection <?php echo htmlentities("Un petit risque de <script>alert ('hack')</script>"); ?>
cassé • A6- Mauvaise configuration de sécurité • A5- Contrôle d'accès cassé • A6- Mauvaise configuration de sécurité accès non autorisé aux objets par le biais de la modification des paramètres
JSON • Corriger format utilisé XML – Les processeurs – Les bibliothèques • Verrou structuré supplémentaire – Externe XML – Requêtes structurées (dtd processin) • Validation des éléments entrée du site du serveur de la liste blanche • Vérifier les fonctionnalités de téléchargement de fichiers – XML ou XSL • Les outils SAST peuvent aider à détecter XXE dans le code source
Désérialisation non sécurisée • A8 - Désérialisation non sécurisée • Permet l'exécution de code à distance • Manipulation d'objets sensibles → sur les plates-formes affectées class car [ public string color; } var redCarObj =new car(); redCarObj.color = 'rouge'; redCarObj Processus de sérialisation redCarObj sérialisé redCarObj processus de désérialisation redCarObj sérialisé
→ provenant de sources non fiables • Vérifier l'intégrité sur tous les objets sérialisés • Appliquer des contraintes de type strictes → Lors de la désertification • Isoler pour exécuter le code désérialisé • Exceptions et échecs de désérialisation de journaux • Restreindre la connectivité réseau → A partir de serveurs qui se désérialisent
Utilisation de composants connus vulnérables • A9 - Utilisation de composants connus vulnérables • Boîtes à outils Web • Widgets • Moteurs d'exécution • Serveurs web • Bibliothèques de framework • Etc. composants construits par d'autres Dépendances
Gestion de log insuffisante et de monitoring • A10 - Gestion de log insuffisante et de monitoring • Utilisation : Forum / CMS / ... • Manque • Surveillance • Alerte • Enregistrement • Scan de mot de passes • Mot de passe unique / utilisateurs
– soient enregistrés • Assurez-vous que les logs sont générés – Format (facilement) utilisable • Prévoir que les transactions de grande valeur – Piste d'audit, suivi... • Alerte efficace pour répondre dans des délais cours • Etablir un processus de réponse aux incidents