Logomotion: Sécurité Web

This commit is contained in:
wpetit 2018-01-22 22:13:04 +01:00 committed by Benjamin Bohard
parent 3d295bac6e
commit 8d6f44d938
2 changed files with 239 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -4,16 +4,234 @@
## William Petit - S.C.O.P. Cadoles
---
<!-- page_number: true -->
## 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 ?_