Passer au contenu principal
La sécurité au coeur des projets webs de demain
Christophe Villeneuve
@hellosct1
@hellosct1@mamot.fr
Capitole du Libre 2019
Atos open source - afup – lemug.fr – mariadb – drupal – mozilla - firefox – lemugfr - sumo – webextensions – VR – AR – XR - Cause commune 93.1 FM - TechSpeaker - Lizard - eyrolles – editions eni – programmez – linux pratique – webriver – elephpant - CommonVoice – Sécurité - Cybersécurité
Christophe Villeneuve ?
●
Consultant
●
Dresseur animaux Free Software
@hellosct1 – Capitole du libre 2019
Ce qu'il vous attend...
●
La sécurité
projets Web c'est…
Quoi ?
●
Hacking VS Protection
●
Outillages
Qu’est ce que la
sécurité, pourquoi ?
Hacking VS Protection
Outillages
@hellosct1 – Capitole du libre 2019
Pourquoi sécurité web ?
●
Branche sécurité informatique
●
Impliquant :
– Problématique côté client
– Problématique côté serveur
●
Concerne :
– Les sites web
– Les applications web
– Les services web
●
Accélérer avec l’émergence du Web 2.0
@hellosct1 – Capitole du libre 2019
Quelques exemples catastrophique
●
2005
– Master Card – 40 millions de comptes
●
2011
– Sony diversitissement – 77 millions de comptes (+ numéro
CB)
●
2014
– JP Morgan – 7,6 millions d'informations utilisateurs
●
Et bien d’autres :
– Heartland – 130 millions de numéros de cartes bancaires
– Deutsche Télécom : 17 millions de perdus
– Wordpress – 18 millions de profils
@hellosct1 – Capitole du libre 2019
Projet web sécurisé ? Pas sur
Agile
Scrum
Design
Patterns
Git
Integration
Continue
Refactoring
CMS
WebServices
Framework
Tests
DDOS
Hijacking
SQL
Botnets
XSS
Injection
CSRF
Phishing
Tronjan
●
Réalisation d'un projet web
→ avec peu de sécurité
DevOps
DevSecOps
@hellosct1 – Capitole du libre 2019
La réalité
Défaut
Logique métier
Erreurs
Sécurité
Défaut
De code
Plusieurs années
de développement
Plusieurs années
de développement
Deux semaines
Piratage éthique
Deux semaines
Piratage éthique
@hellosct1 – Capitole du libre 2019
Les attaques sur internet
Source : IBM Software Group, Rational Software
@hellosct1 – Capitole du libre 2019
Niveau de protection
Pare feu
applications
Serveur Web
IPS [1]Firewall
[1] Systeme prévention intrusion
@hellosct1 – Capitole du libre 2019
Identifier les risques
●
Systèmes trop verbeux
– DNS / Réseaux
●
Système
d'authentification faible
– SSH
●
La gestion des droits
– Maillons faibles
●
Les mots de passes
systèmes
– Admin du poste / compte
utilisateur
●
Bases de données
– Stockages des
informations sensibles
●
Partage de fichiers
– périphériques hardware
●
Serveurs à l'abandon
●
Vulnérabilités web
– voir les rapports
OWASP
@hellosct1 – Capitole du libre 2019
CVE sécurity (1/3)
●
Base de données des vulnérabilités (source d'informations)
●
OS / Langages / CMS / Framework / Navigateurs...
© https://www.cvedetails.com/
@hellosct1 – Capitole du libre 2019
CVE sécurity (2/3)
●
Représentation annuelle
© https://www.cvedetails.com/
@hellosct1 – Capitole du libre 2019
CVE sécurity (3/3)
© https://www.cvedetails.com/
@hellosct1 – Capitole du libre 2019
CRM
Intranet
Website
Tracker
Service Auth.
Web Service
Serveur Web
Firewall
Base de données
Access Control
Notre application Web
@hellosct1 – Capitole du libre 2019
CRM
Intranet
Website
Tracker
Service Auth.
Web Service
Serveur Web
Firewall
Base de données
Access Control
Notre application Web
XSS
CSRF
Click
Jacking
XML/JSON
Injection
SQL
Injection
Direct
Object
ReferenceToken
Directory
Traversal
Packet
Sniffing
Paramètre
facilfication
@hellosct1 – Capitole du libre 2019
Architecture d'une application Web
XXE
modernemoderne
Stockage
Code
Quality
Client
Chiffrement
Communication
@hellosct1 – Capitole du libre 2019
@hellosct1 – Capitole du libre 2019
OWASP (1/2)
●
OWASP
– Open Web Application
Security Project
●
Organisation à but non
lucratif
●
Communauté ouverte
●
Connu
– Liste des risques de
sécurité
●
Top 10
c'est :
●
Des outils
●
Des API
●
De la documentation
●
Des guides
●
Des conférences
●
Des blogs
●
Des contenus
– Audio / Vidéo
– Podcast
@hellosct1 – Capitole du libre 2019
Owasp (2/2)
●
Guide de développement
– https://www.owasp.org/index.php/Projects/OWASP_Development
_Guide
●
Guide des tests
– https://www.owasp.org/index.php/OWASP_Testing_Project
●
Revue de code
– https://www.owasp.org/index.php/Category:OWASP_Code_Revie
w_Project
●
Exemple d'application Webgoat
– https://www.owasp.org/index.php/Category:OWASP_WebGoat_Pr
oject
●
Guide développeur
– https://www.owasp.org/index.php/OWASP_Guide_Project
@hellosct1 – Capitole du libre 2019
TOP 10 : OWASP (web)
A1- Failles d'injection
A2- Violation d'authentification et de Session
A3- Données sensibles accessible
A4- XML External Entity (XXE)
A5- Contrôle d'accès cassé
A6- Mauvaise configuration de sécurité
A7- Cross-Site Scripting (XSS)
A8- Désérialisation non sécurisée
A9- Utilisation de composants connus vulnérables
A10 -Gestion de log insuffisante et de monitoring
2013 2017
N MHausse Baisse Identique
NouveauBaisse Merge
A1- Failles d'injection
A2- Violation d'authentification et de Session
A3- Cross-Site Scripting (XSS)
A4- Référence directe non sécurisée à un objet
A5- Mauvaise configuration de sécurité
A6- Données sensibles accessible
A7- Manque de sécurité au niveau des rôles
A8- Falsification de requête (CSRF)
A9- Utilisation de composants connus vulnérables
A10- Redirections non validées
N
M
N
N
Qu’est ce que la
sécurité, pourquoi ?
Hacking VS Protection
Outillages
@hellosct1 – Capitole du libre 2019
Attaque : apprenti sorcier
@hellosct1 – Capitole du libre 2019
Solution
●
Etre rapide !
– Une attaque n'est souvent qu'une affaire de secondes, voire de
minutes
●
Ne pas contre-attaquer le hacker
– Disparition
– Il est énervé
●
TODO
– Notez l'adresse IP de l'ordinateur victime de l'attaque
– Notez l'heure de l'attaque.
– Notez le temps de l'attaque.
– Log(s)
@hellosct1 – Capitole du libre 2019
Attaque de dépendance
Query = "SELECT * FROM users WHERE ID = "'" + request.geParameter('id') + "'";
Query = "SELECT * FROM users
WHERE ID = '" + 666 + "'";
Query = "SELECT * FROM users
WHERE ID = '" + 666' OR '1'='1 + "'";
A1 - Failles injections
@hellosct1 – Capitole du libre 2019
Solution
●
Conserver les données
– Séparées des commandes et des requêtes
– Utiliser comme API sécurisée
●
Valider les données d'entrée côté serveur
●
Échapper les caractères spéciaux
– Utiliser une syntaxe d'échappement spécifique pour
l'interpréteur
●
Utilisez LIMIT
●
Prévoir des contrôles SQL dans les requêtes
– pour empêcher la divulgation massive des enregistrements
@hellosct1 – Capitole du libre 2019
Attaque côté front
● A2 - Violation d'authentification et de Session
● A6 - Mauvaise configuration de sécurité
● A7 - Cross-site scripting (XSS)
● A2 - Violation d'authentification et de Session
● A6 - Mauvaise configuration de sécurité
● A7 - Cross-site scripting (XSS)
● Code source de la page (CTRL + U)
● Avec du javascript
● Session id
● Cookie
● Redirection page web
● Super Globales
● ($_GET / $_POST / $_ENV)
@hellosct1 – Capitole du libre 2019
Attaque côté back (1/
● A5- Contrôle d'accès cassé
● A6- Mauvaise configuration de sécurité
● A5- Contrôle d'accès cassé
● A6- Mauvaise configuration de sécurité
accès non autorisé aux objets
par le biais de la modification des paramètres
@hellosct1 – Capitole du libre 2019
Attaque côté back (2/
● A5- Contrôle d'accès cassé
● A6- Mauvaise configuration de sécurité
● A5- Contrôle d'accès cassé
● A6- Mauvaise configuration de sécurité
Données sensibles non protégées correctement
Problème des droits accès (contrôle d'accès)
– http://urlSite.com/getpage
– http://urlSite.com/admin_getpage
@hellosct1 – Capitole du libre 2019
Solution
●
HTTPS
●
Chiffrer toutes les données sensibles
●
Ne stockez pas de données sensibles
inutilement - jetez-les
@hellosct1 – Capitole du libre 2019
Attaque Homme / machine (1/
Serveur
de l'attaquant
Serveur
Requête XML
Information
Obtenir des requêtes
structurées (dtd)
●
A4 - XML External Entity (XXE)
●
A4 - XML External Entity (XXE)
@hellosct1 – Capitole du libre 2019
Solution
●
Choisir un format moins complexe
– JSON
●
Corriger format utilisé XML
– Les processeurs
– Les bibliothèques
●
Verrou structuré supplémentaire
– Externe XML
– Requêtes structurées (dtd processin)
●
Validation des éléments entrée du site du serveur de la liste blanche
●
Vérifier les fonctionnalités de téléchargement de fichiers
– XML ou XSL
●
Les outils SAST peuvent aider à détecter XXE dans le code source
@hellosct1 – Capitole du libre 2019
Attaque Homme / machine (2/
●
A8 - Désérialisation non sécurisée
●
A8 - Désérialisation non sécurisée
class car [
public string color;
}
var redCarObj =new car();
redCarObj.color = 'rouge';
redCarObj
Processus de
sérialisation redCarObj sérialisé
redCarObj
processus de
désérialisation redCarObj sérialisé
.
●
Permet l'exécution de code à distance
●
Manipulation d'objets sensibles
→ sur les plates-formes affectées
@hellosct1 – Capitole du libre 2019
Solution
●
Ne pas accepter les objets sérialisés
– provenant de sources non fiables
●
Vérifier l'intégrité sur tous les objets sérialisés
●
Appliquer des contraintes de type strictes
– Lors de la désertification
●
Isoler pour exécuter le code désérialisé
●
Exceptions et échecs de désérialisation de journaux
●
Restreindre la connectivité réseau
– A partir de serveurs qui se désérialisent
@hellosct1 – Capitole du libre 2019
Attaque : Les autres (1/
●
A9 - Utilisation de composants connus vulnérables
●
A9 - Utilisation de composants connus vulnérables
●
Boîtes à outils Web
●
Widgets
●
Moteurs d'exécution
●
Serveurs web
●
Bibliothèques de framework
●
Etc.
composants construits par d'autres
Dépendances
@hellosct1 – Capitole du libre 2019
Attaque : Les autres (2/
●
A10 - Gestion de log insuffisante et de monitoring
●
A10 - Gestion de log insuffisante et de monitoring
● Utilisation : Forum / CMS / ...
● Manque
● Surveillance
● Alerte
● Enregistrement
● Scan de mot de passes
● Mot de passe unique / utilisateurs
@hellosct1 – Capitole du libre 2019
Solution
●
Prévoir que tous les échecs d'accès
– soient enregistrés
●
Assurez-vous que les logs sont générés
– Format (facilement) utilisable
●
Prévoir que les transactions de grande valeur
– Piste d'audit, suivi...
●
Alerte efficace pour répondre dans des délais
cours
●
Etablir un processus de réponse aux incidents
Qu’est ce que la
sécurité, pourquoi ?
Hacking VS Protection
Outillages
@hellosct1 – Capitole du libre 2019
Outils de tests de sécurité automatisé
●
Plateforme de tests d'intrusion
– Metasploit, Aircrack-ng
●
Tests résistence d'un password
– John the ripper
●
Audit de monitoring, réseaux
sans fil
– Aircrack-ng
●
Sniffer, analyseur protocoles
réseau & applicatif
– Wireshark
●
Scanner de ports,
vulnérabilités
– Nmap
●
Récupération mot de passe
– Cain & Abel
●
Emulation Navigateur web
– Paros Proxy, charles proxy
●
Capture de requêtes, proxy
applicatif
– Zed Attack Proxy, Paros
Proxy
●
Audit des applications web
– Burp Suite, Wfuzz,
spiderfoot, cerveau
@hellosct1 – Capitole du libre 2019
Liens
●
OWASP
https://www.owasp.org
●
OWASP Top 10 – 2017
https://www.owasp.org/images/7/72/OWASP_Top
_10-2017_%28en%29.pdf.pdf
@hellosct1 – Capitole du libre 2019
Plus loin...
meetup lizard
https://www.meetup.com/fr-FR/lizard_secu/
@hellosct1 – Capitole du libre 2019
Merci
Christophe Villeneuve
@hellosct1
@hellosct1@mamot.fr