Skip to content

¿Qué son OWASP Top 10, Core Rule Set (CRS) y ModSecurity?

OWASP Top 10, CRS y ModSecurity: descubre cómo funcionan juntos para detectar ataques web, gestionar falsos positivos y reforzar un servidor.

REDACCIÓN: ADRIEN PIRON ACTUALIZADO EL 17 DE SEPTIEMBRE DE 2026 11 MIN DE LECTURA
C’est quoi les OWASP Top 10, Core Rule Set (CRS) et ModSecurity ?

OWASP Top 10, OWASP Core Rule Set y ModSecurity están muy relacionados cuando se trata de proteger un sitio web frente a los ataques. OWASP Top 10 permite comprender las principales familias de riesgos presentes en las aplicaciones web. Es una documentación que se actualiza con frecuencia y ayuda a desarrolladores y principiantes a entender el estado actual de los riesgos de seguridad de las aplicaciones. Core Rule Set (CRS) proporciona reglas para reconocer muchas técnicas de ataque, mientras que ModSecurity es el motor que analiza las solicitudes y aplica esas reglas.

Si utilizas el WAF (firewall de aplicaciones web) ModSecurity con OWASP CRS, cada solicitud enviada a tu sitio puede inspeccionarse antes de que WordPress u otra aplicación la procese.

Así se puede detectar y bloquear un intento de inyección SQL, JavaScript sospechoso, un intento de acceder a un archivo sensible o determinados comandos enviados al servidor.

Es una protección potente, pero también requiere muchos ajustes.

Un WAF demasiado permisivo dejará pasar más cosas. En cambio, un WAF activado bruscamente con reglas estrictas también puede bloquear funciones perfectamente legítimas.

OWASP y la seguridad de las aplicaciones web

OWASP es una organización dedicada a la seguridad de las aplicaciones. Publica distintos proyectos, documentos y herramientas destinados a comprender mejor y reducir los riesgos relacionados con las aplicaciones web. Su proyecto más conocido probablemente sea OWASP Top 10, un documento de concienciación dedicado a los principales riesgos de seguridad de las aplicaciones web. Incluye, por ejemplo, categorías como:

  • problemas de control de acceso
  • configuraciones incorrectas
  • inyecciones SQL o XSS
  • problemas de autenticación
  • problemas de criptografía

Top 10 sirve para entender qué tipos de problemas pueden existir en una aplicación web. Algunas de estas familias de riesgos pueden dejar huellas muy visibles en las solicitudes HTTP. OWASP Core Rule Set, por su parte, es un conjunto de reglas que protege frente a estas grandes familias.

OWASP CRS: reglas generales para reconocer ataques

Core Rule Set (o CRS) es un conjunto de reglas de código abierto destinado a firewalls de aplicaciones web compatibles. Detecta ataques contra aplicaciones web intentando reducir al mínimo los falsos positivos.

Un firewall de aplicaciones web trabaja en el nivel de las comunicaciones HTTP.

No se limita a comprobar si una dirección IP puede conectarse al servidor. También puede analizar lo que esa dirección le envía.

Veamos un ejemplo sencillo.

En un sitio WordPress, un campo de búsqueda podría recibir:

reparar Windows 11

Es una solicitud perfectamente normal.

Pero alguien también podría intentar enviar en ese mismo campo contenido parecido a un comando SQL o código JavaScript. CRS contiene reglas capaces de reconocer muchos patrones utilizados en este tipo de ataques. Puede ayudar a detectar:

  • inyecciones SQL
  • Cross-Site Scripting o XSS
  • determinados intentos de Local File Inclusion o LFI
  • determinados intentos de ejecución de comandos
  • y otras solicitudes HTTP consideradas anómalas

El principio es bastante distinto al de un antivirus que busca únicamente un archivo conocido. CRS busca comportamientos y estructuras que se parecen a técnicas de ataque. Esta es una de sus principales ventajas.

¿Cuál es el papel de ModSecurity?

ModSecurity es el motor que ejecuta estas reglas. Su función se puede resumir así:

Solicitud enviada al sitio
        ↓
ModSecurity la inspecciona
        ↓
Se aplican las reglas de OWASP CRS
        ↓
¿Comportamiento normal o sospechoso?
        ↓
La solicitud continúa o puede bloquearse

Este esquema está deliberadamente simplificado, pero ayuda a entender la idea detrás de esta detección. ModSecurity puede inspeccionar las transacciones web y aplicar reglas. OWASP CRS le proporciona una gran biblioteca de reglas ya diseñadas para reconocer ataques habituales. Por eso instalar únicamente ModSecurity no es suficiente.

Tener ModSecurity instalado no significa que sea eficaz

Este punto es importante. Puedes tener el módulo ModSecurity instalado en el servidor sin disfrutar de la protección que imaginas. El motor debe estar activo, las reglas deben estar cargadas, deben inspeccionarse las partes importantes de las solicitudes y las reglas deben poder desencadenar acciones.

ModSecurity tiene tres estados principales para SecRuleEngine:

Off
DetectionOnly
On

En modo DetectionOnly, las reglas se ejecutan, pero no se aplican las acciones de bloqueo. El motor puede detectar algo y registrarlo sin impedir que la solicitud continúe. Es lo que recomiendo a quien empieza con ModSecurity y CRS, porque comprobarás que son muy potentes y que incluso pueden bloquearte a ti mismo. Me ocurrió: CRS bloqueó mi editor de WordPress y ni siquiera podía modificar o actualizar un artículo. Esto nos lleva a uno de los puntos más importantes al utilizar CRS.

¿Por qué no activar simplemente CRS en modo de bloqueo?

Porque CRS es deliberadamente general. Debe poder utilizarse delante de una enorme variedad de aplicaciones sin conocer de antemano cómo funcionan. WordPress, Nextcloud, una API propia o una tienda online no se comunican de la misma manera.

Algunas aplicaciones también envían datos que, fuera de contexto, pueden parecer un ataque. Esto se llama un falso positivo. Un WAF no entiende una página como lo haría una persona: principalmente ve una URL, cookies, cabeceras HTTP, el cuerpo de una solicitud y cadenas de caracteres.

No puedo buscar PowerShell en mi sitio WordPress

En Assistouest.fr publiqué un artículo informático que contiene un comando de PowerShell. Para mí, es simplemente contenido destinado a explicar una operación de Windows. Pero parte de ese comando se parece a algo que un atacante enviaría para intentar ejecutar código en Windows Server. El firewall no sabe necesariamente que estoy redactando un artículo. Principalmente ve la cadena de caracteres.

Los falsos positivos que encontré en mi servidor

En mi infraestructura me he encontrado con varios casos de falsos positivos con ModSecurity y CRS.

Entre ellos había algunas solicitudes de Nextcloud que utilizaban WebDAV, contenidos de WordPress sobre PowerShell o Base64 y determinadas cookies de Cloudflare, como cf_clearance.

La regla detectaba a menudo algo parecido a lo que buscaba. El problema era simplemente que, en ese contexto concreto, la solicitud era legítima. Por eso los registros son indispensables para configurar correctamente CRS y ModSecurity.

Un 403 no basta para entender qué ha ocurrido

Cuando ModSecurity bloquea una solicitud, el navegador recibe un 403 Forbidden, un código que indica que la solicitud ha sido rechazada. En mi infraestructura, cuando un comportamiento me sorprende, no empiezo desactivando la regla.

Empiezo por buscar por qué se activó. Y lo contrario también es cierto. La ausencia de un 403 no significa que ModSecurity no haya detectado nada.

Una regla puede haberse activado sin que la solicitud se bloquee.

Puede ocurrir si el motor funciona en modo DetectionOnly, pero también si el nivel total de sospecha no es suficiente para alcanzar el umbral de bloqueo.

La puntuación de anomalía: varias señales pequeñas pueden activar una regla

OWASP CRS utiliza una puntuación de anomalía ponderada. Cuando una regla coincide con algo sospechoso, puede añadir puntos a la transacción. No todas las detecciones tienen la misma importancia. La configuración oficial utiliza puntuaciones diferentes según la gravedad de las reglas y después compara el total con un umbral de bloqueo.

Utilicemos deliberadamente un ejemplo simplificado. Una primera regla detecta un elemento algo sospechoso:

+ 3 puntos

Una segunda regla encuentra otro elemento sospechoso:

+ 2 puntos

La puntuación total llega a 5. Si el umbral de bloqueo está fijado en 5, la solicitud puede rechazarse.

Los Paranoia Levels: detectar más y bloquear sin avisar, o no

CRS también cuenta con varios Paranoia Levels (PL). El nivel 1 es el predeterminado.

Al subir de nivel, se activan más reglas y las comprobaciones se vuelven progresivamente más estrictas. Esto puede mejorar la detección de determinados comportamientos.

Pero hay una contrapartida: cuanto más sensibles son las reglas, más aumenta también el riesgo de falsos positivos. Por tanto, esto no significa:

PL4 = mejor seguridad

La configuración adecuada es la que puedes administrar correctamente.

Un PL muy alto que después te obligue a desactivar familias enteras de reglas puede ser menos interesante que un nivel más razonable correctamente ajustado.

Tendrás que permitir exactamente lo que sea legítimo

Probablemente sea uno de los aspectos menos visibles de CRS. Cuando una regla bloquea una solicitud legítima, la solución más sencilla consiste en crear una excepción en lugar de desactivar la regla.

Imagina que una regla XSS solo causa problemas cuando un campo concreto de WordPress contiene código destinado a un artículo técnico.

Podrías desactivar esa regla en todas partes.

El falso positivo desaparece.

Pero la protección también desaparece en el resto del sitio.

El mejor enfoque consiste en decir:

Esta regla sigue activa en todas partes

EXCEPTO

Para este campo concreto, en esta función y cuando sea necesario

CRS ofrece varios mecanismos de exclusión que permiten limitar una excepción a una variable, una URL o un contexto concreto, sin eliminar la regla de todo el sitio.

Hay que volver a probar después de cada exclusión

Una exclusión corrige un problema. Pero si es demasiado amplia, también puede crear una debilidad en la protección. Por eso después realizo pruebas de regresión.

En mi instalación utilicé solicitudes de prueba correspondientes a varias familias de inyección SQL, XSS, LFI, intentos de RCE y accesos a determinados archivos sensibles, como .env.

No dejes que el algoritmo decida por ti

Añade Assistouest a tus fuentes preferidas en Google para encontrar nuestras guías más rápido cuando busques una solución informática.

¿Puede un WAF proteger frente a una vulnerabilidad zero-day?

Este es también uno de los aspectos más interesantes de las reglas generales de CRS. Una zero-day es una vulnerabilidad descubierta recientemente para la que puede que todavía no exista una solución disponible.

Por supuesto, CRS no puede conocer por arte de magia una vulnerabilidad que acaba de aparecer.

Pero no necesita necesariamente conocer el nombre de la vulnerabilidad para reconocer la técnica utilizada para explotarla. Imaginemos que se descubre una nueva vulnerabilidad en una extensión de WordPress.

Nadie ha añadido todavía una regla específica para esa extensión.

Pero si la explotación consiste en enviar una inyección SQL clásica en un parámetro, CRS ya conoce muchos patrones característicos de las inyecciones SQL.

Por tanto, puede bloquear el intento porque reconoce la familia de ataque, no porque conozca esa vulnerabilidad concreta.

nueva vulnerabilidad
        ↓
técnica de explotación
        ↓
inyección SQL
        ↓
reglas SQL ya presentes en CRS
        ↓
detección

Este es también el principio de lo que OWASP denomina virtual patching: una capa de seguridad intermedia puede impedir determinados intentos de explotación antes de que se corrija el código vulnerable. Evidentemente, esto no sustituye a una actualización.

En cuanto exista una solución real, la vulnerabilidad debe corregirse en su origen.

El WAF permite aun así reducir temporalmente la exposición y, de forma más general, la superficie de ataque.

¿Y todos los ataques que CRS no puede ver?

Aquí es donde OWASP Top 10 también ayuda a comprender los límites de un WAF.

Imagina un sitio donde /factura?id=100 muestra tu factura.

Si simplemente sustituyes 100 por 101 y la aplicación te muestra la factura de otro cliente, existe un problema de control de acceso. Sin embargo, tu solicitud HTTP puede parecer completamente normal.

No hay SQL sospechoso. No hay JavaScript. No hay ningún comando del sistema. El problema está en la lógica de la aplicación. Un conjunto de reglas genéricas no puede saber que el usuario conectado no tiene permiso para consultar ese recurso.

Lo mismo ocurre con una arquitectura de autenticación deficiente, un error criptográfico y otros fallos puramente lógicos.

ModSecurity y CRS deben formar parte de un conjunto

Un WAF es una capa de protección, no la única. En mi caso, ModSecurity y CRS funcionan junto con otras protecciones situadas en distintos puntos de la infraestructura.

Cloudflare puede filtrar parte del tráfico antes de que llegue al servidor. Un firewall puede limitar determinados accesos de red. Una herramienta como CrowdSec puede analizar los registros para detectar determinados eventos y comportamientos presentes en los registros de ModSecurity.

Pero su funcionamiento es otro tema y ninguna de estas capas hace innecesarias a las demás.

La función de ModSecurity y CRS es analizar las transacciones web según unas reglas e intervenir cuando coinciden suficientemente con comportamientos considerados peligrosos.

Nuestros artículos son gratuitos gracias a la publicidad
¿Utilizas un bloqueador de anuncios o una VPN?
Para seguir leyendo y apoyar nuestro trabajo, desactiva tu bloqueador de anuncios o suscríbete para disfrutar de todos nuestros trucos y tutoriales.
He desactivado mi bloqueador de anuncios

El contenido se desbloqueará automáticamente después de la verificación.