Module Magento 2 – Scanner de sécurité et détection de code malveillant
Kowal Security Scan est un module de sécurité avancé pour Magento 2, qui aide à détecter plus rapidement les modifications suspectes dans les fichiers, le code malveillant, les URL dangereuses ainsi que 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 principales du module
- Scan des changements dans les fichiers - détecte les fichiers nouveaux, modifiés et supprimés dans lapplication Magento.
- Scan heuristique de malware - analyse les fichiers
php,phtml,js,html,svg,htaccesset autres supports de payloads. - Analyse des tokens PHP - détecte les chaînes
decode -> execute, les callbacks dynamiques, les variable function calls ainsi que lesinclude/requiresuspects. - Scan de la base de données - vérifie certaines tables Magento pour détecter du HTML malveillant, du JavaScript, du SVG, des URI
data:et des 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 des risques et des recommandations dactions.
- Allowlists avancées - permettent de limiter les false positives au niveau des domaines, des fichiers, des contenus et de règles spécifiques.
- Rapports avec configuration prête à lemploi - le module suggère des candidats pour lallowlist et génère un export JSON normalisé prêt à être utilisé.
Quest-ce qui distingue ce module ?
- Identifiants de règles stables - les règles pour les fichiers et la base de données disposent de leur propre
rule_id, ce qui évite que la configuration de lallowlist dépende de la description textuelle complète. - Rapports utiles pour la gestion des incidents - le rapport présente non seulement les détections, mais aussi le niveau de risque, les recommandations et des entrées prêtes à intégrer dans la configuration.
- Contrôle des false positives sans désactiver le scanner - vous pouvez neutraliser une règle précise pour un chemin ou une table donnée au lieu de désactiver tout le module.
- Automatisation complète - le module fonctionne via cron, mais chaque scan peut aussi être lancé manuellement via CLI.
Quels types de menaces aide-t-il à détecter ?
- du code PHP obfusqué basé sur
e-val,base-64_decode,gzin-flateet des techniques similaires, - des insertions JavaScript malveillantes dans les contenus CMS,
- des iframe externes et des redirections suspectes,
- des payloads SVG et des contenus cachés dans des URI
data:, - des liens dangereux menant à des malwares, du phishing ou des logiciels indésirables,
- des modifications non autorisées dans les fichiers de lapplication.
Où le module recherche-t-il les menaces ?
Le module analyse les zones clés de la boutique, là où les incidents apparaissent le plus souvent :
- les fichiers de lapplication Magento et des modules,
- les blocs CMS,
- les pages CMS,
core_config_data,- les modèles de-mails Magento et de newsletter,
- les contenus produits et les 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 à lopérateur.
- Chaque détection peut inclure un niveau de risque, des indications opérationnelles et un
rule_idassocié. - Le rapport peut préparer des suggestions prêtes à lemploi pour lallowlist ainsi quune configuration JSON normalisée.
Exemples dutilisation
- détection de code malveillant ajouté après un piratage de la boutique,
- surveillance des modifications non autorisées dans les fichiers du déploiement,
- détection de blocs CMS infectés ou de contenus infectés dans la base de données,
- évaluation pour savoir si une URL suspecte doit être autorisée dans lallowlist ou supprimée du système.
Pourquoi choisir ce module ?
- Déploiement rapide - fonctionne comme module Magento 2 sans infrastructure supplémentaire.
- Reporting pratique - le module ne sarrête pas à la détection, il aide aussi à passer à une décision opérationnelle.
- Meilleur contrôle de la qualité des alertes - les allowlists et
rule_idfacilitent le maintien dune haute efficacité sans être submergé de fausses alertes. - Bonne adaptation aux environnements de production - les scans automatiques, le reporting par e-mail et les commandes CLI manuelles facilitent le travail quotidien de léquipe technique.
Compatibilité
- Magento Open Source 2.3.x - 2.4.x
- Adobe Commerce / Magento Commerce
Que contient le pack ?
- un module Magento 2 avec tâches cron et commandes CLI,
- la configuration dadministration du module,
- un mécanisme de reporting vers la base de données et par e-mail,
- des règles de détection avancées ainsi quun système dallowlist.
Documentation et support
Le module est fourni avec une documentation de déploiement et de configuration, et son architecture facilite les ajustements ultérieurs des règles et des processus de sécurité dans la boutique Magento 2.
Assurez une détection plus précoce des incidents dans Magento 2 avec Kowal Security Scan.
Guide du module Kowal_SecurityScan
Vue densemble
Le module étend Magento 2 avec une couche de surveillance de sécurité pour les fichiers de lapplication, certaines tables de base de données, les URL suspectes ainsi quune analyse optionnelle des incidents par OpenAI.
Les rapports sont enregistrés dans la table kowal_securityscan_report et peuvent être envoyés par e-mail.
Fonctionnalités principales
- scan des changements dans les fichiers Magento avec comparaison à un snapshot,
- scan heuristique des fichiers
php,phtml,php5,inc,phar,js,html,htm,svg,htaccess, - analyse des tokens PHP via
token_get_all(), - scan 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 pour les domaines, fichiers, motifs de contenu et règles,
- rapports avec suggestions prêtes à lemploi pour lallowlist et export de configuration JSON normalisée.
Prérequis
- Magento 2,
- module
kowal/basedisponible, - cron Magento opérationnel,
- envoi de-mails correctement configuré,
- optionnel : clé OpenAI API et clé Google Safe Browsing API.
Installation
1. Ajout du dépôt du package
Si le package nest pas disponible dans le dépôt Composer par défaut, ajoutez la source :
composer config repositories.securityscan vcs https://github.com/kowalco/module-securityscan Si le dépôt nécessite une autorisation :
composer config --global --auth github-oauth.github.com 2. Installation du package
composer require kowal/module-securityscan 3. Activation du module
php bin/magento module:enable Kowal_SecurityScanphp bin/magento setup:upgradephp bin/magento cache:flush En environnement de production, exécutez les étapes standard de déploiement Magento, conformément à votre processus de déploiement.
Cron et planification des scans
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 opérationnel, les scans automatiques ne seront pas exécutés.
Lancement manuel des scans
Pour lancer les scans manuellement, utilisez :
php bin/magento kowal_securityscan:filecheckphp bin/magento kowal_securityscan:malwarecheckphp bin/magento kowal_securityscan:dbcheck Cest la méthode recommandée pour les tests après installation et après toute modification de configuration.
Configuration
Chemin de configuration :
Stores -> Configuration -> kowal -> kowal_security
Paramètres généraux
Activer le moduleAdresse e-mail des rapportsAdresse e-mail de lexpéditeurRétention des rapports en joursGoogle Safe Browsing API KeyAllowlist des domainesAllowlist des fichiersAllowlist des motifs de baseAllowlist des règles de fichiersAllowlist des règles de base
Configuration minimale
- activez le module,
- définissez ladresse du destinataire des rapports,
- définissez ladresse de lexpéditeur des rapports,
- assurez-vous que lenvoi de-mails Magento fonctionne,
- assurez-vous que cron Magento fonctionne.
Analyse OpenAI
La section Analyse OpenAI permet denrichir les rapports avec une évaluation des risques et des recommandations dactions.
Champs disponibles :
Activer lanalyse AI,OpenAI API Key,Modèle OpenAI,Contexte maximal pour AI.
Comment lactiver
- activez
Activer lanalyse AI, - renseignez
OpenAI API Key, - enregistrez la configuration,
- rafraîchissez le formulaire de configuration,
- sélectionnez 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 de
50000.
Si OpenAI est désactivé ou si la clé est absente, le module continue de fonctionner et applique des heuristiques locales.
Google Safe Browsing
Si vous renseignez Google Safe Browsing API Key, le module va :
- vérifier les URL détectées dans les fichiers et la base,
- vérifier ladresse de base de la boutique.
Labsence de clé ne bloque pas les scans de base, elle désactive seulement cette étape.
Scan des changements dans les fichiers
filecheck fonctionne à partir dun snapshot enregistré dans :
var/security_scan_hashes.json
Au premier lancement :
- un snapshot est créé,
- il ny 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 ignorés notamment :
var/,generated/,vendor/,pub/static/,node_modules/.
Scan de malware dans les fichiers
malwarecheck scanne les fichiers de lapplication sur la base de :
- règles regex avec
rule_id, - heuristiques de tokens PHP,
- vérifications dURL 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 detected Scan 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 préalablement normalisé via :
html_entity_decode,rawurldecode,- normalisation des espaces,
- analyse de plusieurs variantes dun même contenu.
Configuration avancée : allowlists
Les allowlists servent à limiter les false positives sans désactiver lensemble du module.
1. Allowlist des domaines
Champ : kowal_security/general/allowlisted_domains
Format :
- un domaine par ligne, ou
- une liste séparée par des virgules.
cdn.example.comstatic.example.org Effet :
- les URL de ces domaines ne seront pas traitées comme suspectes,
- Safe Browsing ne les vérifiera pas.
2. Allowlist des fichiers
Champ : kowal_security/general/allowlisted_file_patterns
Format :
- chemins relatifs,
- prise en charge des glob patterns.
app/code/Vendor/Module/Test/*pub/media/custom.js Effet : les fichiers correspondant au motif sont totalement ignorés par le scan malware. Ce paramètre a une portée large.
3. Allowlist des motifs de base
Champ : kowal_security/general/allowlisted_db_patterns
Format :
- phrases,
- fragments HTML ou JS,
- entrées séparées par un saut de ligne ou des virgules.
trusted-inline-widgetdata:image/svg+xml, Effet : un enregistrement de base contenant un tel fragment est ignoré par le scan DB. Ce paramètre a lui aussi une portée large.
4. Allowlist des règles de fichiers
Champ : kowal_security/general/allowlisted_file_rules
Format recommandé :
chemin_ou_glob | rule_id Exemple :
app/code/Vendor/Module/* | file.encoded_payload_blobpub/media/custom.js | file.javascript_redirect_or_rewrite Compatibilité ascendante :
- les anciennes entrées basées sur le libellé complet de la règle fonctionnent toujours,
- 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 du scan pour ce fichier continue de fonctionner.
5. Allowlist des règles de base
Champ : kowal_security/general/allowlisted_db_rules
Format recommandé :
table_ou_* | rule_id Exemple :
cms_block | db.inline_script_tag* | db.fetch_or_xhr_loader Effet : 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 :
- une liste de détections,
- une évaluation du risque,
- des indicateurs et recommandations,
- des candidats pour lallowlist après vérification manuelle,
- une configuration allowlist JSON normalisée.
Suggestions dallowlist dans les rapports
La section du rapport peut contenir des entrées du 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, Interprétation :
zasieg=LOW- candidat plus sûr,zasieg=HIGH- neutralisation large, uniquement après vérification stricte,pewnosc=MEDIUM/HIGH- candidat de configuration plus prévisible,pewnosc=LOW- exige de la prudence.
Export JSON
Le rapport contient également une section Configuration allowlist normalisée (JSON). Il sagit dun ensemble de valeurs prêt à lemploi, dédupliqué, à recopier dans la configuration.
Mode dutilisation recommandé
- lancez manuellement les trois scans après linstallation,
- traitez le premier
filecheckcomme la création du snapshot, - analysez les rapports et confirmez quelles détections sont réelles,
- pour les false positives, utilisez dabord
allowlisted_file_rulesetallowlisted_db_rules, - utilisez seulement si nécessaire
allowlisted_domains,allowlisted_file_patternsetallowlisted_db_patterns, - après modification de la configuration, relancez le scan CLI approprié 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 ni Safe Browsing, mais avec une profondeur danalyse réduite,
allowlisted_file_patternsetallowlisted_db_patternsont un impact large et doivent être utilisés avec parcimonie,- le format recommandé pour les allowlists de règles est
rule_id, et non le libellé textuel complet.
Version : 1.0.27
31.03.2026
Nous avons enrichi le module Kowal_SecurityScan avec de nouvelles fonctionnalités liées à lanalyse des menaces et à ladministration des rapports.
Nouveautés
- Ajout de lintégration avec OpenAI pour lanalyse des fichiers modifiés et des enregistrements suspects dans la base de données.
- Les rapports et les e-mails contiennent désormais une évaluation du risque ainsi que des actions recommandées dans les domaines suivants :
- Magento
- serveur
- firewall
- Ajout de la configuration OpenAI dans le panneau Magento, notamment :
- activation/désactivation de lanalyse AI
- clé API
- choix du modèle
- limite de contexte transmise à lanalyse
Améliorations
- La liste des modèles OpenAI est désormais récupérée dynamiquement depuis lAPI et affichée dans la configuration sous forme de liste déroulante.
- Le contenu des e-mails a été enrichi avec lidentification de la boutique Magento :
- domaine de la boutique
- URL de la boutique
- Le domaine de la boutique est également ajouté à lobjet du message, ce qui facilite la gestion de plusieurs instances.
Automatisation et maintenance
- Ajout dun nouveau cron pour nettoyer les anciennes entrées de la table de rapports.
- La durée de rétention des rapports est configurable dans system.xml en nombre de jours.
Corrections techniques
- La logique danalyse des fichiers et enregistrements suspects a été réorganisée.
- La gestion du contexte des données transmises à lanalyse AI a été améliorée.
- Le problème de compilation DI lié à une implémentation précédente du client OpenAI a été supprimé.
























