Citrix ADC

Protección basada en gramática por inyección de comandos para carga útil HTML

Citrix Web App Firewall utiliza un enfoque de coincidencia de patrones para detectar ataques por inyección de comandos en cargas útiles HTML. El enfoque utiliza un conjunto de palabras clave predefinidas y (o) caracteres especiales para detectar un ataque y marcarlo como una infracción. Aunque este enfoque es eficaz, puede dar lugar a muchos falsos positivos que llevan a agregar una o más reglas de relajación. Especialmente, cuando se usa una palabra de uso común, como “Salir”, en una solicitud HTTP. Podemos reducir los falsos positivos implementando la comprobación de protección basada en gramática de inyección de comandos para la carga útil HTML.

En el enfoque de coincidencia de patrones, se identifica un ataque de inyección de comandos si una palabra clave predefinida y (o) un carácter especial están presentes en una solicitud HTTP. En este caso, la sentencia no necesita ser una sentencia de inyección de comandos válida. Pero en el enfoque basado en la gramática, un ataque de inyección de comandos se detecta solo si una palabra clave o un carácter especial está presente en una sentencia de inyección de comandos. Por lo tanto, se reducen los casos de falsos positivos.

Casos de uso de protección basada en gramática por inyección de comandos

Considere la declaración “¡Corra hacia la salida!” presente en una solicitud HTTP. Aunque la sentencia no es una sentencia de inyección de comandos válida, el enfoque de coincidencia de patrones detecta la solicitud como un ataque de inyección de comandos debido a la palabra clave “exit”. Pero en el enfoque basado en la gramática de inyección de comandos, la sentencia no se detecta como un ataque de violación porque las palabras clave no están presentes en una sentencia de inyección de comandos válida.

Configurar el parámetro de protección basado en gramática de inyección de comandos mediante la CLI

Para implementar la detección basada en gramática por inyección de comandos, debe configurar el parámetro “CMDInjectionGrammar” en el perfil de Web App Firewall. De forma predeterminada, el parámetro está inhabilitado. Se admiten todas las acciones de inyección de comandos existentes, excepto el aprendizaje. Cualquier perfil nuevo creado después de una actualización admite la gramática de inyección de comandos. El nuevo perfil sigue teniendo el tipo predeterminado como “carácter especial o palabra clave” y la gramática de inyección de comandos debe estar habilitada explícitamente.

En el símbolo del sistema, escriba:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON/OFF
<!--NeedCopy-->

Ejemplo:

add appfw profile profile1 –CMDInjectionAction Block –CMDInjectionGrammar ON
<!--NeedCopy-->

Configurar la protección de coincidencia de patrones por inyección de comandos y la protección basada en gramáticas mediante la CLI

Si ha habilitado los enfoques basados en gramática y de coincidencia de patrones, el dispositivo realiza primero la detección basada en gramática. Si se detecta una inyección de comando con el tipo de acción establecido en “bloquear”, la solicitud se bloquea (sin verificar la detección mediante la coincidencia de patrones).

En el símbolo del sistema, escriba:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON –CMDInjectionType <Any action other than ‘None’: CMDSplCharANDKeyword/ CMDSplCharORKeyword/ CMDSplChar/ CMDKeyword>
<!--NeedCopy-->

Ejemplo:

add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType CMDSplChar
<!--NeedCopy-->

Configurar la comprobación de inyección de comandos solo con protección basada en gramáticas mediante la CLI

En el símbolo del sistema, escriba:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON –CMDInjectionType None
<!--NeedCopy-->

Ejemplo:

add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType None
<!--NeedCopy-->

Enlazar reglas de relajación para la protección de inyección de comandos basada en gramáticas mediante la

Si su aplicación requiere que omita la comprobación de inyección de comandos para un “ELEMENTO” o “ATRIBUTO” específico en la carga útil HTML, debe configurar una regla de relajación.

Nota:

Las reglas de relajación con valueType como “palabra clave” se evalúan solo cuando el dispositivo realiza la detección mediante la gramática de inyección de comandos.

Las reglas de relajación de inspección de inyección de comandos tienen la siguiente sintaxis. En el símbolo del sistema, escriba:

bind appfw profile <name> -CMDInjection <String> [isRegex(REGEX| NOTREGE)] <formActionURL> [-location <location>] [-valueType (Keywor|SpecialString|Wildchar) [<valueExpression>][-isValueRegex (REGEX | NOTREGEX) ]]
<!--NeedCopy-->

Ejemplo:

bind appfw profile p1 -cmdinjection abc http://10.10.10.10/

bind appfw profile p1 –cmdinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX

bind appfw profile p1 –cmdinjection 'name' http://10.10.10.10/ -valueType Keyword 'exi[a-z]+' -isvalueRegex regEX
<!--NeedCopy-->

Configurar la protección basada en gramática por inyección de comandos mediante la GUI

Complete los siguientes pasos para configurar la detección de inyección de comandos HTML basada en gramáticas.

  1. Vaya a Seguridad > Perfil de Citrix Web App Firewall > Perfiles.

  2. Seleccione un perfil y haga clic en Modificar.

  3. Vaya a la sección Configuración avanzada y haga clic en Comprobaciones de seguridad.

  4. Active la casilla de verificación Inyección de comandos HTML y haga clic enConfiguración de acciones.

    Activar la inyección de comandos

  5. Active lacasilla de verificación Comprobar mediante CMD Grammar.

  6. Seleccione Ninguno en la solicitud de comprobación que contiene.

    Configuración de acciones de inyección de comandos

  7. Haga clic enAceptar.