Ciberseguridad

Ciberseguridad

OWASP Top 10: conoce los riesgos de seguridad para las aplicaciones WEB

flecha

Las aplicaciones empresariales expuestas a Internet deben ser vigiladas de manera exhaustiva, ya que pueden ser vulneradas por los delincuentes informáticos por múltiples métodos como los expuestos por OWASP en su indice. En este artículo exploraremos cada uno de estos 10 riesgos de ciberseguridad.


Compartir
owasp top 10 lista de amenazas que atacan a las aplicaciones web
octubre 30, 2023

Toda empresa tiene por lo menos una aplicación web expuesta a internet y conectada con los servidores empresariales, por lo tanto, es muy probable que sea víctima de ataques informáticos por ese vector.

Según el artículo especializado de Expert Insights sobre las estadísticas de las vulnerabilidades web, se tiene que:

Más del 70% de todas las intrusiones en el sistema involucran malware y el 32% de todo el malware se distribuye a través de las aplicaciones web.

Es por este motivo que las empresas modernas no solo deben resguardar su red de trabajo, sino también su web corporativa y otras aplicaciones expuestas a Internet para evitar los ataques incluidos en la lista OWASP top 10.

¿Qué es OWASP?

Son las siglas de Open Web Application Security Project, es un proyecto abierto de seguridad de aplicaciones web que funciona como una organización sin ánimo de lucro que constantemente apoya proyectos de infraestructura y seguridad informática relacionada con las aplicaciones web. 

¿Qué es OWASP Top 10?

El OWASP Top 10 es un informe que se actualiza regularmente (última actualización 2021) y que describe las preocupaciones de seguridad para la protección de las aplicaciones web, centrándose en los 10 riesgos de seguridad de aplicaciones web más críticos. 

owasp top 10

La lista sirve como una referencia estándar para la seguridad de aplicaciones web y es ampliamente reconocida y referenciada en las industrias de TI y ciberseguridad.

Según la última actualización en la lista OWASP Top 10 tenemos las siguientes amenazas:

1. Broken Access Control o Control de acceso roto

El control de acceso aplica políticas para que los usuarios no puedan actuar fuera de sus permisos previstos. 

Los fallos suelen llevar a la divulgación, modificación o destrucción no autorizada de datos, o a la ejecución de una función empresarial más allá de los límites del usuario. Es por ello que esta amenaza pasó del puesto 5 en el 2017 al puesto 1 en la última actualización.

Las vulnerabilidades comunes de control de acceso incluyen:

  • Violación del principio de privilegio mínimo o “denegación por defecto”, donde el acceso solo debería concederse a capacidades, roles o usuarios específicos, pero está disponible para cualquiera.
  • Eludir controles de acceso modificando la URL (manipulación de parámetros o navegación forzada), el estado interno de la aplicación, la página HTML o utilizando una herramienta de ataque para modificar solicitudes API.
  • Permitir la visualización o edición de la cuenta de otra persona proporcionando su identificador único (referencias directas a objetos inseguros).
  • Acceder a una API sin controles de acceso para los métodos POST, PUT y DELETE.
  • Elevación de privilegios. Actuar como un usuario sin haber iniciado sesión o actuar como administrador habiendo iniciado sesión como usuario.
  • Manipulación de metadatos, como la repetición o alteración de un token de control de acceso JSON Web Token (JWT), o una cookie o campo oculto manipulado para elevar privilegios o abusar de la invalidación de JWT.
  • Una mala configuración de CORS permite el acceso a la API desde orígenes no autorizados o no confiables.
  • Navegación forzada a páginas autenticadas como un usuario no autenticado o a páginas con privilegios como un usuario estándar.

2. Cryptographic Failures o Fallos Criptográficos

Los fallos criptográficos (antes llamado “Exposición de Datos Sensibles”) se refieren a errores, debilidades o implementaciones incorrectas en los algoritmos o sistemas criptográficos que pueden ser explotados por atacantes para comprometer la seguridad de los datos. 

Estos fallos pueden surgir debido a una variedad de razones, desde errores en el diseño del algoritmo hasta errores en la implementación o uso incorrecto de herramientas criptográficas.

Lo primero es determinar las necesidades de protección de los datos en tránsito y en reposo.

Por ejemplo, las contraseñas, números de tarjetas de crédito, registros médicos, información personal y secretos empresariales requieren protección adicional, especialmente si esos datos están sujetos a leyes de privacidad, como el Reglamento General de Protección de Datos (RGPD) de la UE, o regulaciones, como la norma de seguridad de datos para la industria de tarjetas de pago (PCI DSS).

3. SQL Injection o Inyección SQL

Es una de las vulnerabilidades más antiguas que afecta directamente a las bases de datos de una aplicación web. 

Mediante la inyección de código SQL en un sitio web, un atacante puede alterar su funcionamiento normal, ejecutar código malicioso y extraer información de la base de datos.

Según los hallazgos de OWASP Top Ten: 

“El 94% de las aplicaciones que fueron sometidas a pruebas para algún tipo de inyección se vieron comprometidas.”

Una aplicación es vulnerable a un ataque de Inyección SQL cuando:

  • La aplicación no válida, filtra ni desinfecta los datos proporcionados por el usuario.
  • Las consultas dinámicas o las llamadas no parametrizadas sin escape consciente del contexto se utilizan directamente en el intérprete.
  • Los datos hostiles se emplean dentro de los parámetros de búsqueda de mapeo relacional de objetos (ORM) para extraer registros confidenciales adicionales.
  • Los datos hostiles se usan o concatenan directamente. El comando SQL no contiene la estructura y los datos maliciosos en consultas dinámicas, comandos o procedimientos almacenados.

Otros tipos de ataque por inyección son:

Inyección LDAP (LDAP Injection)

LDAP son las siglas de "Lightweight Directory Access Protocol" (Protocolo Ligero de Acceso a Directorio). 

Este protocolo gestiona las listas de control de acceso en un dominio o red. Aunque no es un tipo de ataque muy común, es esencial protegerse contra él para evitar la inyección de código malicioso. 

En esencia, una inyección LDAP ocurre cuando los hackers atacan el sistema de validación de usuarios con el objetivo de modificar sus permisos o incluso crear nuevos usuarios.

Estos usuarios fraudulentos pueden ser utilizados posteriormente para acceder a otros sistemas o áreas sensibles del dominio. 

Este tipo de ataques, mencionados en el OWASP Top 10, puede proporcionar un punto de acceso para la filtración de información y la introducción de malware, siendo los formularios de entrada los principales objetivos de ataque.

Inyección CRLF (CRLF Injection)

El término CRLF hace referencia a "Carriage Return" (retorno de carro, ASCII 13, \r) y "Line Feed" (salto de línea, ASCII 10, \n). 

Este tipo de inyección se produce al modificar un parámetro HTTP o URL. A diferencia de la inyección LDAP, con CRLF no es posible generar nuevos usuarios; sin embargo, sí permite leer y acceder a archivos confidenciales.

4. Insecure Design o Diseño Inseguro

El diseño inseguro es una nueva categoría de vulnerabilidades en la lista OWASP. Representa diferentes debilidades, expresadas como “diseño de control inexistente o ineficaz”. 

Para explicarlo de manera más digerible podemos imaginar que se está construyendo una casa. El 'diseño inseguro' es como si, desde el principio, decidieras no incluir puertas o ventanas con cerraduras. Aunque luego uses los mejores materiales para construirla, la casa seguirá siendo vulnerable porque desde el diseño original no se pensó en la seguridad.

En el mundo del software, a veces se crean programas sin reflexionar en cómo podrían ser atacados. 

Eso es un 'diseño inseguro'. Por otro lado, incluso si piensas en la seguridad desde el inicio, pero cometes errores al construir el programa, eso es una 'implementación insegura'.

La diferencia es importante porque las soluciones son distintas. Si el diseño es inseguro, no importa cuán perfectamente construyas el programa; siempre tendrás problemas de seguridad. 

Pero si el diseño es seguro y cometes errores al construirlo, puedes corregir esos errores específicos.

Uno de los motivos por los que se producen diseños inseguros es porque no se evalúa bien el riesgo. 

Es como construir una casa en un lugar tranquilo y creer que no necesitas cerraduras porque es una zona segura. Pero, si no evalúas bien los riesgos, podrías terminar con una casa fácil de robar.

5. Security Misconfiguration o Configuración Incorrecta de Seguridad

Volvamos al ejercicio anterior de la casa. Si dejas puertas abiertas o ventanas sin cerrar, alguien podría entrar fácilmente. 

Algunas aplicaciones tienen 'puertas abiertas' por defecto, como herramientas para desarrolladores, que si no se 'cierran' o desactivan, pueden ser peligrosas. Un intruso podría usar estas 'entradas' para acceder a información valiosa.

A veces, las aplicaciones vienen con contraseñas y usuarios conocidos por todos, como si tuvieras una cerradura cuya llave todos poseen. Por ejemplo, muchos desarrolladores en la etapa de construcción y pruebas hacen uso del usuario “admin” con la contraseña “admin”, luego que sale a producción la aplicación, se les olvida eliminarlo, dejando expuesta la App.

Si no cambias estas contraseñas o ajustes, estás en riesgo. Por eso, no es sorprendente que este tipo de descuido esté entre los problemas más comunes en seguridad web.

Para evitarlo, quienes construyen y mantienen la aplicación deben trabajar juntos (DevOps) y asegurarse de que todo esté bien configurado, como asegurarse de que todas las puertas y ventanas de una casa estén bien cerradas.

6. Vulnerable and Outdated Components o Componentes vulnerables y obsoletos

Los componentes vulnerables y desactualizados se refieren a código, ya sea de fuente abierta o propietario, que presenta vulnerabilidades o ya no recibe mantenimiento.

Este código puede ser bibliotecas o frameworks, y en aplicaciones web incluye herramientas como Laravel (PHP), Angular (JavaScript), Django (Python), entre otros.

Lamentablemente, este código a menudo se implementa sin considerar la seguridad, lo que puede traer graves consecuencias para los usuarios y poner en riesgo la reputación de las empresas.

Aunque a veces se descubren vulnerabilidades inéditas en componentes de terceros y se utilizan para comprometer sistemas sensibles, la mayoría de las brechas se deben a debilidades ya conocidas por los profesionales de TI. 

Desafortunadamente, solucionar el problema puede ser complejo y no se resuelve simplemente con un comando de actualización o descargando paquetes actualizados.

7. Identification and Authentication Failures o Fallos de identificación y autenticación

Antes conocido como “Pérdida de Autenticación o Broken Authentication” ha pasado del puesto 2 en las OWASP del 2017 al puesto 7 en la actualización del 2021, sin embargo, no deja de ser un problema importante para las empresas.

Es fundamental confirmar quién es un usuario, asegurarse de que sea realmente quien dice ser, y administrar cómo se mantiene su sesión en una aplicación para protegerse contra posibles ataques relacionados con la autenticación (verificar la identidad).

Aquí hay algunas formas en que una aplicación puede ser vulnerable:

  • Si permite ataques automáticos donde alguien intenta adivinar muchas combinaciones de nombres de usuario y contraseñas (Ataque de fuerza Bruta).
  • Sí, permite intentos repetidos y automáticos para adivinar una contraseña.
  • Si permite el uso de contraseñas comunes o débiles, como "Password1" o "admin/admin".
  • Si no maneja de manera segura la recuperación de contraseñas olvidadas usando preguntas fáciles de responder.
  • Si almacena las contraseñas en un formato que es fácil de descifrar por los atacantes.
  • Si no solicita información adicional para verificar la identidad además de la contraseña.
  • Si muestra en la dirección web (URL) información que debería mantenerse privado.
  • Si no maneja adecuadamente la información sobre la sesión del usuario después de que este cierra sesión.

Una aplicación debe comprobar y administrar la identidad de los usuarios, de no hacerlo, puede abrir la puerta a posibles problemas de seguridad.

8. Fallas de integridad de datos y software

Esta es una nueva categoría en la lista OWASP 2021, se centra en hacer suposiciones relacionadas con actualizaciones de software, datos críticos y canalizaciones de CI/CD sin verificar la integridad.

Los fallos en la integridad del software y los datos se refieren a problemas en el código y la infraestructura subyacente que no protegen contra cambios no autorizados. 

Por ejemplo, imagina una aplicación que utiliza fragmentos de código extra de lugares que no son confiables, como complementos o bibliotecas de fuentes aleatorias. Además, cuando se construye y actualiza el software, si hay puntos débiles en el proceso, podría permitir que actores maliciosos se infiltren y realicen acciones perjudiciales.

Otro problema es cuando el software se actualiza por sí mismo sin asegurarse de que esas actualizaciones sean seguras, lo que podría permitir a los atacantes introducir cambios dañinos. 

De manera similar, si la información se organiza de una manera que sea fácil para los atacantes entender y cambiar, esto representa un riesgo.

En palabras más simples, se trata de asegurarse de que el software y los datos no sean alterados por personas malintencionadas, ya sea que estén agregando cosas que no deberían estar ahí o cambiando cosas que no deberían.

9. Fallas de monitoreo y registro de seguridad

Esta categoría busca ayudar a detectar, intensificar y responder a violaciones de seguridad en curso. Sin registros y monitoreo, no es posible detectar estas violaciones. 

La falta de registros, detección, monitoreo y respuesta activa ocurre en los siguientes casos:

  • Eventos rastreables, como inicio de sesión, intentos fallidos de inicio de sesión y transacciones de alto valor, no quedan registrados.
  • Las advertencias y errores no generan mensajes de registro, o estos son insuficientes o poco claros.
  • No se monitorean las actividades sospechosas en los registros de aplicaciones y APIs.
  • Los registros se almacenan únicamente localmente.
  • No se tienen umbrales de alerta adecuados ni procesos efectivos de escalada de respuesta.
  • Las pruebas de penetración y los análisis realizados por herramientas de pruebas de seguridad de aplicaciones en tiempo real (como OWASP ZAP) no generan alertas.
  • La aplicación no puede detectar, intensificar o emitir alertas en tiempo real o casi en tiempo real en caso de ataques en curso.

10. Falsificación de solicitudes del lado del servidor (SSRF)

Esta nueva categoría se ha añadido a la lista en el 2021 y se trata de las fallas que ocurren cada vez que una aplicación web busca un recurso remoto sin validar la URL proporcionada por el usuario. 

Permite a un atacante obligar a la aplicación a enviar una solicitud diseñada a un destino inesperado, incluso cuando está protegida por un firewall, VPN u otro tipo de lista de control de acceso a la red (ACL).

A medida que las aplicaciones web modernas brindan a los usuarios finales funciones convenientes, recuperar una URL se convierte en un escenario común. Como resultado, la incidencia de la SSRF está aumentando. Además, la gravedad de SSRF es cada vez mayor debido a los servicios en la nube y la complejidad de las arquitecturas.

Conclusiones sobre OWASP Top 10

El OWASP top 10 que mencionamos en este artículo representa una serie de categorías de vulnerabilidades y amenazas que pueden poner en riesgo la integridad de la información en toda organización que tenga expuesta alguna aplicación a internet.

La lista no es estática y se actualiza cada cierto tiempo, debido a que los tipos de ataques informáticos evolucionan casi a la misma velocidad que los sistemas de defensa.

No obstante, en WIN Empresas somos conscientes de esto y es por ello que venimos desarrollando soluciones de ciberseguridad robustas y confiables con partners de clase mundial para brindar a nuestros clientes la protección que tanto necesitan.


Suscríbete a nuestro blog

y recibe nuestros contenidos semanales

Solicita más información