Modul Magento 2 – Scanner de securitate și detectare a codului malițios
Kowal Security Scan este un modul de securitate avansat pentru Magento 2, care ajută la detectarea mai rapidă a modificărilor suspecte în fișiere, a codului malițios, a URL-urilor periculoase și a injecțiilor în conținutul bazei de date. A fost conceput pentru a funcționa eficient, fără agenți suplimentari și fără implementare complicată.
Funcțiile cheie ale modulului
- Scanare a modificărilor fișierelor - detectează fișiere noi, modificate și șterse în cadrul aplicației Magento.
- Scanare euristică malware - analizează fișiere
php,phtml,js,html,svg,htaccessși alte suporturi de payload. - Analiza tokenurilor PHP - detectează lanțuri
decode -> execute, callback-uri dinamice, variable function calls șiinclude/requiresuspecte. - Scanarea bazei de date - verifică tabele Magento selectate pentru HTML malițios, JavaScript, SVG, URI
data:și linkuri periculoase. - Integrare cu Google Safe Browsing - evaluează reputația URL-urilor prezente în conținutul magazinului.
- Analiză OpenAI opțională - extinde raportul cu evaluarea riscului și recomandări de acțiune.
- Allowlist-uri avansate - permit limitarea false positive la nivel de domenii, fișiere, conținut și reguli specifice.
- Rapoarte cu configurație gata pregătită - modulul sugerează candidați pentru allowlist și generează un export JSON normalizat, gata de utilizare.
Ce diferențiază acest modul?
- Identificatori stabili ai regulilor - regulile pentru fișiere și bază de date au propriul
rule_id, astfel încât configurația allowlist nu depinde de descrierea completă în format text. - Rapoarte care susțin gestionarea incidentelor - raportul afișează nu doar detecțiile, ci și nivelul de risc, recomandările și intrările gata de folosit în configurație.
- Control al false positive fără dezactivarea scannerului - poți reduce la tăcere o singură regulă pentru o cale sau un tabel indicat, în loc să dezactivezi întregul modul.
- Automatizare completă - modulul rulează prin cron, dar fiecare scanare poate fi pornită și manual prin CLI.
Ce amenințări ajută să detecteze?
- cod PHP ofuscat bazat pe
e-val,base-64_decode,gzin-flateși tehnici similare, - inserări JavaScript malițioase în conținutul CMS,
- iframe-uri externe și redirecționări suspecte,
- payload-uri SVG și conținut ascuns în URI
data:, - linkuri periculoase care duc la malware, phishing sau software nedorit,
- modificări neautorizate în fișierele aplicației.
Unde caută modulul amenințările?
Modulul analizează zonele cheie ale magazinului în care apar cel mai des incidente:
- fișierele aplicației Magento și ale modulelor,
- blocurile CMS,
- paginile CMS,
core_config_data,- șabloanele de e-mail Magento și newsletter,
- conținutul produselor și recenziile clienților.
Rapoarte și reacție operațională
- Rezultatele sunt salvate într-un tabel dedicat de rapoarte al modulului.
- Raportul poate fi trimis prin e-mail operatorului.
- Fiecare detecție poate include nivelul de risc, indicații operaționale și
rule_idasociat. - Raportul poate pregăti sugestii gata de folosit pentru allowlist și configurație normalizată în JSON.
Exemple de utilizare
- detectarea codului malițios adăugat după compromiterea magazinului,
- monitorizarea modificărilor neautorizate în fișierele implementării,
- detectarea blocurilor CMS infectate sau a conținutului infectat din baza de date,
- evaluarea dacă un URL suspect ar trebui permis în allowlist sau eliminat din sistem.
De ce merită?
- Implementare rapidă - funcționează ca modul Magento 2 fără infrastructură suplimentară.
- Raportare practică - modulul nu se oprește la detecție, ci ajută la trecerea către o decizie operațională.
- Control mai bun al calității alertelor - allowlist-urile și
rule_idfacilitează menținerea unei eficiențe ridicate fără un val de alarme false. - Potrivire bună pentru mediile de producție - scanările automate, raportarea prin e-mail și comenzile CLI manuale susțin activitatea zilnică a echipei tehnice.
Compatibilitate
- Magento Open Source 2.3.x - 2.4.x
- Adobe Commerce / Magento Commerce
Ce include pachetul?
- modul Magento 2 cu taskuri cron și comenzi CLI,
- configurația administrativă a modulului,
- mecanism de raportare în baza de date și prin e-mail,
- reguli extinse de detecție și sistem allowlist.
Documentație și suport
Pentru modul este disponibilă documentație de implementare și configurare, iar arhitectura sa susține ajustarea ulterioară a regulilor și a proceselor de securitate în magazinul Magento 2.
Asigură detectarea mai timpurie a incidentelor în Magento 2 cu Kowal Security Scan.
Manualul modulului Kowal_SecurityScan
Prezentare generală
Modulul extinde Magento 2 cu un strat de monitorizare a securității pentru fișierele aplicației, tabelele selectate ale bazei de date, URL-urile suspecte și analiza opțională a incidentelor prin OpenAI.
Rapoartele sunt salvate în tabelul kowal_securityscan_report și pot fi trimise prin e-mail.
Funcții principale
- scanarea modificărilor în fișierele Magento cu comparație față de snapshot,
- scanare euristică a fișierelor
php,phtml,php5,inc,phar,js,html,htm,svg,htaccess, - analiza tokenurilor PHP prin
token_get_all(), - scanarea tabelelor selectate din baza de date pentru HTML malițios, JavaScript, SVG, URI
data:și URL-uri suspecte, - integrare cu Google Safe Browsing API,
- analiză OpenAI opțională pentru detecții,
- allowlist-uri configurabile pentru domenii, fișiere, modele de conținut și reguli,
- rapoarte cu sugestii gata de folosit pentru allowlist și export de configurație JSON normalizată.
Cerințe
- Magento 2,
- modulul
kowal/basedisponibil, - cron Magento funcțional,
- trimiterea de e-mail configurată corect,
- opțional: cheie OpenAI API și cheie Google Safe Browsing API.
Instalare
1. Adăugarea repository-ului pachetului
Dacă pachetul nu este disponibil în repository-ul Composer implicit, adaugă sursa:
composer config repositories.securityscan vcs https://github.com/kowalco/module-securityscan Dacă repository-ul necesită autorizare:
composer config --global --auth github-oauth.github.com 2. Instalarea pachetului
composer require kowal/module-securityscan 3. Activarea modulului
php bin/magento module:enable Kowal_SecurityScanphp bin/magento setup:upgradephp bin/magento cache:flush În mediul de producție, execută pașii standard de deployment Magento, conform procesului tău de implementare.
Cron și programarea scanărilor
Modulul înregistrează propriul grup cron securityscan.
kowal_securityscan_filecheck- zilnic la00:00,kowal_securityscan_malwarecheck- zilnic la01:00,kowal_securityscan_dbcheck- zilnic la02:00,kowal_securityscan_cleanup_reports- zilnic la02:30.
Fără un cron Magento funcțional, scanările automate nu vor fi executate.
Pornirea manuală a scanărilor
Pentru a porni manual scanările, folosește:
php bin/magento kowal_securityscan:filecheckphp bin/magento kowal_securityscan:malwarecheckphp bin/magento kowal_securityscan:dbcheck Aceasta este metoda recomandată de test după instalare și după modificările de configurare.
Configurare
Calea de configurare:
Stores -> Configuration -> kowal -> kowal_security
Setări generale
Activează modululAdresă de e-mail pentru rapoarteAdresă de e-mail a expeditoruluiRetenția rapoartelor în zileGoogle Safe Browsing API KeyAllowlist de domeniiAllowlist de fișiereAllowlist de modele din bazăAllowlist de reguli pentru fișiereAllowlist de reguli pentru bază
Configurare minimă
- activează modulul,
- setează adresa destinatarului rapoartelor,
- setează adresa expeditorului rapoartelor,
- asigură-te că trimiterea de e-mail Magento funcționează,
- asigură-te că cron Magento funcționează.
Analiză OpenAI
Secțiunea Analiză OpenAI permite extinderea rapoartelor cu evaluarea riscului și recomandări de acțiune.
Câmpuri disponibile:
Activează analiza AI,OpenAI API Key,Model OpenAI,Context maxim pentru AI.
Cum se activează
- activează
Activează analiza AI, - completează
OpenAI API Key, - salvează configurația,
- reîmprospătează formularul de configurare,
- alege modelul.
Comportament implicit
- model implicit:
gpt-4.1-mini, - limită implicită de context:
12000, - valorile sub
2000sunt ridicate la12000, - limita maximă de context este
50000.
Dacă OpenAI este dezactivat sau lipsește cheia, modulul continuă să funcționeze și aplică euristici locale.
Google Safe Browsing
Dacă completezi Google Safe Browsing API Key, modulul va:
- verifica URL-urile detectate în fișiere și în baza de date,
- verifica adresa de bază a magazinului.
Lipsa cheii nu blochează scanările de bază, ci doar dezactivează această etapă.
Scanarea modificărilor în fișiere
filecheck funcționează pe baza unui snapshot salvat în:
var/security_scan_hashes.json
La prima rulare:
- se creează snapshot-ul,
- încă nu există comparație a modificărilor,
- raportul informează despre crearea bazei de referință.
Rulările ulterioare raportează modificări de tip ADDED, MODIFIED și REMOVED.
Sunt omise, printre altele:
var/,generated/,vendor/,pub/static/,node_modules/.
Scanare malware în fișiere
malwarecheck scanează fișierele aplicației pe baza:
- regulilor regex cu
rule_id, - euristicilor de token PHP,
- verificărilor URL prin Safe Browsing.
Exemple de tipuri de detecții:
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.
În rapoarte, motivele sunt prezentate în formatul:
[file.encoded_payload_blob] Encoded payload blob detected Scanarea bazei de date
dbcheck analizează tabele Magento selectate:
cms_block,cms_page,core_config_data,email_template,newsletter_template,review_detail,catalog_product_entity_text.
Exemple de reguli:
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.
Conținutul este normalizat în prealabil prin:
html_entity_decode,rawurldecode,- normalizarea whitespace,
- analiza mai multor variante ale aceluiași content.
Configurare avansată: allowlist-uri
Allowlist-urile sunt folosite pentru a limita false positive fără a dezactiva întregul modul.
1. Allowlist de domenii
Câmp: kowal_security/general/allowlisted_domains
Format:
- un domeniu pe linie sau
- o listă separată prin virgule.
cdn.example.comstatic.example.org Efect:
- URL-urile din aceste domenii nu vor fi tratate ca suspecte,
- Safe Browsing nu le va verifica.
2. Allowlist de fișiere
Câmp: kowal_security/general/allowlisted_file_patterns
Format:
- căi relative,
- suport pentru globuri.
app/code/Vendor/Module/Test/*pub/media/custom.js Efect: fișierele potrivite cu modelul sunt complet omise de scanarea malware. Această setare are un impact larg.
3. Allowlist de modele din bază
Câmp: kowal_security/general/allowlisted_db_patterns
Format:
- fraze,
- fragmente HTML sau JS,
- intrări separate prin linie nouă sau prin virgule.
trusted-inline-widgetdata:image/svg+xml, Efect: înregistrarea din bază care conține un astfel de fragment este omisă de scanarea DB. Și această setare are un impact larg.
4. Allowlist de reguli pentru fișiere
Câmp: kowal_security/general/allowlisted_file_rules
Format preferat:
cale_sau_glob | rule_id Exemplu:
app/code/Vendor/Module/* | file.encoded_payload_blobpub/media/custom.js | file.javascript_redirect_or_rewrite Compatibilitate retroactivă:
- intrările vechi după eticheta completă a regulii funcționează în continuare,
- intrările noi ar trebui să folosească
rule_id.
Efect: este redusă la tăcere doar regula indicată pentru calea indicată, iar restul scanării pentru acel fișier continuă să funcționeze.
5. Allowlist de reguli pentru bază
Câmp: kowal_security/general/allowlisted_db_rules
Format preferat:
tabel_sau_* | rule_id Exemplu:
cms_block | db.inline_script_tag* | db.fetch_or_xhr_loader Efect: este redusă la tăcere doar regula indicată, iar celelalte continuă să funcționeze pentru acea înregistrare sau acel tabel.
Rapoarte
Rapoartele pot conține:
- lista detecțiilor,
- evaluarea riscului,
- indicatori și recomandări,
- candidați pentru allowlist după verificare manuală,
- configurație allowlist normalizată în JSON.
Sugestii de allowlist în rapoarte
Secțiunea raportului poate conține intrări de tipul:
- cms_block | db.inline_script_tag | certitudine=MEDIUM | impact=LOW- app/code/Vendor/Module/* | file.encoded_payload_blob | certitudine=MEDIUM | impact=LOW- data:image/svg+xml, Interpretare:
impact=LOW- candidat mai sigur,impact=HIGH- reducere la tăcere extinsă, doar după verificare strictă,certitudine=MEDIUM/HIGH- candidat mai previzibil pentru configurare,certitudine=LOW- necesită prudență.
Export JSON
Raportul conține și secțiunea Configurație allowlist normalizată (JSON). Este un set gata pregătit și deduplicat de valori pentru a fi transcris în configurație.
Mod recomandat de utilizare
- rulează manual toate cele trei scanări după instalare,
- tratează primul
filecheckca pe construirea snapshot-ului, - analizează rapoartele și confirmă care detecții sunt reale,
- pentru false positive folosește mai întâi
allowlisted_file_rulesșiallowlisted_db_rules, - abia când este necesar, folosește
allowlisted_domains,allowlisted_file_patternsșiallowlisted_db_patterns, - după modificarea configurației, rulează din nou scanarea CLI corespunzătoare și verifică rezultatul.
Observații operaționale
filecheckla prima rulare nu raportează încă modificările ca incident,- modulul funcționează fără OpenAI și fără Safe Browsing, dar cu o profunzime mai mică a analizei,
allowlisted_file_patternsșiallowlisted_db_patternsau un impact larg și ar trebui folosite cu moderație,- formatul preferat pentru allowlist-ul de reguli este
rule_id, nu eticheta completă în format text.
Versiune: 1.0.27
31.03.2026
Am extins modulul Kowal_SecurityScan cu funcții noi legate de analiza amenințărilor și administrarea rapoartelor.
Noutăți
- A fost adăugată integrarea cu OpenAI pentru analiza fișierelor modificate și a înregistrărilor suspecte din baza de date.
- Rapoartele și mesajele e-mail conțin acum evaluarea riscului și acțiuni recomandate în zonele:
- Magento
- server
- firewall
- A fost adăugată configurarea OpenAI în panoul Magento, inclusiv:
- activarea/dezactivarea analizei AI
- cheia API
- selectarea modelului
- limita contextului transmis spre analiză
Îmbunătățiri
- Lista modelelor OpenAI este acum preluată dinamic din API și prezentată în configurare ca dropdown.
- Conținutul mesajelor e-mail a fost extins cu identificarea magazinului Magento:
- domeniul magazinului
- adresa URL a magazinului
- Domeniul magazinului este adăugat și în subiectul mesajului, ceea ce facilitează administrarea mai multor instanțe.
Automatizare și mentenanță
- A fost adăugat un nou cron pentru curățarea intrărilor vechi din tabelul de rapoarte.
- Timpul de retenție a rapoartelor este configurabil din system.xml ca număr de zile.
Corecții tehnice
- A fost reorganizată logica de analiză a fișierelor și înregistrărilor suspecte.
- A fost îmbunătățită gestionarea contextului datelor transmise spre analiza AI.
- A fost eliminată problema de compilare DI legată de implementarea anterioară a clientului OpenAI.
























