Introduction
La montée en puissance des cybermenaces, comme l’attaque CosmicSting, souligne l’importance d’une gestion proactive de la sécurité des systèmes. Cette vulnérabilité, qui cible principalement les boutiques Adobe Commerce et Magento, expose les données sensibles à des risques considérables.
Pour contrer ces menaces, il est crucial d’adopter des mesures préventives, notamment la rotation régulière des clés de chiffrement. Dans cet article, nous examinerons l’importance de cette pratique et vous fournirons des conseils sur la manière de l’appliquer efficacement dans votre environnement. En vous engageant dans des stratégies de défense robustes, vous pourrez mieux protéger vos ressources et renforcer la résilience de votre infrastructure face aux menaces émergentes.
1.Mise à Jour Essentielle : Appliquer le Dernier Patch Adobe
Il est impératif de mettre à jour votre système vers la dernière version du correctif fournie par Adobe avant d’effectuer la rotation des clés. Cette étape garantit que toutes les vulnérabilités connues sont corrigées, offrant ainsi une base sécurisée pour la gestion de vos clés cryptographiques. Ne négligez pas cette mise à jour cruciale, car elle joue un rôle essentiel dans la protection de vos données sensibles contre les menaces potentielles..
1.Pourquoi la Rotation de la Clé est Essentielle
Même si votre boutique est sécurisée, il existe toujours un risque qu’un jeton JWT (JSON Web Token) ait été émis et demeure valide. Pour cette raison, il est fortement recommandé aux marchands de procéder à une rotation de la clé de chiffrement pour renforcer la sécurité. Cependant, il est important de noter que le processus de rotation de clé de Magento ne désactive pas automatiquement l’ancienne clé, ce qui peut présenter des vulnérabilités résiduelles. Le module gene encryption module peut simplifier cette procédure en invalidant efficacement les anciennes clés tout en régénérant les valeurs chiffrées avec la nouvelle clé. Cela garantit une sécurité complète pour votre boutique en ligne et protège les données sensibles des clients.
Voici les étapes générales à suivre pour prévenir les attaques liées à CosmicSting. Lisez attentivement chaque étape pour comprendre les fonctionnalités de ce module ainsi que les points de vulnérabilité potentiels.
1. Identification des Tables Utilisant la Clé de Chiffrement :
Commencez par effectuer une sauvegarde complète de la base de données, que nous utiliserons pour déterminer quelles tables contiennent des valeurs chiffrées. Si une sauvegarde de production n’est pas réalisable, vous pouvez recourir aux environnements de staging ou de QA. Une fois la sauvegarde effectuée, utilisez la commande suivante pour extraire les données :
mysqldump –databases nom_de_la_base > chemin/vers/backup.sql |
Une fois la sauvegarde effectuée, vous pourrez repérer les tables contenant des valeurs chiffrées. Pour ce faire, utilisez grep pour rechercher les tables en analysant le fichier de sauvegarde :
grep -P “VALUES\s*\(.*\d:\d:…*'” chemin/vers/backup.sql | awk ‘{print $3}’ | sort | uniq -c |
Cela vous fournira une liste des tables contenant des valeurs chiffrées, lesquelles devront être régénérées avec la nouvelle clé .
2.Installation De Module gene encryption:
installez le module Gene Encryption Key Manager disponible sur GitHub. Ce module offre des fonctionnalités avancées pour gérer efficacement les clés de chiffrement.
Lien vers le module : Gene Encryption Key Manager sur GitHub
composer require gene/module-encryption-key-manager |
3.Générer une nouvelle clé et empêcher l'utilisation des anciennes pour les JWT
C’est la priorité absolue pour chaque marchand ! Installez ce module et générez une nouvelle clé en utilisant la commande suivante :
php bin/magento gene:encryption-key-manager:generate [–key=MA_NOUVELLE_CLE_DE_32_CARACTERES] [–skip-saved-credit-cards] —force |
Cette action forcera le JWT factory à utiliser la nouvelle clé. D’autres parties de l’application peuvent encore recourir aux anciennes clés, mais cette étape est essentielle pour contrer les attaques de CosmicSting.
Utilisez l’option –key pour définir manuellement la nouvelle clé à utiliser lors de la réinitialisation du chiffrement. Si aucune clé personnalisée n’est fournie, une nouvelle clé sera automatiquement générée.
L’option –skip-saved-credit-cards permet de ne pas ré-encrypter les données de cc_number_enc dans la table sales_order_payment. Cette table peut être volumineuse, et de nombreuses boutiques n’y conservent aucune donnée.
4.Correction des Valeurs de Configuration Manquantes:
Ces commandes s’exécutent en mode dry run par défaut, ce qui vous permet d’effectuer un premier passage pour visualiser les modifications qui seront apportées. Une fois que vous êtes satisfait des résultats, vous pouvez exécuter la commande avec l’option –force pour appliquer les changements.
Pour résoudre les valeurs de configuration manquantes, exécutez la commande suivante :
php bin/magento gene:encryption-key-manager:reencrypt-unhandled-core-config-data |
Cela réencryptera les données de configuration principales qui n’ont pas été prises en charge. Une fois que cette opération est terminée, vous pouvez relancer la commande pour vérifier que tout a été correctement mis à jour :
php bin/magento gene:encryption-key-manager:reencrypt-unhandled-core-config-data |
5.Correction des Données 2FA
Pour corriger les données liées à l’authentification à deux facteurs (2FA), exécutez la commande suivante :
php bin/magento gene:encryption-key-manager:reencrypt-tfa-data |
Après avoir effectué cette opération, relancez la commande pour vérifier que tout a été correctement mis à jour :
php bin/magento gene:encryption-key-manager:reencrypt-tfa-data |
6.Correction des Colonnes Supplémentaires Identifiées
Il est également important de réencrypter toutes les autres colonnes identifiées avec la cmd Grep . Assurez-vous de vérifier chaque table et colonne. Soyez vigilant, en particulier avec les colonnes entity_id, row_id et id.
Voici la commande à exécuter pour encrypter les colonnes supplémentaires :
php bin/magento gene:encryption-key-manager:reencrypt-column entity_name entity_id column_name |
Exemples:
php bin/magento gene:encryption-key-manager:reencrypt-column customer_entity entity_id rp_token |
php bin/magento gene:encryption-key-manager:reencrypt-column oauth_token entity_id secret |
php bin/magento gene:encryption-key-manager:reencrypt-column oauth_consumer entity_id secret |
Après chaque commande, assurez-vous de vérifier que les valeurs ont été correctement mises à jour dans la base de données.
7.Vider le Cache
Pour vider le cache de votre installation Magento, exécutez la commande suivante :
php bin/magento cache:flush |
À ce stade, toutes vos données devraient avoir été migrées vers votre nouvelle clé de chiffrement. Pour vous aider à vérifier cela, vous pouvez effectuer les opérations suivantes :
Configurer les Paramètres de Journalisation:
Activez la journalisation des décryptages pour vérifier que rien n’utilise encore l’ancienne clé :
php bin/magento config:set –lock-env dev/debug/gene_encryption_manager_only_log_old_decrypts 1 |
php bin/magento config:set –lock-env dev/debug/gene_encryption_manager_enable_decrypt_logging 1 |
Surveillez vos journaux à la recherche de “gene encryption manager” pour vérifier que rien n’utilise encore l’ancienne clé.
8.Invalidation de l'Ancienne Clé
Une fois que vous êtes satisfait des vérifications, vous pouvez invalider votre ancienne clé avec la commande suivante :
php bin/magento gene:encryption-key-manager:invalidate |
Avant l’invalidation env.php
Après l’invalidation :
Note:
Notez que Magento\Catalog\Model\View\Asset\Image continuera à utiliser la clé à l’index 0 dans la section crypt/invalidated_key.
9.Tests à Effectuer
Assurez-vous de bien tester les éléments suivants :
Toutes les intégrations qui utilisent les API de Magento.
Les médias doivent toujours s’afficher avec le même répertoire de hachage. S’il se régénère, cela pourrait occuper un espace disque considérable et augmenter le temps d’exécution.
Connexion/Déconnexion des utilisateurs administrateurs.
Connexion/Déconnexion des clients.
En effectuant ces tests, vous vous assurez que tout fonctionne correctement après la migration vers la nouvelle clé de chiffrement.