Citrix ADC

Protección basada en gramática SQL para cargas útiles HTML y JSON

Citrix Web App Firewall utiliza un enfoque de coincidencia de patrones para detectar ataques de inyección SQL en JSON cargas útiles HTTP y ataques de inyección SQL. El enfoque utiliza un conjunto de palabras clave predefinidas y (o) caracteres especiales para detectar un ataque y marcarlo como una violación. Aunque este enfoque es efectivo, puede dar lugar a muchos falsos positivos que dan lugar a añadir una o más reglas de relajación. Especialmente cuando se utilizan palabras de uso común como “Seleccionar” y “De” en una solicitud HTTP o JSON. Podemos reducir los falsos positivos implementando la comprobación de protección gramatical SQL HTML y la JSON carga útil.

En el enfoque de coincidencia de patrones existente, se identifica un ataque de inyección SQL si hay una palabra clave predefinida y/o un carácter especial en una solicitud HTTP. En este caso, la instrucción no tiene por qué ser una sentencia SQL válida. Pero en el enfoque basado en gramática, un ataque de inyección SQL solo se detecta si una palabra clave o un carácter especial están presentes en una instrucción SQL o forma parte de una sentencia SQL, lo que reduce los casos falsos positivos.

Caso de uso de protección basada en gramática SQL

Considere una declaración, “Selecciona mis entradas y veámonos en union station” presente en una solicitud HTTP. Aunque la instrucción no es una sentencia SQL válida, el enfoque de coincidencia de patrones existente detecta la solicitud como un ataque de inyección SQL porque la instrucción utiliza palabras clave como “Seleccionar”, “y” y “Unión”. Sin embargo, en el caso del enfoque gramatical SQL, la instrucción no se detecta como un ataque de infracción porque las palabras clave no están presentes en una sentencia SQL válida o no forman parte de una sentencia SQL válida.

El enfoque basado en gramática también se puede configurar para detectar ataques de inyección SQL en JSON cargas útiles. Para añadir una regla de relajación, puede reutilizar las reglas de relajación existentes. Las reglas de relajación detalladas también se aplican a la gramática SQL, a las reglas con “palabra clave” “ValueType”. En la gramática JSON SQL, se puede reutilizar el método basado en URL existente.

Configurar la protección basada en gramática SQL mediante la CLI

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

En el símbolo del sistema, escriba:

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON/OFF
<!--NeedCopy-->

Ejemplo:

add appfw profile profile1 –SQLInjectionAction Block –SQLInjectionGrammar ON

Configurar la protección de coincidencia de patrones SQL y la protección basada en gramática mediante la CLI

Si ha habilitado enfoques gramaticales y de coincidencia de patrones, el dispositivo realiza primero la detección basada en gramática y, si hay detección de inyección SQL con el tipo de acción establecido para 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> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->

Ejemplo:

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType SQLSplChar

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

En el símbolo del sistema, escriba:

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType None
<!--NeedCopy-->

Ejemplo:

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType None

Vincular reglas de relajación para la protección basada en gramática SQL mediante la CLI

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

Nota:

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

El SQL comando Reglas de relajación de inspección por inyección tiene la siguiente sintaxis. En el símbolo del sistema, escriba:

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

Ejemplo:

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/ bind appfw profile p1 –sqlinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Configurar la protección basada en gramática SQL para la carga útil JSON mediante la CLI

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

En el símbolo del sistema, escriba:

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON/OFF
<!--NeedCopy-->

Ejemplo:

add appfw profile profile1 –type JSON –JSONSQLInjectionAction Block –JSONSQLInjectionGrammar ON

Configurar la protección de coincidencia de patrones SQL y la protección basada en gramática mediante la CLI

Si ha habilitado comprobaciones gramaticales y de coincidencia de patrones, el dispositivo realiza primero la detección basada en gramática y, si hay detección de inyección SQL con el tipo de acción establecido para bloquear, la solicitud se bloquea (sin verificar la detección mediante coincidencia de patrones).

Nota:

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

En el símbolo del sistema, escriba:

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->

Ejemplo:

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType SQLSplChar

Configurar la protección basada en gramática SQL para la carga útil JSON mediante la CLI

En el símbolo del sistema, escriba:

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType None`\
<!--NeedCopy-->

Ejemplo:

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType None

Vincular reglas de relajación basadas en URL para la protección basada en gramática JSON SQL mediante la CLI

Si su aplicación requiere que omita la inspección de inyección de JSON comandos para un “ELEMENTO” o “ATRIBUTO” específico en la carga útil, puede configurar una regla de relajación. El JSON comando Reglas de relajación de inspección por inyección tiene la siguiente sintaxis. En el símbolo del sistema, escriba:

bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
<!--NeedCopy-->

Ejemplo:

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/ bind appfw profile p1 –sqlinjection 'abc[0-9]+' http:// 10.10.10.10/ -isregex regEX bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Configurar la protección basada en gramática SQL mediante la GUI

Complete el procedimiento GUI para configurar la detección de inyección HTML SQL basada en gramática.

  1. En el panel de navegación, vaya a Seguridad > Perfiles.
  2. En la página Perfiles, haga clic en Agregar.
  3. En la página Perfil de Citrix Web App Firewall, haga clic en Comprobaciones de seguridad en Configuración avanzada.
  4. En la sección Comprobaciones de seguridad, vaya a Configuración de inyección HTML SQL .
  5. Haga clic en el icono ejecutable situado cerca de la casilla de verificación.
  6. Haga clic en Configuración de acción para acceder a la página Configuración de inyección SQL de HMTL .

    Configuración de GUI para protección basada en gramática SQL Carga útil HTML

  7. Active la casilla Comprobar mediante gramática SQL .
  8. Haga clic en Aceptar.

Configurar la protección basada en gramática SQL para la carga útil JSON mediante la GUI

Complete el procedimiento GUI para configurar la detección de inyección JSON SQL basada en gramática.

  1. En el panel de navegación, vaya a Seguridad > Perfiles.
  2. En la página Perfiles, haga clic en Agregar.
  3. En la página Perfil de Citrix Web App Firewall, haga clic en Comprobaciones de seguridad en Configuración avanzada.
  4. En la sección Comprobaciones de seguridad, vaya a Configuración de inyección JSON SQL.
  5. Haga clic en el icono ejecutable situado cerca de la casilla de verificación.
  6. Haga clic en Configuración de acción para acceder a la página Configuración de inyección JSON SQL.
  7. Active la casilla Comprobar mediante gramática SQL .
  8. Haga clic en Aceptar.

    Configuración de GUI para carga útil JSON de protección basada en gramática SQL