Module Magento 2 – Scanner de sécurité et de détection de code malveillant
- Compatibilité
- 2.4.9, 2.4.8, 2.4.7, 2.4.6, 2.4.5, 2.4.4, 2.4.3, 2.4.2, 2.4.1, 2.4.0, 2.3.7, 2.3.6, 2.3.5, 2.3.4
Description / Module Magento 2 – Scanner de sécurité et de détection de code malveillant
MAGENTO 2 · SURVEILLANCE · DÉTECTION · RAPPORTS
Détectez les changements suspects et évaluez les incidents plus rapidement.
Kowal Security Scan
Contrôlez les fichiers et certains contenus de la base de données Magento. Combinez des règles de détection locales avec le reporting, une analyse AI optionnelle et l’évaluation de la réputation des URL via Google Safe Browsing.
Fichiers et base de données · Cron et CLI · Règles et allowlists
COMMENT CELA FONCTIONNE EN PRATIQUE
01 · Vous configurez l’analyse
Vous activez le module, les rapports et les intégrations sélectionnées.
02 · Le scanner contrôle la boutique
Vous lancez les analyses manuellement ou via cron.
03 · L’équipe évalue le rapport
Elle vérifie les détections et prend les mesures suivantes.
Qu’apporte-t-il à votre boutique ?
Découvrez les fonctionnalités, les usages et les paramètres du module.
Découvrez le module
Kowal Security Scan est un module de sécurité avancé pour Magento 2 qui aide à détecter plus rapidement les changements suspects dans les fichiers, le code malveillant, les URL dangereuses et les injections dans les contenus de la base de données. Il a été conçu pour fonctionner de manière légère, sans agents supplémentaires et sans déploiement complexe.
Fonctionnalités clés du module
- Analyse des changements dans les fichiers - détecte les fichiers nouveaux, modifiés et supprimés au sein de l’application Magento.
- Analyse heuristique du malware - analyse les fichiers
php,phtml,js,html,svg,htaccesset d’autres supports de payloads. - Analyse des tokens PHP - détecte les chaînes
decode -> execute, les callbacks dynamiques, les variable function calls et lesinclude/requiresuspects. - Analyse de la base de données - contrôle certaines tables Magento à la recherche de HTML malveillant, JavaScript, SVG, URI
data:et liens dangereux. - Intégration avec Google Safe Browsing - évalue la réputation des URL présentes dans les contenus de la boutique.
- Analyse OpenAI optionnelle - enrichit le rapport avec une évaluation du risque et des recommandations d’actions.
- Allowlists avancées - permettent de limiter les false positives au niveau des domaines, fichiers, contenus et règles spécifiques.
- Rapports avec configuration prête à l’emploi - le module suggère des candidats pour les allowlists et génère un export JSON normalisé prêt à être utilisé.
Qu’est-ce qui distingue ce module ?
- Identifiants de règles stables - les règles de fichiers et de base disposent de leur propre
rule_id, ce qui évite que la configuration des allowlists dépende de la description textuelle complète. - Rapports conçus pour la gestion des incidents - le rapport présente non seulement les détections, mais aussi le niveau de risque, les recommandations et les entrées de configuration prêtes à l’emploi.
- Contrôle des false positives sans désactiver le scanner - vous pouvez neutraliser une règle unique pour un chemin ou une table donné au lieu de désactiver tout le module.
- Automatisation complète - le module fonctionne via cron, mais chaque analyse peut aussi être lancée manuellement via CLI.
Quelles menaces aide-t-il à détecter ?
- code PHP obfusqué basé sur
eval,base64_decode,gzinflateet des techniques similaires, - insertions JavaScript malveillantes dans les contenus CMS,
- iframes externes et redirections suspectes,
- payloads SVG et contenus dissimulés dans des URI
data:, - liens dangereux menant à du malware, du phishing ou des logiciels indésirables,
- modifications non autorisées des fichiers de l’application.
Où le module recherche-t-il les menaces ?
Le module analyse les zones clés de la boutique où les incidents apparaissent le plus souvent :
- fichiers de l’application Magento et des modules,
- blocs CMS,
- pages CMS,
core_config_data,- templates d’e-mails Magento et de newsletter,
- contenus produit et avis clients.
Rapports et réaction opérationnelle
- Les résultats sont enregistrés dans une table de rapports dédiée du module.
- Le rapport peut être envoyé par e-mail à l’opérateur.
- Chaque détection peut contenir un niveau de risque, des consignes opérationnelles et le
rule_idassocié. - Le rapport peut préparer des suggestions prêtes à l’emploi pour les allowlists ainsi qu’une configuration normalisée en JSON.
Exemples d’utilisation
- détection de code malveillant ajouté après une intrusion dans la boutique,
- surveillance des modifications non autorisées dans les fichiers de déploiement,
- détection de blocs CMS infectés ou de contenus infectés dans la base de données,
- évaluation visant à déterminer si une URL suspecte doit être ajoutée à l’allowlist ou supprimée du système.
Pourquoi l’adopter ?
- Déploiement rapide - fonctionne comme un module Magento 2 sans infrastructure supplémentaire.
- Reporting pratique - le module ne s’arrête pas à la détection, il aide à passer à une décision opérationnelle.
- Meilleur contrôle de la qualité des alertes - les allowlists et les
rule_idfacilitent le maintien d’une efficacité élevée sans avalanche de faux positifs. - Bonne adaptation aux environnements de production - analyses automatiques, rapports par e-mail et commandes CLI manuelles accompagnent le travail quotidien de l’équipe technique.
Compatibilité
- Magento Open Source 2.3.x - 2.4.x
- Adobe Commerce / Magento Commerce
Que contient le package ?
- module Magento 2 avec tâches cron et commandes CLI,
- configuration d’administration du module,
- mécanisme de reporting vers la base et par e-mail,
- règles de détection avancées et système d’allowlists.
Documentation et support
Une documentation de déploiement et de configuration est disponible pour le module, et son architecture prend en charge l’ajustement ultérieur des règles et des processus de sécurité dans la boutique Magento 2.
Favorisez la détection plus précoce des incidents dans Magento 2 avec Kowal Security Scan.
Première analyse et périmètre de surveillance
La description existante mentionne Magento Open Source 2.3.x–2.4.x ainsi qu’Adobe Commerce / Magento Commerce. La compatibilité d’une version précise de Magento et de PHP doit être vérifiée avec la version fournie du package. Le premier lancement de filecheck crée un snapshot de référence. Ce n’est qu’à partir des analyses suivantes que l’état est comparé et que les éléments ADDED, MODIFIED et REMOVED sont signalés. Les zones telles que var, generated, vendor, pub/static et node_modules sont ignorées dans l’analyse des changements.
Database Scan couvre les tables sélectionnées : cms_block, cms_page, core_config_data, email_template, newsletter_template, review_detail et catalog_product_entity_text. Le module ne garantit pas la détection de toutes les menaces et ne supprime pas automatiquement les infections.
Planification et configuration
Dans Stores → Configuration → Kowal → Security Scan, vous définissez l’activation, le destinataire et l’expéditeur des rapports ainsi que la rétention. Le cron par défaut lance l’analyse des changements à 00:00, l’analyse malware à 01:00, la base à 02:00 et le nettoyage des rapports à 02:30.
L’automatisation nécessite un cron Magento fonctionnel et l’envoi des e-mails. Les commandes manuelles sont kowal_securityscan:filecheck, kowal_securityscan:malwarecheck et kowal_securityscan:dbcheck.
API optionnelles et exceptions précises
Sans OpenAI ni Google Safe Browsing, les analyses locales de base fonctionnent. Les API activées nécessitent vos propres clés et l’accès aux services. L’analyse AI transmet les fragments suspects à OpenAI ; vous configurez le modèle et le contexte maximal. Safe Browsing contrôle les URL détectées ainsi que l’adresse de base de la boutique.
La neutralisation d’une règle unique pour un fichier ou une table est plus ciblée que l’exclusion de tout le fichier ou de tout l’enregistrement. Validez les candidats d’allowlist issus du rapport et de l’export JSON après vérification — le rapport aide l’opérateur à décider, il ne le remplace pas.
Installation via Composer
Package kowal/module-securityscan, module Kowal_SecurityScan. Après avoir configuré l’accès au dépôt Kowal, installez le package, activez le module, mettez Magento à jour et videz le cache. En production, prévoyez la compilation et le déploiement des contenus statiques conformément au processus de la boutique.
De la configuration au résultat
1. Vous configurez l’analyse
Vous activez le module, les rapports et les intégrations sélectionnées.
2. Le scanner contrôle la boutique
Vous lancez les analyses manuellement ou via cron.
3. L’équipe évalue le rapport
Elle vérifie les détections et prend les mesures suivantes.
Script suspect dans un bloc CMS
L’analyse de la base détecte un fragment JavaScript dans un contenu CMS. Le rapport indique l’enregistrement et la règle, tandis que l’analyse AI optionnelle aide à évaluer le risque.
L’opérateur vérifie s’il s’agit d’un incident ou d’une intégration légitime. Un faux positif vérifié peut être neutralisé avec une règle d’allowlist précise.
Activez la surveillance régulière de Magento
Vous souhaitez adapter le module à votre boutique ? Demandez le déploiement de Kowal Security Scan et discutez de la configuration ou des extensions nécessaires.
Caractéristiques
| Compatibilité avec le modèle | Luma / Blank, KOWAL |
|---|
Change Log
Version : 1.0.27
31.03.2026
Nous avons enrichi le module Kowal_SecurityScan avec de nouvelles fonctionnalités liées à l’analyse des menaces et à l’administration des rapports.
Nouveautés
- Ajout d’une intégration avec OpenAI pour analyser les fichiers modifiés et les enregistrements suspects dans la base de données.
- Les rapports et les e-mails incluent désormais une évaluation du risque ainsi que les actions recommandées dans les domaines suivants :
- Magento
- serveur
- firewall
- Ajout de la configuration OpenAI dans le panneau Magento, notamment :
- activation/désactivation de l’analyse AI
- clé API
- choix du modèle
- limite du contexte transmis à l’analyse
Améliorations
- La liste des modèles OpenAI est désormais récupérée dynamiquement depuis l’API et présentée dans la configuration sous forme de dropdown.
- Le contenu des e-mails a été enrichi avec l’identification de la boutique Magento :
- domaine de la boutique
- URL de la boutique
- Le domaine de la boutique est également ajouté à l’objet du message, ce qui facilite la gestion de plusieurs instances.
Automatisation et maintenance
- Ajout d’un nouveau cron nettoyant les anciennes entrées de la table des rapports.
- La durée de rétention des rapports est configurable depuis system.xml sous forme de nombre de jours.
Correctifs techniques
- La logique d’analyse des fichiers et des enregistrements suspects a été réorganisée.
- La gestion du contexte des données transmises à l’analyse AI a été améliorée.
- Correction du problème de compilation DI lié à l’implémentation précédente du client OpenAI.
Notice d'installation du module
Guide du module Kowal_SecurityScan
Vue d’ensemble
Le module ajoute à Magento 2 une couche de surveillance de sécurité pour les fichiers de l’application, certaines tables de base de données, les URL suspectes et l’analyse optionnelle des incidents via OpenAI.
Les rapports sont enregistrés dans la table kowal_securityscan_report et peuvent être envoyés par e-mail.
Fonctionnalités principales
- analyse des changements dans les fichiers Magento avec comparaison au snapshot,
- analyse heuristique des fichiers
php,phtml,php5,inc,phar,js,html,htm,svg,htaccess, - analyse des tokens PHP via
token_get_all(), - analyse de certaines tables de base de données à la recherche de HTML malveillant, JavaScript, SVG, URI
data:et URL suspectes, - intégration avec Google Safe Browsing API,
- analyse OpenAI optionnelle pour les détections,
- allowlists configurables de domaines, fichiers, modèles de contenu et règles,
- rapports avec suggestions prêtes pour les allowlists et export d’une configuration JSON normalisée.
Prérequis
- Magento 2,
- module
kowal/basedisponible, - cron Magento fonctionnel,
- envoi d’e-mails correctement configuré,
- optionnellement : clé OpenAI API et clé Google Safe Browsing API.
Installation
1. Ajout du dépôt du package
Ajoutez le dépôt Composer Kowal :
Les identifiants d’accès au dépôt Composer, c’est-à-dire l’adresse e-mail du client et le token de licence, vous seront envoyés par e-mail après l’achat. Ils sont également disponibles dans l’espace client après connexion sur kowal.store. Remplacez TWOJ_EMAIL_KLIENTA par l’adresse e-mail de votre compte et TWOJ_TOKEN par le token reçu. Exécutez les commandes dans le répertoire racine de Magento.
composer config repositories.kowal composer https://repo.kowal.storeSi le dépôt nécessite une autorisation :
composer config http-basic.repo.kowal.store 'TWOJ_EMAIL_KLIENTA' 'TWOJ_TOKEN'2. Installation du package
composer require kowal/module-securityscan3. Activation du module
php bin/magento module:enable Kowal_SecurityScan
php bin/magento setup:upgrade
php bin/magento cache:flushEn environnement de production, effectuez les étapes standard de déploiement Magento, conformément à votre processus de mise en production.
Cron et planning des analyses
Le module enregistre son propre groupe cron securityscan.
kowal_securityscan_filecheck- tous les jours à00:00,kowal_securityscan_malwarecheck- tous les jours à01:00,kowal_securityscan_dbcheck- tous les jours à02:00,kowal_securityscan_cleanup_reports- tous les jours à02:30.
Sans cron Magento fonctionnel, les analyses automatiques ne seront pas exécutées.
Lancement manuel des analyses
Pour lancer les analyses manuellement, utilisez :
php bin/magento kowal_securityscan:filecheck
php bin/magento kowal_securityscan:malwarecheck
php bin/magento kowal_securityscan:dbcheckC’est la méthode recommandée pour tester après l’installation et après les changements de configuration.
Configuration
Chemin de configuration :
Stores -> Configuration -> kowal -> kowal_security
Paramètres généraux
Włącz modułAdres e-mail do raportówAdres e-mail nadawcyRetencja raportow w dniachGoogle Safe Browsing API KeyAllowlista domenAllowlista plikowAllowlista wzorcow bazyAllowlista reguł plikowAllowlista reguł bazy
Configuration minimale
- activez le module,
- définissez l’adresse du destinataire des rapports,
- définissez l’adresse de l’expéditeur des rapports,
- assurez-vous que l’envoi d’e-mails Magento fonctionne,
- assurez-vous que le cron Magento fonctionne.
Analyse OpenAI
La section Analiza OpenAI permet d’enrichir les rapports avec une évaluation du risque et des recommandations d’actions.
Champs disponibles :
Włącz analizę AI,OpenAI API Key,Model OpenAI,Maksymalny kontekst dla AI.
Comment l’activer
- activez
Włącz analizę AI, - renseignez
OpenAI API Key, - enregistrez la configuration,
- actualisez le formulaire de configuration,
- choisissez le modèle.
Comportement par défaut
- modèle par défaut :
gpt-4.1-mini, - limite de contexte par défaut :
12000, - les valeurs inférieures à
2000sont relevées à12000, - la limite maximale de contexte est
50000.
Si OpenAI est désactivé ou si la clé est absente, le module continue de fonctionner et applique les heuristiques locales.
Google Safe Browsing
Si vous renseignez Google Safe Browsing API Key, le module :
- contrôlera les URL détectées dans les fichiers et la base,
- contrôlera l’adresse de base de la boutique.
L’absence de clé ne bloque pas les analyses de base, elle désactive seulement cette étape.
Analyse des changements dans les fichiers
filecheck fonctionne à partir d’un snapshot enregistré dans :
var/security_scan_hashes.json
Lors du premier lancement :
- un snapshot est créé,
- il n’y a pas encore de comparaison des changements,
- le rapport informe de la création de la base de référence.
Les lancements suivants signalent les changements de type ADDED, MODIFIED et REMOVED.
Sont notamment ignorés :
var/,generated/,vendor/,pub/static/,node_modules/.
Analyse malware dans les fichiers
malwarecheck analyse les fichiers de l’application sur la base :
- des règles regex avec
rule_id, - des heuristiques de tokens PHP,
- des contrôles d’URL via Safe Browsing.
Exemples de types de détection :
file.obfuscated_eval_chain,file.command_execution_from_request,file.encoded_payload_blob,file.token.decode_execute_chain,file.token.include_from_request,file.inline_svg_or_event_handler.
Dans les rapports, les motifs sont présentés au format :
[file.encoded_payload_blob] Encoded payload blob detectedAnalyse de la base de données
dbcheck analyse certaines tables Magento :
cms_block,cms_page,core_config_data,email_template,newsletter_template,review_detail,catalog_product_entity_text.
Exemples de règles :
db.inline_script_tag,db.html_event_handler,db.external_iframe,db.javascript_uri,db.data_uri_executable,db.embedded_svg_payload,db.javascript_dom_redirect.
Le contenu est d’abord normalisé par :
html_entity_decode,rawurldecode,- normalisation du whitespace,
- analyse de plusieurs variantes du même contenu.
Configuration avancée : allowlists
Les allowlists servent à limiter les false positives sans désactiver tout le module.
1. Allowlist des domaines
Champ : kowal_security/general/allowlisted_domains
Format :
- un domaine par ligne, ou
- liste séparée par des virgules.
cdn.example.comstatic.example.orgEffet :
- les URL de ces domaines ne seront pas considérées comme suspectes,
- Safe Browsing ne les contrôlera pas.
2. Allowlist des fichiers
Champ : kowal_security/general/allowlisted_file_patterns
Format :
- chemins relatifs,
- prise en charge des globs.
app/code/Vendor/Module/Test/*pub/media/custom.jsEffet : les fichiers correspondant au modèle sont entièrement ignorés par l’analyse malware. Ce paramètre a une portée large.
3. Allowlist des modèles de base
Champ : kowal_security/general/allowlisted_db_patterns
Format :
- phrases,
- fragments HTML ou JS,
- entrées séparées par une nouvelle ligne ou par des virgules.
trusted-inline-widgetdata:image/svg+xml,<svgEffet : un enregistrement de base contenant ce fragment est ignoré par l’analyse DB. Ce paramètre a également une portée large.
4. Allowlist des règles de fichiers
Champ : kowal_security/general/allowlisted_file_rules
Format recommandé :
sciezka_lub_glob | rule_idExemple :
app/code/Vendor/Module/* | file.encoded_payload_blobpub/media/custom.js | file.javascript_redirect_or_rewriteCompatibilité ascendante :
- les anciennes entrées basées sur l’étiquette complète de la règle continuent de fonctionner,
- les nouvelles entrées doivent utiliser
rule_id.
Effet : seule la règle indiquée est neutralisée pour le chemin indiqué, tandis que le reste de l’analyse de ce fichier continue de fonctionner.
5. Allowlist des règles de base
Champ : kowal_security/general/allowlisted_db_rules
Format recommandé :
tabela_lub_* | rule_idExemple :
cms_block | db.inline_script_tag* | db.fetch_or_xhr_loaderEffet : seule la règle indiquée est neutralisée, tandis que les autres continuent de fonctionner pour cet enregistrement ou cette table.
Rapports
Les rapports peuvent contenir :
- la liste des détections,
- l’évaluation du risque,
- des indicateurs et recommandations,
- des candidats pour allowlist après vérification manuelle,
- une configuration d’allowlists normalisée en JSON.
Suggestions d’allowlist dans les rapports
La section du rapport peut contenir des entrées de type :
- cms_block | db.inline_script_tag | pewnosc=MEDIUM | zasieg=LOW- app/code/Vendor/Module/* | file.encoded_payload_blob | pewnosc=MEDIUM | zasieg=LOW- data:image/svg+xml,<svg... | pewnosc=LOW | zasieg=HIGHInterprétation :
zasieg=LOW- candidat plus sûr,zasieg=HIGH- neutralisation large, uniquement après vérification stricte,pewnosc=MEDIUM/HIGH- candidat à la configuration plus prévisible,pewnosc=LOW- nécessite de la prudence.
Export JSON
Le rapport contient aussi la section Znormalizowana konfiguracja allowlist (JSON). Il s’agit d’un ensemble prêt à l’emploi, dédupliqué, de valeurs à reporter dans la configuration.
Mode d’utilisation recommandé
- lancez manuellement les trois analyses après l’installation,
- considérez le premier
filecheckcomme la construction du snapshot, - analysez les rapports et confirmez quelles détections sont réelles,
- pour les false positives, utilisez d’abord
allowlisted_file_rulesetallowlisted_db_rules, - n’utilisez
allowlisted_domains,allowlisted_file_patternsetallowlisted_db_patternsque lorsque c’est nécessaire, - après un changement de configuration, relancez l’analyse CLI appropriée et vérifiez le résultat.
Remarques opérationnelles
filecheckne signale pas encore les changements comme incident lors du premier lancement,- le module fonctionne sans OpenAI et sans Safe Browsing, mais avec une profondeur d’analyse moindre,
allowlisted_file_patternsetallowlisted_db_patternsont un impact large et doivent être utilisés avec parcimonie,- le format préféré pour les allowlists de règles est
rule_id, et non l’étiquette textuelle complète.