Presentation Owasp
Presentation Owasp
Presentation Owasp
10 Février 2010
Stéphane Rainville
Sébastien Guimont
Ordre du Jour
Présentation
Mise en contexte
Social Engineering
Threat Modeling
Audit Applicatif
OWASP.ORG
Références
Statistique
Qui est responsable?
Quel est le budget?
Quel est le suivi?
Quel est le plan de test?
Quel sont les traces?
Quel est le plan de formation?
Quel sont les métriques?
“Social Engineering”
Kevin Mitnick
KeyLogger
Baiting
Secure Design
Threat Modeling
Fuzz Testing
Secure Coding
API Interdits
Cross-Site Scripting
SQL Injection
Cryptography
Threat Modeling
Examiner votre application sous différentes lentilles pour
identifier les vulnérabilités potentiels
Existe depuis 10 ans
Plusieurs méthodologies
STRIDE
Spoofing
Tampering
Repudiation
Information Disclosure
Denial of Service
Elevation of Privilege
Audit Applicatif
Qui est le responsable de la sécurité applicative?
Cahier de normes?
Quel est le plan de formation en sécurité?
Est-ce que les vulnérabilités sont répertorié?
DREAD 1 à 10
Plan de test?
Bogue de type “sécurité”
Plan de mitigation?
OWASP.ORG
Top 10 2007
1. Cross Site Scripting (XSS)
2. Failles d'injection
3. Exécution de fichier malicieux
4. Référence directe non sécurisée à un objet
5. Falsification de requête intersite (CSRF)
6. Fuite d'information / Traitement d'erreur incorrect
7. Violation de gestion d'authentification et de session
8. Stockage cryptographique non sécurisé
9. Communications non sécurisées
10. Manque de restriction d’accès URL
OWASP.ORG
Top 10 2010 rc1
1. Failles d'injection
2. Cross Site Scripting (XSS)
3. Violation de gestion d'authentification et de session
4. Référence directe non sécurisée à un objet
5. Falsification de requête intersite (CSRF)
6. Security Misconfiguration (Ajout)
7. Manque de restriction d’accès URL
8. Unvalidated Redirects and Forwards (Ajout)
9. Stockage cryptographique non sécurisé
10. Communications non sécurisées
11. Exécution de fichier malicieux (Enlever)
12. Fuite d'information / Traitement d'erreur incorrect (Enlever)
Cross Site Scripting
Démonstration: http://localhost:8080/owasp/a1.jsp
Cross Site Scripting
Défenses
• Validation d’entrée
• Codage approprié des données produites en
sortie
– Entité HTML
– Encodage des caractères (ISO-8859-1, UTF-8)
Failles d'injection
Démonstration: http://localhost:8080/owasp/a2.jsp
Failles d'injection
Défenses
• SQL
• Validation d’entrée
• Utilisation de “Prepared Statements”
• Execution de commande
• Réduire les privilèges de l’application
Exécution de fichier malicieux
Démonstration: http://localhost:8080/owasp/a3.jsp
Exécution de fichier malicieux
Défenses
• Validation d’entrée
• Validation des noms de fichier
• Interdire l’utilisation de certaines API de PHP
• “allow_url_fopen”, “allow_url_include”, etc.
• Ajoutez des règles à vos Firewalls
• Empêcher des connections de votre application vers
d’autres applications externes
Référence directe
non sécurisée à un objet
• Se produit quand un développeur expose une
référence à un objet d'exécution interne, tel
qu'un fichier, un dossier, un enregistrement de
base de données, ou une clef, comme
paramètre d'URL ou de formulaire. Les
attaquants peuvent manipuler ces références
pour avoir accès à d'autres objets sans
autorisation
Démonstration: http://localhost:8080/owasp/a4.jsp
Référence directe
non sécurisée à un objet
Défenses
• Evitez d'exposer des références d'objet privé aux
utilisateurs, chaque fois que possible, tels les clés
primaires ou noms de fichiers
• Validez sans retenue toutes les références aux
objets privés, via la méthode d'acceptation des
bonnes valeurs
• Vérifiez l'autorisation à tous les objets références
Falsification de requête intersite
Démonstration: http://localhost:8080/owasp/a5.jsp
Falsification de requête intersite
Défenses
• S'assurer qu'il n'y a pas de vulnérabilité de type
XSS dans l'application
• Insérer des tokens uniques et aléatoires dans
chaque formulaire et URL
Fuite d'information et
Traitement d'erreur incorrect
• Les applications peuvent involontairement
divulguer des informations sur leur configuration,
fonctionnements internes, ou violer la vie privée à
travers toute une variété de problèmes applicatifs.
Démonstration: http://localhost:8080/owasp/a6.jsp
Fuite d'information et
Traitement d'erreur incorrect
Défenses
• Désactivez ou limiter le traitement d'erreur
détaillé.
• Messages d'erreurs aseptisés
• Les erreurs venant de chaque couche soient
dûment vérifiées et configurées pour empêcher
les messages d'erreur d'être exploités par des
intrus.
Violation de gestion
d'authentification et de session
• Les droits d'accès aux comptes et les jetons de
session sont souvent incorrectement protégés.
Les attaquants compromettent les mots de passe,
les clefs, ou les jetons d'authentification identités
pour s'approprier les identités d'autres
utilisateurs.
Démonstration: http://localhost:8080/owasp/a7.jsp
Violation de gestion
d'authentification et de session
Défenses
• Aucun code “maison”
• “Remember Me” Cookie
• Page de login encrypté (SSL)
• Confirmation de login “très lent”
• Session Timeout
Stockage cryptographique non sécurisé
Démonstration: http://localhost:8080/owasp/a8.jsp
Stockage cryptographique non sécurisé
Défenses
• Aucun code “maison”
• Ne pas utiliser d'algorithme faible tel MD5,
SHA1, RC3 etc..
• Fichier de config encrypté ou inaccessible
Communications non sécurisées
Démonstration: http://localhost:8080/owasp/a9.jsp
Communications non sécurisées
Défenses
• Utilisation de SSL
• Vérifier les liens base de données
• Vérifier les liens inter-serveurs
• Fibre noir
• VPN
Manque de restriction d’accès URL
Défenses
• Test de pénétration (automatisé)
• Architecture centralisé d'accès
Conclusions
En ordre
Les dangers réels sont internes
Pénétration par “Social Engineering”
Problèmes applicatifs
Réseautique
• Merci