Módulo Magento 2 – Escáner de seguridad y detección de código malicioso
- Compatibilidad
- 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
Descripción / Módulo Magento 2 – Escáner de seguridad y detección de código malicioso
MAGENTO 2 · MONITORIZACIÓN · DETECCIÓN · INFORMES
Detecte cambios sospechosos y evalúe incidentes con mayor rapidez.
Kowal Security Scan
Compruebe archivos y contenidos seleccionados de la base de datos de Magento. Combine reglas locales de detección con generación de informes, análisis AI opcional y evaluación de reputación de URL mediante Google Safe Browsing.
Archivos y base de datos · Cron y CLI · Reglas y allowlists
CÓMO FUNCIONA EN LA PRÁCTICA
01 · Configura el escaneo
Activa el módulo, los informes y las integraciones seleccionadas.
02 · El escáner revisa la tienda
Ejecuta los escaneos manualmente o mediante cron.
03 · El equipo evalúa el informe
Verifica las detecciones y toma las acciones posteriores.
¿Qué gana tu tienda?
Descubre las funciones, el uso y la configuración del módulo.
Conoce el módulo
Kowal Security Scan es un módulo de seguridad avanzado para Magento 2 que ayuda a detectar con mayor rapidez cambios sospechosos en archivos, código malicioso, URL peligrosas e inyecciones en contenidos de la base de datos. Está diseñado para funcionar de forma ligera, sin agentes adicionales y sin una implantación complicada.
Funciones principales del módulo
- Escaneo de cambios en archivos - detecta archivos nuevos, modificados y eliminados dentro de la aplicación Magento.
- Escaneo heurístico de malware - analiza archivos
php,phtml,js,html,svg,htaccessy otros portadores de payloads. - Análisis de tokens PHP - detecta cadenas
decode -> execute, callbacks dinámicos, variable function calls yinclude/require. - Escaneo de base de datos - revisa tablas seleccionadas de Magento en busca de HTML malicioso, JavaScript, SVG, URI
data:y enlaces peligrosos. - Integración con Google Safe Browsing - evalúa la reputación de las URL presentes en los contenidos de la tienda.
- Análisis OpenAI opcional - amplía el informe con evaluación de riesgos y recomendaciones de actuación.
- Allowlists avanzadas - permiten reducir false positives a nivel de dominios, archivos, contenidos y reglas concretas.
- Informes con configuración lista para usar - el módulo sugiere candidatos para allowlists y genera una exportación JSON normalizada lista para utilizar.
¿Qué diferencia a este módulo?
- Identificadores de reglas estables - las reglas de archivos y base de datos tienen su propio
rule_id, por lo que la configuración de allowlists no depende de una descripción textual completa. - Informes que apoyan la gestión de incidentes - el informe muestra no solo las detecciones, sino también el nivel de riesgo, recomendaciones y entradas de configuración listas para usar.
- Control de false positives sin desactivar el escáner - puede silenciar una regla individual para una ruta o tabla indicada en lugar de desactivar todo el módulo.
- Automatización completa - el módulo funciona en cron, pero cada escaneo también puede ejecutarse manualmente mediante CLI.
¿Qué amenazas ayuda a detectar?
- código PHP ofuscado basado en
eval,base64_decode,gzinflatey técnicas similares, - inserciones JavaScript maliciosas en contenidos CMS,
- iframes externos y redirecciones sospechosas,
- payloads SVG y contenido oculto en URI
data:, - enlaces peligrosos que conducen a malware, phishing o software no deseado,
- cambios no autorizados en los archivos de la aplicación.
¿Dónde busca amenazas el módulo?
El módulo analiza las áreas clave de la tienda donde aparecen incidentes con mayor frecuencia:
- archivos de la aplicación Magento y módulos,
- bloques CMS,
- páginas CMS,
core_config_data,- plantillas de correo electrónico de Magento y newsletter,
- contenidos de productos y reseñas de clientes.
Informes y respuesta operativa
- Los resultados se guardan en una tabla de informes dedicada del módulo.
- El informe puede enviarse por correo electrónico al operador.
- Cada detección puede incluir nivel de riesgo, indicaciones operativas y el
rule_id. - El informe puede preparar sugerencias listas para allowlists y una configuración normalizada en JSON.
Ejemplos de uso
- detección de código malicioso añadido tras una intrusión en la tienda,
- monitorización de cambios no autorizados en los archivos de despliegue,
- detección de bloques CMS infectados o contenidos infectados en la base de datos,
- evaluación de si una URL sospechosa debe permitirse en una allowlist o eliminarse del sistema.
¿Por qué merece la pena?
- Implantación rápida - funciona como módulo Magento 2 sin infraestructura adicional.
- Informes prácticos - el módulo no se detiene en la detección, sino que ayuda a avanzar hacia una decisión operativa.
- Mejor control de la calidad de las alertas - las allowlists y
rule_idfacilitan mantener una alta eficacia sin una avalancha de falsos positivos. - Buen ajuste a entornos de producción - los escaneos automáticos, los informes por e-mail y los comandos CLI manuales apoyan el trabajo diario del equipo técnico.
Compatibilidad
- Magento Open Source 2.3.x - 2.4.x
- Adobe Commerce / Magento Commerce
¿Qué incluye el paquete?
- módulo Magento 2 con tareas cron y comandos CLI,
- configuración administrativa del módulo,
- mecanismo de informes a base de datos y e-mail,
- reglas de detección avanzadas y sistema de allowlists.
Documentación y soporte
El módulo cuenta con documentación de implantación y configuración, y su arquitectura facilita el ajuste posterior de reglas y procesos de seguridad en la tienda Magento 2.
Cuide la detección temprana de incidentes en Magento 2 con Kowal Security Scan.
Primer escaneo y área de monitorización
La descripción existente menciona Magento Open Source 2.3.x–2.4.x y Adobe Commerce / Magento Commerce. La compatibilidad de una versión concreta de Magento y PHP debe comprobarse con la versión del paquete suministrada. La primera ejecución de filecheck crea un snapshot base. Solo los escaneos posteriores comparan el estado y notifican ADDED, MODIFIED y REMOVED. Áreas como var, generated, vendor, pub/static y node_modules se omiten en el escaneo de cambios.
Database Scan incluye las tablas seleccionadas: cms_block, cms_page, core_config_data, email_template, newsletter_template, review_detail y catalog_product_entity_text. El módulo no garantiza la detección de todas las amenazas y no elimina automáticamente infecciones.
Programación y configuración
En Stores → Configuration → Kowal → Security Scan configura la actividad, el destinatario y remitente de los informes, así como la retención. El cron predeterminado ejecuta el escaneo de cambios a las 00:00, malware a la 01:00, la base de datos a las 02:00 y la limpieza de informes a las 02:30.
La automatización requiere que el cron de Magento funcione y que se entreguen los e-mails. Los comandos manuales son kowal_securityscan:filecheck, kowal_securityscan:malwarecheck y kowal_securityscan:dbcheck.
API opcionales y excepciones precisas
Sin OpenAI ni Google Safe Browsing funcionan los escaneos locales básicos. Las API activadas requieren claves propias y acceso a los servicios. El análisis AI envía fragmentos sospechosos a OpenAI; se configura el modelo y el contexto máximo. Safe Browsing comprueba las URL detectadas y la dirección base de la tienda.
Silenciar una regla individual para un archivo o tabla es más específico que omitir todo el archivo o registro. Apruebe los candidatos de allowlist del informe y de la exportación JSON tras verificarlos: el informe apoya la decisión del operador, no la sustituye.
Instalación mediante Composer
Paquete kowal/module-securityscan, módulo Kowal_SecurityScan. Tras configurar el acceso al repositorio de Kowal, instala el paquete, activa el módulo, actualiza Magento y limpia la caché. En producción, ten en cuenta la compilación y el despliegue de contenido estático de acuerdo con el proceso de la tienda.
De la configuración al resultado
1. Configura el escaneo
Activa el módulo, los informes y las integraciones seleccionadas.
2. El escáner revisa la tienda
Ejecuta los escaneos manualmente o mediante cron.
3. El equipo evalúa el informe
Verifica las detecciones y toma las acciones posteriores.
Script sospechoso en un bloque CMS
El escaneo de base de datos detecta un fragmento JavaScript en el contenido CMS. El informe indica el registro y la regla, y el análisis AI opcional ayuda a evaluar el riesgo.
El operador comprueba si se trata de un incidente o de una integración correcta. Una falsa alarma verificada puede silenciarse con una regla de allowlist precisa.
Active la monitorización regular de Magento
¿Quieres adaptar el módulo a tu tienda? Pregunte por la implantación de Kowal Security Scan y comenta la configuración o las ampliaciones necesarias.
Más Información
| Conformidad con la plantilla | Luma / Blank, KOWAL |
|---|
Change Log
Versión: 1.0.27
31.03.2026
Hemos ampliado el módulo Kowal_SecurityScan con nuevas funciones relacionadas con el análisis de amenazas y la administración de informes.
Novedades
- Se ha añadido integración con OpenAI para analizar archivos modificados y registros sospechosos en la base de datos.
- Los informes y mensajes de e-mail ahora incluyen evaluación de riesgos y acciones recomendadas en las áreas de:
- Magento
- servidor
- firewall
- Se ha añadido configuración de OpenAI en el panel Magento, incluyendo:
- activación/desactivación del análisis AI
- clave API
- selección de modelo
- límite de contexto enviado al análisis
Mejoras
- La lista de modelos OpenAI ahora se obtiene dinámicamente desde la API y se presenta en la configuración como dropdown.
- Se ha ampliado el contenido de los mensajes de e-mail con la identificación de la tienda Magento:
- dominio de la tienda
- URL de la tienda
- El dominio de la tienda también se añade al asunto del mensaje, lo que facilita la gestión de varias instancias.
Automatización y mantenimiento
- Se ha añadido un nuevo cron que limpia entradas antiguas de la tabla de informes.
- El tiempo de retención de informes es configurable desde system.xml como número de días.
Correcciones técnicas
- Se ha ordenado la lógica de análisis de archivos y registros sospechosos.
- Se ha mejorado la gestión del contexto de datos enviado al análisis AI.
- Se ha eliminado un problema de compilación DI relacionado con la implementación anterior del cliente OpenAI.
Instrucciones de instalación del módulo
Instrucciones del módulo Kowal_SecurityScan
Resumen
El módulo amplía Magento 2 con una capa de monitorización de seguridad para archivos de la aplicación, tablas seleccionadas de la base de datos, URL sospechosas y análisis opcional de incidentes mediante OpenAI.
Los informes se guardan en la tabla kowal_securityscan_report y pueden enviarse por e-mail.
Funciones principales
- escaneo de cambios en archivos Magento con comparación frente a snapshot,
- escaneo heurístico de archivos
php,phtml,php5,inc,phar,js,html,htm,svg,htaccess, - análisis de tokens PHP mediante
token_get_all(), - escaneo de tablas seleccionadas de la base de datos en busca de HTML malicioso, JavaScript, SVG, URI
data:y URL sospechosas, - integración con Google Safe Browsing API,
- análisis OpenAI opcional para detecciones,
- allowlists configurables de dominios, archivos, patrones de contenido y reglas,
- informes con sugerencias listas para allowlists y exportación de configuración JSON normalizada.
Requisitos
- Magento 2,
- módulo
kowal/base, - cron de Magento operativo,
- envío de e-mail correctamente configurado,
- opcionalmente: clave OpenAI API y clave Google Safe Browsing API.
Instalación
1. Añadir el repositorio del paquete
Añada el repositorio Composer de Kowal:
Recibirás por correo electrónico los datos de acceso al repositorio Composer (dirección de e-mail del cliente y token de licencia) después de la compra. También están disponibles en el panel de cliente tras iniciar sesión en kowal.store. Sustituye TWOJ_EMAIL_KLIENTA por la dirección de e-mail de tu cuenta y TWOJ_TOKEN por el token recibido. Ejecuta los comandos en el directorio raíz de Magento.
composer config repositories.kowal composer https://repo.kowal.store
Si el repositorio requiere autorización:
composer config http-basic.repo.kowal.store "TWOJ_EMAIL_KLIENTA" "TWOJ_TOKEN"
2. Instalación del paquete
composer require kowal/module-securityscan
3. Activación del módulo
php bin/magento module:enable Kowal_SecurityScan
php bin/magento setup:upgrade
php bin/magento cache:flush
En un entorno de producción, ejecute los pasos estándar de deployment de Magento conforme a su proceso de implantación.
Cron y programación de escaneos
El módulo registra su propio grupo cron securityscan.
kowal_securityscan_filecheck- todos los días a las00:00,kowal_securityscan_malwarecheck- todos los días a las01:00,kowal_securityscan_dbcheck- todos los días a las02:00,kowal_securityscan_cleanup_reports- todos los días a las02:30.
Sin un cron de Magento operativo, los escaneos automáticos no se ejecutarán.
Ejecución manual de escaneos
Para ejecutar escaneos manualmente, utilice:
php bin/magento kowal_securityscan:filecheck
php bin/magento kowal_securityscan:malwarecheck
php bin/magento kowal_securityscan:dbcheck
Es el método recomendado de prueba tras la instalación y después de cambios de configuración.
Configuración
Ruta de configuración:
Stores -> Configuration -> kowal -> kowal_security
Ajustes generales
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
Configuración mínima
- active el módulo,
- configure la dirección del destinatario de los informes,
- configure la dirección del remitente de los informes,
- asegúrese de que el envío de e-mail de Magento funciona,
- asegúrese de que el cron de Magento funciona.
Análisis OpenAI
La sección Analiza OpenAI permite ampliar los informes con evaluación de riesgos y recomendaciones de actuación.
Campos disponibles:
Włącz analizę AI,OpenAI API Key,Model OpenAI,Maksymalny kontekst dla AI.
Cómo activarlo
- active
Włącz analizę AI, - complete
OpenAI API Key, - guarde la configuración,
- actualice el formulario de configuración,
- seleccione el modelo.
Comportamiento predeterminado
- modelo predeterminado:
gpt-4.1-mini, - límite de contexto predeterminado:
12000, - los valores inferiores a
2000se elevan a12000, - el límite máximo de contexto es
50000.
Si OpenAI está desactivado o falta la clave, el módulo sigue funcionando y aplica heurísticas locales.
Google Safe Browsing
Si completa Google Safe Browsing API Key, el módulo:
- comprobará las URL detectadas en archivos y base de datos,
- comprobará la dirección base de la tienda.
La ausencia de clave no bloquea los escaneos básicos, solo desactiva esta etapa.
Escaneo de cambios en archivos
filecheck funciona sobre la base de un snapshot guardado en:
var/security_scan_hashes.json
En la primera ejecución:
- se crea un snapshot,
- todavía no hay comparación de cambios,
- el informe indica la creación de la base de referencia.
Las ejecuciones posteriores informan de cambios de tipo ADDED, MODIFIED y REMOVED.
Se omiten, entre otros:
var/,generated/,vendor/,pub/static/,node_modules/.
Escaneo de malware en archivos
malwarecheck escanea archivos de la aplicación basándose en:
- reglas regex con
rule_id, - heurísticas de tokens PHP,
- comprobaciones de URL mediante Safe Browsing.
Ejemplos de tipos de detección:
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.
En los informes, los motivos se presentan en el formato:
[file.encoded_payload_blob] Encoded payload blob detected
Escaneo de base de datos
dbcheck analiza tablas seleccionadas de Magento:
cms_block,cms_page,core_config_data,email_template,newsletter_template,review_detail,catalog_product_entity_text.
Ejemplos de reglas:
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.
El contenido se normaliza previamente mediante:
html_entity_decode,rawurldecode,- normalización de whitespace,
- análisis de múltiples variantes del mismo content.
Configuración avanzada: allowlists
Las allowlists sirven para reducir false positives sin desactivar todo el módulo.
1. Allowlist de dominios
Campo: kowal_security/general/allowlisted_domains
Formato:
- un dominio por línea, o
- lista separada por comas.
cdn.example.com
static.example.org
Efecto:
- las URL de estos dominios no se tratarán como sospechosas,
- Safe Browsing no las comprobará.
2. Allowlist de archivos
Campo: kowal_security/general/allowlisted_file_patterns
Formato:
- rutas relativas,
- soporte de globs.
app/code/Vendor/Module/Test/*
pub/media/custom.js
Efecto: los archivos que coinciden con el patrón se omiten por completo en el escaneo de malware. Este ajuste tiene un alcance amplio.
3. Allowlist de patrones de base de datos
Campo: kowal_security/general/allowlisted_db_patterns
Formato:
- frases,
- fragmentos HTML o JS,
- entradas separadas por una nueva línea o por comas.
trusted-inline-widget
data:image/svg+xml,<svg
Efecto: un registro de base de datos que contiene ese fragmento se omite en el escaneo DB. Este ajuste también tiene un alcance amplio.
4. Allowlist de reglas de archivos
Campo: kowal_security/general/allowlisted_file_rules
Formato preferido:
sciezka_lub_glob | rule_id
Ejemplo:
app/code/Vendor/Module/* | file.encoded_payload_blob
pub/media/custom.js | file.javascript_redirect_or_rewrite
Compatibilidad hacia atrás:
- las entradas antiguas basadas en la etiqueta completa de la regla siguen funcionando,
- las nuevas entradas deben usar
rule_id.
Efecto: solo se silencia la regla indicada para la ruta indicada, y el resto del escaneo para ese archivo sigue funcionando.
5. Allowlist de reglas de base de datos
Campo: kowal_security/general/allowlisted_db_rules
Formato preferido:
tabela_lub_* | rule_id
Ejemplo:
cms_block | db.inline_script_tag
* | db.fetch_or_xhr_loader
Efecto: solo se silencia la regla indicada, mientras las demás siguen funcionando para ese registro o tabla.
Informes
Los informes pueden contener:
- lista de detecciones,
- evaluación de riesgos,
- indicadores y recomendaciones,
- candidatos para allowlists tras verificación manual,
- configuración de allowlists normalizada en JSON.
Sugerencias de allowlist en los informes
La sección del informe puede contener entradas de tipo:
- 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=HIGH
Interpretación:
zasieg=LOW- candidato más seguro,zasieg=HIGH- silenciamiento amplio, solo tras una verificación firme,pewnosc=MEDIUM/HIGH- candidato de configuración más predecible,pewnosc=LOW- requiere precaución.
Exportación JSON
El informe también contiene la sección Znormalizowana konfiguracja allowlist (JSON). Es un conjunto listo y deduplicado de valores para trasladar a la configuración.
Forma de uso recomendada
- ejecute manualmente los tres escaneos tras la instalación,
- trate el primer
filecheckcomo la construcción del snapshot, - analice los informes y confirme qué detecciones son reales,
- para false positives, utilice primero
allowlisted_file_rulesyallowlisted_db_rules, - solo cuando sea necesario, utilice
allowlisted_domains,allowlisted_file_patternsyallowlisted_db_patterns, - después de cambiar la configuración, ejecute de nuevo el escaneo CLI correspondiente y compruebe el resultado.
Notas operativas
filechecken la primera ejecución todavía no informa de cambios como incidente,- el módulo funciona sin OpenAI y sin Safe Browsing, pero con menor profundidad de análisis,
allowlisted_file_patternsyallowlisted_db_patternstienen un impacto amplio y deben usarse con moderación,- el formato preferido para las allowlists de reglas es
rule_id, no la etiqueta textual completa.