Comprobación de etiquetado de formularios CSRF

El etiquetado de formularios de solicitud de falsificación de sitios (CSRF) etiqueta cada formulario web enviado por un sitio web protegido a los usuarios con un ID de formulario único e impredecible y, a continuación, examina los formularios web devueltos por los usuarios para asegurarse de que el ID de formulario suministrado es correcto. Esta comprobación protege contra ataques de falsificación de solicitudes entre sitios. Esta comprobación solo se aplica a las solicitudes HTML que contienen un formulario web, con o sin datos. No se aplica a las solicitudes XML.

La comprobación de etiquetado de formularios CSRF impide que los atacantes utilicen sus propios formularios web para enviar respuestas de formularios de gran volumen con datos a los sitios web protegidos. Esta comprobación requiere relativamente poca capacidad de procesamiento de CPU en comparación con otras comprobaciones de seguridad que analizan los formularios web en profundidad. Por lo tanto, es capaz de manejar ataques de gran volumen sin degradar seriamente el rendimiento del sitio web protegido o del propio web App Firewall.

Antes de habilitar la comprobación CSRF Form Tagging, debe tener en cuenta lo siguiente:

  • Debe habilitar el etiquetado de formularios. La comprobación CSRF depende del etiquetado de formularios y no funciona sin ella.
  • Debe inhabilitar la función de almacenamiento en caché integrado de Citrix ADC para todas las páginas web que contengan formularios protegidos por ese perfil. La función de almacenamiento en caché integrado y el etiquetado de formularios CSRF no son compatibles.
  • Debería considerar habilitar la comprobación de Referer. La comprobación de referencias forma parte de la comprobación de URL de inicio, pero evita falsificaciones de solicitudes entre sitios, no violaciones de URL de inicio. La comprobación de referer también pone menos carga en la CPU que la comprobación CSRF Form Tagging. Si una solicitud viola la comprobación de Referer, se bloquea inmediatamente, por lo que no se invoca la comprobación CSRF Form Tagging.
  • La comprobación de etiquetado de formularios CSRF no funciona con formularios web que utilizan dominios diferentes en la dirección URL de origen del formulario y la dirección URL de acción del formulario. Por ejemplo, el etiquetado de formularios CSRF no puede proteger un formulario web con una dirección URL de origen de formulario http://www.example.com y una dirección URL de acción de formulario de http://www.example.org/form.pl, porque example.com y example.org son dominios diferentes.

Si utiliza el asistente o la GUI, en el cuadro de diálogo Modificar comprobación de etiquetado de formularios CSRF, en la ficha General puede habilitar o inhabilitar las acciones Bloquear, Registro, Aprendizaje y Estadísticas.

Si utiliza la interfaz de línea de comandos, puede introducir el siguiente comando para configurar la comprobación de etiquetado de formularios CSRF:

  • set appfw profile <name> -CSRFtagAction [**block**] [**log**] [**learn**] [**stats**] [**none**]

Para especificar relajantes para la comprobación CSRF Form Tagging, debe utilizar la GUI. En la ficha Comprobaciones del cuadro de diálogo Modificar comprobación de etiquetado de formularios CSRF, haga clic en Agregar para abrir el cuadro de diálogo Agregar relajación de comprobación de etiquetado de formularios CSRF o seleccione una relajación existente y haga clic en Abrir para abrir el cuadro de diálogo Modificar comprobación de etiquetado de formularios CSRF. Cualquiera de los dos cuadros de diálogo proporciona las mismas opciones para configurar una relajación.

Se genera una alerta cuando se establece el límite de sesión de Citrix Web App Firewall en un valor de 0 o inferior, ya que dicha configuración afecta a la funcionalidad de comprobación de protección avanzada que requiere una sesión de Web App Firewall que funcione correctamente.

A continuación se presentan ejemplos de relajación de comprobación CSRF Form Tagging:

Nota: Las siguientes expresiones son expresiones URL que se pueden utilizar en las funciones Dirección URL de origen del formulario y Dirección URL de acción del formulario.

  • Elija direcciones URL que empiecen por http://www.example.com/search.pl? y contengan cualquier cadena después de la consulta, excepto una nueva consulta:

     ^http://www[.]example[.]com/search[.]pl?[^?]*$
    
  • Elija direcciones URL que comiencen por http://www.example-español.com y tengan rutas y nombres de archivo que constan de letras mayúsculas y minúsculas, números, caracteres especiales no ASCII y símbolos seleccionados en la ruta. El carácter ñ y cualquier otro carácter especial se representan como cadenas UTF-8 codificadas que contienen el código hexadecimal asignado a cada carácter especial en el juego de caracteres UTF-8:

    ^http://www[.]example-espa\xC3\xB1ol[.]com/(([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])\*/)\*([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$
  • Elija todas las URL que contengan la cadena /search.cgi? :
    ^[^?<>]\*/search[.]cgi?[^?<>]\*$

Importante

Las expresiones regulares son potentes. Si no está completamente familiarizado con las expresiones regulares con formato PCRE-format, compruebe las expresiones regulares que escriba. Asegúrese de que definen exactamente la URL que quiere agregar como excepción, y nada más. El uso descuidado de comodines, y especialmente de la combinación de metacarácter/comodín de punto (.*), puede tener resultados que no quiera, como bloquear el acceso al contenido web que no tenía intención de bloquear o permitir un ataque que la comprobación habría bloqueado de otro modo.

Sugerencia

Cuando el encabezado de referencia enableValidate está habilitado en la acción de URL de inicio, asegúrese de que la URL del encabezado de referencia también se agrega a StartURL.

Nota

Cuando Citrix ADC alcanza appfw_session_limit y las comprobaciones CSRF están habilitadas, la aplicación web se bloquea.

Para evitar la congelación de aplicaciones web, reduzca el tiempo de espera de la sesión y aumente el límite de sesión mediante los siguientes comandos:

Desde CLI: > set appfw settings —sessiontimeout 300 Desde shell: root @ns # nsapimgr_wr.sh -s appfw_session_limit=200000

Registrar y generar alarmas SNMP cuando se alcanza appfw_session_limit le ayuda a solucionar problemas y depurar.

Comprobación de etiquetado de formularios CSRF