Guía de Seguridad en Entornos y Aplicaciones Web (CCN-STIC-812) PDF

Summary

This document provides a guide on security in web environments and web applications. It discusses security risks, incidents, and vulnerabilities, along with strategies and methodologies for enhancing security. It's a comprehensive resource for IT professionals and security experts.

Full Transcript

Guía de Seguridad de las TIC CCN-STIC-812 GUÍA DE SEGURIDAD EN ENTORNOS Y APLICACIONES WEB JUNIO 2023 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web Catálogo de Publicaciones de la Administración...

Guía de Seguridad de las TIC CCN-STIC-812 GUÍA DE SEGURIDAD EN ENTORNOS Y APLICACIONES WEB JUNIO 2023 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web Catálogo de Publicaciones de la Administración General del Estado cpage.mpr.gob.es https://cpage.mpr.gob.es Edita: CENTRO CRIPTOLOGICO NACIONAL cn=CENTRO CRIPTOLOGICO NACIONAL, 2.5.4.97=VATES-S2800155J, ou=CENTRO CRIPTOLOGICO NACIONAL, o=CENTRO CRIPTOLOGICO NACIONAL, c=ES 2023.07.10 13:29:27 +02'00' Pº de la Castellana 109, 28046 Madrid  Centro Criptológico Nacional, 2023 Fecha de Edición: junio de 2023 NIPO: 083-23-153-0 LIMITACIÓN DE RESPONSABILIDAD El presente documento se proporciona de acuerdo con los términos en él recogidos, rechazando expresamente cualquier tipo de garantía implícita que se pueda encontrar relacionada. En ningún caso, el Centro Criptológico Nacional puede ser considerado responsable del daño directo, indirecto, fortuito o extraordinario derivado de la utilización de la información y software que se indican incluso cuando se advierta de tal posibilidad. AVISO LEGAL Quedan rigurosamente prohibidas, sin la autorización escrita del Centro Criptológico Nacional, bajo las sanciones establecidas en las leyes, la reproducción parcial o total de este documento por cualquier medio o procedimiento, comprendidos la reprografía y el tratamiento informático, y la distribución de ejemplares del mismo mediante alquiler o préstamo públicos. Centro Criptológico Nacional 2 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web ÍNDICE 1. INTRODUCCIÓN............................................................................................................ 4 2. OBJETO........................................................................................................................ 4 3. ALCANCE...................................................................................................................... 5 4. SEGURIDAD DE ENTORNOS Y APLICACIONES WEB......................................................... 5 4.1 RIESGOS Y AMENAZAS DE SEGURIDAD EN ENTORNOS WEB........................................... 5 4.2 INCIDENTES DE SEGURIDAD EN ENTORNOS WEB............................................................ 6 4.3 VULNERABILIDADES DE SEGURIDAD EN ENTORNOS WEB............................................... 7 4.4 ESTRATEGIA Y METODOLOGÍA DE SEGURIDAD DE APLICACIONES WEB......................... 8 4.5 ARQUITECTURAS DE SEGURIDAD EN ENTORNOS WEB.................................................. 10 4.6 DESARROLLO SEGURO DEL SOFTWARE DE APLICACIONES WEB.................................... 12 4.6.1 RECOMENDACIONES GENERALES............................................................................ 13 4.6.2 FILTRADO DE DATOS DE ENTRADA DEL USUARIO................................................... 13 4.6.3 MENSAJES DE ERROR Y OTROS CONTENIDOS......................................................... 16 4.6.4 AUTENTIFICACIÓN Y GESTIÓN DE SESIONES........................................................... 16 4.6.5 CSRF......................................................................................................................... 17 4.6.6 GESTIÓN DE LOGS.................................................................................................... 17 4.7 ANÁLISIS DE SEGURIDAD DE APLICACIONES WEB.......................................................... 18 4.7.1 METODOLOGÍA DE ANALISIS DE CAJA NEGRA......................................................... 18 4.7.2 METODOLOGÍA DE ANALISIS DE CAJA BLANCA....................................................... 19 5. ESPECIFICACIÓN DE REQUISITOS DE AUDITORÍAS DE SEGURIDAD DE ENTORNOS WEB. 20 5.1 ÁMBITO DE LA AUDITORÍA DE SEGURIDAD.................................................................... 21 5.2 RECONOCIMIENTO.......................................................................................................... 21 5.2.1 INFORMACIÓN DE REGISTRO DE DOMINIOS (DNS) Y DIRECCIONES....................... 21 5.2.2 SERVICIOS DE BÚSQUEDAS EN INTERNET............................................................... 22 5.2.3 UBICACIÓN EN LA RED............................................................................................. 22 5.3 ESCANEO......................................................................................................................... 22 5.3.1 SERVICIOS WEB........................................................................................................ 23 5.3.2 CONTENIDOS WEB................................................................................................... 23 5.4 ANÁLISIS DE VULNERABILIDADES................................................................................... 24 5.4.1 VULNERABILIDADES DE APLICACIONES WEB.......................................................... 24 5.4.2 PRUEBAS DE CARGA Y DENEGACIÓN DE SERVICIO (DOS)....................................... 25 REFERENCIAS PRINCIPALES...................................................................... 27 LISTA DE COMPROBACIÓN Y REQUISITOS................................................. 28 GLOSARIO DE TÉRMINOS Y ABREVIATURAS.............................................. 34 REFERENCIAS........................................................................................... 36 Centro Criptológico Nacional 3 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web 1. INTRODUCCIÓN Dada la criticidad tanto de los entornos de producción como de los dispositivos embebidos, se hace necesario establecer una metodología que permita evaluar y reforzar la seguridad de los entornos y aplicaciones Web asociados a éstos. Desde el punto de vista de la seguridad, todos los elementos que conforman el entorno o aplicación Web descritos en el punto previo deben ser tenidos en cuenta a la hora de evaluar y diseñar los mecanismos de protección. El presente documento establece unas pautas de carácter general enfocadas a las características propias de las aplicaciones y servicios web para establecer una política de seguridad en dichos sistemas teniendo en cuenta los requerimientos establecidos en el Real Decreto 311/2022, de 3 de mayo, por el que se regula el Esquema Nacional de Seguridad. Se espera que cada organización las particularice para adaptarlas a su entorno singular. 2. OBJETO Actuar como guía de referencia en la identificación y el análisis de los requisitos de seguridad asociados a las aplicaciones y entornos Web en el ámbito del Esquema Nacional de Seguridad, con el objetivo de reducir las posibles amenazas de seguridad asociadas a estos entornos y aplicaciones durante su diseño y antes de su paso a producción. Existen dos procedimientos para mejorar la seguridad de las aplicaciones y entornos Web: a) Durante el proceso de diseño y desarrollo de la aplicación, estableciendo unos requisitos y verificaciones de seguridad que debe cumplir toda aplicación Web. b) Posteriormente, tras la puesta en producción, realizando el análisis de la aplicación Web mediante auditorías de seguridad, análisis de vulnerabilidades y pruebas de intrusión. El objetivo del presente documento es proporcionar la información necesaria para la aplicación de ambos procedimientos, incluyendo una lista de recomendaciones que deberían ser aplicadas durante las fases de diseño, desarrollo y auditoría de la aplicación Web, dependiendo de la categoría del sistema. Adicionalmente, la presente guía define los requisitos necesarios para la realización de auditorías de entornos Web por terceros, con el objetivo de obtener unos resultados que sean un reflejo completo de la seguridad de los servicios Web prestados, los resultados sean relevantes desde el punto de vista práctico, y la información obtenida se trate con la reserva oportuna. Adicionalmente a la información contenida en la presente guía, en el proceso de contratación de una aplicación Web a un tercero, es necesario fijar una serie de requisitos, dentro de los cuales se encuentran los de seguridad. Esta guía pretende ofrecer recomendaciones para el establecimiento y elaboración detallada de esos requisitos mínimos, y se complementa con la guía de OWASP centrada en los contenidos propios de un contrato de estas características, y denominada Secure Software Contract Annex [Ref.- 15]. Centro Criptológico Nacional 4 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web 3. ALCANCE Dar cumplimiento con lo establecido por el Real Decreto 311/2022, de 3 de mayo, por el que se regula el Esquema Nacional de Seguridad, y más específicamente en lo relativo a las medidas de protección como son; Protección de servicios y aplicaciones web [mp.s.2], Protección frente a denegación de servicio [mp.s.4], y Desarrollo de aplicaciones [mp.sw.1] entre otras. 4. SEGURIDAD DE ENTORNOS Y APLICACIONES WEB 4.1 RIESGOS Y AMENAZAS DE SEGURIDAD EN ENTORNOS WEB La seguridad en el proceso de diseño y desarrollo de una aplicación Web debe abordar principalmente dos elementos: a) El entorno de desarrollo Web, en el que se deberá disponer de la última versión que soluciona vulnerabilidades de seguridad previas y conocidas. b) La aplicación Web propietaria, código propio, basada en el lenguaje de programación empleado. Las grandes amenazas de seguridad de las aplicaciones Web están asociadas a las siguientes características intrínsecas a este tipo de entornos: a) Las aplicaciones Web en Internet están públicamente disponibles. b) La ubicuidad de las aplicaciones Web es muy elevada, ya que están disponibles en prácticamente cualquier entorno de computación. c) Las aplicaciones Web estándar utilizan el puerto TCP/80 (HTTP) y las que emplean cifrado mediante SSL (Secure Socker Layer) o TLS (Transport Layer Security) emplean el puerto TCP/443 (HTTPS). Por tanto, los firewalls tradicionales de manera general deben dejar pasar el tráfico hacia estos puertos, y son de poca utilidad en el filtrado de ataques directos sobre la aplicación Web. d) HTTP es un protocolo complejo que permite recibir datos del usuario (en la URL mediante el método GET, en el cuerpo de la petición mediante el método POST, mediante métodos HTTP más avanzados, a través de cookies, mediante cabeceras HTTP, etc.) para su procesamiento. e) Las técnicas y herramientas de ataque necesarias para explotar vulnerabilidades en los entornos Web son muy sencillas, siendo en algunos casos más que suficiente el uso exclusivo de un navegador Web estándar. f) Los ataques desde Internet sobre las aplicaciones Web disponibles públicamente conllevan un anonimato muy elevado por parte del atacante. Este anonimato se incrementa notablemente cuando el atacante emplea dispositivos intermedios (proxies anónimos) para ocultar su origen real. g) La mayoría de aplicaciones Web tienen carácter propietario y han sido desarrolladas internamente o mediante la solicitud de este servicio a una tercera compañía. Por estos motivos, es muy probable que la aplicación no haya pasado los controles y verificaciones de seguridad pertinentes para detectar posibles vulnerabilidades de seguridad. Centro Criptológico Nacional 5 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web h) Las capacidades de autentificación y mantenimiento de sesiones en HTTP son muy limitadas, motivo por el que es necesario mediante software proporcionar un sistema de autentificación y de gestión de sesiones robusto. El desarrollo de este sistema puede introducir nuevas vulnerabilidades de seguridad dada su complejidad. Adicionalmente a los diferentes elementos que forman parte de una arquitectura Web, existen otros elementos que son potenciales objetivos para los atacantes, tales como el tráfico Web intercambiado entre clientes y servidores, y la posibilidad de realizar ataques de denegación de servicio (DoS), afectando la disponibilidad del entorno. Las vulnerabilidades de seguridad más comunes y relevantes en aplicaciones Web en los últimos años son: a) Implementaciones inseguras de los mecanismos de control de acceso b) Configuraciones inseguras a nivel de criptografía c) XSS, Cross-Site Scripting d) CSRF, Cross-Site Request Forgery e) Inyección SQL f) Otros ataques de inyección, sobre XPath (el lenguaje de consulta de información en repositorios de XML) y LDAP (servicio de directorio) g) Publicación de información sensible h) HTTP Response Splitting i) Path traversal Cada una de estas vulnerabilidades y sus ataques asociados se describe en detalle posteriormente en esta guía. 4.2 INCIDENTES DE SEGURIDAD EN ENTORNOS WEB Diariamente se producen numerosos incidentes de seguridad sobre entornos y aplicaciones Web. Los incidentes de mayor relevancia son publicados mediante la OWASP WHID, Web Hacking Incidents Database, de WASC [Ref- 2]. Esta base de datos recoge los detalles sobre incidentes y ataques reales sobre entornos y aplicaciones Web, e identifica cada uno de ellos de forma unívoca con un código que refleja el año en el que se produjo el incidente, y el número de incidente dentro de ese año, como por ejemplo, “WHID 2007-82”. Se recomienda su consulta para disponer de una visión real y actualizada sobre los ataques e incidentes de seguridad que se están llevando a cabo en entornos Web. Existen referencias similares como, The Daily Swig [Ref.- 12], dónde se publican frecuentemente incidentes asociados únicamente a vulnerabilidades de XSS, Cross- Site Scripting, en entornos y aplicaciones Web reales. Uno de los objetivos fundamentales de todo responsable de seguridad de un entorno Web debe ser el evitar aparecer en estas bases de datos de incidentes, dónde se reflejaría el entorno Web o dominio bajo su responsabilidad como vulnerable. Centro Criptológico Nacional 6 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web En los últimos años los incidentes de seguridad sobre aplicaciones Web tienen una relación directa con la distribución de software malicioso (malware) y la creación de complejas infraestructuras para la realización de ataques en Internet, como botnets [Ref.- 3]. En el caso de identificar un incidente de seguridad en un entorno Web, uno de los recursos de mayor relevancia es el CCN-CERT. Según el artículo 33 del RD 311/2022, el Centro Criptológico Nacional (CCN) articulará la respuesta a los incidentes de seguridad en torno a la estructura denominada CCN-CERT (Centro Criptológico Nacional-Computer Emergency Reaction Team), que actuará sin perjuicio de las capacidades de respuesta a incidentes de seguridad que pueda tener cada administración pública y de la función de coordinación a nivel nacional e internacional del CCN. La finalidad principal del CCN-CERT es contribuir a la mejora del nivel de seguridad de los sistemas de información en las administraciones públicas de España. La comunidad a la que presta servicio el CCN-CERT está constituida por el conjunto de organismos de la Administración: Administración General, Autonómica y Local. El registro en el portal del CCN-CERT [Ref.- 1], permite disponer de acceso a los múltiples recursos de seguridad publicados, así como a las directrices para reportar incidentes al CCN-CERT. Es recomendable disponer de una serie de pautas para la implantación de una capacidad de respuesta ante incidentes informáticos, definiendo procedimientos de actuación e identificando responsabilidades para resolver en el menor tiempo posible y del modo más efectivo el incidente. Para cumplir con este objetivo se recomienda la lectura de las siguientes guías CCN: a) CCN-STIC-810 Creación de CERT’s [Ref.- 6] b) CCN-STIC-817 Esquema Nacional de Seguridad. Gestión de Ciberincidentes [Ref.- 7] 4.3 VULNERABILIDADES DE SEGURIDAD EN ENTORNOS WEB Desde el punto de vista de las vulnerabilidades de seguridad, diariamente se publican numerosos fallos de seguridad en productos y aplicaciones Web. Se recomienda consultar de forma periódica las bases de datos de vulnerabilidades para estar al día sobre los últimos ataques, incidentes y vulnerabilidades sobre entornos Web y su impacto. Las fuentes recomendadas con información detallada respecto a vulnerabilidades de seguridad son CCN-CERT [Ref.- 1], OWASP [Ref.- 4] y SANS [Ref.- 5]. Las vulnerabilidades Web más relevantes son: a) Cross-Site Scripting (XSS): la aplicación Web envía los datos proporcionados por el usuario al navegador Web sin realizar ninguna validación o codificación del contenido. Este ataque permite a un atacante ejecutar código (scripts) en el navegador de la víctima: robo de sesiones, modificación de los contenidos de la Web y su configuración. b) Ataques de inyección: los datos proporcionados por el usuario se envían a un intérprete como parte de un comando o consulta. El ejemplo más conocido es la inyección SQL en bases de datos. El atacante puede ejecutar código dañino y modificar datos a través del intérprete atacado: SQL, XPath, LDAP, etc. Centro Criptológico Nacional 7 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web c) Ejecución de ficheros y código malicioso: el código vulnerable a la inclusión de ficheros remotos (o código remoto), Remote File Inclusion (RFI), permite a un atacante incluir código y datos dañinos en la aplicación Web. El resultado permite tener control completo del servidor Web. Este ataque afecta a cualquier entorno de desarrollo (eg. PHP) que acepte ficheros o nombres de ficheros de los usuarios. d) Referencias directas a objetos inseguras: una referencia directa a un objeto ocurre si el desarrollador expone un objeto interno de la implementación (fichero, directorio, registro de la BD, clave…) en forma de URL o de parámetro de un formulario. Un atacante puede manipular estas referencias para acceder a otros objetos sin autorización. e) Cross Site Request Forgery (CSRF): los ataques CSRF fuerzan al navegador de la víctima a enviar peticiones pre-autenticadas a una aplicación Web vulnerable. La petición obliga al navegador de la víctima a realizar acciones hostiles no deseadas en beneficio del atacante sobre una sesión previamente establecida. Los límites de este ataque están en el tipo de aplicación Web atacada. f) Filtrado de información y gestión incorrecta de errores: las aplicaciones Web pueden revelar información sobre su configuración, detalles internos de implementación o violar la privacidad de los datos, de forma no intencionada. El atacante emplea esta debilidad para obtener información sensible o realizar ataques más avanzados. g) Autentificación y gestión de sesiones: las credenciales de acceso y los tokens (o identificadores) de sesión no son protegidos adecuadamente. Un atacante puede comprometer claves, secretos e identificadores de autentificación y robar la identidad de otros usuarios. h) Almacenamiento criptográfico inseguro: la aplicación Web no utiliza funciones criptográficas adecuadamente para proteger los datos y las credenciales empleadas. Un atacante puede usar los datos no protegidos para robar la identidad de otros usuarios y realizar otros ataques, como fraude con tarjetas de crédito. i) Comunicaciones inseguras: la aplicación Web no cifra el tráfico de red correctamente cuando es necesario proteger datos y comunicaciones sensibles. j) Fallo al restringir el acceso a URLs: la aplicación Web sólo protege la funcionalidad sensible no mostrando enlaces o URLs a usuarios no autorizados. Un atacante puede usar esta debilidad para acceder directamente de forma no autorizada a esas URLs. 4.4 ESTRATEGIA Y METODOLOGÍA DE SEGURIDAD DE APLICACIONES WEB La estrategia y metodología de seguridad de aplicaciones Web está formada por numerosos componentes que se complementan entre sí. Este apartado detalla los aspectos fundamentales a considerar para el diseño, desarrollo, mantenimiento y evaluación de la seguridad en entornos Web. Los elementos de seguridad principales de un entorno o aplicación Web deben incluir: a) Formación en seguridad de aplicaciones Web b) Arquitectura e infraestructura (sistemas y redes) segura c) Metodología de seguridad de desarrollo de aplicaciones Web d) Metodología de análisis de seguridad de aplicaciones Web Centro Criptológico Nacional 8 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web La estrategia y metodología de seguridad debe incluir adicionalmente los siguientes componentes: a) Formación en seguridad b) Instalación y configuración segura de sistemas y redes (arquitectura) – Actualizaciones: servidor Web y de aplicación, framework, etc c) Desarrollo de software seguro – Gestión de versiones y actualizaciones d) Web Application Firewalls (WAF) e) Auditorías de seguridad – Caja negra: pruebas de intrusión y Web Application Security Scanners (WASS) – Caja blanca: revisión de código manual y automático f) Respuesta ante incidentes Para alcanzar un nivel de seguridad adecuado en el entorno o aplicación Web es necesario involucrar tanto a administradores como a desarrolladores. No es posible proporcionar un entorno Web seguro sin la colaboración de ambos grupos. La formación de seguridad debe centrarse en proporcionar un conocimiento adecuado a administradores y desarrolladores respecto a las vulnerabilidades y amenazas de seguridad en entornos Web, los diferentes tipos de ataques existentes y los mecanismos de defensa asociados, preferiblemente mediante ejemplos prácticos. El objetivo es disponer del conocimiento para construir una infraestructura y aplicación Web más seguros. Ilustración 1. Estrategia y metodología de seguridad de aplicaciones web Nota: dentro de las diferentes fases de la estrategia de seguridad de aplicaciones Web, algunas tareas están más asociadas a los administradores (A) y otras a los desarrolladores (D). Los círculos de la figura que contienen las letras A y D denotan el grupo principal al que se asocia cada tarea. Centro Criptológico Nacional 9 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web Entre otros, los servidores Web de una organización puede incluir: a) Servidor Web corporativo principal y públicamente disponible en Internet b) Servidores Web para terceros (socios, proveedores, clientes, etc.) públicamente disponibles en Internet o desde Extranet c) Los numerosos servidores Web internos, accesibles sólo desde la red interna de la compañía o Intranet d) Servidores Web de aplicaciones comerciales: Citrix, SharePoint, VNC, etc. e) Servidores Web de administración y revisión de logs f) Servidores Web de los dispositivos embebidos 4.5 ARQUITECTURAS DE SEGURIDAD EN ENTORNOS WEB Existen fundamentalmente dos modelos de arquitectura de aplicaciones Web: a) En dos capas: donde el servidor Web y de aplicación conviven en el mismo sistema. b) En tres capas: donde cada elemento (servidor Web, servidor de aplicación y servidor de base de datos) corresponde a un sistema independiente. Desde el punto de vista de la seguridad, el modelo en tres capas es preferible ya que ofrece separación entre los distintos componentes y un mayor aislamiento frente a incidentes de seguridad en cualquiera de los elementos. Adicionalmente, la arquitectura de tres capas, aunque más compleja, ofrece: a) Mayor escalabilidad para poder gestionar un mayor número de peticiones y usuarios de la aplicación. b) La posibilidad de introducir controles de acceso avanzados, como filtrado del tráfico, y elementos avanzados de monitorización, como sistemas de detección de intrusos, entre cualesquiera elementos de la arquitectura. c) Permite aplicar una securización más estricta sobre cada uno de los componentes, ya que cada uno tiene asignada una funcionalidad y tareas claramente definidas. A la hora de diseñar una aplicación Web es necesario tener en cuenta múltiples factores: arquitectura, desarrollo de la aplicación y mecanismos de auditoría. La arquitectura de la aplicación Web debe disponer de mecanismos de detección y protección a nivel de red, incluyendo elementos de seguridad tradicionales como cortafuegos o sistemas de detección de intrusos. Se recomienda seguir las pautas reflejadas en la siguiente guía CCN para cortafuegos de seguridad perimetral: CCN-STIC-408 Seguridad Perimetral – Cortafuegos [Ref.- 9] Uno de los elementos principales empleados en la protección de entornos y aplicaciones Web son los cortafuegos (firewalls) de aplicaciones Web, también conocidos como WAF, Web Application Firewall. Centro Criptológico Nacional 10 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web Es necesario de disponer de dispositivos dedicados exclusivamente a la inspección y filtrado del tráfico Web, es decir, el protocolo HTTP (o HTTPS), ya que los cortafuegos tradicionales no disponen de capacidades avanzadas para analizar y bloquear los ataques recibidos a través de este protocolo. Los WAF típicamente se sitúan desde el punto de vista de la arquitectura de red delante del servidor Web, con el objetivo de monitorizar y filtrar todas las peticiones maliciosas recibidas por la aplicación Web. En arquitecturas Web de tres capas (servidor Web, servidor de aplicación y base de datos), existe la posibilidad de emplear WAF dedicados entre cada una de las capas. Los WAF más conocidos y ampliamente utilizados sin carácter comercial son: a) mod_security (Apache) [Ref.- 13] b) URLScan/Lockdown (Microsoft IIS) [Ref.- 14] Algunos de los WAF más conocidos en el ámbito comercial son AppShield, F5, DenyAll, SecureIIS, Microsoft ISA, Profense, Cloudflare, Imperva WAF, Forti WAF, Akamai etc. Entre los criterios de evaluación de WAF más comunes se encuentran: a) Modo de operación: bridge, router, proxy inverso, plug-in del servidor Web, etc. b) Gestión de SSL/TLS: terminador, capacidades de descifrado o no puede inspeccionarlo c) Técnicas de bloqueo de tráfico d) Tipo de solución (appliance o software) e) Capacidades de reescritura de peticiones Web f) Mecanismos de alta disponibilidad y rendimiento de la solución g) Soporte de otros protocolos distintos a HTTP h) Soporte de métodos de HTTP y extensiones (como WebDav) i) Detección de ataques mediante firmas y técnicas de normalización j) Protección frente a ataques de fuerza bruta, cookies, sesiones, campos HTML ocultos, parámetros, etc. k) Logging, notificación de alertas, informes, interfaz de gestión, etc. En el caso de ser necesario asegurar la confidencialidad de las comunicaciones Web, es necesario hacer uso de la versión segura del protocolo, HTTPS. HTTPS utiliza SSL (Secure Socket Layer) o TLS (Transport Layer Security) para cifrar las comunicaciones entre el navegador Web y el servidor Web. Se recomienda la utilización TLS a partir de la versión 1.2 y habilitar algoritmos de cifrado robustos. Adicionalmente a los elementos de seguridad propios de un entorno Web, es necesario proteger todos los elementos de la infraestructura en la que reside la aplicación Web, tales como dispositivos de comunicaciones (routers, switches, etc.) o la infraestructura de servidores de nombres (DNS). Centro Criptológico Nacional 11 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web Las mejores prácticas de seguridad para cada uno de los elementos que conforman el entorno Web no pueden ser detalladas específicamente en la presente guía con el objetivo de limitar su alcance. Es recomendable seguir las pautas reflejadas en las siguientes guías CCN para reforzar la seguridad de todos estos elementos: a) CCN-STIC-5xx Conjunto de guías de seguridad de Windows [Ref.- 10] b) CCN-STIC-6xx Conjunto de guías de seguridad de entornos Unix (HP-UX, Solaris, Linux, etc), base de datos Oracle, equipos de comunicaciones (routers, switches, etc), servidor DNS, servidor Web Apache y Oracle Application Server (OAS) [Ref.- 11] Los mecanismos de protección a implementar deben proteger los diferentes equipos frente a: a) Ataques directos, tales como accesos no autorizados sobre cualquiera de los elementos que conforman el entorno o aplicación Web. b) Ataques indirectos, dónde cualquiera de los elementos es empleado como herramienta en el ataque. Por ejemplo, un ataque sobre los servidores de DNS podría permitir redireccionar el tráfico de los clientes Web hacia un entorno malicioso que suplante la aplicación Web real. c) Ataques de denegación de servicio (DoS). Las arquitecturas Web están basadas en tecnologías TCP/IP y por tanto son vulnerables a los ataques de DoS comunes en TCP/IP. Es necesario disponer de contramedidas técnicas y procedimientos de actuación frente a este tipo de ataques. Se deberán aplicar los últimos parches de seguridad en cada uno de los elementos software que forman parte de la plataforma de la aplicación Web: software de los dispositivos de red y firewalls, sistema operativo de los servidores (Web, aplicación, y base de datos), y software de la plataforma de desarrollo empleada (PHP, ASP, Java, etc). Desde el punto de vista de la infraestructura Web, se debe disponer de un análisis detallado del usuario, grupo, permisos y derechos con los que ejecutarán cada uno de los componentes de la aplicación Web como, por ejemplo, los procesos del servidor Web o de aplicación. Este análisis permitirá aplicar todos los mecanismos de autorización necesarios. Adicionalmente, se debe disponer de un análisis detallado de las credenciales con las que unos componentes podrán acceder y obtener información de otros componentes. Por ejemplo, ¿cuáles son las credenciales y permisos de acceso del servidor de aplicación a la base de datos? 4.6 DESARROLLO SEGURO DEL SOFTWARE DE APLICACIONES WEB El elemento fundamental en la metodología de seguridad de desarrollo de software de aplicaciones Web pasa por incluir todos los aspectos de seguridad en el ciclo de vida de desarrollo de software (SDLC, Software Development Life Cycle). Las aplicaciones Web raramente son gestionadas con un sistema exhaustivo de control de versiones que permita controlar en todo momento cual es la versión existente en producción, tal y como ocurre con otro tipo de software. Debido al dinamismo y la demanda de nueva funcionalidad en este tipo de aplicaciones, nuevo código y contenidos son añadidos a la aplicación Web en tiempo real sin realizar un control detallado de los cambios. Centro Criptológico Nacional 12 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web 4.6.1 RECOMENDACIONES GENERALES De forma general, se recomienda el uso del método GET de HTTP sólo para la consulta de información, y el método POST para el intercambio y envío de información por parte de los clientes Web a la aplicación Web. Las cabeceras HTTP pueden ser manipuladas fácilmente por un atacante y no deben emplearse como método de validación o de envío de información. Todos los mecanismos de interacción entre los distintos componentes del entorno Web (servidor Web, de aplicación y base de datos) deben realizarse de forma segura. Las comunicaciones entre estos elementos deberán estar cifradas, autentificadas y asegurarse su integridad. El almacenamiento de información sensible, tanto propia de la lógica de la aplicación como las credenciales de acceso, debe de almacenarse cifrada en todos los servidores, y especialmente en el de base de datos. 4.6.2 FILTRADO DE DATOS DE ENTRADA DEL USUARIO Es necesario ser consistente en la aplicación de los mecanismos de seguridad, como por ejemplo el filtrado de datos enviados por el usuario. Algunos de los ataques Web mencionados, como por ejemplo XSS o inyección SQL, pueden ser mitigados filtrando los datos maliciosos (código HTML y scripts, o sentencias SQL, respectivamente) en la entrada de la aplicación, en la salida, o en ambas. Se recomienda, aplicando criterios de defensa en profundidad, aplicar los mecanismos de filtrado tanto en la entrada como en la salida. Los datos de entrada proporcionados por el usuario (o atacante) deben ser considerados dañinos por naturaleza, por ello es necesaria su verificación y análisis antes de ser procesados por la aplicación. Existen dos modelos para el filtrado de datos de entrada: a) Eliminar los caracteres maliciosos y permitir el resto. b) Permitir sólo los caracteres válidos para cada entrada en la aplicación. Desde el punto de vista de la seguridad, el segundo modelo es el más restrictivo y recomendado, aunque no siempre puede ser aplicado al desconocerse el conjunto total de caracteres válidos. Se recomienda establecer una única librería de código que contemple toda la funcionalidad necesaria para filtrar cualquier entrada del usuario. Toda entrada recibida por parte del usuario debe ser procesada y filtrada por esta librería, independientemente del método empleado: variables en métodos GET o POST, cookies, cabeceras HTTP (Referer, User-Agent, etc), etc La disponibilidad de una única librería central permite aplicar de forma homogénea los mismos mecanismos de filtrado en cualquier parte del código de la aplicación. Para ello sólo hace falta invocar desde código a la función correspondiente de la librería. Asimismo, la existencia de una única librería central simplifica el mantenimiento y las actualizaciones de los mecanismos de filtrado en la totalidad de la aplicación Web. Centro Criptológico Nacional 13 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web Los mecanismos de filtrado de la entrada del usuario permiten mitigar ataques como XSS, inyección SQL, desplazamiento por directorios, referencias directas a ficheros, ejecución de comandos del sistema operativo o HTTP Response Splitting. A continuación, se analiza en detalle las recomendaciones de seguridad en el código de la aplicación para evitar este tipo de ataques. La librería debería proporcionar funciones para filtrar la entrada del usuario según: a) El tipo de datos: debería haber funciones sólo para letras, números, caracteres alfanuméricos, así como otros tipos de datos más concretos como fechas, DNI, números de teléfono, etc. b) Funciones de filtrado frente a ataques de XSS: – Se deben filtrar cualquier contenido recibido por el usuario que tenga validez en el lenguaje HTML, es decir, etiquetas (o tags HTML) de representación de objetos como, por ejemplo: , , , , , etc. – Adicionalmente y de manera general si es posible, se recomienda filtrar los caracteres para la creación de etiquetas HTML, “”, y sus múltiples representaciones: < y >, %60 y %62, < y >, junto a otros caracteres propios de código de scripts: = “ ’ ( ) ; &. – Los ataques de XSS no se centran únicamente en la inyección de la etiqueta , sino que hacen uso de muchos otros elementos para referenciar scripts remotos mediante etiquetas HTML qué permiten referenciar otras fuentes, “src=” (source). – Se recomienda filtrar no sólo la entrada del usuario, sino también la salida de la aplicación, para eliminar aquellos contenidos no deseados de la misma, como por ejemplo scripts o iframes que referencian sitios Web remotos. c) Funciones de filtrado frente a ataques de inyección SQL: el filtrado depende en gran medida del tipo de base de datos empleada. – Se debe filtrar el envío de caracteres especiales para la base de datos y palabras SQL reservadas, como comentarios (--, #, ), “;” (fin de consulta SQL), caracteres comodín (*, %, o _), concatenación (+ o ||), u operadores SQL: OR, TRUE, 1=1, SELECT, JOIN, UPDATE, INNER, INSERT, PRINT, waitfor delay “xx”, etc. – Adicionalmente es necesario filtrar todas las representaciones de los caracteres especiales. Por ejemplo, la “‘” es igual a %27 o el “=” es %3D. Asimismo, deben traducirse las funciones propias de la base de datos, como la función CHAR(). Por ejemplo, CHAR(77) es igual al carácter ‘M’ (valor ASCII decimal: 77). – Criterios de filtrado similares deben aplicarse a la inyección de comandos en otros lenguajes de consulta, como por ejemplo LDAP, con sus operadores asociados: AND (&), OR (|), NOT (!), =, = y ~= y el carácter comodín (*). – Otro de los lenguajes de consulta comúnmente empleados en la actualidad en servicios Web es XPath, que permite la consulta de repositorios de datos en XML. – Una de las técnicas recomendadas para evitar la inyección SQL es la utilización de procedimientos almacenados, donde la entrada del usuario se convierte en parámetros específicos del procedimiento. Deben filtrarse los parámetros correctamente y no emplear SQL dinámico en el procedimiento almacenado para evitar ataques de inyección. Centro Criptológico Nacional 14 CCN-STIC-812 Guía de Seguridad en Entornos y Aplicaciones Web d) Funciones de filtrado frente al desplazamiento por directorios: – Se deben filtrar referencias relativas a los directorios padre, como “..” y todas sus representaciones (Unicode: %c0%af, %c1%9c, %255c, etc.), o referencias absolutas a directorios mediante “/” o “\”. – Ejemplo de funciones vulnerables: fopen() en PHP. e) Funciones de filtrado frente a referencias directas a ficheros (locales o remotas): – Debe limitarse el acceso a ficheros o recursos en URLs (es decir, remotos) como si fueran ficheros o recursos locales. – Ejemplo de funciones vulnerables: include() en PHP. f) Funciones de filtrado frente a ejecución de comandos del sistema operativo: – Debe limitarse el envío de caracteres especiales para el sistema operativo, como por ejemplo “;”, “>”, “

Use Quizgecko on...
Browser
Browser