OWASP Top 10 2010 rc 1 Les 10

  • Slides: 41
Download presentation
OWASP Top 10 - 2010 rc 1 Les 10 risques les plus critiques des

OWASP Top 10 - 2010 rc 1 Les 10 risques les plus critiques des applications Web. Sébastien Gioria (French Chapter Leader & OWASP Global Education Comittee Member) sebastien. gioria@owasp. org (english slides from Dave Wichers (COO, Aspect Security & ) OWASP Boardmember) dave. wichers@owasp. org Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation http: //www. owasp. org/

Qui suis-je ? Consultant Sécurité au sein du cabinet de commissaires aux compte Groupe

Qui suis-je ? Consultant Sécurité au sein du cabinet de commissaires aux compte Groupe Y (s. gioria@groupey. fr) Ø Président du CLUSIR Poitou-Charentes Ø OWASP France Leader & Evangéliste (sebastien. gioria@owasp. org) Ø Membre du Comité OWASP d’Education Ø +12 ans d’expérience en Sécurité des Systèmes d’Information Différents postes de manager SSI dans la banque, l’assurance et les télécoms q Expertise Technique ü Pen. Testing, Digital Forensics ü S-SDLC ü Gestion du risque, Architectures fonctionnelles, Audits ü Consulting et Formation en Réseaux et Sécurité q q Domaines de prédilection : ü Web 4. 2 : Web. Services, Insécurité du Web. q

Quels sont les changements ? On parle de risques, et non plus uniquement de

Quels sont les changements ? On parle de risques, et non plus uniquement de vulnérabilités. • Le titre devient donc : “ Les 10 risques les plus critiques des applications Web”. La méthodologie de calcul du risque de l’OWASP Top 10 • Basée sur la méthodologie OWASP Risk Rating Methodology 2 risques ajoutés, 2 retirés • Ajout: A 6 – Mauvaise configuration • Ex-A 10 du Top 10 2004 : Configuration non sécurisée • Ajout: A 8 – Redirections • Très courant et très dangereux, et mal considéré • Retiré: A 3 – Execution de fichier malveillant • Principalement une faille PHP… • Retiré: A 6 –Mauvaise gestion des erreurs et fuite d’informations • Une faille très courante, ne générant que rarement un risque

Mapping Top 10 2007 - Top 10 20 OWASP Top 10 – 2007 (Previous)

Mapping Top 10 2007 - Top 10 20 OWASP Top 10 – 2007 (Previous) OWASP Top 10 – 2010 (New) A 2 – Injection Flaws A 1 – Injection A 1 – Cross Site Scripting (XSS) A 2 – Cross Site Scripting (XSS) A 7 – Broken Authentication and Session Management A 3 – Broken Authentication and Session Management A 4 – Insecure Direct Object Reference = A 4 – Insecure Direct Object References A 5 – Cross Site Request Forgery (CSRF) = A 5 – Cross Site Request Forgery (CSRF) <was T 10 2004 A 10 – Insecure Configuration Management> + A 6 – Security Misconfiguration (NEW) A 10 – Failure to Restrict URL Access <not in T 10 2007> A 7 – Failure to Restrict URL Access + A 8 – Unvalidated Redirects and Forwards (NEW) A 8 – Insecure Cryptographic Storage A 9 – Insecure Communications A 10 – Insufficient Transport Layer Protection A 3 – Malicious File Execution A 6 – Information Leakage and Improper Error Handling - <dropped from T 10 2010>

Méthode d’évaluation du risque de l’OWASP Top 10 Exemple basé sur XSS Threat Agent

Méthode d’évaluation du risque de l’OWASP Top 10 Exemple basé sur XSS Threat Agent ? 1 2 3 Attack Vector Weakness Prevalence Weakness Detectability Technical Impact Easy Widespread Easy Severe Average Common Average Moderate Difficult Uncommon Difficult Minor 2 1 1 2 1. 3 * 2 Business Impact ? 2. 6 Evaluation pondérée du risque

L’OWASP Top 10 (2010 rc 1) A 1: Injection A 2: Cross Site Scripting

L’OWASP Top 10 (2010 rc 1) A 1: Injection A 2: Cross Site Scripting (XSS) A 3: Mauvaise gestion des sessions et de l’authentification A 5: Cross Site Request Forgery (CSRF) A 6: Mauvaise configuration sécurité A 7: Mauvaise restriction d’accès à une URL A 9: Mauvais stockage cryptographique A 10: Protection insuffisante lors du transport des données A 4: Référence directe non sécurisée à un objet A 8: Redirections non valdiées http: //www. owasp. org/index. php/Top_10

A 1 – Injection L’injection • Envoyer à une application des données générant un

A 1 – Injection L’injection • Envoyer à une application des données générant un comportement non attendu. Les Interpréteurs • Utilisent les chaines et les interpretent comme des commandes • SQL, OS Shell, LDAP, XPath, Hibernate, etc… L’injection SQL est toujours commune • Enormément d’applications y sont sensibles • Même s’il est très simple de s’en affranchir…. Impact • Souvent très sévère. Le plupart du temps l’ensemble des données de la base sont lisibles ou modifiables. • Cela peut même aller jusqu’au schéma de la base, les comptes ou un accès OS….

ATTACK Custom Code Billing Human Resrcs Acct: 5424 -9383 -2039 -4029 Acct: 4128 -0004

ATTACK Custom Code Billing Human Resrcs Acct: 5424 -9383 -2039 -4029 Acct: 4128 -0004 -1234 -0293 3. L’application transfère les données à la requête SQL Web Server Firewall Hardened OS Firewall DB Table "SELECT * FROM Account Summary Account: accounts WHERE SKU: acct=‘’ OR 1=1 -Acct: 5424 -6066 -2134 -4334 Acct: 4128 -7574 -3921 -0192 ’" 1. L’application fourni un formulaire 2. L’attaquant envoi son attaque dans les données du formulaire App Server Network Layer Directories request APPLICATION Web Services HTTPSQL respons e query HTTP Legacy Systems Databases Communication Knowledge Mgmt E-Commerce Bus. Functions Administration Transactions Accounts Finance Application Layer Exemple sur l’injection SQL 4. Le SGBD lance la requête contenant l’attaqueet renvoie le résultats à l’application. 5. L’application renvoie ce résultat à l’utilisateur

A 1 – Comment se protéger < Recommandations 1. Se passer des interpréteurs, 2.

A 1 – Comment se protéger < Recommandations 1. Se passer des interpréteurs, 2. Utiliser une interface permettant de préparer les requêtes (ex, prepared statements, or les procédures stockées), 3. Encoder toutes les données fournies par l’utilisateur avant de les passer à l’interpréteur 4 Toujours effectuer une validation de type “white liste” sur les données utilisateurs. 4 Minimiser les privilèges dans les bases pour limiter l’impact de la faille. < References 4 Plus de détails sur http: //www. owasp. org/index. php/SQL_Injection_Prevention_Cheat_Sheet

A 2 – Cross-Site Scripting (XSS) Se retrouve à chaque audit/pentest • Des données

A 2 – Cross-Site Scripting (XSS) Se retrouve à chaque audit/pentest • Des données venant d’un attaquant sont envoyé à l’innocent navigateur d’un utilisateur Ces données peuvent être • Stockées en base, • Réfléchies depuis une entrée d’une page Web (champ de formulaire, champ caché, URL, …) • Envoyé directement à un client Riche (Javascript, Flash, …) Virtuellement toute application Web est vulnérable • Essayez cela dans votre navigateur – javascript: alert(document. cookie) Impact • Vole des sessions utilisateur, de données sensibles, réécriter de la page Web, reidrection vers un site d’hameconnage ou autre code malveillant • De manière plus grave : installation d’un proxy XSS permettant à un attaquant d’observer le poste client voir de forcer l’utilisateur vers un site particulier

Cross-Site Scripting Illustré 1 L’attaquant découvre le script vulnérable La victime se rend sur

Cross-Site Scripting Illustré 1 L’attaquant découvre le script vulnérable La victime se rend sur la page Communication Knowledge Mgmt E-Commerce Bus. Functions 2 Accounts Finance L’attaquant entre un script malicieux sur la page web(stocké) ou bien utilise un lien(réfléchi) permettant d’envoyer vers la page Administration Transactions Application disposant de faille XSS Custom Code Le Script s’execute sur le navigateur de la victime sans qu’il ne le sache 3 L’attaquant recoit le cookie ou autre élément directement

A 2 – Contre mesures < Recommandations 4 Supprimer la faille § Ne pas

A 2 – Contre mesures < Recommandations 4 Supprimer la faille § Ne pas inclure de contenu fourni par l’utilisateur dans la page de sortie !!! 4 Défenses possibles 1. Encoder toutes les entrées et sorties utilisateurs (utilisez l’OWASP ESAPI pour l’encodage de sortie) http: //www. owasp. org/index. php/ESAPI 2. Effectuer de la validation de type « white liste » pour les données utilisateurs entrantes qui sont inclues dans une page. 3. Pour des grosses portions de code HTML fournie par un utilisateur, utiliser le filtre OWASP Anti-Sammy de manière à nettoyer l’HTML Voir: http: //www. owasp. org/index. php/Anti. Samy < Référence 4 Pour effectuer un encodage propre, ce référer à http: //www. owasp. org/index. php/XSS_(Cross Site Scripting) Prevention Cheat Sheet (Anti. Samy

A 3 – Mauvaise gestion des sessions et de l’authentification HTTP est un protocole

A 3 – Mauvaise gestion des sessions et de l’authentification HTTP est un protocole sans état • Les identifiants doivent donc être passés a chaque requete. • Il faut utiliser SSL pour toute authentification Failles dans la gestion de l’authentification • Des ID de sesisons sont utilisés pour maintenir la session dans HTTP car il ne le peut lui. • Cela suffit à un attaquant, c’est aussi interessant qu’un identifiant • Les ID de sessions sont souvent exposés dans les sessions réseau, dans les browsers (cookies), dans les logs, …. Attention aux portes dérobées… • Changement de mot de passe, se souvenir de mon passe, oubli de mot de passe, questions secretes, logout, email, … Impact • Vol de session ou compromission de comptes utilisateur

www. boi. com? JSESSIONID=9 FA 1 DB 9 EA. . . Le site récrit

www. boi. com? JSESSIONID=9 FA 1 DB 9 EA. . . Le site récrit l’URL (i. e. , mise dans l’URL de l’ID de session) 3 5 L’attaquant peut utiliser le JSESSIONID sur le site boi. com pour son méfait Custom Code 2 L’utilisateur clique sur un lien vers http: //www. hacker. com dans un forum L’attaquant regarde les logs “Referer” sur www. hacker. com Et découvre le JSESSIONID Communication Knowledge Mgmt E-Commerce Bus. Functions Utilisateur envoie ses identifiants Accounts Finance 1 Administration Transactions Illustration d’une mauvaise authentification 4

A 3 – Contre Mesure < Vérifier l’architecture ! 4 L’authentification doit être simple,

A 3 – Contre Mesure < Vérifier l’architecture ! 4 L’authentification doit être simple, centralisée et standardisée 4 Utiliser le mécanisme standard de gestion des cookies du framework (ils sont globalement fiable) 4 Utiliser constamment SSL pour protéger les identifiants de connexion et de sessions < Vérifier l’implémentation 4 Oublier l’analyse automatique 4 Vérifier le certificat SSL (SSLv 2, renégociation, chiffrement faible, …) 4 Examiner toutes les fonctions relatives a l’authentification 4 Vérifier que la déconnexion supprime bien la session ! 4 Utiliser l’OWASP Web. Scarab pour tester l’implémentation (session. ID analysis)

A 4 – Référence directe non sécurisée à un objet Comment accéder aux données

A 4 – Référence directe non sécurisée à un objet Comment accéder aux données privées • C’est une manière de renforcerles habilitations en lien avec A 7 – Mauvaise restriction d’accès à une URL Des erreurs classiques • • Attendre uniquement de l’utilisateur des accès à des objets autorisés ou Cacher des références à des objets dans des champs cachés … et ne pas renforcer les restrictions coté serveur. Ceci n’est qu’une tentative de contrôle d’accès sur la présentation et ne fonctionne pas ! • Un attaquant n’a qu’a modifier les valeurs des paramètres… Impact • Un utilisateur a accès à des données ou des fichiers normalemtn interdits

Référence directe non sécurisée à un objet illustrée https: //www. onlinebank. com/user? acct=6065 <

Référence directe non sécurisée à un objet illustrée https: //www. onlinebank. com/user? acct=6065 < L’attaquant note le paramètre acct = 6065 ? acct=6065 < Il modifie celui-ci de la manière suivante ? acct=6066 < L’attaquant visualise un autre compte.

A 4 – Contre Mesure < Eliminer la référence directe. 4 La remplacer par

A 4 – Contre Mesure < Eliminer la référence directe. 4 La remplacer par une valeur temporaire aléatoire (e. g. 1, 2, 3) 4 L’ESAPI fournit des fonctions pour cela § Integer. Access. Reference. Map & Random. Access. Reference. Map http: //app? file=Report 123. xls http: //app? file=1 http: //app? id=9182374 http: //app? id=7 d 3 J 93 Access Reference Map Report 123. xls Acct: 9182374 < Valider la référence directe à l’objet 4 Vérifier que le contenu est correctement formaté. 4 Vérifier que l’utilisateur a le droit d’effctuer l’accès à l’objet. 4 Vérifier que le mode d’accès à l’objet est autorisé (e. g. , read, write, delete)

A 5 – Cross Site Request Forgery (CSRF) Cross Site Request Forgery • C’est

A 5 – Cross Site Request Forgery (CSRF) Cross Site Request Forgery • C’est une attaque ou le navigateur de la victime génère une requête vers une application Web vulnérable • Cette vulnérabilité est causée par la capacité qu’on les navigateurs a envoyer automatiquement des données d’authentification (session ID, IP address, comptes de domaine windows, . . ) dans chaque requête. Imaginez • Que se passerait-il si un hacker pouvait utiliser votre souris pour effectuer des clicks sur votre site de banque en ligne a votre place. • Que pourrait-il faire ? Impact • Initiation de transactions (transfert de fonds, logoff, modification de données, …) • Accès à des données sensibles • Changement des mots de passes/identifiants

CSRF démystifié < Le problème 4 Les navigateurs Web incluent automatiquement la plupart des

CSRF démystifié < Le problème 4 Les navigateurs Web incluent automatiquement la plupart des identifiants dans chaque requête. 4 Que cela soit des requêtes venant d’un formulaire, d’une image ou d’un autre site. < Tous les sites basés uniquement sur les identifiants automatiques sont vulnérables 4 Approximativement 100% des sites le sont… < C’est quoi un identifiant automatique? 4 Cookie de session 4 Header d’authentification HTTP 4 Une adresse IP 4 Les certificats SSL client 4 L’authentification de domaine Windows.

CSRF illustré L’attaquant pose son piège sur un site internet (ou via un e-mail)

CSRF illustré L’attaquant pose son piège sur un site internet (ou via un e-mail) 1 Communication Knowledge Mgmt E-Commerce Bus. Functions Tout en étant logguer sur le site vulnérable, la victime parcourt le site de l’attaquant. Administration Transactions 2 Accounts Finance Un tag chaché <img> contient une attaque vers un site vulnérable Application vulnérable au CSRF Custom Code 3 Le tag <img> tag chargé par le navigateur envoie une requête GET (contenant des identifiants sur le site vulnérable) Le site vulnérable ne voie que des requêtes légitimes et effectue l’action demandée

A 5 – Contre Mesure < Ajouter un jeton, non envoyé automatiquement, a toutes

A 5 – Contre Mesure < Ajouter un jeton, non envoyé automatiquement, a toutes les requêtes sensibles. 4 Cela rend impossible pour l’attaquant de soumettre une requête valide. § (sauf si en plus il y a une faille XSS) 4 Ces jetons doivent être surs cryptographiquement. < Options 4 Stocker un seul jeton dans la session et l’ajouter a tous les formulaire et liens § Champ caché: <input name="token" value="687965 fdfaew 87 agrde" type="hidden"/> § Utiliser un URL : /accounts/687965 fdfaew 87 agrde § Utiliser un jeton de formulaire: /accounts? auth=687965 fdfaew 87 agrde 4 Attention a ne pas exposer le jeton dans l’entete “referer” § Utiliser de préférence un champ caché. 4 Utiliser un jeton unique par fonction. 4 Il est recommandé d’ajouter un second niveau d’authentification pour une transaction sensible < Ne pas laisser un attaquant stocker des attaques sur le site 4 Encoder proprement les données d’entrées 4 Cela permet de limiter la majorité des interpréteurs de liens Voir www. owasp. org/index. php/CSRF_Prevention_Cheat_Sheet pour plus de détails …

A 6 – Mauvaise configuration Les applications Web doivent faire confiance à une fondation

A 6 – Mauvaise configuration Les applications Web doivent faire confiance à une fondation sécurisée • On pense aux réseau, aux système et aux plateformes • Il ne faut pas oublier les environnements de développement Est-ce que votre code source est secret? • Pensez a tous les endroits ou l’on trouve votre code source. • La Sécurité ne doit pas se baser sur l’obscurité du code source. Il faut étendre la gestion de la configuration a toutes les parties de l’application • Tous les identifiants doivent être changés sur les environnements de production Impact • Installation d’une porte dérobée via un oubli de patch (serveur, réseau, …) • Failles XSS exploitées due à l’oublie de patch dans les framework • Accès non authorisé à des comptes , des données, ou des fonctionnalités applicatives par défaut non utilisées mais accessibles a cause d’une mauvaise configuration utilisateur

Communication Knowledge Mgmt E-Commerce Bus. Functions Administration Transactions Accounts Finance Mauvaise configuration illustrée Database

Communication Knowledge Mgmt E-Commerce Bus. Functions Administration Transactions Accounts Finance Mauvaise configuration illustrée Database Custom Code App Configuration Framework Development App Server Web Server Insider QA Servers Hardened OS Test Servers Source Control

A 6 – Contre Mesure < Vérifier la gestion de la configuration sécurité de

A 6 – Contre Mesure < Vérifier la gestion de la configuration sécurité de vos systèmes. 4 Ayez des guidelines de renforcement de la sécurité. § L’automatisation est réellement utile dans ce cas 4 Couvrir toute la plateforme et l’application 4 Garder a l’esprit d’avoir des patchs pour TOUS les composants § Cela inclue les librairies, et pas seulement l’OS, les serveurs et applications. 4 Analyser l’impact sécurité des changements < Pouvez vous effectuer des “masters” de votre configuration applicative ? 4 Mettre en place un reporting des builds dans le processus sécurité 4 Si vous ne pouvez vérifier le configuration applicative, l’applicatif n’est pas sécurisé < Vérifier l’implémentation 4 Les scans découvrent généralement les configurations par défaut et les problèmes du à des patchs de retard

A 7 – Mauvaise restriction d’URL Comment protéger vous l’accès à une URL ?

A 7 – Mauvaise restriction d’URL Comment protéger vous l’accès à une URL ? • Cela concerne aussi le renforcement des l’habilitations tout comme le paragraphe A 4 Une erreur commune… • N’afficher que les liens et menus authorisés dans les listes de choix. • Une fois de plus, c’est du controle d’accès visuel, et cela ne fonctionne pas. • Il suffit de modifier les requêtes en allant diretement sur les pages “non autorisées” Impact • Invocation de fonctions et de services non authorisées • Accès a des données ou des comptes n’appartenant pas à l’utilisateur • Elevation de privilèges et d’actions

Mauvaise restriction d’URL illustrée < L’attaquant note dans l’URL que le rôle est affiché

Mauvaise restriction d’URL illustrée < L’attaquant note dans l’URL que le rôle est affiché /user/get. Accounts < Il modifie directement l’URL (le rôle) /admin/get. Accounts, ou /manager/get. Accounts < L’attaquant dispose de privilèges supplémentaires

A 7 – Contre Mesure < Pour tout URL il faut 3 éléments :

A 7 – Contre Mesure < Pour tout URL il faut 3 éléments : 4 Restreindre l’accès aux seuls utilisateurs authentifiés (sauf si l’URL est publique). 4 Renforcer les permissions basées sur les rôles ou l’utilisateue (si l’URL est privée) 4 Bloquer toute requête à des pages non autorisées ( (e. g. , fichiers de config, de log, code source, etc. ) < Vérifier l’architecture 4 Utiliser un modèle positif simple a tous les niveaux 4 S’assurer d’avoir un modèle d’accès à tous les niveaux. < Vérifier l’implémentation 4 Oublier l’approche automatisée 4 Vérifier que chaque URL de l’application est protégée par : § Un filtre externe, comme en J 2 EE (web. xml) § Ou par un morceau de VOTRE code – Voir la méthode ESAPI’ is. Authorized. For. URL() 4 Vérifier que la configuration du serveur n’autorise pas les requêtes vers les types de fichiers ou extensions non autorisés. 4 Utiliser un proxy type Web. Scarab pour forger des requêtes non autorisées.

A 8 – Redirections et transferts non contrôlés Les redirections sont communes dans une

A 8 – Redirections et transferts non contrôlés Les redirections sont communes dans une application WEB. • Et fréquemment elles incluent des paramètres fournis par l’utilisateur dans l’URL de destination. • Si ces paramètres ne sont pas validés, un attaquant peut envoyer la victime vers le site de son choix. Les transferts(aka Transfer en. NET) sont eux aussi communs • Ils renvoient la requête vers une nouvelle page en interne de l’application. • Parfois les paramètres déterminent la page cible. • Si cela n’est pas validé, cela permet de parfois passer outre les mécanismes d’autorisation et d’authentification. Impact • Rediriger la victime vers un site malveillant de type hameconnage. • Il devient possible de passer outre les contrôles de sécurité et accéder à des fonctions ou données non autorisées.

Redirection illustrée L’attaquant envoi à la victime via un email ou une page Web

Redirection illustrée L’attaquant envoi à la victime via un email ou une page Web de son choix le lien. Bus. Functions E-Commerce Knowledge Mgmt Communication Transactions La vicitime clique sur le lien contenant une donnée non validée. L’application redirige la victime vers le site de l’attaquant Administration 2 3 Finance From: Internal Revenue Service Subject: Your Unclaimed Tax Refund Our records show you have an unclaimed federal tax refund. Please click here to initiate your claim. Accounts 1 Custom Code Request sent to vulnerable site, including attacker’s destination site as parameter. Redirect sends victim to attacker site http: //www. irs. gov/taxrefund/claim. jsp? year=2006 & … &dest=www. evilsite. com Evil Site 4 Le site malveillant installe des éléments sur le navigateur ou récupére des données

Unvalidated Forward Illustrated 1 L’attaquant envoie sa charge sur une page vulnérable ou il

Unvalidated Forward Illustrated 1 L’attaquant envoie sa charge sur une page vulnérable ou il a accès Request sent to vulnerable page which user does have access to. Redirect sends user directly to private page, bypassing access control. 2 L’application autorise la requête et continue vers la page vulnérable public void sensitive. Method( Http. Servlet. Request request, Http. Servlet. Response response) { try { // Do sensitive stuff here. . } catch (. . . Filtre public void do. Post( Http. Servlet. Request request, Http. Servlet. Response response) { try { String target = request. get. Parameter( "dest" ) ); . . . request. get. Request. Dispatcher( target ). forward(request, response); } catch (. . . 3 La page de transfert ne contrôle pas le paramètre et renvoie l’attaquant vers la page non autorisée, passant outre le contrôle d’accès.

A 8 – Contre Mesure < Il y a des tonnes de solutions 1.

A 8 – Contre Mesure < Il y a des tonnes de solutions 1. Eviter au maximum les redirections et les transferts 2. Si il faut absolument les utiliser, ne pas utiliser les paramètres parvenant d’un utilisateur pour définir l’URL/fonction cible. 3. Si vous “devez” utiliser les paramètres utilisateurs, a) Validez chaque paramètre pour vérifier qu’il est autorisé et valide par rapport à l’utilisateur, ou alors b) Utilisez une table de correspondance serveur entre les paramètres utilisateurs et les pages à appeler. 4 Pour les redirection, valider l’URL cible après la construction pour vérifier qu’elle redirige bien vers un site autorisé ! 4 L’ESAPI peut vous aider : § Voir : Security. Wrapper. Response. send. Redirect( URL ) § http: //owasp-esapi-java. googlecode. com/svn/trunk_doc/org/owasp/esapi/filters/ Security. Wrapper. Response. html#send. Redirect(java. lang. String) < Quelques réflexions sur les Transferts 4 Idéallement, il faudrait appeler le contrôle d’accès pour être sur que l’utilisateur est bien autorisé aà effecgtuer le transfert(très simple avec l’ESAPI…) 4 Si vous utilisez des filtres externes (comme Site. Minder), cela ne sera pas simple 4 La meilleure solution est de s’assurer que les utilisateurs qui ont accès à la page initiale ont TOUS le droit d’accéder à la page cible….

A 9 – Stockage Cryptographique non sécurisé Le stockage de données non sécurisées •

A 9 – Stockage Cryptographique non sécurisé Le stockage de données non sécurisées • Oubli d’identification des données sensibles • Oubli d’identification de tous les entrepôts de stockage des données sensibles. • Bases de données, fichiers, répertoires, fichiers de logs, backup, … • Oubli de mettre en place une protection correcte des données dans tous les entrepots de stockages données sensibles. Impact • Modification ou accès a des données confidentielles ou privées (carte de crédits, données santés, données financières, …) • Extrait de données secretes via d’autres failles (injection SQL, LDAP, …) • Problème d’image de marque, d’image client et perte de confiance • Long et couteux processus de vérification, investigation et retour a la normale (forensics, lettres et dédommagements client, assurance, …)

1 La victime stocke son numéro de carte de crédit dans le système via

1 La victime stocke son numéro de carte de crédit dans le système via un formulaire Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions Stockage non sécurisé illustré Custom Code 4 Fichier de log Une personne malveillante interne vole 4 millions de carte de crédit Les logs sont rendus disponibles pour tous les membres internes dans le but du debug 3 Le gestionnaire des 2 erreurs loggue le numéro de carte car la passerelle de commerce est indisponible.

A 9 – Contre Mesure < Vérifier l’architecture 4 Identifier toutes les données sensibles

A 9 – Contre Mesure < Vérifier l’architecture 4 Identifier toutes les données sensibles 4 Identifier tous les entrepots de stockage des données 4 S’assurer des attaques possibles sur comptes < Utiliser un mécanisme de chiffrement approprié 4 Chiffrement de fichier, de base, d’élément de la base. < Utiliser correctement le mécanisme… 4 Utiliser des algorithmes connus standard et surs. 4 Générer, distribuer et protéger les clefs 4 S’assurer de la capacité de changement régulier des clefs < Vérifier l’implémentation 4 Un algorithme sur est utilisé et c’est le bon algorithme pour la situation ! 4 Toutes les clefs, certificats, et mots de passe sont stockés et protégés correctement. 4 Il existe une distribution propre des clefs et il est possible d’en changer facilement

A 10 – Protection insuffisante lors du transport des données La transmission de données

A 10 – Protection insuffisante lors du transport des données La transmission de données non sécurisée… • Oubli de l’identification de TOUTES les données sensibles • Oubli de l’identification de TOUTES les URLs/Pages ou les données sensibles transitent. • Sur le Web, vers les SGBD, vers les partenaires métiers, vers les réseaux internes… • Oubli de protéger les données à chacun de ces endroits… Impact • Modification ou accès a des données confidentielles ou privées (carte de crédits, données santés, données financières, …) • Extrait de données secretes via d’autres failles (injection SQL, LDAP, …) • Problème d’image de marque, d’image client et perte de confiance • Long et couteux processus de vérification, investigation et retour a la normale (forensics, lettres et dédommagements client, assurance)

Protection insuffisante lors du transport des données illustré Partenaire métier Victime externe Custom Code

Protection insuffisante lors du transport des données illustré Partenaire métier Victime externe Custom Code 1 Vols de données via le réseau externe Attaquant externe Backend Systems 2 Employées Vol de données via le réseau interne Attaquant interne

A 10 – Contre Mesure < Utiliser les mécanismes de protection appropriés 4 Utiliser

A 10 – Contre Mesure < Utiliser les mécanismes de protection appropriés 4 Utiliser TLS pour tout transport de données sensible. 4 Chiffrer les messages avant transmission. § E. g. , XML-Encryption 4 Signer les messages avant transmission § E. g. , XML-Signature < Utiliser les mécanismes correctement ! 4 Utiliser des algorithmes surs ! (désactiver les vieilles versions de SSL et les chiffrements faibles…) 4 Gérer correctement les clefs/certificats. 4 Vérifier les certificats SSL avant l’utilisation. 4 Voir http: //www. owasp. org/index. php/Transport_Layer_Protection_Cheat_Sheet pour plus de details

En résumé : comment adresser ces risques < Développer du code sécurisé ! 4

En résumé : comment adresser ces risques < Développer du code sécurisé ! 4 Suivre les bonnes pratiques du Guide OWASP sur la construction sécurisée d’une application Web. § http: //www. owasp. org/index. php/Guide 4 Utiliser l’OWASP Application Security Verification Standard comme un guide permettant de définir les mécanismes de sécurité § http: //www. owasp. org/index. php/ASVS 4 Utiliser les composants de sécurité standard et s’adaptant le mieux a votre entreprise § Par exemple utiliser l’OWASP ESAPI comme une fondation a VOS composants standards § http: //www. owasp. org/index. php/ESAPI < Auditer les applications 4 Faire appel a une équipe expérimentée pour analyser et auditer l’application. 4 Auditer les applications vous-meme graçe aux guide de l’OWASP § OWASP Code Review Guide: http: //www. owasp. org/index. php/Code_Review_Guide § OWASP Testing Guide: http: //www. owasp. org/index. php/Testing_Guide

Your Existing Enterprise Services or Libraries ESAPI Homepage: http: //www. owasp. org/index. php/ESAPI Security.

Your Existing Enterprise Services or Libraries ESAPI Homepage: http: //www. owasp. org/index. php/ESAPI Security. Configuration Intrusion. Detector Logger Exception Handling Randomizer Encrypted. Properties Encryptor HTTPUtilities Encoder Validator Access. Reference. Map Access. Controller User Authenticator OWASP (ESAPI) Custom Enterprise Web Application OWASP Enterprise Security API

Remerciements < Les contribueurs principaux 4 Aspect Security pour le sponsoring du projet 4

Remerciements < Les contribueurs principaux 4 Aspect Security pour le sponsoring du projet 4 Jeff Williams (auteur du premier Top 10 en 2003 ) 4 Dave Wichers (auteur et responsible actuel du projet ) < Les organisations ayant contribué aux statistiques sur les vulnérabilitées 4 Aspect Security 4 MITRE 4 Softtek 4 White Hat < Les contributeurs et relecteurs : 4 Mike Boberski, Juan Carlos Calderon, Michael Coates, Jeremiah Grossman, Paul Petefish, Eric Sheridan, Andrew van der Stock