10 Décembre 2021
29 Novembre 2024
Johan Brun BRUN
❓
Liées aux CWEs (mitre)
(B : Base, C : Classe, V : Variant, ? : Composite)
Exemple avec XSS
CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
<script>document.alert('Hacked');</script>
CWE-639: Authorization Bypass Through User-Controlled Key
(Aussi assimilée à IDOR)
GET /edit/<id-user>
CWE-352: Cross-Site Request Forgery (CSRF) (Composite)
redirection + cookie + /delete/2
CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
/users/cwe/profiles/../../../etc/passwd
Dans chaque cas, plusieurs niveaux de complexité
(attr html ; insecure api ; formulaire)
❓
C'est quoi chef ?
↗️ Ensemble de pratiques œuvrant à la sécurité des applications
🔩 Process qui s'appliquent tout au long du cycle de vie :
* Fonctionnel : Abusers stories / Threat modeling
* Architecture : Review / Threat modeling
* Dév : Reviews, Checklists, SAST, SADT, Dépendances, Skills & Connaissance... ✨
* Tests : Test d'intrusion, Vérifications process,
* Release : Configuration sécurisée, Réponse à incident, Composants à jour
Buts
🎯 Identifier, corriger et prévenir toute vulnérabilité
💾 La donnée est au cœur de la bataille. Elle doit s'accompagner de la triade CIA :
"Confidentiality, Integrity, Availability"
💻 DevSec : ne pas introduire de vulnérabilités
(tech / business logic)
❓
🔢 Pourquoi un audit ?
🎫 Ce qui est critique (vol de PI / IP, rupture de service etc..)
👷♀️ Architecture globale
Le but est d'orienter le pentest vers ce qui est le plus important à protéger
🔢 Boite blanche / grise / noire
🎫 2-5 jours
👷♀️ Scan de vuln vs pentest
L'auditeur propose une solution sur mesure basée sur les besoins (CIA)
🔢 Structure de la BD (routes, introspection
🎫 Routes API / paramètres (oh, un :id)
👷♀️ Stack technique
🔢 Champ utilisateurs ? (on va mettre n'importe quoi)
🎫 Gestion de droits ? (ownership / rôles)
👷♀️ Configuration ? (JWT, entêtes...)
👷♀️ Versions des composants
🔢 Selon comment le système réagit...
🎫 ... on va en déduire des vulnérabilités...
👷♀️ ... qui seront classés par criticité
Outils : proxy web, fuzzer, scan de vulns
🐛
Open Web Application Security Project
👪 Communauté en ligne libre et ouverte oeuvrant pour la sécurité des applications web.
🧰 Propose des outils et solutions pour aider à la sécurisation :
* Web Security Testing Guide
* Juice Shop
* Zed Attack Proxy
* Top10 des vulnérabilités web
Et bien d'autres...
📘Listing des différentes catégories de vulnérabilités web les plus communes
🕑Mis à jour tous les ~4 ans
🧠Vous n'allez pas tout retenir, mais ce n'est pas grave.
Résumé
Exception : Introduite par le Top10 Community Survey
Comment s'en protéger ?
Exemple de scénario
Résumé
Comment s'en protéger ?
Exemple de scénario
Résumé
Comment s'en protéger ?
Exemple de scénario
Résumé
Comment s'en protéger ?
Exemple de scénario
Résumé
Comment s'en protéger ?
Exemple de scénario
Top2 du Top10 Community Survey
Résumé
Résumé
Comment s'en protéger ?
Résumé
Comment s'en protéger ?
Résumé
Comment s'en protéger ?
Résumé
Comment s'en protéger ?
🐛
- Ownership des données
- Droits sur les rôles
- Informations renvoyées
- Configuration CORS (si cookies)
- Configuration JWT
- Invalidation à la déconnexion
- HTTPS partout + Entête HSTS
- TLS v1.2
- bcrypt
- Algo à forte entropie pour les tokens
- Fuzzing sur les inputs (=> Validation des données en entrée)
- Recherche de vuln selon le context (XSS, SQLi, SSTI, CRLRi, file upload...)
- Entêtes HTTPs
- Configuration != par défaut (permissions)
- cf doc
- pas de séparation staging / prod
- envoi des sources map
- messages d'erreur verbeux
- configuration oauth
- limitateur de débit
- Revue des versions logicielles et leurs CVEs
- npm audit
- Bruteforce
- Credentials par défaut
- identifiants / tokens dans l'url (!logs)
- invalidation session
- politique mdp faible
- Valider les appels HTTP effectués par le serveur (! si insertion input)
Bisous