Sécurité informatique sur le Web
Apprenez à sécuriser vos applications (management, cybersécurité, développement et opérationnel)
Préface
Avant-propos
Chapitre 1
Introduction à la sécurité des applications web
1. Quelques chiffres sur le Web et la sécurité9
2. À qui s'adresse ce livre ?11
3. Anatomie d'une application web11
4. Frameworks et CMS15
5. Méthodes classiques et méthodes agiles17
6. Sécurité des systèmes d'information19
7. Les différents axes de sécurisation d'une application web21
8. DevSecOps22
Chapitre 2
Panorama de la sécurité web
1. Introduction25
2. Les normes et référentiels25
2.1 ISO/IEC 2703425
2.2 PCI-DSS et PA-DSS28
2.3 HIPAA31
2.4 CNIL (commission nationale de l'informatique et des libertés)32
2.5 GDPR (General Data Protection Regulation)34
3. Les bibliothèques, projets et recommandations35
3.1 MITRE CWE35
3.2 BSIMM37
3.3 OpenSAMM40
3.4 SDL de Microsoft43
3.5 Cigital touchpoint44
3.6 OWASP CLASP45
3.7 Note technique de l'ANSSI46
3.8 Recommandations du CLUSIF47
3.9 NIST48
4. Les guides et bonnes pratiques48
4.1 OWASP TOP 1048
4.2 OWASP testing guide50
4.3 OWASP ASVS52
4.4 OWASP code review guide54
5. Les technologies liées à la sécurité web57
5.1 Analyse de code statique (SAST)57
5.2 Analyse de code dynamique (DAST)59
5.3 Tests interactifs de la sécurité des applications (IAST)60
5.4 Autoprotection des applications (RASP)61
5.5 Pare-feu applicatif (WAF)61
5.6 Outil de suivi de bugs (issue tracking System)63
6. La sécurité des navigateurs et serveurs web64
6.1 SOP, CORS64
6.2 HSTS68
6.3 X-frame-options, x-content-type-options, x-xss-protection70
6.4 Content Security Policy73
6.5 FLAG SECURE, HTTPONLY COOKIE74
6.6 Authentification HTTP77
Chapitre 3
Top 10 des risques et vulnérabilités liés au Web
1. Le top 10 des menaces du Web81
2. Comprendre les risques selon l'OWASP82
3. Installation de la plateforme de travail83
4. Les injections89
4.1 Les risques89
4.2 Injection SQL90
4.3 Injection XPath107
4.4 Injection XXE (XML External Entity)110
4.5 Injection LDAP111
4.6 Injection de code113
5. Violation de gestion d'authentification et de session116
5.1 Présentation et risques116
5.2 Vol de session (session hijacking)117
5.3 Faiblesses des mots de passe118
5.4 Mot de passe non protégé en base de données122
5.5 Faiblesses dans la conception des sessions125
6. Cross-Site Scripting (XSS)127
6.1 Présentation et risques127
6.2 XSS stocké (stored)128
6.3 XSS Réfléchi (reflected)133
6.4 XSS DOM (Document Object Model)138
7. Références directes non sécurisées à un objet141
7.1 Présentation et risques141
7.2 Entrées directes cachées et non contrôlées142
7.3 Entrées indirectes cachées et non contrôlées143
8. Mauvaise configuration de sécurité145
8.1 Présentation et risques145
8.2 Scénarios146
9. Exposition de données sensibles147
9.1 Présentation et risques147
9.2 Scénarios149
10. Manque de contrôle d'accès au niveau fonctionnel150
10.1 Présentation et risques150
10.2 Local/remote file inclusion151
10.3 Host Header Attack153
10.4 User-agent spoofing158
10.5 Server Side Request Forgery (SSRF)159
11. Cross Site Request Forgery (CSRF)160
11.1 Présentation et risques160
11.2 CSRF et requête POST162
12. Exploitation de vulnérabilités connues164
12.1 Présentation et risques164
12.2 WPScan165
12.3 Nikto 166
12.4 OpenVAS167
12.5 Qualys SSL Labs169
13. Redirections et renvois non validés170
Chapitre 4
Les concepts du développement sécurisé
1. Les 10 commandements du code sécurisé173
1.1 Authentification174
1.2 Management des sessions175
1.3 Contrôle d'accès176
1.4 Validation des entrées176
1.5 Encodage des sorties177
1.6 Upload de fichiers178
1.7 XSS178
1.8 CSRF178
1.9 Clickjacking179
1.10 Enregistrement des événements179
2. Outils indispensables de la sécurité web180
2.1 Analyse de code180
2.2 Fuzzing183
2.3 Web Application Firewall (WAF)184
2.4 Scan de vulnérabilités187
2.5 Test de pénétration (Pentest)193
3. Secure by design195
3.1 Réduction des surfaces d'attaque195
3.2 Défense en profondeur200
3.3 Séparation des privilèges 201
3.4 Paramètres par défaut respectant la sécurité202
4. Modélisation des menaces (threat modeling)202
4.1 Qu'est-ce que la modélisation des menaces ?202
4.2 Schéma de votre architecture avec DFD204
4.3 Identification des menaces avec la méthode STRIDE209
4.4 Documentation et atténuation des menaces212
4.5 Validation de votre rapport213
5. Respect de la vie privée213
5.1 Types de données personnelles213
5.2 Principes de la protection des données personnelles214
5.3 Notifications216
5.4 Consentements217
Chapitre 5
Établir un cycle de développement sécurisé
1. Introduction219
2. Sensibilisation des parties prenantes222
2.1 Thèmes à enseigner222
2.2 Évaluation des stagiaires224
2.3 Exemple 233
3. Exigences236
3.1 Définition du projet236
3.2 Évaluation des exigences pour la sécurité238
3.3 Évaluation des exigences pour les données personnelles242
3.4 Plan d'action et analyse des coûts248
3.5 Identification du responsable et du conseiller250
3.6 Amélioration de la gestion des bugs251
3.7 Exemple252
4. Conception263
4.1 Définition des exigences de conception263
4.2 Réduction de la surface d'attaque268
4.3 Modélisation des menaces (Threat Modeling)270
4.4 Exemple272
5. Code277
5.1 Revue de code manuelle277
5.2 Management des sessions279
5.3 Contrôle d'accès280
5.4 Validation des entrées280
5.5 Encodage des sorties281
5.6 Upload de fichiers281
5.7 XSS282
5.8 CSRF282
5.9 Clickjacking283
5.10 Enregistrement des événements283
5.11 Blacklist des fonctions obsolètes284
5.12 Analyse statique du code287
5.13 Exemple289
6. Test291
6.1 Analyse dynamique291
6.2 Test de fuzzing292
6.3 Test de pénétration (Pentest)292
6.4 Exemple295
7. Déploiement297
7.1 Création d'un plan de réponse aux incidents297
7.2 Conduite d'une revue finale301
7.3 Exemple302
Chapitre 6
Aller plus loin avec un modèle de maturité
1. Process model vs maturity model307
2. BSIMM vs OpenSAMM308
2.1 BSIMM308
2.2 De OpenSAMM311
3. Exemple313
3.1 Questionnaire d'évaluation313
3.2 Création de scorecard320
3.3 Mise en place d'une feuille de route321
4. Conclusion326
Conclusion327
Index329