Les concepts du développement sécurisé
Les 10 commandements du code sécurisé
Le chapitre précédent avait pour objectif l’initiation aux risques autour des applications web. Des vulnérabilités et des contrôles de sécurité ont été étudiés afin de pouvoir bloquer les attaques malveillantes venant généralement d’Internet.
Cette section a pour but de créer une check-list des contrôles de sécurité à mettre en place dans une application web afin de pouvoir contrôler la sécurité avant la mise en production. Bien sûr, les contrôles de sécurité présentés sont à installer suivant les besoins en sécurité de votre organisation. Les exigences de sécurité seront vues dans le chapitre Établir un cycle de développement sécurisé. On peut aussi se servir de cette check-list et l’aligner sur ses besoins par la suite.
1. Authentification
id |
Objet |
Contrôle de sécurité |
Check-list |
1 |
Utilisation de mots de passe forts |
Les mots de passe dépassent-ils dix caractères minimum ? |
Oui/non |
Les mots de passe sont-ils complexes (majuscules, chiffres, caractères spéciaux) ? |
Oui/non |
||
2 |
La réinitialisation des mots de passe est-elle sécurisée ? |
Un jeton unique est-il créé pour la réinitialisation ? |
Oui/non |
3 |
Changement des données personnelles |
Une réauthentification est-elle demandée lors des changements des données personnelles sur l’application afin de prévenir les attaques de session ou CSRF ? |
Oui/non |
4 |
Le stockage des mots de passe |
Les mots de passe sont-ils hachés en base de données ? |
Oui/non |
Les mots de passe sont-ils salés avant d’être envoyés en base ? |
Oui/non |
||
5 |
Message d’erreur |
Les messages d’erreur qui apparaissent suite à une authentification incorrecte (à cause du login ou du mot de passe) sont-ils générés afin d’éviter de donner des indices sur le fonctionnement de l’application aux cybercriminels ? |
Oui/non |
Le statut HTTP (200) change-t-il si l’utilisateur ne réussit pas son authentification ? |
Oui/non |
||
6 |
Brute force |
L’application bloque-t-elle un utilisateur lors d’essais... |
Outils indispensables de la sécurité web
1. Analyse de code
Un des outils indispensables dans la sécurité des applications web est l’analyse de code statique dont nous avons rapidement introduit le sujet dans le chapitre Panorama de la sécurité web - Les technologies liées à la sécurité web. D’après Microsoft, le fait de trouver une vulnérabilité dans le code coûterait cent fois moins cher que lors d’un test de pénétration. Lors des phases de contrôle (check) dans un cycle de développement, une revue de code est essentielle pour développer de manière sécurisée, mais une revue dynamique est peu probable car trop coûteuse. Pour pallier ces problèmes, les outils d’analyse de code statique (SAST) peuvent s’avérer très utiles. Des outils comme Checkmarx SAST, Veracode Static Analysis, FXCop, etc. sont utilisés à travers des solutions cloud ou gérés à partir du module Jenkins pour l’automatisation dans un cycle de développement. Tout l’intérêt et la force de ces outils résident dans la recherche de vulnérabilités par le code mais aussi dans la possibilité d’intégrer l’outil facilement dans la chaîne de développement afin de ne pas perdre de temps pour la mise en production. En effet, la plupart des entreprises qui développent des logiciels sont amenées à travailler en agilité et de ce fait, à recourir aux contrôles à chaque itération, le but étant d’automatiser au maximum ces contrôles, dont l’analyse de code. Un autre aspect proposé par les éditeurs de ces solutions est la conformité avec les principales normes et lois dont les applications sont soumises à réglementation telles que PCI/DSS et HIPAA. Voici une démonstration de l’outil gratuit RIPS Scanner :
Sur le système d’exploitation Kali dont nous avons déjà fait l’installation dans le chapitre Top 10 des risques et vulnérabilités liés au Web, vérifiez que les services Apache et MySQL sont bien démarrés (service apache2 start & service mysql start), ensuite...
Secure by design
1. Réduction des surfaces d’attaque
Sécuriser le code est important, sécuriser autour du code l’est autant. Il existe différents paradigmes et philosophies associés à la sécurité du Web mais aussi à celle du système d’information de toute organisation en général. Penser sécurité, c’est concevoir sécurisé. Parmi les différentes méthodes de conception pour la sécurité de l’information, la réduction des surfaces d’attaques est essentielle dans une organisation. Son objectif est comme son nom l’indique, d’analyser les points d’entrée d’un système d’information pouvant être attaqué et de réduire ou protéger ces points d’entrées.
Les points d’entrées d’un système d’information peuvent être :
-
Une application web hébergée en interne.
-
Un accès VPN ou Terminal Service.
-
Des ordinateurs portables de travail mais se connectant en interne et à l’extérieur.
-
Des visiteurs, stagiaires qui visitent les locaux de l’entreprise.
-
Etc.
Les points d’entrées cités ci-dessus démontrent que les attaques venant de l’extérieur dans une entreprise peuvent provenir d’humains, de machines et d’applicatifs. Les attaques peuvent venir du réseau, par exemple les attaques par déni de service (DoS, DDoS) dont les conséquences et l’impact sur les sociétés sont parfois désastreux. La dernière attaque par le botnet Mirai (2016) regroupant des millions de machines IoT (Internet of Things) aurait paralysé le service Dyn et bloqué de grandes entreprises comme Airbnb, Box, GitHub, Heroku, le New York Times, Reddit et Twitter pendant un après-midi.
Les attaques humaines et physiques ne sont pas à négliger ; les campagnes d’hameçonnages ciblées (Spear phishing) sont très efficaces et dans le top 5 des attaques les plus utilisées par les cybercriminels.
Les entrées physiques ne sont pas à négliger en termes de sécurité : le vol de serveur, de disque dur ou d’ordinateur n’est pas rare dans les grandes sociétés....
Modélisation des menaces (threat modeling)
1. Qu’est-ce que la modélisation des menaces ?
La modélisation des menaces (threat modeling) a pour fonction d’identifier, énumérer et prioriser les potentielles menaces autour d’une architecture, le but étant d’apporter une analyse sur les différents scénarios d’attaques possibles sur une application afin de pouvoir prévoir les contrôles de sécurité nécessaires. La modélisation des menaces permet aussi d’apporter une priorisation des risques et une valorisation des actifs de l’architecture.
Quels sont les risques potentiels pour mon architecture ? Quels sont les actifs à prioriser en termes de sécurité ? Ce sont là des questions qui pourraient représenter la modélisation de menaces. Voici le processus classique :
La première phase du Threat modeling, Diagramme, consiste à décomposer l’application et son architecture à l’aide d’un diagramme dit DFD (Data Flow Diagram). Le but est de déterminer les points d’entrée par lesquels un cybercriminel pourrait passer et le niveau de confiance de chacun.
La deuxième phase, Identifier les menaces, consiste à utiliser le modèle STRIDE (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege) dont l’objectif est de trouver le type de menaces et de mesurer celles-ci pour chaque point d’entrée.
La troisième phase, Atténuer les menaces, a pour fonction de déterminer les contre-mesures et contrôles de sécurité à mettre en place pour les menaces identifiées lors de la phase 2.
La dernière phase, Validation, consiste à faire valider les trois premières phases établies auparavant par les pairs et généralement, les managers en sécurité.
2. Schéma de votre architecture avec DFD
Voici un exemple de mise en pratique d’une modélisation des menaces, étape par étape.
Commençons par la mise en place d’un diagramme DFD pour la modélisation des menaces d’une application web pour un centre de formation en informatique. Voici quelques informations à produire pour la création d’un...
Respect de la vie privée
1. Types de données personnelles
Les données personnelles s’appliquent à toute information relative à une personne physique identifiée ou qui peut être identifiée, directement ou indirectement, par référence à un numéro d’identification ou à un ou plusieurs éléments qui lui sont propres. Ces données sont protégées par des autorités comme la CNIL (Commission nationale de l’informatique et des libertés) pour la France ou GDPR (General Data Protection Regulation) pour l’Union européenne, déjà introduits dans ce livre au chapitre Panorama de la sécurité web - Les normes et référentiels.
Laissée de côté dans certaines organisations, la protection des données privées est considérée comme la seconde moitié du corpus de la sécurité de l’information. Les autorités en charge de la surveillance des protections des données sont de plus en plus strictes et rigoureuses. Le dernier exemple en date fut l’entreprise Cdiscount mise en demeure pour manquement de conformité sur les données personnelles des utilisateurs surtout en matière de sécurité (2016). La firme conservait 4 000 cartes bancaires avec cryptogrammes visuels de façon non protégée ainsi que plusieurs millions de comptes d’anciens clients et prospects, sans aucune suppression ni limitation de durée.
Respecter les données personnelles a pour fonction d’améliorer la confiance des utilisateurs et d’éviter les redressements. Investir dans la protection des données personnelles, c’est notifier les utilisateurs, leur laisser le choix, rendre accessible, sécuriser, respecter la loi et les normes, appliquer la philosophie de la société.
Les données utilisateurs peuvent être classées suivant quatre types :
-
Données anonymes (profil anonyme, description)
-
Données d’identification...