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 0000000..1f6fd63 Binary files /dev/null and b/developpement/securite_web/presentation/img/Data_flow2.jpg differ diff --git a/developpement/securite_web/presentation/slides.md b/developpement/securite_web/presentation/slides.md index ff55597..2bcb5ed 100644 --- a/developpement/securite_web/presentation/slides.md +++ b/developpement/securite_web/presentation/slides.md @@ -4,16 +4,234 @@ ## William Petit - S.C.O.P. Cadoles --- + -## 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 ?_