Skip to main content

Renforcer la sécurité de la conformité PCI avec SAST et SCA

Écrit par
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

blog feature snyk open source blue

8 février 2022

0 minutes de lecture

La norme de sécurité des données de l’industrie des cartes de paiement, également appelée PCI DSS, est un processus approfondi qui examine les systèmes et les politiques d’une entreprise relatifs au traitement et au stockage des données sensibles des titulaires de cartes.

La norme PCI DSS joue un rôle essentiel dans le secteur des paiements. Elle contribue à garantir la sécurité des données des utilisateurs finaux. Elle est gérée et maintenue par le PCI Security Standards Council, qui définit également des éléments tels que les exigences auxquelles les fournisseurs d’accréditation doivent répondre pour obtenir la certification PCI DSS. Actuellement, Mastercard et Visa imposent aux commerçants et aux prestataires de services de respecter la norme PCI DSS, sauf quelques exceptions. En cas de violation, si l’entité concernée n’était pas conforme à la norme PCI DSS au moment des faits, elle devra s’acquitter de sanctions supplémentaires, telles que des amendes.

Ces contrôles sont essentiels, non seulement pour l’ensemble du secteur des paiements, mais aussi pour instaurer un climat de confiance avec les utilisateurs, qui savent ainsi que leurs données sont protégées. Le processus de conformité PCI comprend une série de contrôles, généralement effectués par un tiers accrédité, afin de vérifier que des procédures sécurisées de traitement des données sont en place.

Dans cet article, nous examinons plus en détail les exigences de la norme PCI DSS et voyons comment les outils de test de sécurité statique des applications (SAST) et d’analyse de la composition logicielle (SCA) peuvent vous aider à y répondre plus facilement. Nous vous montrerons également comment utiliser Snyk pour répondre à vos besoins en matière de SAST et de SCA dans le cadre de la norme PCI DSS. C’est parti !

Exigences de conformité PCI

La norme PCI DSS compte 12 exigences pour créer et maintenir un réseau et des systèmes sécurisés. Elles portent notamment sur l’accès aux données sensibles des titulaires de cartes, aux systèmes internes et à l’infrastructure des applications, ainsi que sur le développement et la maintenance de systèmes et d’applications sécurisés.

Voici la liste complète des exigences, dans les grandes lignes :

  1. Installer et maintenir une configuration de pare-feu pour protéger les données des titulaires de cartes. Un pare-feu analyse l’ensemble du trafic réseau et empêche les réseaux non fiables d’accéder au système.

  2. Remplacer les mots de passe système et autres paramètres de sécurité par défaut fournis par les fournisseurs. Les mots de passe par défaut sont faciles à trouver dans les informations publiques et peuvent permettre à des personnes malveillantes d’accéder aux systèmes sans autorisation.

  3. Protéger les données des titulaires de cartes stockées. Le chiffrement, le hachage, le masquage et la troncature sont des méthodes qui permettent de protéger ces données.

  4. Chiffrer la transmission des données des titulaires de cartes sur les réseaux publics ouverts. Un chiffrement robuste, qui s’appuie uniquement sur des clés et des certificats fiables, réduit le risque d’être la cible de personnes malveillantes par le biais du piratage.

  5. Protéger tous les systèmes contre les logiciels malveillants et mettre régulièrement à jour les logiciels antivirus. Les logiciels malveillants peuvent pénétrer dans un réseau de nombreuses façons : navigation sur Internet, e-mails des employés, appareils mobiles ou supports de stockage. Un antivirus à jour ou un logiciel anti-malware complémentaire réduira le risque d’exploitation par des logiciels malveillants.

  6. Développer et maintenir des systèmes et des applications sécurisés. Les vulnérabilités des systèmes et des applications permettent à des personnes mal intentionnées d’obtenir des privilèges. Les correctifs de sécurité doivent être installés sans délai afin de corriger les vulnérabilités et d’empêcher toute exploitation ou compromission des données des titulaires de cartes.

  7. Limiter l’accès aux données des titulaires de cartes aux seules personnes autorisées. Des systèmes et des processus doivent être mis en place pour restreindre l’accès à ces données selon le principe du « besoin d’en connaître ».

  8. Identifier et authentifier l’accès aux composants du système. Chaque personne ayant accès aux composants du système doit se voir attribuer un identifiant unique (ID) permettant de responsabiliser les accès aux systèmes de données critiques.

  9. Restreindre l’accès physique aux données des titulaires de cartes. L’accès physique aux données des titulaires de cartes ou aux systèmes qui les hébergent doit être sécurisé afin d’empêcher tout accès ou retrait non autorisé.

  10. Suivre et surveiller tous les accès aux données des titulaires de cartes et aux ressources réseau. Des mécanismes de journalisation doivent permettre de suivre les activités des utilisateurs, ce qui est essentiel pour prévenir les compromissions de données, les détecter ou en réduire l’impact.

  11. Tester régulièrement les systèmes et les processus de sécurité. De nouvelles vulnérabilités sont découvertes en permanence. Les systèmes, les processus et les logiciels doivent être testés fréquemment pour déceler les vulnérabilités susceptibles d’être exploitées par des personnes malveillantes.

  12. Maintenir une politique de sécurité de l’information à l’intention de l’ensemble du personnel. Une politique de sécurité rigoureuse veille notamment à ce que le personnel comprenne la sensibilité des données et sa responsabilité quant à leur protection.

La liste complète des exigences de conformité, disponible sur le site du PCI Security Standards Council, fournit bien plus de détails. Par exemple, le point 6, consacré au développement et à la maintenance de systèmes sécurisés, aborde des types de vulnérabilités spécifiques tels que :

  • Cross Site Scripting (XSS)

  • Failles d’injection (injection SQL)

  • Débordements de tampon

  • Stockage cryptographique non sécurisé

  • Communications non sécurisées

  • Gestion incorrecte des erreurs

  • Contrôle d’accès inadéquat

  • Falsification de requête intersite (CSRF)

  • Défaillances de l’authentification et de la gestion des sessions.

Si vous utilisez Snyk, tous ces problèmes de sécurité peuvent être facilement détectés et corrigés automatiquement dans les workflows et les pipelines utilisés par votre équipe.

Comment Snyk Code et Snyk Open Source peuvent vous aider

Pour illustrer la conformité PCI, nous allons utiliser Snyk pour sécuriser PrestaShop, une plateforme de commerce en ligne open source de l’écosystème PHP. Snyk propose plusieurs façons de détecter et de corriger les problèmes. Dans cet exemple, nous utiliserons la CLI Snyk pour rechercher les vulnérabilités dans les dépendances, puis PHPStorm avec le plugin Snyk pour analyser le code.

Pour suivre l’exemple ci-dessous, vous devez avoir installé Git, PHP et le gestionnaire de dépendances Composer.

Page d’accueil d’un site de commerce en ligne avec une bannière promotionnelle, un menu de navigation, une barre de recherche et des produits populaires, notamment des vêtements et des affiches encadrées

Configuration

Pour suivre les étapes, vous devez créer un compte Snyk gratuit. Vous pourrez commencer en quelques minutes, sans carte bancaire !

Vous devez ensuite installer la CLI Snyk en local. L’avantage de la CLI Snyk, c’est qu’il n’y a qu’une seule installation pour toute la plateforme. Vous pouvez donc l’utiliser pour analyser votre code, vos dépendances, vos conteneurs et votre IaC. Pour commencer rapidement, consultez notre antisèche de la CLI Snyk.

Ensuite, clonez le dépôt PrestaShop (version 1.7.8.3 au moment de la rédaction) dans votre environnement local :

git clone https://github.com/PrestaShop/PrestaShop.git

Une fois PHP Composer installé, exécutez :

composer update

Rechercher les vulnérabilités open source

Commençons par rechercher les vulnérabilités open source à partir du manifeste Composer. Pour ce faire, exécutez la commande suivante à la racine du dépôt cloné :

snyk test

Dans ce cas, le résultat indique 8 problèmes et 11 chemins vulnérables, ainsi que quelques corrections suggérées.

Analyse du terminal affichant des vulnérabilités de gravité élevée et critique dans des dépendances PHP, notamment des problèmes de traversée de répertoires et d’exécution de code à distance

Pour corriger ces vulnérabilités, il semble qu’il me suffise de mettre à niveau les bibliothèques vers des versions corrigées. Heureusement, Snyk ne se contente pas d’identifier les chemins vulnérables : il peut aussi corriger les problèmes en créant une pull request automatique dans le dépôt connecté.

Pour en savoir plus sur la connexion d’un dépôt, consultez notre documentation sur les intégrations de dépôts Git.

Rechercher les vulnérabilités dans votre code

Maintenant que vous avez vu la CLI Snyk à l’œuvre, recherchons les vulnérabilités dans la base de code avec PHPStorm et le plugin Snyk.

L’outil analysera chaque fichier de langage du projet pour y détecter d’éventuelles vulnérabilités. Dans notre exemple, il signale 252 vulnérabilités potentielles (99 [high], 131 [medium], 22 [low]) dans le code, qui nécessiteront une analyse approfondie.

Analyse de sécurité Snyk Code dans un IDE, affichant des vulnérabilités de type cross-site scripting (XSS) dans des fichiers PHP

Pour corriger ces vulnérabilités, je peux examiner les points de code mis en évidence par l’analyse, approfondir mes recherches, puis documenter mes conclusions et les corrections apportées. PHPStorm avec le plugin Snyk simplifie ce processus : je peux parcourir chaque fichier et mener une analyse plus poussée au niveau du code.

Le plugin Snyk pour PHPStorm me permet également de remonter le fil de chaque fonction d’un fichier et propose des exemples de corrections utilisées dans d’autres projets présentant le même type de problème.

Interface d’analyse de sécurité affichant des vulnérabilités dans le code et un correctif de script intersites mis en évidence dans du code PHP

Restez conforme à la norme PCI

Que vous soyez développeur, CTO ou CISO, le processus de conformité à la norme PCI DSS n’a pas à être fastidieux, à condition de disposer de processus et d’outils qui le simplifient. Il est essentiel de connaître les exigences et de mettre en place les outils et les processus nécessaires pour rester conforme. Et pour les développeurs qui nous lisent, documenter votre code est une exigence importante de la norme PCI et un bon moyen de suivre les modifications et de laisser des notes à l’intention des futurs développeurs.

Comme vous l’avez vu, Snyk peut simplifier le processus de conformité PCI DSS. Mais surtout, vous pouvez facilement intégrer l’analyse Snyk à vos pipelines CI/CD et de code, afin d’automatiser le suivi et la documentation des problèmes en continu. Créez un compte gratuit et simplifiez votre mise en conformité.

Sécurisez votre code grâce à des informations de pointe

Découvrez toutes les fonctionnalités SAST de Snyk Code en seulement 30 minutes.