Au dela du top 10
Contexte Dans le cours de sécurité précédent (GTI619), vous avez vu le top 10 de l’OWASP. Ce cours vise à vous présenter au delà du top 10, les nouvelles attaques et vulnérabilités qui affectent le web.
Rappel du top 10 A1 Injection A2 Broken Authentication and Session Management A3 Cross-Site Scripting (XSS) A4 Insecure Direct Object References A5 Security Misconfiguration A6 Sensitive Data Exposure A7 Missing Function Level Access Control A8 Cross-Site Request Forgery (CSRF) A9 Using Components with Known Vulnerabilities A10 Unvalidated Redirects and Forwards
Et après Les vulnérabilités suivantes sont souvent incluse dans le top 10, mais souvent ignorée ou peu connue. Pourtant, l’impact est parfois significatif.
SideJacking Le sidejacking est une attaque simple, qui attaque le comportement des navigateurs, entre HTTP et HTTPS. Dans un contexte normal, les cookies sont toujours transmit au site web, meme si c’est sur HTTP.
SideJacking Un attaquant en MitM est en mesure de rediriger un client vers HTTP. (Meme si il n’existe pas de site http, pour de vrai) Le navigateur est ensuite en mesure de voler les cookies (fichiers témoins) de l’usager et d’impersonnifier l’usager.
SideJacking Cette attaque est très connue et il existe plusieurs outils pour automatiser l’attaque (sidejacking, hamster, firesheep)
Solution Il existe une entête HTTP qui mitige cette attaque: HSTS « http Strict Transport Security », cet entête indique au navigateur d’ignorer les requêtes vers http et de les remplacer par https. (Note, il existe d’autres mécanismes, tel qu’indiquer les cookies « secure », mais cette mesure est partiellement efficace)
ClickJacking
En 2009, le chercheur de sécurité Robert Hansen (Rsnake), fait une démonstration d’une nouvelle attaque (et de la monétisation). Il démontre qu’il est capable de faire $ en 1 mois grâce à cette attaque. Source: -usa-09/GROSSMAN/BHUSA09-Grossman- MoMoneyMoProblems-SLIDES.pdf
ClickJacking/MouseJacking Le clickjacking est une attaque qui permet de forcer à un usager de clicker/entrer des données sans qu’il le sache. L’attaque consiste à placer la page victime sur la page, invisible. Lorsque la victime clique sur ce qu’elle pense être un bouton, elle clique en fait sur la page victime.
ClickJacking Source: content/uploads/090814_1427_Clickjackin1.png
ClickJacking La solution est simple, il existe une entête qui prévient d’être inclus dans un iframe; il s’agit de « X-Frame-Option ». Avec cette entête, un navigateur (moderne) va refuser de charger un iframe qui contient X- Frame-Option: deny »
XXE Le XXE est une attaque d’injection (A1) dans le top 10 de l’OWASP. Les gens ont tendance à limiter A1 à de l’injection SQL. Une attaque de XXE est une attaque qui permet d’inclure des ressources locale, qui sont ensuite réfléchie à l’attaquant.
XXE Cette attaque permet généralement de voler des fichiers locaux/sensible, d’un serveur. Jusqu’à très récemment, cette attaque était super commune, car elle les parseurs XML étaient vulnérable par défaut.
XXE ]> &xxe; Par exemple, ceci permet de voler le fichier /etc/passwd (qui est affiché à l’écran)
XXE Même si le fichier n’est pas affiché (ou il contient des caractères illégaux), il est encore possible de voler les fichiers en utilisant le DTD. Source: ng-xml-external-entity.html
Apparté: A1 - Injection A1: Injection du top 10 de l’Owasp comprend l’injection SQL, mais aussi XPATH Injection, le LDAP Injection, le command injection, le nosql injection, le stmp header injection etc.
SSRF Le CSRF (Client Side Request Forgery) est une attaque dans laquelle un attaquant force un client à faire une requête arbitraire. Le SSRF est une attaque qui force un serveur à faire une requête arbitraire et afficher le résultat.
SSRF Pourquoi est-ce un problème? En permettant du SSRF, un attaquant est en mesure d’accèder aux ressources internes, via le serveur web. Dans certains cas, cela permet de voler les ressources du serveur.
SSRF Amazon conserve une copie complète de l’OS, incluant les scripts de démarrage et les fichiers à l’adresse (non routable) Ainsi, si une application amazon est vulnérable au SSRF, il est possible de lire l’ensemble de son os et des fichiers. Note: En 2014, l’équipe de l’ETS a réussi à prendre contrôle de la compétition de sécurité DEFCON ainsi. Ils ont rapporté la vulnérabilité de façon responsable et obtenu 0 point.
Oracle Cryptographiques De plus en plus de données web sont chiffrées, afin de les protéger des attaquants et prevenir des attaques communes. Hors, dans certains cas, il est possible de déchiffrer/déchiffrer des données et ca, sans avoir la clé.
Oracle Cryptographique Si l’algorithme de chiffrement est en mode ECB, alors il est CERTAIN qu’il est possible de déchiffrer les données. Si l’algorithme de chiffrement est en mode CBC, il est possible qu’il soit possible de déchiffrer les données, si l’application différencie entre une erreur de padding et une erreur de déchiffrement. Pour plus d’information: enjam.pdf
Problème EnvoyerArgent($entree, $sortie, $montant){ // Verifier que l’usager a assez d’argent If (verifierCompte($entree, $montant)){ ajouterArgent($sortie, $montant); enleverArgent($entree, $montant); } else { echo « Pas Assez d’argent »; }
Concurrence Critique En 2015, un chercher de sécurité a réussi à inventer de l’argent sur les cartes StarBucks, en utilisant une concurrence critique. Puisque la majorité des serveurs sont multi-fils (multi threaded), alors il a été possible de faire plusieurs requêtes de transfert d’argent, avant que le débit d’argent soit complété. Source: html
Concurrence Critique Pour se protèger contre ce type d’attaque, il faut que les requêtes sont complétées dans l’ordre avant d’accepter de nouvelles requêtes.