Présentation effectuée au Rencontres Mondiales du Logiciel Libre (RMLL) 2017 par Christophe Villeneuve sur "Comprendre la securite web".
Vous allez voir pourquoi la sécurité ne doit pas être pris à la légère. Mais heureusement des solutions existes
6. RMLL 2017 – 4 Juillet 2017
La première menace
●
La navigation sur internet
●
Le téléchargement
●
Vos identifiants
●
Vos courriels (emails)
●
Etc...
C'est vous
7. RMLL 2017 – 4 Juillet 2017
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…
●
Et surtout :
– Vol d'informations
– Usurpation d'identité
– Indisponibilité de service
– Défiguration de site
– Désinformation
8. RMLL 2017 – 4 Juillet 2017
Site 'alerte' de vulnérabilités (1/2)
●
CVE
– Commun Vulnerabilites and Exposures
●
Dictionnaire des informations publiques relavites
– Aux vulnérabilités de sécurité
●
Base de données des Vulnérabilités (source d'informations)
●
Concerne
– CMS / Framework
– OS
– Navigateurs
– Logiciels
– ...
9. RMLL 2017 – 4 Juillet 2017
Site 'alerte' de vulnérabilités (2/2)
(C) https://www.cvedetails.com/browse-by-date.php
10. RMLL 2017 – 4 Juillet 2017
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. RMLL 2017 – 4 Juillet 2017
Les différents types d'attaques
●
Matériels ●
Périphériques ●
Smartphones
●
Internet des
Objets
●
Le web●
Logiciels
12. RMLL 2017 – 4 Juillet 2017
Les points faibles… les bases applicatives
13. RMLL 2017 – 4 Juillet 2017
Les vulnérabilités Web : Le symbole (1/2)
<
14. RMLL 2017 – 4 Juillet 2017
Les vulnérabilités Web : Le symbole (2/2)
< ;
15. RMLL 2017 – 4 Juillet 2017
Correspondance des caractères dangereux
Caractères Decimal Hexadecimal HTML
Character Set
Unicode
'' (double quote) " " " u0022
' (simple quote) ' ' &apos: u0027
& (ampersand) & & & u0026
< (inférieur) < < < u003c
> (supérieur) > > > u003e
16. RMLL 2017 – 4 Juillet 2017
Oui mais pas que çà.
17. RMLL 2017 – 4 Juillet 2017
STEGANOGRAPHIE
L'art de cacher les choses
à la vue de tous
Trouver la courbe la plus
longue dans l'image
Q
18. RMLL 2017 – 4 Juillet 2017
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. RMLL 2017 – 4 Juillet 2017
Mais... Quoi affiché !!!
✔
Erreur 404 ✔
Erreur 500
✔
Fichier Log
Un minimum d'informations lors d'un crash
20. RMLL 2017 – 4 Juillet 2017
Minimum de sécurité... 1 / 3
✔
Mettre une bonne stratégie de mot de passe
✔
Jpassword – Keepass...
✔
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. RMLL 2017 – 4 Juillet 2017
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
→ Pour l'Open Source
Le contrôle des accès
22. RMLL 2017 – 4 Juillet 2017
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
23. RMLL 2017 – 4 Juillet 2017
Les autres solutions
24. RMLL 2017 – 4 Juillet 2017
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 Cornucopia / Owasp Snake
25. RMLL 2017 – 4 Juillet 2017
TOP 10 : OWASP (web) 1/3
✔
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. RMLL 2017 – 4 Juillet 2017
TOP 10 : OWASP (web) 2/3
✔
Failles d'injection
✔
Violation d'authentification et de Session
✔
Cross-Site Scripting (XSS)
✔
Contrôle d'accès cassé (catégorie 2004)
✔
Mauvaise configuration de sécurité
✔
Données sensibles accessible
✔
Protection d'attaque insuffisante
✔
Falsification de requête (CSRF)
✔
Utilisation de composants connus vulnérables
✔
API sous-protégées
2013 2017 rc 1
✔
Redirections non validéesX
N Z XHausse Baisse Identique NouveauBaisse SortieRenommé
✔
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
✔
Communications non sécuriséesX
N
Z
Z
N
N
27. RMLL 2017 – 4 Juillet 2017
TOP 10 : OWASP (3/3)
●
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.
28. RMLL 2017 – 4 Juillet 2017
Au niveau Site / Blog...
//
30. RMLL 2017 – 4 Juillet 2017
✔
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
31. RMLL 2017 – 4 Juillet 2017
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
32. RMLL 2017 – 4 Juillet 2017
✔
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
33. RMLL 2017 – 4 Juillet 2017
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
34. RMLL 2017 – 4 Juillet 2017
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
35. RMLL 2017 – 4 Juillet 2017
Provenance coté front
●
Navigation
●
Formulaire
– Champs : Input, upload,...
●
Des API Couche Métier
OWASP : A1 – Injection API
36. RMLL 2017 – 4 Juillet 2017
✔
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 chiffrement 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
37. RMLL 2017 – 4 Juillet 2017
✔
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. RMLL 2017 – 4 Juillet 2017
Mobiles / Tablettes
39. RMLL 2017 – 4 Juillet 2017
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
Z
N Z XHausse Baisse Identique NouveauBaisse SortieRenommé
40. RMLL 2017 – 4 Juillet 2017
TOP 10 : Mobile Risk 2016
●
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
41. RMLL 2017 – 4 Juillet 2017
Internet des Objets
42. RMLL 2017 – 4 Juillet 2017
TOP 10 : IoT Vulnerabilities
✔
1 -Interface Web Insecure
✔
2 -Authentification / Autorisation insuffisante
✔
3 - Services réseau insécurisés
✔
4 - Le manque de chiffrement de transport
✔
5 - Problèmes de confidentialité
✔
6 - Interface non sécurisée
✔
7 - Interface mobile sans sécurité
✔
8 - Configuration de sécurité insuffisante
✔
9 - Logiciels / logiciels non sécurisés
✔
10 - Faible sécurité physique
2015
44. RMLL 2017 – 4 Juillet 2017
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
47. RMLL 2017 – 4 Juillet 2017
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. RMLL 2017 – 4 Juillet 2017
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. RMLL 2017 – 4 Juillet 2017
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