Seguridad de aplicaciones web

La seguridad de aplicaciones web es la seguridad de red para equipos y programas que se comunican mediante los protocolos HTTP y HTTPS. Se trata de un ámbito extremadamente amplio en el que abundan los defectos y debilidades de seguridad. Los sistemas operativos tanto en servidores como en clientes tienen problemas de seguridad y son vulnerables a ataques. El software de servidor web y las tecnologías habilitadoras de sitios web como CGI, Java, JavaScript, PERL y PHP tienen vulnerabilidades subyacentes. Los exploradores y otras aplicaciones cliente que se comunican con aplicaciones habilitadas para Web también tienen vulnerabilidades. Los sitios web que utilizan cualquier tecnología pero la más simple de HTML, incluyendo cualquier sitio que permita la interacción con los visitantes, a menudo tienen vulnerabilidades propias.

En el pasado, una violación de la seguridad era a menudo solo una molestia, pero hoy en día no es así. Por ejemplo, los ataques en los que un hacker obtenía acceso a un servidor web e hizo modificaciones no autorizadas en un sitio web (desfigurado) solían ser comunes. Por lo general, eran lanzados por hackers que no tenían más motivación que demostrar sus habilidades a compañeros hackers o avergonzar a la persona o empresa objetivo. Sin embargo, la mayoría de las infracciones de seguridad actuales están motivadas por el deseo de dinero. La mayoría intenta lograr uno o ambos de los siguientes objetivos: obtener información privada sensible y potencialmente valiosa, u obtener acceso y control no autorizados a un sitio web o servidor web.

Ciertas formas de ataques web se centran en obtener información privada. Estos ataques son a menudo posibles incluso contra sitios web que son lo suficientemente seguros para evitar que un atacante tome el control total. La información que un atacante puede obtener de un sitio web puede incluir nombres de clientes, direcciones, números de teléfono, números de seguridad social, números de tarjetas de crédito, registros médicos y otra información privada. El atacante puede utilizar esta información o venderla a otros. Gran parte de la información obtenida por tales ataques está protegida por la ley, y toda por la costumbre y la expectativa. Una violación de este tipo puede tener consecuencias extremadamente graves para los clientes cuya información privada está comprometida. En el mejor de los casos, estos clientes tendrán que ejercer vigilancia para evitar que otros abusen de sus tarjetas de crédito, abran cuentas de crédito no autorizadas a su nombre o se apropien de sus identidades (robo de identidad). En el peor de los casos, los clientes pueden enfrentar calificaciones crediticias arruinadas o incluso ser culpados por actividades delictivas en las que no tenían parte.

Otros ataques web tienen como objetivo obtener el control de (o comprometer) un sitio web o el servidor en el que opera, o ambos. Un hacker que obtenga el control de un sitio web o servidor puede utilizarlo para alojar contenido no autorizado, actuar como proxy para contenido alojado en otro servidor web, proporcionar servicios SMTP para enviar correo electrónico masivo no solicitado o proporcionar servicios DNS para apoyar dichas actividades en otros servidores web comprometidos. La mayoría de los sitios web alojados en servidores web comprometidos promueven negocios cuestionables o totalmente fraudulentos. Por ejemplo, la mayoría de los sitios web de phishing y los sitios web de explotación infantil están alojados en servidores web comprometidos.

La protección de sus sitios web y servicios web contra estos ataques requiere una defensa multicapa capaz de bloquear ataques conocidos con funciones identificables y proteger contra ataques desconocidos, que a menudo pueden detectarse porque tienen un aspecto diferente del tráfico normal a sus sitios web y servicios web.

Ataques web conocidos

La primera línea de defensa para sus sitios web es la protección contra el gran número de ataques que se sabe que existen y que han sido observados y analizados por expertos en seguridad web. Los tipos comunes de ataques contra sitios web basados en HTML incluyen:

  • Ataques de desbordamiento de búfer. Enviar una URL extremadamente larga, cookie extremadamente larga u otro bit de información extremadamente larga a un servidor web con la esperanza de causar que él o el sistema operativo subyacente se cuelguen, se bloqueen o proporcionen al atacante acceso al sistema operativo subyacente. Se puede utilizar un ataque de desbordamiento de búfer para obtener acceso a información no autorizada, poner en peligro un servidor web o ambos.
  • Ataques de seguridad de cookies. Enviar una cookie modificada a un servidor web, generalmente con la esperanza de obtener acceso a contenido no autorizado mediante el uso de credenciales falsificadas.
  • Exploración forzada. Acceder directamente a las URL de un sitio web, sin navegar a las URL por medio de hipervínculos en la página principal u otras URL de inicio comunes en el sitio web. Las instancias individuales de navegación forzosa pueden simplemente indicar a un usuario que marcó una página en su sitio web, pero los intentos repetidos de acceder a contenido inexistente, o contenido al que los usuarios nunca deben acceder directamente, a menudo representan un ataque a la seguridad del sitio web. La navegación forzada se utiliza normalmente para obtener acceso a información no autorizada, pero también se puede combinar con un ataque de desbordamiento de búfer en un intento de comprometer su servidor.
  • Ataques de seguridad de formularios web. Enviar contenido inapropiado a su sitio web en un formulario web. El contenido inapropiado puede incluir campos ocultos modificados, HTML o código en un campo destinado únicamente a datos alfanuméricos, una cadena demasiado larga en un campo que acepta solo una cadena corta, una cadena alfanumérica en un campo que acepta solo un entero y una amplia variedad de otros datos que el sitio web no utiliza. esperan recibir en ese formulario web. Un ataque de seguridad de formularios web se puede utilizar para obtener información no autorizada de su sitio web o para poner en peligro el sitio web directamente, normalmente cuando se combina con un ataque de desbordamiento de búfer.

Dos tipos especializados de ataques a la seguridad de formularios web merecen una mención especial:

  • Ataques de inyección SQL. Enviar un comando o comandos SQL activos en un formulario web o como parte de una dirección URL, con el objetivo de hacer que una base de datos SQL ejecute el comando o comandos. Los ataques de inyección SQL se utilizan normalmente para obtener información no autorizada.
  • Ataques de scripts entre sitios. Usar una URL o un script en una página web para infringir la directiva del mismo origen, que prohíbe a cualquier script obtener propiedades o modificar cualquier contenido de un sitio web diferente. Dado que los scripts pueden obtener información y modificar archivos en su sitio web, permitir que un script acceda al contenido de otro sitio web puede proporcionar a un atacante los medios para obtener información no autorizada, poner en peligro un servidor web o ambos.

Los ataques contra servicios web basados en XML normalmente se clasifican en al menos una de las dos categorías siguientes: intentos de enviar contenido inapropiado a un servicio web o intentos de violar la seguridad de un servicio web. Los tipos comunes de ataques contra servicios web basados en XML incluyen:

  • Código u objetos malintencionados. Solicitudes XML que contienen código u objetos que pueden obtener directamente información confidencial o que pueden proporcionar a un atacante el control del servicio web o del servidor subyacente.
  • Solicitudes XML mal formadas. Solicitudes XML que no se ajustan a la especificación XML de W3C y que, por lo tanto, pueden violar la seguridad en un servicio web inseguro
  • Ataques de denegación de servicio (DoS). Solicitudes XML que se envían repetidamente y en gran volumen, con la intención de abrumar el servicio web de destino y denegar a los usuarios legítimos el acceso al servicio web.

Además de los ataques basados en XML estándar, los servicios web XML y los sitios web 2.0 también son vulnerables a ataques de inyección SQL y scripts entre sitios, como se describe a continuación:

  • Ataques de inyección SQL. Envío de un comando SQL activo o comandos en una solicitud basada en XML, con el objetivo de hacer que una base de datos SQL ejecute ese comando o comandos. Al igual que con los ataques de inyección HTML SQL, los ataques de inyección XML SQL se utilizan normalmente para obtener información no autorizada.
  • Ataques de scripts entre sitios. Usar un script incluido en una aplicación basada en XML para infringir la directiva del mismo origen, que no permite que ningún script obtenga propiedades de ni modifique ningún contenido de una aplicación diferente. Dado que los scripts pueden obtener información y modificar archivos mediante la aplicación XML, permitir que un script acceda al contenido que pertenece a una aplicación diferente puede proporcionar a un atacante los medios para obtener información no autorizada, poner en peligro la aplicación o ambos

Los ataques web conocidos normalmente se pueden detener filtrando el tráfico del sitio web para buscar funciones específicas (firmas) que siempre aparecen para un ataque específico y que nunca deben aparecer en el tráfico legítimo. Este enfoque tiene las ventajas de requerir relativamente pocos recursos y presentar relativamente poco riesgo de falsos positivos. Por lo tanto, es una herramienta valiosa para combatir los ataques en sitios web y servicios web, y configurar protecciones básicas de firma que interceptan la mayoría de los ataques web conocidos es fácil de hacer.

Ataques web desconocidos

La mayor amenaza contra sitios web y aplicaciones no proviene de ataques conocidos, sino de ataques desconocidos. La mayoría de los ataques desconocidos se dividen en dos categorías: ataques de reciente lanzamiento para los que las empresas de seguridad aún no han desarrollado una defensa efectiva (ataques de día cero), y ataques dirigidos cuidadosamente a un sitio web o servicio web específico en lugar de muchos sitios web o servicios web (ataques de lanza). Estos ataques, al igual que los ataques conocidos, suelen estar destinados a obtener información privada confidencial, comprometer el sitio web o el servicio web y permitir que se utilice para ataques posteriores, o ambos objetivos.

Los ataques de día cero son una amenaza importante para todos los usuarios. Estos ataques suelen ser de los mismos tipos que los ataques conocidos; los ataques de día cero suelen involucrar SQL inyectado, un script entre sitios, una falsificación de solicitud entre sitios u otro tipo de ataque similar a los ataques conocidos. En la mayoría de los casos, se dirigen a vulnerabilidades que los desarrolladores del software, sitio web o servicio web de destino no conocen o acaban de conocer. Por lo tanto, las empresas de seguridad generalmente no han desarrollado defensas contra estos ataques, e incluso si lo han hecho, los usuarios generalmente no han obtenido e instalado los parches ni han realizado las soluciones necesarias para protegerse contra estos ataques. El tiempo entre el descubrimiento de un ataque de día cero y la disponibilidad de una defensa (la ventana de vulnerabilidad) se está reduciendo, pero los perpetradores todavía pueden contar con horas o incluso días en los que muchos sitios web y servicios web carecen de protección específica contra el ataque.

Los ataques con lanza son una amenaza importante, pero para un grupo de usuarios más selectos. Un tipo común de ataque spear, un spear phish, generalmente está dirigido a clientes de un banco o institución financiera específico, o (menos comúnmente) a empleados de una empresa u organización específica. A diferencia de otros phishes, que a menudo son falsificaciones mal escritas que un usuario con cualquier familiaridad con las comunicaciones reales de ese banco o institución financiera puede reconocer, spear phishes escritas a la perfección y extremadamente convincentes. Pueden contener información específica del individuo que, a primera vista, ningún extraño debería conocer o ser capaz de obtener. Por lo tanto, el spear phisher es capaz de convencer a su objetivo de proporcionar la información solicitada, que el phisher puede utilizar para saquear cuentas, procesar dinero obtenido ilícitamente de otras fuentes, o para obtener acceso a otra información aún más delicada.

Ambos tipos de ataques tienen ciertas funciones que normalmente se pueden detectar, aunque no mediante el uso de patrones estáticos que buscan funciones específicas, al igual que las firmas estándar. La detección de estos tipos de ataques requiere enfoques más sofisticados e intensivos en recursos, como el filtrado heurístico y sistemas de modelos de seguridad positivos. El filtrado heurístico se ve, no para patrones específicos, sino para patrones de comportamientos. Los sistemas de modelo de seguridad positiva modelan el comportamiento normal del sitio web o servicio web que están protegiendo y, a continuación, bloquean las conexiones que no se ajustan a ese modelo de uso normal. La seguridad basada en URL y en formularios web comprueba el uso normal del perfil de sus sitios web y, a continuación, controla cómo interactúan los usuarios con sus sitios web, mediante tanto heurística como seguridad positiva para bloquear el tráfico anómalo o inesperado. Tanto la seguridad heurística como la positiva, diseñada e implementada correctamente, pueden capturar la mayoría de los ataques que las firmas pierden. Sin embargo, requieren mucho más recursos que las firmas, y debe pasar algún tiempo configurándolas correctamente para evitar falsos positivos. Por lo tanto, generalmente se utilizan, no como la línea principal de defensa, sino como copias de seguridad de firmas u otros enfoques menos intensivos en recursos.

Al configurar estas protecciones avanzadas además de las firmas, se crea un modelo de seguridad híbrido, que permite al Web App Firewall proporcionar una protección completa contra ataques conocidos y desconocidos.