La violation du trimestre : récupération de numéros de carte bancaire par injection SQL sur un site de e-commerce

07 octobre 2020

La « violation du trimestre » est un exemple d’incident de sécurité touchant des données personnelles. Aujourd’hui, nous évoquons les injections SQL et leurs conséquences possibles. La CNIL donne des recommandations pour prévenir ce type d’attaque, quelle que soit l’importance de votre site.

Sécuriser son système d’information est primordial pour garantir que les données de ses clients ou prospects ne soient pas volées ou compromises. L’injection SQL est une attaque répandue, qui peut être dévastatrice pour les données personnelles. Elle peut permettre de prendre la main à distance sur le serveur ou installer un enregistreur de frappe.

Une telle attaque peut être très coûteuse et avoir un impact réputationnel important pour l’entreprise.

Quel est le mode opératoire type d’une telle attaque ?

violation du trimestre

 
  • Etape 1 : un attaquant cible un site faillible aux injections SQL et l’attaque, par exemple à l’aide d’un outil de type SQLMap.
  • Etape 2 : l’attaquant récupère l’identifiant et le mot de passe du compte administrateur qui se trouvent dans la base de données et qui sont stockés avec une fonction de hachage MD5 sans sel .
  • Etape 3 : l’injection SQL lui permet également de récupérer la table « utilisateurs » du site, contenant les données personnelles des clients : nom, prénom, adresse courriel, mots de passe, adresse physique, numéro de téléphone, etc. Pour cela, les outils automatisés génèrent un grand nombre de requêtes à travers la vulnérabilité pour identifier le schéma de base de données, les tables et, au final, les données contenues dans ces dernières.
  • Etape 4 : l’attaquant exécute des commandes shellsur le site web ciblé car certains des répertoires du serveur sont ouverts en écriture. L’attaquant utilise ce shell pour lancer un script ou un programme qui permet d’ouvrir une fausse fenêtre de navigation (iframe) lorsqu’un client passe une commande et en ajoutant un enregistreur de frappe (keylogger).
  • Etape 5 : les utilisateurs souhaitant réaliser une transaction en ligne saisissent alors leurs informations bancaires dans cette fausse fenêtre et les communiquent à l’attaquant.

Que faire en cas d’attaque et comment s’en protéger ?

  1. Informer les personnes concernées

L’accès illégitime à des données personnelles, et plus particulièrement à des informations bancaires, fait généralement courir un risque élevé pour les personnes concernées. Dans ce cas, il est donc nécessaire d’informer les victimes (potentielles ou avérées) afin qu’elles puissent prendre les mesures nécessaires pour se protéger elles-mêmes.

Le responsable peut proposer aux personnes de :

  • modifier leur mot de passe associé à leur adresse courriel sur le site victime ;
  • modifier leur mot de passe sur les autres sites où les mêmes identifiants et mots de passe seraient utilisés ;
  • faire opposition à leur carte bancaire, afin de rendre les données subtilisées inopérantes.

Le site Have I Been Pwned? (« Me suis-je fait avoir ? ») recueille et analyse de nombreuses bases de données qui ont fait l’objet d’une violation.

Il permet à tous les utilisateurs de vérifier, en entrant leur adresse de courriel, si leurs données, par exemple  leur mot de passe, ont pu être compromises.

 

  1. Documenter la violation et notifier la CNIL

Le responsable de traitement doit :

  • enregistrer la violation dans son registre des violations ;       
  • notifier la CNIL dans un délai de 72 h (article 33 du RGPD).

Il peut également déposer une plainte auprès des autorités compétentes (police, gendarmerie). Il est important que le responsable de traitement dispose de toutes les informations techniques, notamment les journaux d’accès, afin de pouvoir les communiquer aux enquêteurs.

  1. Prévenir les attaques

Il est important, pour un responsable de traitement, de faire auditer son site web, notamment sur les aspects techniques, régulièrement et sans attendre une première attaque. Les failles les plus classiques peuvent ainsi être découvertes :

  • la vulnérabilité à l’injection SQL ;
  • des répertoires disponibles en écriture ;
  • des mots de passe hachés avec MD5 sans sel.

Une fois découvertes, certaines vulnérabilités peuvent être aisément corrigées.

La réussite d’une attaque dépend parfois de l’enchainement de petites vulnérabilités. Le fait de supprimer au moins une de ces vulnérabilités peut faire échouer un scénario d’attaque complet. Bien entendu, afin de se protéger efficacement des attaques les plus classiques, toutes les vulnérabilités décrites ci-dessus doivent être détectées et corrigées.