Magento 2 Modul – Sicherheits- und Malware-Erkennungsscanner
Kowal Security Scan ist ein erweitertes Sicherheitsmodul für Magento 2, das dabei hilft, verdächtige Dateiänderungen, schädlichen Code, gefährliche URLs sowie Injections in Datenbankinhalten schneller zu erkennen. Es wurde so entwickelt, dass es schlank arbeitet, ohne zusätzliche Agenten und ohne komplexe Implementierung.
Die wichtigsten Funktionen des Moduls
- Scan von Dateiänderungen - erkennt neue, geänderte und gelöschte Dateien innerhalb der Magento-Anwendung.
- Heuristischer Malware-Scan - analysiert
php-,phtml-,js-,html-,svg-,htaccess-Dateien und andere Träger von Payloads. - Analyse von PHP-Tokens - erkennt
decode -> execute-Ketten, dynamische Callbacks, variable function calls sowie verdächtigeinclude/require. - Datenbank-Scan - prüft ausgewählte Magento-Tabellen auf schädliches HTML, JavaScript, SVG,
data:-URI und gefährliche Links. - Integration mit Google Safe Browsing - bewertet die Reputation von URLs, die in Shop-Inhalten vorkommen.
- Optionale OpenAI-Analyse - erweitert den Bericht um Risikobewertung und Handlungsempfehlungen.
- Erweiterte Allowlists - ermöglichen es, false positives auf Ebene von Domains, Dateien, Inhalten und konkreten Regeln zu begrenzen.
- Berichte mit fertiger Konfiguration - das Modul schlägt Kandidaten für die Allowlist vor und generiert einen normalisierten JSON-Export zur direkten Verwendung.
Was zeichnet dieses Modul aus?
- Stabile Regel-IDs - Datei- und Datenbankregeln haben eigene
rule_id, sodass die Allowlist-Konfiguration nicht von der vollständigen Textbeschreibung abhängt. - Berichte zur Unterstützung des Incident-Managements - der Bericht zeigt nicht nur Erkennungen, sondern auch Risikoniveau, Empfehlungen und fertige Einträge für die Konfiguration.
- Kontrolle von false positives ohne Deaktivierung des Scanners - Sie können eine einzelne Regel für einen angegebenen Pfad oder eine Tabelle stummschalten, anstatt das gesamte Modul zu deaktivieren.
- Vollständige Automatisierung - das Modul läuft über Cron, aber jeder Scan kann auch manuell über CLI gestartet werden.
Welche Bedrohungen hilft es zu erkennen?
- verschleierter PHP-Code auf Basis von
e-val,base-64_decode,gzin-flateund ähnlichen Techniken, - schädliche eingebettete JavaScript-Inhalte in CMS-Inhalten,
- externe iFrames und verdächtige Weiterleitungen,
- SVG-Payloads und in
data:-URI versteckte Inhalte, - gefährliche Links, die zu Malware, Phishing oder unerwünschter Software führen,
- nicht autorisierte Änderungen in Anwendungsdateien.
Wo sucht das Modul nach Bedrohungen?
Das Modul analysiert die wichtigsten Bereiche des Shops, in denen Sicherheitsvorfälle am häufigsten auftreten:
- Dateien der Magento-Anwendung und der Module,
- CMS-Blöcke,
- CMS-Seiten,
core_config_data,- Magento-E-Mail- und Newsletter-Vorlagen,
- Produktinhalte und Kundenbewertungen.
Berichte und operative Reaktion
- Die Ergebnisse werden in einer dedizierten Berichtstabelle des Moduls gespeichert.
- Der Bericht kann per E-Mail an den Operator gesendet werden.
- Jede Erkennung kann ein Risikoniveau, operative Hinweise und die zugehörige
rule_identhalten. - Der Bericht kann fertige Vorschläge für die Allowlist sowie eine normalisierte Konfiguration in JSON vorbereiten.
Beispielhafte Einsatzbereiche
- Erkennung von schädlichem Code, der nach einem Shop-Einbruch hinzugefügt wurde,
- Überwachung nicht autorisierter Änderungen in Deployment-Dateien,
- Erkennung infizierter CMS-Blöcke oder Inhalte in der Datenbank,
- Bewertung, ob eine verdächtige URL für die Allowlist zugelassen oder aus dem System entfernt werden sollte.
Warum lohnt es sich?
- Schnelle Implementierung - funktioniert als Magento 2 Modul ohne zusätzliche Infrastruktur.
- Praktisches Reporting - das Modul endet nicht bei der Erkennung, sondern hilft beim Übergang zu einer operativen Entscheidung.
- Bessere Kontrolle der Alarmqualität - Allowlists und
rule_iderleichtern es, eine hohe Wirksamkeit ohne Flut von Fehlalarmen aufrechtzuerhalten. - Gute Eignung für Produktivumgebungen - automatische Scans, E-Mail-Reporting und manuelle CLI-Befehle unterstützen die tägliche Arbeit des technischen Teams.
Kompatibilität
- Magento Open Source 2.3.x - 2.4.x
- Adobe Commerce / Magento Commerce
Was ist im Paket enthalten?
- Magento 2 Modul mit Cron-Jobs und CLI-Befehlen,
- administrative Konfiguration des Moduls,
- Mechanismus für Reporting in Datenbank und E-Mail,
- erweiterte Erkennungsregeln und Allowlist-System.
Dokumentation und Support
Für das Modul steht eine Implementierungs- und Konfigurationsdokumentation zur Verfügung, und seine Architektur unterstützt die weitere Feinabstimmung von Regeln und Sicherheitsprozessen im Magento 2 Shop.
Sorgen Sie mit Kowal Security Scan für eine frühere Erkennung von Sicherheitsvorfällen in Magento 2.
Anleitung für das Modul Kowal_SecurityScan
Überblick
Das Modul erweitert Magento 2 um eine Sicherheitsüberwachungsschicht für Anwendungsdateien, ausgewählte Datenbanktabellen, verdächtige URLs sowie die optionale Analyse von Sicherheitsvorfällen durch OpenAI.
Berichte werden in der Tabelle kowal_securityscan_report gespeichert und können per E-Mail versendet werden.
Hauptfunktionen
- Scan von Magento-Dateiänderungen mit Vergleich zum Snapshot,
- heuristischer Scan von
php-,phtml-,php5-,inc-,phar-,js-,html-,htm-,svg-,htaccess-Dateien, - Analyse von PHP-Tokens über
token_get_all(), - Scan ausgewählter Datenbanktabellen auf schädliches HTML, JavaScript, SVG,
data:-URI und verdächtige URLs, - Integration mit Google Safe Browsing API,
- optionale OpenAI-Analyse für Erkennungen,
- konfigurierbare Allowlists für Domains, Dateien, Inhaltsmuster und Regeln,
- Berichte mit fertigen Vorschlägen für die Allowlist sowie Export einer normalisierten JSON-Konfiguration.
Anforderungen
- Magento 2,
- verfügbares Modul
kowal/base, - funktionierender Magento-Cron,
- korrekt konfigurierte E-Mail-Zustellung,
- optional: OpenAI API-Schlüssel sowie Google Safe Browsing API-Schlüssel.
Installation
1. Paket-Repository hinzufügen
Falls das Paket nicht im Standard-Composer-Repository verfügbar ist, fügen Sie die Quelle hinzu:
composer config repositories.securityscan vcs https://github.com/kowalco/module-securityscan Falls das Repository eine Autorisierung erfordert:
composer config --global --auth github-oauth.github.com 2. Paketinstallation
composer require kowal/module-securityscan 3. Modul aktivieren
php bin/magento module:enable Kowal_SecurityScanphp bin/magento setup:upgradephp bin/magento cache:flush Führen Sie in der Produktivumgebung die Standard-Deployment-Schritte von Magento gemäß Ihrem Implementierungsprozess aus.
Cron und Scan-Zeitplan
Das Modul registriert eine eigene Cron-Gruppe securityscan.
kowal_securityscan_filecheck- täglich um00:00,kowal_securityscan_malwarecheck- täglich um01:00,kowal_securityscan_dbcheck- täglich um02:00,kowal_securityscan_cleanup_reports- täglich um02:30.
Ohne funktionierenden Magento-Cron werden automatische Scans nicht ausgeführt.
Scans manuell starten
Zum manuellen Starten der Scans verwenden Sie:
php bin/magento kowal_securityscan:filecheckphp bin/magento kowal_securityscan:malwarecheckphp bin/magento kowal_securityscan:dbcheck Dies ist die empfohlene Methode zum Testen nach der Installation und nach Konfigurationsänderungen.
Konfiguration
Konfigurationspfad:
Stores -> Configuration -> kowal -> kowal_security
Allgemeine Einstellungen
Modul aktivierenE-Mail-Adresse für BerichteAbsender-E-Mail-AdresseAufbewahrung der Berichte in TagenGoogle Safe Browsing API KeyAllowlist für DomainsAllowlist für DateienAllowlist für DatenbankmusterAllowlist für DateiregelnAllowlist für Datenbankregeln
Minimale Konfiguration
- Modul aktivieren,
- Empfängeradresse für Berichte festlegen,
- Absenderadresse für Berichte festlegen,
- sicherstellen, dass der Magento-E-Mail-Versand funktioniert,
- sicherstellen, dass der Magento-Cron funktioniert.
OpenAI-Analyse
Der Abschnitt OpenAI-Analyse ermöglicht es, Berichte um Risikobewertung und Handlungsempfehlungen zu erweitern.
Verfügbare Felder:
AI-Analyse aktivieren,OpenAI API Key,OpenAI-Modell,Maximaler Kontext für AI.
So aktivieren Sie es
AI-Analyse aktiviereneinschalten,OpenAI API Keyergänzen,- Konfiguration speichern,
- Konfigurationsformular aktualisieren,
- Modell auswählen.
Standardverhalten
- Standardmodell:
gpt-4.1-mini, - Standard-Kontextlimit:
12000, - Werte unter
2000werden auf12000angehoben, - das maximale Kontextlimit beträgt
50000.
Wenn OpenAI deaktiviert ist oder ein Schlüssel fehlt, funktioniert das Modul weiterhin und verwendet lokale Heuristiken.
Google Safe Browsing
Wenn Sie den Google Safe Browsing API Key ergänzen, wird das Modul:
- in Dateien und Datenbank erkannte URLs prüfen,
- die Basisadresse des Shops prüfen.
Das Fehlen des Schlüssels blockiert die grundlegenden Scans nicht, sondern deaktiviert nur diesen Schritt.
Scan von Dateiänderungen
filecheck arbeitet auf Basis eines Snapshots, der hier gespeichert wird:
var/security_scan_hashes.json
Beim ersten Start:
- wird ein Snapshot erstellt,
- gibt es noch keinen Änderungsvergleich,
- informiert der Bericht über die Erstellung der Referenzbasis.
Weitere Ausführungen melden Änderungen der Typen ADDED, MODIFIED und REMOVED.
Unter anderem werden folgende Verzeichnisse ignoriert:
var/,generated/,vendor/,pub/static/,node_modules/.
Malware-Scan in Dateien
malwarecheck scannt Anwendungsdateien auf Basis von:
- Regex-Regeln mit
rule_id, - PHP-Token-Heuristiken,
- URL-Prüfungen über Safe Browsing.
Beispielhafte Erkennungstypen:
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.
In Berichten werden die Gründe im Format dargestellt:
[file.encoded_payload_blob] Encoded payload blob detected Datenbank-Scan
dbcheck analysiert ausgewählte Magento-Tabellen:
cms_block,cms_page,core_config_data,email_template,newsletter_template,review_detail,catalog_product_entity_text.
Beispielhafte Regeln:
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.
Der Inhalt wird zuvor normalisiert durch:
html_entity_decode,rawurldecode,- Whitespace-Normalisierung,
- Analyse mehrerer Varianten desselben Inhalts.
Erweiterte Konfiguration: Allowlists
Allowlists dienen dazu, false positives zu begrenzen, ohne das gesamte Modul zu deaktivieren.
1. Allowlist für Domains
Feld: kowal_security/general/allowlisted_domains
Format:
- eine Domain pro Zeile oder
- eine durch Kommas getrennte Liste.
cdn.example.comstatic.example.org Effekt:
- URLs aus diesen Domains werden nicht als verdächtig behandelt,
- Safe Browsing wird sie nicht prüfen.
2. Allowlist für Dateien
Feld: kowal_security/general/allowlisted_file_patterns
Format:
- relative Pfade,
- Unterstützung für Globs.
app/code/Vendor/Module/Test/*pub/media/custom.js Effekt: Dateien, die dem Muster entsprechen, werden vom Malware-Scan vollständig ignoriert. Diese Einstellung hat eine große Reichweite.
3. Allowlist für Datenbankmuster
Feld: kowal_security/general/allowlisted_db_patterns
Format:
- Phrasen,
- HTML- oder JS-Fragmente,
- Einträge getrennt durch neue Zeilen oder Kommas.
trusted-inline-widgetdata:image/svg+xml, Effekt: Ein Datenbankdatensatz, der ein solches Fragment enthält, wird vom DB-Scan ignoriert. Auch diese Einstellung hat eine große Reichweite.
4. Allowlist für Dateiregeln
Feld: kowal_security/general/allowlisted_file_rules
Bevorzugtes Format:
pfad_oder_glob | rule_id Beispiel:
app/code/Vendor/Module/* | file.encoded_payload_blobpub/media/custom.js | file.javascript_redirect_or_rewrite Abwärtskompatibilität:
- alte Einträge mit vollständigem Regellabel funktionieren weiterhin,
- neue Einträge sollten
rule_idverwenden.
Effekt: Nur die angegebene Regel für den angegebenen Pfad wird stummgeschaltet, während der restliche Scan für diese Datei weiterhin funktioniert.
5. Allowlist für Datenbankregeln
Feld: kowal_security/general/allowlisted_db_rules
Bevorzugtes Format:
tabelle_oder_* | rule_id Beispiel:
cms_block | db.inline_script_tag* | db.fetch_or_xhr_loader Effekt: Nur die angegebene Regel wird stummgeschaltet, während die übrigen weiterhin für diesen Datensatz oder diese Tabelle gelten.
Berichte
Berichte können Folgendes enthalten:
- Liste der Erkennungen,
- Risikobewertung,
- Indikatoren und Empfehlungen,
- Kandidaten für die Allowlist nach manueller Verifikation,
- normalisierte Allowlist-Konfiguration in JSON.
Allowlist-Vorschläge in Berichten
Der Berichtsabschnitt kann Einträge enthalten wie:
- cms_block | db.inline_script_tag | sicherheit=MEDIUM | reichweite=LOW- app/code/Vendor/Module/* | file.encoded_payload_blob | sicherheit=MEDIUM | reichweite=LOW- data:image/svg+xml, Interpretation:
reichweite=LOW- sichererer Kandidat,reichweite=HIGH- breite Stummschaltung, nur nach harter Verifikation,sicherheit=MEDIUM/HIGH- vorhersehbarer Kandidat für die Konfiguration,sicherheit=LOW- erfordert Vorsicht.
JSON-Export
Der Bericht enthält außerdem den Abschnitt Normalisierte Allowlist-Konfiguration (JSON). Das ist ein fertiger, deduplizierter Satz von Werten zur Übernahme in die Konfiguration.
Empfohlene Vorgehensweise
- Führen Sie nach der Installation alle drei Scans manuell aus,
- behandeln Sie den ersten
filecheckals Aufbau des Snapshots, - analysieren Sie die Berichte und bestätigen Sie, welche Erkennungen tatsächlich zutreffen,
- verwenden Sie bei false positives zuerst
allowlisted_file_rulesundallowlisted_db_rules, - verwenden Sie erst wenn nötig
allowlisted_domains,allowlisted_file_patternsundallowlisted_db_patterns, - starten Sie nach einer Konfigurationsänderung den entsprechenden CLI-Scan erneut und prüfen Sie das Ergebnis.
Betriebshinweise
filecheckmeldet beim ersten Start Änderungen noch nicht als Sicherheitsvorfall,- das Modul funktioniert ohne OpenAI und ohne Safe Browsing, allerdings mit geringerer Analysetiefe,
allowlisted_file_patternsundallowlisted_db_patternshaben eine große Wirkung und sollten sparsam verwendet werden,- das bevorzugte Format für Regel-Allowlists ist
rule_id, nicht das vollständige Textlabel.
Version: 1.0.27
31.03.2026
Wir haben das Modul Kowal_SecurityScan um neue Funktionen im Bereich Bedrohungsanalyse und Berichtsverwaltung erweitert.
Neuheiten
- Es wurde eine OpenAI-Integration zur Analyse geänderter Dateien sowie verdächtiger Datensätze in der Datenbank hinzugefügt.
- Berichte und E-Mails enthalten jetzt eine Risikobewertung sowie empfohlene Maßnahmen in den Bereichen:
- Magento
- Server
- Firewall
- Die OpenAI-Konfiguration wurde im Magento-Panel hinzugefügt, einschließlich:
- Aktivieren/Deaktivieren der AI-Analyse
- API-Schlüssel
- Modellauswahl
- Limit des an die Analyse übergebenen Kontexts
Verbesserungen
- Die Liste der OpenAI-Modelle wird jetzt dynamisch über die API abgerufen und in der Konfiguration als Dropdown angezeigt.
- Der Inhalt der E-Mail wurde um die Identifikation des Magento-Shops erweitert:
- Shop-Domain
- Shop-URL
- Die Shop-Domain wird außerdem dem Betreff der Nachricht hinzugefügt, was die Verwaltung mehrerer Instanzen erleichtert.
Automatisierung und Wartung
- Es wurde ein neuer Cron zum Bereinigen alter Einträge aus der Berichtstabelle hinzugefügt.
- Die Aufbewahrungszeit für Berichte ist auf Ebene von system.xml als Anzahl von Tagen konfigurierbar.
Technische Korrekturen
- Die Logik für die Analyse verdächtiger Dateien und Datensätze wurde überarbeitet.
- Die Verarbeitung des an die AI-Analyse übergebenen Datenkontexts wurde verbessert.
- Ein Problem bei der DI-Kompilierung im Zusammenhang mit der früheren Implementierung des OpenAI-Clients wurde behoben.























