From 8d6f44d93849d89649a8ec7c7be0889caa6ea36c Mon Sep 17 00:00:00 2001 From: William Petit Date: Mon, 22 Jan 2018 22:13:04 +0100 Subject: [PATCH] =?UTF-8?q?Logomotion:=20S=C3=A9curit=C3=A9=20Web?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/img/Data_flow2.jpg | Bin 0 -> 42736 bytes .../securite_web/presentation/slides.md | 241 +++++++++++++++++- 2 files changed, 239 insertions(+), 2 deletions(-) create mode 100644 developpement/securite_web/presentation/img/Data_flow2.jpg diff --git a/developpement/securite_web/presentation/img/Data_flow2.jpg b/developpement/securite_web/presentation/img/Data_flow2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f6fd63ff10701df6c2abf0204119f7237a1fe31 GIT binary patch literal 42736 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 -## Métrologie appliquée à la sécurité +## La fondation OWASP + +> Open Web Application Security Project + +- Fondé en 2001 +- Organisation internationale à but non lucratif + +--- + +## Quelques projets en particulier + +- [OWASP Top Ten](https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project) - Top 10 des failles impactant les applications Web +- [OWASP Code Review Guide](https://www.owasp.org/index.php/Category:OWASP_Code_Review_Project) - Guide de la revue de code appliquée à la sécurité +- [OWASP ASVS](https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project) - Standard des vérifications de sécurité des applications Web +- [OWASP Webgoat](https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project) - Application(s) volontairement faillible(s) illustrant les principales failles de sécurité actuelles. + +--- + +## Les principales failles + +--- + +## Epicfaild + +https://forge.cadoles.com/wpetit/epicfaild + +### Lancer avec Docker +``` +docker run -it --rm -p 8888:8080 bornholm/epicfaild + +# Puis ouvrir l'URL http://localhost:8888/ +# dans votre navigateur +``` +--- + +## OWASP WebGoat + +https://github.com/WebGoat/WebGoat + +### Lancer avec Docker +``` +docker run -p 8080:8080 -it --rm webgoat/webgoat-8.0 /home/webgoat/start.sh + +# Puis ouvrir l'URL http://localhost:8080/WebGoat/ +# dans votre navigateur +``` +--- + +## Injections SQL (SQLI) + +### Pratique + +> Epicfaild: Gate 3 et 4 +> WebGoat: Injection Flaws (- XEE) + +--- + +## Risques + +- Vol de données +- Altération de données +- Prise de contrôle du serveur + +--- + +## Mitigation + +- Exécuter le moteur de base de données avec un utilisateur dédié. +- Valider TOUTES les entrées utilisateur. +- Utiliser des requêtes préparées. +- Installer un NIDS au niveau du serveur HTTP + +--- + +## Contournement de la session + +### Pratique + +> Epicfaild: Gate 3 +> WebGoat: Authentication Bypass + +--- + +## Risques + +- Vol de session +- Vol de données +- Prise de contrôle de l'application + +--- + +## Mitigation + +- Valider TOUTES les entrées utilisateurs +- Journaliser les origines des connexions + +--- + +## Cross Site Scripting (XSS) + +### Pratique + +> Epicfaild: Gate 1 +> WebGoat: Cross Site Scripting + +--- + +## Risques + +- Vol de sessions +- Hameçonnage + +--- + +## Mitigation + +- Valider TOUTES les entrées utilisateurs +- Assainir les données avant de faire leur rendu + +--- + +## Mauvais contrôle des accès + +### Pratique + +> WebGoat: Access Control Flaws + +--- + +## Risques + +- Accès non autorisés à des fonctionnalités critiques +- Vol de données +- Prise de contrôle de l'application + +--- + +## Mitigation + +- Journaliser tous les accès à des ressources critiques (qui, quoi, quand, quel contexte ?) +- Utiliser une double authentification pour l'accès aux ressources critiques + +> **Attention** L'obfuscation des accès n'est pas une méthode de sécurisation des points d'entrée. + +--- + +## Fuite d'informations sensibles + +### Pratique + +``` +Epicfaild: Gate 4/5 +WebGoat: Insecure communication, Client Side/Client side filtering +``` + +--- + +## Risques + +- Vol de données + +--- + +## Mitigation + +- Ne retourner à l'utilisateur que les données dont il a besoin (approche "frugale"). +- Limiter la zone d'action de l'utilisateur à ses seuls besoins. + +--- + +## Cross Site Request Forgery (CSRF) + +### Pratique + +> WebGoat: Request Forgeries + +--- + +## Risques + +- Hameçonnage +- Vol de session +- Vol d'identité + +--- + +## Mitigation + +- Utilisation de `nonce` (aussi appelé CSRF Token) +- Utilisation de requêtes `POST|PUT|DELETE` pour toutes les actions autres que la "consultation" +- S'assurer que les mécanismes de type "HTTP Method Override" ne sont pas activés en production ([Exemple pour Symfony3](http://symfony.com/doc/2.6/cookbook/routing/method_parameters.html#faking-the-method-with-method)) + +--- + +## Mauvaise politique de maintenance + +### Pratique + +> WebGoat: Vulnerable components + +--- + +## Risques + +Les risques dépendent du composant faillible... + +--- + +## Mitigation + +- Activer les mécanismes de mise à jour automatique +- Vérifier les mises à jour des librairies de manière automatisée. +- Suivre la publication des [CVE](https://cve.mitre.org/)/[NVD](https://nvd.nist.gov/) + +--- + +## Métrologie applicative appliquée à la sécurité ### Méthodologie générale +### Modélisation de menace +### Identification des flux de données ### Les facteurs d'une bonne métrique ### Exemple d'outil: Prometheus --- - ## Méthodologie générale 1. Définir le modèle de menace @@ -24,6 +242,25 @@ --- +## La modélisation de menace + +- Identification des **dépendances externes**. + Exemple: _serveur GNU/Linux, base de données_ +- Identification des **points d'entrées** + Exemple: _formulaire de contact, port de la base de données_ +- Identification des **assets** + Exemple: _Comptes utilisateurs de l'application, données personnelles, droits d'accès_ +- Identification des **niveaux de confiance** + Exemple: _Utilisateur anonyme, administrateur_ + +--- + +### Identification des flux de données + +![center](./img/Data_flow2.jpg?) + +--- + ## Les facteurs d'une bonne métrique - **Concision** _Le domaine de mesure est il correctement défini ? La métrique n'essaye t-elle pas de mesurer trop de choses ?_