Comprendre la sécurité web - Présentation effectuée à "Ubuntu Paris 1610" par Christophe Villeneuve.
La sécurité est une affaire de tous. Il est indispensable d'en prendre comprendre les concepts et de se protéger
6. Ubuntu paris 1610 -
Les risques
● Ne connaissent pas
– L'étendue des risques liés à la sécurité de leur site
● Significations du terme « piratage »
● Des sites listent les failles, alertes...
● Vol d'informations
● Usurpation d'identité
● Indisponibilité de service
● Défiguration de site
● Désinformation
7. Ubuntu paris 1610 -
CVE security (1/3)
● Base de données des Vulnérabilités (source d'informations)
● CMS / Framework
● OS
● Navigateurs
8. Ubuntu paris 1610 -
CVE security (2/3)
https://www.cvedetails.com/product/20550/Canonical-Ubuntu-Linux.html?vendor_id=4781
10. Ubuntu paris 1610 -
Les vulnérabilités reconnues
● Insuffisance des tests de sécurité
● Configuration par défaut
● Pas de cryptage des données sensibles
● Pas de mises à jour du système
● La sécurité apparaît lors des catastrophes
● Surveillance inefficace
● Contrôle insuffisant de l'accès par des tiers
11. Ubuntu paris 1610 -
Les différents types d'attaques
● Matériels ● Périphériques ● Smartphones
● Internet des
Objets
● Le web● Logiciels
17. Ubuntu paris 1610 -
STEGANOGRAPHIE
L'art de cacher les choses
à la vue de tous
Trouver la courbe la plus
longue dans l'image
Q
18. Ubuntu paris 1610 -
Code sécurisé
✔ Défense en profondeur
✔ Limité les accès de données à l'extérieur
✔ Maximiser les droits
3 points à connaître
19. Ubuntu paris 1610 -
Mais... Quoi affiché !!!
✔ Erreur 404 ✔ Erreur 500
✔ Fichier Log
Un minimum d'informations lors d'un crash
20. Ubuntu paris 1610 -
Minimum de sécurité... 1 / 3
✔ Mettre une bonne stratégie de mot de passe (Jpassword)
✔ Ne pas le stocker en clair
✔ Pensez au captcha ou au jeton
✔ Force le mode SSL / TLS
✔ Limité le délais pour modifier son profil utilisateur
✔ Identification session
✔ Authentification coté serveur
✔ Pas d'authentification en JS / Ajax
Le contrôle : Authentification
21. Ubuntu paris 1610 -
Minimum de sécurité... 2 / 3
✔ Gestion des sessions aléatoire
(JSESSIONID / $_SESSION)
✔ Minimum d'informations visibles (ex URL)
✔ Eviter les données sensibles sur le réseau
(VS scanner de réseau)
✔ Cookie sécurisé (onglets des navigateurs)
✔ Limiter la fin de session pour les projets sensibles (ex 5 minutes)
✔ Bloquer les doubles logins / accès
✔ 1 Authentification = 1 utilisateur = 1 connexion BDD
Le contrôle des accès
22. Ubuntu paris 1610 -
Minimum de sécurité... 3 / 3
✔ Contrôler le cache
✔ Penser à vider le cache
✔ Fermer fenêtre
✔ Fermer Navigateur
✔ Fermer Application
Logique de code... Pas sûr
24. Ubuntu paris 1610 -
OWASP
● OWASP : Open Web Application Security Project
● Communauté pour la sécurité des applications
Webs
● Publications :
TOP 10 / Cheat sheets / Owasp : secure Contrat
● Outils :
Owasp Zed attack Proxy / ESAPI : API for / AppSensor
:: a IDS / IPS
● Jeux :
Owasp cornicoppia / Owasp Snake
25. Ubuntu paris 1610 -
TOP 10 : OWASP (web) 1/2
✔ Failles d'injection
✔ Cross-Site Scripting (XSS)
✔ Violation d'authentification et de Session
✔ Référence directe non sécurisée à un objet
✔ Falsification de requête (CSRF)
✔ Mauvaise configuration de sécurité
✔ Stockage cryptographique non sécurisé
✔ Manque de restriction d'accès URL
✔ Communications non sécurisées
✔ Redirections non validées
✔ Failles d'injection
✔ Violation d'authentification et de Session
✔ Cross-Site Scripting (XSS)
✔ Référence directe non sécurisée à un objet
✔ Mauvaise configuration de sécurité
✔ Données sensibles accessible
✔ Manque de sécurité au niveau des rôles
✔ Falsification de requête (CSRF)
✔ Utilisation de composants connus vulnérables
✔ Redirections non validées
2010
X✔ Fuite d'information et Traitement d'erreur
Incorrect
✔ Exécution de Fichier Malicieux
N
X
N
2013
✔ Communications non sécuriséesX
N
Z
Z
N Z XHausse Baisse Identique NouveauBaisse SortieRenommé
26. Ubuntu paris 1610 -
TOP 10 : OWASP (2/2)
● 1. Verify for Security Early
and Often
Vérifier la sécurité tôt et souvent
● 2. Parameterize Queries
Paramétrer les requêtes
● 3. Encode Data
Encoder les données
● 4. Validate All Inputs
Valider toutes les entrées
● 5. Implement Identity and
Authentication Controls
Implémenter des contrôles
d'identité et d'authentification
2016 Top 10 Proactive Controls suggestions
● 6. Implement Appropriate Access
Controls
Mettre en œuvre des contrôles d'accès
appropriés
● 7. Protect Data
Protéger les données
● 8. Implement Logging and
Intrusion Detection
Implémentez l'enregistrement et la
détection d'intrusion
● 9. Leverage Security Frameworks
and Libraries
Tirer parti des cadres de sécurité et des
bibliothèques
● 10. Error and Exception Handling.
Gestion des erreurs et des exceptions.
29. Ubuntu paris 1610 -
✔ Configuration non à jour
✔ Pas de maintenance
✔ Mise à disposition des
fonctions
✔ Exec
✔ System
● Autre manière de prise en
main du système
● Serveur Zombie
●
Principe de l'attaque Conséquence
Injection de ligne de commandes
OWASP : A1 - Injection en ligne de commande
30. Ubuntu paris 1610 -
Désactiver dans php.ini
– exec
– passthru
– shell_exec
– system
– proc_open
– popen
– curl_exec
– curl_multi_exec
– parse_ini_file
– show_source
Affiche le nom de l'utilisateur
<?php
echo exec('whoami');
?>
Par conséquent :
safe_mode = Off
allow_url_fopen=Off
allow_url_include=Off
OWASP : A1 - Injection en ligne de commande
31. Ubuntu paris 1610 -
✔ Envoie du code SQL
✔ Formulaire
✔ GET / POST
✔ Cookies
✔ ...
✔ Contournement
authentification
✔ Récupération des données
de la base
✔ Récupération de fichiers
✔ Exécution de codes
Principe de l'attaque Conséquence
Injection SQL
OWASP : A1 - Injection SQL
32. Ubuntu paris 1610 -
Utilisation du SQL
● Risque : Requête avec des simples quotes
SELECT * FROM 'users' WHERE 'username'='$login' AND 'password'='$pass'
● Saisie : $login = hello $pass = hello
SELECT * FROM 'users' WHERE 'username'='hello' AND 'password'='hello'
● Saisie : $login = ' OR '1'='1' $pass = ' OR '1'='1'
SELECT * FROM 'users' WHERE 'username'='' OR '1'='1'' AND 'password'='' OR '1'='1''
● Saisie : $login = ' OR 1=1"); drop table users; $pass =
SELECT * FROM 'users' WHERE 'username'='' OR 1=1"); drop table users;' AND
'password'=''
TRUE
TRUE
TRUE
Sauf si BDD lecture
OWASP : A1 - Injection SQL
33. Ubuntu paris 1610 -
Se protéger contre injection SQL
● addslashes()
– Ajoute des antislashs dans une chaîne
SELECT * FROM 'users'
WHERE 'username'=' ' OR '1'='1' '
AND 'password'=' ' OR '1'='1' '
mysqli_real_escape_string()
– Protège les caractères spéciaux
● pdo_quote()
– Place des guillemets simples autour d'une chaîne entrée
les guillemets simples '
les guillemets doubles "
les slashes /
les caractères NULL
OWASP : A1 - Injection SQL
34. Ubuntu paris 1610 -
Provenance coté front
● Navigation
● Formulaire
– Champs : Input, upload,...
● Des API Couche Métier
OWASP : A1 – Injection API
35. Ubuntu paris 1610 -
✔ Trouver
✔ des données stockés /
archivés en clair
✔ Espace privée non
partagée
✔ Communication avec la
banque
✔ Déterminer les algorithmes
de cryptage faible
✔ Cible principale
✔ Mot de passes
✔ Données sensibles non
chiffrées
✔ Carte bleu
Principe de l'attaque Conséquence
Exposition de données sensibles
OWASP : A1 / A6 / A10
36. Ubuntu paris 1610 -
✔ Envoie du code SQL
● Formulaire
● GET / POST
● Cookies
● ...
✔ Contournement
authentification
✔ Récupération des données
de la base
✔ Récupération de fichiers
✔ Exécution de codes
Principe de l'attaque Conséquence
API Métier : connexion LDAP
OWASP : A1 – Injection API
38. Ubuntu paris 1610 -
TOP 10 : Mobile Risk
✔ 1-Commandes côté serveur faible
✔ 2-Stockage de données non sécurisé
✔ 3-Protection insuffisante de la couche
de transport
✔ 4-Fuite de données involontaire
✔ 5-Mauvaise autorisation et
authentification
✔ 6-Cryptographie brisée
✔ 7-Injection côté client
✔ 8-Décisions de sécurité via les entrées
non approuvées
✔ 9-Gestion incorrecte des sessions
✔ 10-Manque de protections binaires
✔ 1-Utilisation inappropriée de la plate-
forme
✔ 2-Stockage de données non sécurisé
✔ 3-Communication insécurisée
✔ 4-Authentification non sécurisée
✔ 5-Cryptographie insuffisante
✔ 6-Autorisation non sécurisée
✔ 7-Qualité du code client
✔ 8-Code de falsification
✔ 9-Ingénierie inverse
✔ 10-Fonctionnalité exubérante
2014 2016 Version RC
Z
N Z XHausse Baisse Identique NouveauBaisse SortieRenommé
39. Ubuntu paris 1610 -
TOP 10 : Mobile Risk 2016 (rc)
● Utilisation inappropriée de la plate-forme
– Les fonctionnalités inutiles - La sécurité – Accès aux contacts...
● Stockage de données non sécurisé
– Stockage des données non sécurisé – Fuites de données involontaires
● Communication insécurisée
– SSL incorrectes – communication en clair des informations sensibles...
● Authentification non sécurisée
– identification pour l'utilisateur – Faiblesse dans la gestion des sessions...
● Cryptographie insuffisante
– Problème lié à Cryptographie (pas été effectuée correctement)
● Autorisation non sécurisée
– Défaillance dans l'autorisation – navigation forcée...
● Qualité du code client
– Problème débordements de tampon – faire du code inutile...
● Code de falsification
– Couvre les correctifs binaires – Modification de l'utilisation prévue du logiciel (par un attaquant)...
● Ingénierie inverse
– Analyse du noyau binaire – possible d'exploiter d'autres vulnérabilités
● Fonctionnalité exubérante
– Fonctionnalités backdoor cachées – des données dans les commentaires
43. Ubuntu paris 1610 -
Les tendances de l'IoT
● La protection de
sécurité
– Equipement vers Cloud
(= chip to cloud)
● Sécurité et vie privée● Délégation de gestion
aux utilisateurs
● La mort du mot de
passe
– Approche à grands pas
46. Ubuntu paris 1610 -
En résumé : une politique de sécurité (1/2)
● Ne pas se cantonner :
– Garantir les droits d'accès aux données
– Accès aux ressources avec des systèmes
d'authentifications
● Anticiper les risques futurs
– Améliorer
– Déployer
– Evolution
● Suivre les mises à jours (si vous utilisez une
solution externe)
48. Ubuntu paris 1610 -
En résumé : une politique de sécurité (2/2)
● Politique de sécurité
– Identifier les besoins en termes de sécurité, les risques
– Elaborer des règles et des procédures
Services de l'organisation, matériels utilisés…
– Surveiller et détecter les vulnérabilités du système
d'information, applications… En informer
– Détecter les actions à entreprendre, voir les bonnes
personnes à contacter en cas d'une menace
49. Ubuntu paris 1610 -
Sources
● Web
– https://www.owasp.org/index.php/Top10
– https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
● Mobile
– https://www.owasp.org/index.php/OWASP_Mobile_Security_Project
– https://www.owasp.org/index.php/Mobile_Top_10_2016-Top_10
● IoT
– https://www.owasp.org/index.php/Top_10_IoT_Vulnerabilities_(2014)
● OWASP
– https://www.owasp.org