Présentation de l’OWASP

flippantmewlingSecurity

Jun 19, 2012 (5 years and 2 months ago)

613 views

Copyright © 2007
-

The OWASP Foundation

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License.

The OWASP Foundation

OWASP

http://www.owasp.org




Microsoft Tech Days 2008

Paris le 11 Février 2008


Le projet OWASP

© 2008
-

S.Gioria && OWASP

Agenda


L’OWASP


Les publications de l’OWASP


Les outils


Le Top 10


Les technologies de protection


© 2008
-

S.Gioria && OWASP

Sébastien Gioria


Consultant indépendant en sécurité des
systèmes d’informations.


+10 ans dans le domaine de la sécurité
informatique (banque, assurance, télécoms, …)


Représentant Français de l’association
américaine.



© 2008
-

S.Gioria && OWASP

Mark Curphey


Fondateur du projet OWASP


Consultant Microsoft au sein de la division ACE

© 2008
-

S.Gioria && OWASP

L’OWASP


OWASP : Open Web Application Security Project


Indépendant des fournisseurs et des gouvernements.


Objectif principal : produire des outils, documents et
standards dédiés à la sécurité des applications Web.


Toutes les documentations, standards, outils sont fournis
sous le modèle de l’open
-
source.


Organisation

:


Réunion d’experts indépendants en sécurité informatique


Communauté mondiale(plus de 100 chapitres) réunie en une fondation américaine pour
supporter son action


En France : une association.


L’adhésion est gratuite et ouverte a tous.


Le point d’entrée est le wiki http://www.owasp.org

© 2008
-

S.Gioria && OWASP

L’OWASP


420 000 pages vues par mois


15 000 téléchargements par mois


11 335 membres sur les listes


3 687 utilisateurs du Wiki


1 500 MAJ du Wiki par mois


110 chapitres mondiaux


100 membres individuels


48 outils/projets/documents


38 membres entreprise


25 projets fondés


1 employé

© 2008
-

S.Gioria && OWASP

Organisation de l’OWASP

OWASP

OWASP
Conferences

OWASP

Wiki

OWASP

Tools

OWASP

Lists

OWASP
Books

OWASP
Community

OWASP Governance

OWASP
Chapter
Leaders

OWASP
Project
Leaders

OWASP Foundation
(501c3)

Board of
Directors
(Williams,
Wichers,
Brennan, Cruz,
and
Deleersnyder)

Board of
Advisors

Operation
s Director
(McNamee)

Technical
Director
(Casey)

© 2008
-

S.Gioria && OWASP

8

Training

CLASP

Testing Guide

Project
incubator

Wiki portal

Forums

Blogs

Top 10

Conferences

WebScarab

WebGoat

Ajax

Orizon

.NET, Java

Yours!

Validation

Chapters

Building our
brand

Certification

BuildingGuide

© 2008
-

S.Gioria && OWASP

Les publications


Toutes les publications sont disponibles sur le
site de l’OWASP:
http://www.owasp.org


L’ensemble des documents est régi par la licence
GFDL (GNU Free Documentation License)


Les documents sont issus de différentes
collaborations :


Projets universitaires


Recherche & développements des membres


© 2008
-

S.Gioria && OWASP

Les publications majeures


Le TOP 10 des vulnérabilités applicatives


Le guide de conception d’applications Web
sécurisées


Le FAQ de la sécurité des applications


Le guide «

les 10 commandements sur l’écriture
d’une application
non sécurisée

»


© 2008
-

S.Gioria && OWASP

Les Guides


100% Libres.


Issus de l’expérience de milliers d’experts à travers le
monde


OWASP guide


Un ouvrage pour la création d’applications Web sécurisées à
l’intention des :


Développeurs


Architectes





Inclus les meilleurs pratiques dans différents langages (PHP,
Java, .Net, …)


Plusieurs centaines de pages


OWASP Testing guide


Ouvrage dédié à l’audit sécurité des applications Web à
l’intention des pen
-
testeurs principalement.



© 2008
-

S.Gioria && OWASP

OWASP Enterprise Security API (ESAPI)


Un framework de sécurité pour
les développeurs


Permettre de créer une
application Web Sécurisé




Classes Java


Disponible sur le site de
l’OWASP

© 2008
-

S.Gioria && OWASP

WebGoat
-

WebScarab


WebGoat :


Application Java serveur (JSP, JEEE) non sécurisés.


Sert a démontrer les failles, leur principe et a éduquer



WebScarab :


Application Java permettant d’effectuer des tests de
sécurité :


Sur les applications Web


Sur les WebServices


© 2008
-

S.Gioria && OWASP

Quelques outils


Outil de génération de données aléatoires(Fuzzer)
permettant d’injecter des données pour les tests


JBroFuzz :


Fuzzer destiné à tester les applications Web


WS Fuzz :


Fuzzer destiné à tester les WebServices.


Sprajax


Outil destiné a tester la sécurité des applications AJAX


Et bien d’autres :


http://www.owasp.org/index.php/Category:OWASP_Project



© 2008
-

S.Gioria && OWASP

Le Top 10


Liste les 10 vulnérabilités des applications Web
les plus rencontrées


Mis a jour tous les ans


D’importantes organisations l’ont adopté dans
leurs référentiels


Federal Trade Commission (US Gov)


US Defense Information Systems Agency


VISA (Cardholder Information Security Program)


Le NIST

© 2008
-

S.Gioria && OWASP

Le Top 10


Le Top 10 actuel :



A1
-

Cross Site Scripting (XSS)



A2


Faille d'injection


A3


Exécution de fichier malicieux



A4


Référence directe non sécurisée à un objet



A5


Falsification de requête inter
-
site (Cross Site Request Forgery
-

CSRF)



A6


Fuite d'information et traitement d'erreur incorrect



A7


Violation de gestion d'authentification et de session



A8


Stockage cryptographique non sécurisé



A9


Communications non sécurisées



A10


Manque de restriction d'accès URL

© 2008
-

S.Gioria && OWASP

A1
-

Principe d’une attaque XSS


But :


Envoyer l’utilisateur vers un site Web malicieux


Récupérer des informations contenues dans le navigateur


Principe :


Mail ou lien malicieux


Exécution de code dans le navigateur


Récupération de données :


cookies,


objets(IE)


Envoi des données vers l’attaquant.


Dangerosité :


Passe outre les contr
ôles de s
é
curit
é

(Firewall, IDS,

)


Coupler
à

certaines attaques, cela permet d

acc
é
der au LAN

© 2008
-

S.Gioria && OWASP

A1
-

Principe d’une attaque XSS

(1)
Injection du script

(2)
l’utilisateur se rend sur le serveur vulnérable :


Suite à un SPAM


Sur un forum

(3)
Récupération des données de façon malicieuse

© 2008
-

S.Gioria && OWASP

A1
-

Exemple de code vulnérable


En ASP :


' SearchResult.aspx.vb

Imports System

Imports System.Web

Imports System.Web.UI

Imports System.Web.UI.WebControls


Public Class SearchPage Inherits System.Web.UI.Page


Protected txtInput As TextBox

Protected cmdSearch As Button

Protected lblResult As Label Protected


Sub cmdSearch _Click(Source As Object, _ e As EventArgs)



// Do Search…..

lblResult.Text="You Searched for: " & txtInput.Text


// Display Search Results…..

// …………


End Sub

End Class

© 2008
-

S.Gioria && OWASP

A1
-

Exemple de code vulnérable


En Java :


import java.io.*;

import javax.servlet.http.*;

import javax.servlet.*;


public class HelloServlet extends HttpServlet

{

public void doGet (HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException

{


String input = req.getHeader(“USERINPUT”);


PrintWriter out = res.getWriter();

out.println(input); // echo User input.

out.close();


}

}

© 2008
-

S.Gioria && OWASP

A1
-

Les protections


Effectuer une validation en profondeur :


Des headers,


Des cookies,


Des chaînes de requêtes,


Des champs de formulaires,


Et aussi des champs cachés,


.NET: Utilisez la bibliothèque Microsoft Anti
-
XSS
1.5
disponible gratuitement sur MSDN :
http://www.microsoft.com/downloads/details.aspx?Famil
yID=efb9c819
-
53ff
-
4f82
-
bfaf
-
e11625130c25&DisplayLang=en



Utiliser le projet des filtres OWASP(Java/PHP) :
http://www.owasp.org/index.php/Category:OWASP_Filte
rs_Project

© 2008
-

S.Gioria && OWASP

A2
-

Injection de données (SQL, LDAP,
commandes, …)


But :


Corrompre des données d’une base, d’un annuaire.


Récupérer des informations sensibles dans des bases
ou annuaires


Exécuter des commandes sur un système distant.


Principe :


Par la modification de la donnée attendue, la requête
d’accès à une base SQL est modifiée.


Dangerosité :


Est
-
il utile de l’expliciter ?


© 2008
-

S.Gioria && OWASP

A2
-

Exemple de code vulnérable


En PHP :


$sql = "SELECT * FROM table WHERE id = '" . $_REQUEST['id’] . "’";



En Java :


String query = "SELECT user_id FROM user_data WHERE user_name = '"
+ req.getParameter("userID") + "' and user_password = '" +
req.getParameter("pwd") +"'";

© 2008
-

S.Gioria && OWASP

A2
-

Les protections


Valider les données


Renforcer les mécanismes du plus faible
privilège.


Java EE : utilisation de Spring et Hibernate


.NET : utilisation de SqlCommand avec
SqlParameter ou Hibernat


PHP : utilisation de PDO


© 2008
-

S.Gioria && OWASP

A3
-

Exécution de fichier malicieux


But :


Installation de code sur le poste distant.


Installation de rootkits


Principe :


Par la modification d’une donnée, un fichier de
commande est envoyé sur le serveur et exécuté


Dangerosité :


Est
-
il utile de l’expliciter ?


© 2008
-

S.Gioria && OWASP

A3
-

Exemple de code vulnérable


PHP


include $_REQUEST['filename’];


© 2008
-

S.Gioria && OWASP

A5
-

Cross Site Request Forgery
-

CSRF


But :


Exécuter une action non désirée par un client sur un site.


Récupérer des informations internes


Principe :


Exécution de requêtes sur un site malveillant de façon cachée
(via une iframe par ex).



Dangerosité :


Passe outre les firewalls/IDS


Permet d'accéder au LAN Interne


Pas besoin de Javascript


© 2008
-

S.Gioria && OWASP

Attaque CSRF

(1)
L’utilisateur se rend sur un forum annodin

(2)
Une iframe embarquée sur le forum
demande au navigateur d'exécuter une
requete sur un autre serveur

(3)
Le mot de passe est changé

© 2008
-

S.Gioria && OWASP

A5
-

Comment se protéger


Vérifier que le code est immune aux vulnérabilités XSS…


Ne pas utiliser GET pour les traitements sensibles



Ajouter des jetons aléatoires et uniques qui ne peuvent
être envoy
é
s automatiquement par le navigateur


Pour ASP.NET, utilisez ViewStateUserKey


OWASP CSRF Guard,
http://www.owasp.org/index.php/CSRF_Guard


OWASP PHP CSRF Guard,
http://www.owasp.org/index.php/PHP_CSRF_Guard



© 2008
-

S.Gioria && OWASP

A6
-

Fuite d’informations


But :


Récupérer de l’information sur l’application ou le
système.


Principe :


Envoie de données provoquant une exception


Dangerosité :


Faible, mais néanmoins très utile pour un attaquant


© 2008
-

S.Gioria && OWASP

A6
-

Comment s’en protéger


Désactiver ou limiter la gestion des
erreurs/exceptions.


Modifier le traitement d’erreur pour qu’il
retourne une code HTTP 200 Ok.


© 2008
-

S.Gioria && OWASP

A7
-

Violation de session ou
d’authentification


But :


Obtenir un jeton de session permettant alors de se
faire passer pour un autre


Principe :


Modification des données de type ASPSESSIONID


Dangerosité :


Est
-
il utile de l’expliciter ?



© 2008
-

S.Gioria && OWASP

A7
-

Protection


Utiliser uniquement des mécanismes de sessions
internes aux librairies ou Framework


Ne pas accepter des identifiants de sessions par défaut


Éviter d'utiliser ou limiter l'utilisation de cookies
personnalisés pour l'authentification


© 2008
-

S.Gioria && OWASP

Les attaques sur les architectures
WebServices


XML Bomb :


Trivial à effectuer :


Référence récursive à une entité du m
ême document :







Peut provoquer un déni de service !



<?xml …

….

<!entity owasp0 «

Owasp

»>

<!entity owasp1 «

&owasp0;&owasp0>

….

….

<!entity owasp424242 «

&owasp424241;&owasp424241

»>

<owasptest>&owasp424242;</owasptest>

© 2008
-

S.Gioria && OWASP

Les Attaques sur les architectures
WebServices


Injection XML


Permet de modifier les données d’entrée d’un WebService.


Injection Xpath/Xquery


Permet d'exécuter des requêtes de façon similaire à SQL


XSS && Injection SQL


M
ême principe que dans une architecture classique.


Mêmes d
é
gâts possibles !


Bombes SOAP :


Attaques en d
é
nis de services via les tableaux SOAP


Bombes XML + SOAP




..



© 2008
-

S.Gioria && OWASP

Les protections possibles sur les
WebServices


WS
-
*


WS
-
Security


WS
-
Trust


WS
-
SecureConversation


WS
-
SecurityPolicy


WS
-
Federation


WS
-
Privacy










Les Firewalls XML/SOAP


Mais cela ne protège que les messages !

Le contenu des messages n’est pas inspecté

© 2008
-

S.Gioria && OWASP

Le constat actuel


Le système d’information s’ouvre :


Architectures orientées services


Intégration de partenaires


«

multi
-
play/multi
-
canal

» : Internet, Téléphone, Mail, Vidéo, …


La sécurité aujourd’hui


Niveau 1 : Le cable


Niveau 2 : VLAN


Niveau 3 : Liste de contrôle d’accès


Niveau 4 à 7 : Firewall, Proxy, IDS, IPS


Niveau 8 : L’utilisateur


© 2008
-

S.Gioria && OWASP

Les protections ultimes


Former les développeurs au développement
sécurisé !


Vérifier les données !


Effectuer des tests de sécurité