Tema
PCI DSS Pregunta 31 — Solución antimalware
| Campo | Valor |
|---|---|
| Solicitante | José David Álvarez — QSA ControlCase |
| Pregunta | «Evidencia de la solución antimalware desplegada: cobertura, actualización de firmas, análisis periódicos y detección» |
| Documento | EVD-Q31, revisión 2 |
| Fecha de esta revisión | 2026-08-12 |
| Sustituye a | Revisión 1, retirada — ver §1 |
| Controles PCI | Req 5.2.1, 5.3.1, 5.3.2 |
| Elaborado | Gabriel Ureña Chacón — CTO Fintrix Pay |
1. Nota de corrección
Esta revisión sustituye a la anterior, que declaraba «solución activa con detecciones en vivo verificadas». La solución estaba desplegada, pero no operaba como el documento afirmaba. Se detectó el 2026-08-12 en una revisión interna y se corrigió el mismo día.
Qué se encontró:
| Comprobación | Resultado |
|---|---|
| Reinicios del proceso de análisis | 421 en 8 días — uno cada 27 minutos |
| Estado que mostraba la plataforma | 3/3 Running de forma continua |
| Duración del análisis programado diario | 0,001 segundos |
| Ficheros analizados en ese análisis | Ninguno |
El dato que importa es el tercero. Un análisis de sistema de ficheros que dura una milésima no ha analizado nada. En el registro figuraba, en cada ejecución:
ERROR: Could not connect to clamd on LocalSocket /run/clamav/clamd.sock:
No such file or directory
Time: 0.001 sec (0 m 0 s)
Infected files: 0Se declara expresamente que, durante el periodo afectado, el análisis periódico exigido por Req 5.3.2 no se estaba realizando, pese a ejecutarse puntualmente cada día y registrar «Infected files: 0».
1.1 Causa
Un desajuste de nombre entre dos componentes del mismo despliegue:
| Componente | Ruta del socket |
|---|---|
| Configuración del servicio de análisis | /var/run/clamav/clamd.**ctl** |
| Comprobación de arranque de la imagen | /run/clamav/clamd.**sock** |
| Cliente que ejecuta el análisis diario | /run/clamav/clamd.**sock** |
El directorio era el correcto —/var/run enlaza a /run—; la extensión no. De ahí los dos síntomas: el arranque agotaba sus 1800 reintentos de un segundo —exactamente los 30 minutos del ciclo observado— y salía con error, y el cliente del análisis diario no encontraba a quién conectarse.
Un tercer efecto asociado: el componente de actualización de firmas tampoco alcanzaba el socket, por lo que las firmas nuevas solo llegaban al servicio al reiniciar. Funcionaba de rebote gracias al propio fallo.
1.2 Corrección
Se unificó el nombre del socket y se dio al componente de actualización acceso al volumen donde reside. Ningún otro cambio.
2. Estado verificado tras la corrección
Todas las cifras proceden de comprobaciones sobre el entorno en producción el 2026-08-12, posteriores al cambio.
2.1 Cobertura y versión
| Campo | Valor |
|---|---|
| Motor | ClamAV 1.4.4 |
| Despliegue | Un proceso por nodo, 5 de 5 activos |
| Reinicios tras la corrección | 0 |
| Base de firmas | Versión 28090, con fecha 2026-08-12 16:34 |
La fecha de la base de firmas es del mismo día de la verificación: la actualización automática opera y ahora sí notifica al servicio de análisis.
2.2 Análisis periódico — Req 5.3.2
| Campo | Valor |
|---|---|
| Programación | Diaria, 02:00 UTC |
| Ámbito | Configuración del sistema, directorios de administración, aplicaciones, registros y temporales de cada nodo |
Comprobación de que el análisis recorre ficheros de verdad, ejecutada sobre la configuración del sistema de un nodo:
/host/etc: OK
----------- SCAN SUMMARY -----------
Infected files: 0
Time: 20.905 sec (0 m 20 s)Veinte segundos frente a la milésima anterior. Es la diferencia entre un análisis que ocurre y un registro que dice que ocurrió.
2.3 Capacidad de detección — Req 5.2.1
Verificada con el patrón de prueba estándar de la industria, diseñado específicamente para comprobar que un antivirus detecta sin usar código dañino:
/tmp/eicar-prueba.txt: Eicar-Test-Signature FOUND
----------- SCAN SUMMARY -----------
Infected files: 1Esta es la comprobación que la revisión anterior declaraba y no respaldaba. Es reproducible por el equipo evaluador en cualquier momento.
3. Sobre por qué no se detectó antes
El indicador visible decía que todo funcionaba: los procesos figuraban en estado correcto de forma continua, el análisis se ejecutaba puntualmente cada día y su resultado era «0 ficheros infectados». Ninguna de las tres señales era falsa; las tres eran compatibles con un control que no analizaba nada.
Se ha incorporado a la revisión de controles la comprobación de la duración del análisis, no solo de su resultado. Un análisis de duración cercana a cero es un fallo, aunque informe de cero detecciones.
4. Verificación independiente
Quedamos a disposición para repetir cualquiera de estas comprobaciones en sesión compartida con el equipo evaluador.
Firma
- Elaborado: Gabriel Ureña Chacón — CTO Fintrix Pay
- Fecha: 2026-08-12
- Revisión: 2
