Modulo Magento 2 – Scanner di Sicurezza e Rilevamento di Codice Malevolo
Kowal Security Scan è un modulo di sicurezza avanzato per Magento 2 che aiuta a rilevare più rapidamente modifiche sospette nei file, codice malevolo, URL pericolosi e injection nei contenuti del database. È stato progettato per funzionare in modo leggero, senza agenti aggiuntivi e senza implementazioni complesse.
Funzionalità principali del modulo
- Scansione delle modifiche ai file - rileva file nuovi, modificati ed eliminati all'interno dell'applicazione Magento.
- Scansione euristica del malware - analizza file
php,phtml,js,html,svg,htaccesse altri vettori di payload. - Analisi dei token PHP - rileva catene
decode -> execute, callback dinamici, variable function calls e sospettiinclude/require. - Scansione del database - controlla tabelle Magento selezionate alla ricerca di HTML malevolo, JavaScript, SVG, URI
data:e link pericolosi. - Integrazione con Google Safe Browsing - valuta la reputazione degli URL presenti nei contenuti del negozio.
- Analisi OpenAI opzionale - amplia il report con valutazione del rischio e raccomandazioni operative.
- Allowlist avanzate - consentono di limitare i false positive a livello di domini, file, contenuti e regole specifiche.
- Report con configurazione pronta - il modulo suggerisce candidati per l'allowlist e genera un export JSON normalizzato pronto all'uso.
Cosa distingue questo modulo?
- Identificatori di regola stabili - le regole dei file e del database hanno un proprio
rule_id, quindi la configurazione dell'allowlist non dipende dalla descrizione testuale completa. - Report a supporto della gestione degli incidenti - il report mostra non solo i rilevamenti, ma anche il livello di rischio, le raccomandazioni e le voci pronte per la configurazione.
- Controllo dei false positive senza disattivare lo scanner - puoi silenziare una singola regola per un percorso o una tabella specifici invece di disattivare l'intero modulo.
- Automazione completa - il modulo funziona tramite cron, ma ogni scansione può anche essere avviata manualmente via CLI.
Quali minacce aiuta a rilevare?
- codice PHP offuscato basato su
e-val,base-64_decode,gzin-flatee tecniche simili, - iniezioni malevole di JavaScript nei contenuti CMS,
- iframe esterni e reindirizzamenti sospetti,
- payload SVG e contenuti nascosti negli URI
data:, - link pericolosi che portano a malware, phishing o software indesiderato,
- modifiche non autorizzate ai file dell'applicazione.
Dove il modulo cerca le minacce?
Il modulo analizza le aree chiave del negozio in cui si verificano più spesso gli incidenti:
- file dell'applicazione Magento e dei moduli,
- blocchi CMS,
- pagine CMS,
core_config_data,- template e-mail Magento e newsletter,
- contenuti prodotto e recensioni dei clienti.
Report e risposta operativa
- I risultati vengono salvati in una tabella di report dedicata del modulo.
- Il report può essere inviato via e-mail all'operatore.
- Ogni rilevamento può includere livello di rischio, indicazioni operative e
rule_idcorrelato. - Il report è in grado di preparare suggerimenti pronti per l'allowlist e una configurazione JSON normalizzata.
Esempi di utilizzo
- rilevamento di codice malevolo aggiunto dopo una compromissione del negozio,
- monitoraggio di modifiche non autorizzate nei file del deployment,
- rilevamento di blocchi CMS infetti o contenuti compromessi nel database,
- valutazione se un URL sospetto debba essere consentito nell'allowlist o rimosso dal sistema.
Perché conviene?
- Implementazione rapida - funziona come modulo Magento 2 senza infrastruttura aggiuntiva.
- Reportistica pratica - il modulo non si ferma al rilevamento, ma aiuta a passare alla decisione operativa.
- Migliore controllo della qualità degli allarmi - allowlist e
rule_idaiutano a mantenere un'elevata efficacia senza un'ondata di falsi allarmi. - Adatto agli ambienti di produzione - scansioni automatiche, report via e-mail e comandi CLI manuali supportano il lavoro quotidiano del team tecnico.
Compatibilità
- Magento Open Source 2.3.x - 2.4.x
- Adobe Commerce / Magento Commerce
Cosa include il pacchetto?
- modulo Magento 2 con job cron e comandi CLI,
- configurazione amministrativa del modulo,
- meccanismo di reportistica su database ed e-mail,
- regole di rilevamento avanzate e sistema di allowlist.
Documentazione e supporto
Per il modulo è disponibile documentazione di implementazione e configurazione, e la sua architettura supporta l'ulteriore ottimizzazione delle regole e dei processi di sicurezza nel negozio Magento 2.
Assicurati un rilevamento più tempestivo degli incidenti in Magento 2 con Kowal Security Scan.
Manuale del modulo Kowal_SecurityScan
Panoramica
Il modulo estende Magento 2 con un livello di monitoraggio della sicurezza per i file dell'applicazione, tabelle selezionate del database, URL sospetti e analisi opzionale degli incidenti tramite OpenAI.
I report vengono salvati nella tabella kowal_securityscan_report e possono essere inviati via e-mail.
Funzionalità principali
- scansione delle modifiche ai file Magento con confronto rispetto allo snapshot,
- scansione euristica dei file
php,phtml,php5,inc,phar,js,html,htm,svg,htaccess, - analisi dei token PHP tramite
token_get_all(), - scansione di tabelle selezionate del database alla ricerca di HTML malevolo, JavaScript, SVG, URI
data:e URL sospetti, - integrazione con Google Safe Browsing API,
- analisi OpenAI opzionale per i rilevamenti,
- allowlist configurabili di domini, file, pattern di contenuto e regole,
- report con suggerimenti pronti per l'allowlist ed export di configurazione JSON normalizzata.
Requisiti
- Magento 2,
- modulo
kowal/basedisponibile, - cron Magento funzionante,
- invio e-mail configurato correttamente,
- opzionalmente: chiave OpenAI API e chiave Google Safe Browsing API.
Installazione
1. Aggiunta del repository del pacchetto
Se il pacchetto non è disponibile nel repository Composer predefinito, aggiungi la sorgente:
composer config repositories.securityscan vcs https://github.com/kowalco/module-securityscan Se il repository richiede autorizzazione:
composer config --global --auth github-oauth.github.com 2. Installazione del pacchetto
composer require kowal/module-securityscan 3. Attivazione del modulo
php bin/magento module:enable Kowal_SecurityScanphp bin/magento setup:upgradephp bin/magento cache:flush Nell'ambiente di produzione esegui i passaggi standard di deployment Magento, in linea con il tuo processo di implementazione.
Cron e pianificazione delle scansioni
Il modulo registra il proprio gruppo cron securityscan.
kowal_securityscan_filecheck- ogni giorno alle00:00,kowal_securityscan_malwarecheck- ogni giorno alle01:00,kowal_securityscan_dbcheck- ogni giorno alle02:00,kowal_securityscan_cleanup_reports- ogni giorno alle02:30.
Senza un cron Magento funzionante, le scansioni automatiche non verranno eseguite.
Avvio manuale delle scansioni
Per avviare manualmente le scansioni usa:
php bin/magento kowal_securityscan:filecheckphp bin/magento kowal_securityscan:malwarecheckphp bin/magento kowal_securityscan:dbcheck Questo è il metodo consigliato per i test dopo l'installazione e dopo le modifiche di configurazione.
Configurazione
Percorso di configurazione:
Stores -> Configuration -> kowal -> kowal_security
Impostazioni generali
Abilita moduloIndirizzo e-mail per i reportIndirizzo e-mail del mittenteConservazione dei report in giorniGoogle Safe Browsing API KeyAllowlist dei dominiAllowlist dei fileAllowlist dei pattern del databaseAllowlist delle regole dei fileAllowlist delle regole del database
Configurazione minima
- abilita il modulo,
- imposta l'indirizzo del destinatario dei report,
- imposta l'indirizzo del mittente dei report,
- assicurati che l'invio e-mail di Magento funzioni,
- assicurati che il cron Magento funzioni.
Analisi OpenAI
La sezione Analisi OpenAI consente di ampliare i report con valutazione del rischio e raccomandazioni operative.
Campi disponibili:
Abilita analisi AI,OpenAI API Key,Modello OpenAI,Contesto massimo per AI.
Come abilitare
- abilita
Abilita analisi AI, - compila
OpenAI API Key, - salva la configurazione,
- aggiorna il modulo di configurazione,
- seleziona il modello.
Comportamento predefinito
- modello predefinito:
gpt-4.1-mini, - limite di contesto predefinito:
12000, - i valori inferiori a
2000vengono elevati a12000, - il limite massimo di contesto è
50000.
Se OpenAI è disattivato oppure manca la chiave, il modulo continua comunque a funzionare e utilizza euristiche locali.
Google Safe Browsing
Se completi il campo Google Safe Browsing API Key, il modulo:
- controllerà gli URL rilevati nei file e nel database,
- controllerà l'indirizzo base del negozio.
L'assenza della chiave non blocca le scansioni di base, ma disattiva soltanto questa fase.
Scansione delle modifiche ai file
filecheck funziona sulla base di uno snapshot salvato in:
var/security_scan_hashes.json
Al primo avvio:
- viene creato uno snapshot,
- non è ancora disponibile un confronto delle modifiche,
- il report informa della creazione della baseline di riferimento.
Le esecuzioni successive riportano modifiche di tipo ADDED, MODIFIED e REMOVED.
Tra gli elementi ignorati ci sono, tra gli altri:
var/,generated/,vendor/,pub/static/,node_modules/.
Scansione malware nei file
malwarecheck analizza i file dell'applicazione sulla base di:
- regole regex con
rule_id, - euristiche token PHP,
- controlli URL tramite Safe Browsing.
Esempi di tipi di rilevamento:
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.
Nei report i motivi sono presentati nel formato:
[file.encoded_payload_blob] Encoded payload blob detected Scansione del database
dbcheck analizza tabelle Magento selezionate:
cms_block,cms_page,core_config_data,email_template,newsletter_template,review_detail,catalog_product_entity_text.
Esempi di regole:
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.
Il contenuto viene prima normalizzato tramite:
html_entity_decode,rawurldecode,- normalizzazione degli spazi bianchi,
- analisi di più varianti dello stesso contenuto.
Configurazione avanzata: allowlist
Le allowlist servono a limitare i false positive senza disattivare l'intero modulo.
1. Allowlist dei domini
Campo: kowal_security/general/allowlisted_domains
Formato:
- un dominio per riga, oppure
- lista separata da virgole.
cdn.example.comstatic.example.org Effetto:
- gli URL di questi domini non verranno considerati sospetti,
- Safe Browsing non li controllerà.
2. Allowlist dei file
Campo: kowal_security/general/allowlisted_file_patterns
Formato:
- percorsi relativi,
- supporto per i glob.
app/code/Vendor/Module/Test/*pub/media/custom.js Effetto: i file che corrispondono al pattern vengono completamente ignorati dalla scansione malware. Questa impostazione ha un raggio d'azione ampio.
3. Allowlist dei pattern del database
Campo: kowal_security/general/allowlisted_db_patterns
Formato:
- frasi,
- frammenti HTML o JS,
- voci separate da una nuova riga o da virgole.
trusted-inline-widgetdata:image/svg+xml, Effetto: il record del database che contiene tale frammento viene ignorato dalla scansione DB. Anche questa impostazione ha un raggio d'azione ampio.
4. Allowlist delle regole dei file
Campo: kowal_security/general/allowlisted_file_rules
Formato preferito:
percorso_o_glob | rule_id Esempio:
app/code/Vendor/Module/* | file.encoded_payload_blobpub/media/custom.js | file.javascript_redirect_or_rewrite Compatibilità retroattiva:
- le vecchie voci basate sull'etichetta completa della regola continuano a funzionare,
- le nuove voci dovrebbero usare
rule_id.
Effetto: viene silenziata solo la regola indicata per il percorso indicato, mentre il resto della scansione per quel file continua a funzionare.
5. Allowlist delle regole del database
Campo: kowal_security/general/allowlisted_db_rules
Formato preferito:
tabella_o_* | rule_id Esempio:
cms_block | db.inline_script_tag* | db.fetch_or_xhr_loader Effetto: viene silenziata solo la regola indicata, mentre le altre continuano a funzionare per quel record o quella tabella.
Report
I report possono contenere:
- elenco dei rilevamenti,
- valutazione del rischio,
- indicatori e raccomandazioni,
- candidati per l'allowlist dopo verifica manuale,
- configurazione allowlist normalizzata in JSON.
Suggerimenti allowlist nei report
La sezione del report può contenere voci del tipo:
- cms_block | db.inline_script_tag | certezza=MEDIUM | portata=LOW- app/code/Vendor/Module/* | file.encoded_payload_blob | certezza=MEDIUM | portata=LOW- data:image/svg+xml, Interpretazione:
portata=LOW- candidato più sicuro,portata=HIGH- silenziamento ampio, solo dopo verifica rigorosa,certezza=MEDIUM/HIGH- candidato più prevedibile per la configurazione,certezza=LOW- richiede cautela.
Export JSON
Il report contiene anche la sezione Configurazione allowlist normalizzata (JSON). Si tratta di un insieme di valori pronto e deduplicato da riportare nella configurazione.
Modalità d'uso consigliata
- esegui manualmente tutte e tre le scansioni dopo l'installazione,
- considera il primo
filecheckcome la creazione dello snapshot, - analizza i report e conferma quali rilevamenti sono reali,
- per i false positive usa prima
allowlisted_file_ruleseallowlisted_db_rules, - solo se necessario usa
allowlisted_domains,allowlisted_file_patternseallowlisted_db_patterns, - dopo aver modificato la configurazione, riesegui la scansione CLI appropriata e controlla il risultato.
Note operative
filecheckal primo avvio non segnala ancora le modifiche come incidente,- il modulo funziona senza OpenAI e senza Safe Browsing, ma con una profondità di analisi inferiore,
allowlisted_file_patternseallowlisted_db_patternshanno un impatto ampio e dovrebbero essere usati con parsimonia,- il formato preferito per le allowlist delle regole è
rule_id, non l'etichetta testuale completa.
Versione: 1.0.27
31.03.2026
Abbiamo ampliato il modulo Kowal_SecurityScan con nuove funzionalità legate all'analisi delle minacce e all'amministrazione dei report.
Novità
- È stata aggiunta l'integrazione con OpenAI per analizzare i file modificati e i record sospetti nel database.
- I report e i messaggi e-mail ora includono una valutazione del rischio e azioni raccomandate nelle aree:
- Magento
- server
- firewall
- È stata aggiunta la configurazione OpenAI nel pannello Magento, tra cui:
- attivazione/disattivazione dell'analisi AI
- chiave API
- selezione del modello
- limite del contesto inviato all'analisi
Miglioramenti
- L'elenco dei modelli OpenAI viene ora recuperato dinamicamente dall'API e presentato nella configurazione come menu a tendina.
- Il contenuto dei messaggi e-mail è stato ampliato con l'identificazione del negozio Magento:
- dominio del negozio
- URL del negozio
- Il dominio del negozio viene aggiunto anche all'oggetto del messaggio, facilitando la gestione di più istanze.
Automazione e manutenzione
- È stato aggiunto un nuovo cron che pulisce i vecchi record dalla tabella dei report.
- Il tempo di conservazione dei report è configurabile da system.xml come numero di giorni.
Correzioni tecniche
- È stata riorganizzata la logica di analisi dei file e dei record sospetti.
- È stata migliorata la gestione del contesto dei dati inviati all'analisi AI.
- È stato risolto un problema di compilazione DI legato alla precedente implementazione del client OpenAI.
























