Présentation Sécurité
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
80% des problèmes de sécurité sont applicatifs.
80% des budgets en sécurité sont investis en réseautique.
*Statistique de source inconnu approchant la légende urbaine
Sécurité Réseautique
Mur Pare Feu
Active Directory / LDAP
IDS
Clef RSA
VPN
VLAN
Fibre noir
Traçabilité
etc..
Sécurité Applicative
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
InfoSecurity Europe conference
Ninety per cent of office workers at London's Waterloo Station gave away
their computer password for a cheap pen, compared with 65 per cent last
year.
SDL
Security Development Lifecycle
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
• Ils se produisent à chaque fois qu'une
application prend des données écrites par
l'utilisateur et les envoie à un browser web
sans avoir au préalable validé ou codé ce
contenu
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
• L'injection se produit quand des données écrites
par l'utilisateur sont envoyées à un interpréteur
en tant qu'élément faisant partie d'une
commande ou d'une requête.
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
• Permet à des attaquants d'inclure du code et
des données hostiles, ayant pour résultat des
attaques dévastatrices, telle la compromission
totale d'un serveur.
• Affectent PHP, XML
• Toute structure qui accepte des noms de
fichiers ou des fichiers des utilisateurs
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
• Cette attaque force le navigateur d'une victime
authentifiée à envoyer une demande pré-
authentifiée à une application web vulnérable, qui
force alors le navigateur de la victime d'exécuter
une action hostile à l'avantage de l'attaquant.
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é
• Les applications utilisent rarement
correctement les fonctions cryptographiques
pour protéger les données et les droits d'accès
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
• La plupart du temps, les applications ne chiffrent
pas le trafic réseau quand il est nécessaire de
protéger des communications sensibles.
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
• Fréquemment, une application protège
seulement la fonctionnalité sensible en
empêchant l'affichage des liens ou des URLs
aux utilisateurs non autorisés.
• Les attaquants peuvent utiliser cette faiblesse
pour accéder et effectuer des opérations non
autorisées en accédant à ces URL directement.
Démonstration: http://localhost:8080/owasp/a10.jsp
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
Les mots de passe sont une protection illusoire
http://twinturbo.org/security/top-500-worst-passwords-2008/
11% des mots de passe courant y sont présent
Sans un login “lent” une attaque au dictionnaire/Hash prend
moins de deux heures peut importe l'algorithme
Références
OWASP.ORG
http://www.owasp.org/index.php/Top_10_2007
http://www.owasp.org/images/0/0f/OWASP_T10_-_2010_rc1.pdf
Chapitre Montréal - http://www.owasp.org/index.php/Montréal
Logiciels
HTTPWatch / Webscarab
IBM Rational AppScan
Wikipedia
Threat Modeling
Conférences
Blackhat.com, Février 16-19, Arlington, VA
Livres
The security Developement Lifecycle
Writing Secure Code
• Questions?
• Merci