Voici la première occurrence de notre série d'articles abordant la sécurité pour le développement Web moderne. Toutes les deux semaines, nous investiguerons pour approfondir une attaque, une brèche ou une vulnérabilité ayant fait l'actualité. En nous intéressant à la cause racine, nous verrons quelles bonnes pratiques mettre en place pour éviter de faire les mêmes erreurs.
Début mars, un chercheur a publié un papier expliquant en quoi il était trop facile de créer un compte sur le nouveau portail Web d’Equifax. Equifax est une entreprise américaine qui donne des informations sur la faculté d’un citoyen américain à rembourser ses crédits. Elle contient donc notamment des données financières confidentielles
Sur ce nouveau portail, un attaquant peut créer un compte au nom de Paul Molin. Il doit répondre à des questions sur Paul dont les réponses sont facilement trouvables sur les réseaux sociaux ou dans le black market. Ceci permettrait à l’attaquant notamment de geler ou dégeler les crédits de Paul.
️Le bon geste, dans une application où l’identité de la personne a une importance, est par exemple de demander à vérifier l’adresse mail pour valider que c’était bien Paul Molin qui créait le compte.
Ce n’est pas la première fois qu’Equifax fait parler d’elle, puisqu’en 2017 elle a subi la brèche la plus médiatisée de l’année. C’est ce que nous allons étudier plus en détails :
Les données de plus de 145 millions de citoyens des États-Unis ont été volées. La vulnérabilité était liée à Apache Struts, un framework Web pour Java EE. Cette dernière avait été divulguée en mars, et permettait d’exécuter du code sur le serveur en ajoutant du code malveillant dans le header Content-Type. Ce header est censé donner des indications sur le format de la requête : texte simple, json, xml, … Il semble qu’Equifax connaissait l’existence de cette vulnérabilité mais n’a pas monté la version du framework en question.
Pour développer des applications sécurisées :
🛡️Checkez les vulnérabilités connues dans les dépendances et mettez ces dernières à jour
-
PHP : security-checker
-
Javascript : npm audit (ou yarn audit)
-
Python : safety
️🛡️Faites spécialement attention à toutes les données que les utilisateurs peuvent modifier ; celles-ci sont toutes une source de danger potentielle : URL, champs de formulaire, body d’une requête, cookies, headers, ... Savez-vous pour chaque fonctionnalité quels sont les inputs utilisés, et comment vérifiez-vous que ceux-ci sont valides ?
Nous avons pour ambition de sécuriser le Web, et pour atteindre cet objectif, nous avons besoin de vous ! Si vous avez des questions, des suggestions ou le moindre doute n'hésitez pas à contacter l'équipe sécurité, directement ou par mail (security@theodo.fr).