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 infracción. Aunque este enfoque es efectivo, puede dar lugar a muchos falsos positivos que dan lugar a agregar 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, “Seleccione 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 agregar 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 de SQL para HTML 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á desactivado. 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 la línea de comandos, escriba:

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

Ejemplo:

add appfw profile profile1 –SQLInjectionAction Block –SQLInjectionGrammar ON

Configure la protección de coincidencia de patrones de SQL y la protección basada en gramáticas para HTML 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 la línea de comandos, 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

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

En la línea de comandos, 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

Reglas de relajación de enlaces para la protección basada en gramática de SQL para HTML 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.

Las reglas de relajación de la inspección por inyección del comando SQL tienen la siguiente sintaxis. En la línea de comandos, 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 de SQL para HTML 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 de perfil de NetScaler 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.
  7. Active la casilla Comprobar mediante gramática SQL.
  8. Haga clic en Aceptar.

Configure la protección basada en gramática de SQL para la carga útil de 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á desactivado. 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 la línea de comandos, 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

Configure la protección de coincidencia de patrones de SQL y la protección basada en gramáticas para la carga útil de JSON 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 la línea de comandos, 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

Configure la inyección de SQL: compruebe solo la protección basada en gramática para la carga útil de JSON mediante la CLI

En la línea de comandos, 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 de JSON SQL para la carga útil de JSON 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. Las reglas de relajación del comando JSON Injection Inspection tienen la siguiente sintaxis. En la línea de comandos, 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

Configure la protección basada en gramática de SQL para la carga útil de 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 la 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.
Protección basada en gramática SQL para cargas útiles HTML y JSON