Skip to main content

Las 10 principales vulnerabilidades de OWASP

Escrito por
owasp logo

15 de octubre de 2020

0 minutos de lectura

Las aplicaciones nativas de la nube, con arquitecturas distribuidas que incluyen numerosas bibliotecas y servicios de terceros, son un blanco atractivo para los hackers. Los atacantes no pasan por alto el hecho de que el 82 % de todas las vulnerabilidades se encuentran en el código de las aplicaciones, y buscan aprovechar este vector para comprometer las redes en las que se implementan. Por eso, proteger las aplicaciones web se ha convertido en un requisito fundamental para el negocio.

¿Qué es OWASP?

Open Web Application Security Project (OWASP) es una comunidad global sin fines de lucro que busca promover la seguridad de las aplicaciones en la web. Uno de los principios centrales de OWASP es que su base de conocimientos esté disponible de forma gratuita y sencilla en su sitio web. Con decenas de miles de miembros y cientos de capítulos, OWASP goza de gran credibilidad, y los desarrolladores confían en sus recomendaciones esenciales sobre seguridad de aplicaciones web y seguridad de API.

Todos los desarrolladores de aplicaciones, sin importar su nivel de experiencia, deben esforzarse por comprender las vulnerabilidades de seguridad del código para evitar fallas de seguridad de aplicaciones frustrantes y, a menudo, costosas. ¿Qué es OWASP Top 10?

Cada pocos años, OWASP revisa y publica su lista de las 10 principales vulnerabilidades de aplicaciones web. La lista incluye no solo las 10 principales amenazas de OWASP, sino también el impacto potencial de cada vulnerabilidad y cómo evitarlas. Esta lista exhaustiva se elabora a partir de diversas fuentes expertas, como consultores y proveedores de seguridad, así como equipos de seguridad de empresas y organizaciones de todos los tamaños. Se reconoce como una guía esencial de las mejores prácticas de seguridad de aplicaciones web.

OWASP publicó recientemente las 10 principales vulnerabilidades de OWASP de 2021. La lista incluye tres categorías nuevas, cuatro categorías con cambios de nombre y alcance, y algunas categorías consolidadas dentro de las 10 principales.

El objetivo principal de OWASP Top 10 es crear conciencia. Sin embargo, desde su primera publicación en 2003, las empresas lo han usado como un estándar de facto del sector de AppSec. Si revisamos el documento con atención, veremos que especifica la cantidad de CWE (Common Weakness Enumeration) asociadas.

Prepárate para las vulnerabilidades de día cero con Snyk

Descubre cómo Snyk ayuda a tus desarrolladores a corregir más rápido las vulnerabilidades de día cero para reducir la exposición y el riesgo.

La lista más reciente de las 10 principales vulnerabilidades de OWASP y los riesgos de seguridad de aplicaciones web

La lista más reciente de OWASP Top 10 se publicó el 24 de septiembre de 2021, durante el 20.º aniversario de OWASP. Si conoces la lista de 2020, notarás que el orden de OWASP Top 10 de 2021 cambió bastante: la inyección SQL dejó el primer puesto, que ahora ocupa la falla de control de acceso.

  1. Fallas de control de acceso

  2. Fallas criptográficas

  3. Inyección

  4. Diseño inseguro

  5. Configuración de seguridad incorrecta

  6. Componentes vulnerables y obsoletos

  7. Fallas de identificación y autenticación

  8. Fallas de integridad de software y datos

  9. Fallas de registro y monitoreo de seguridad

  10. Falsificación de solicitudes del lado del servidor

Las 10 principales vulnerabilidades de OWASP

En esta sección, analizamos cada una de las 10 principales vulnerabilidades de OWASP para comprender mejor su impacto y cómo evitarlas.

1. Fallas de control de acceso

Los controles de acceso de seguridad de un sitio web deben limitar el acceso de los visitantes solo a las páginas o secciones que necesitan según su tipo de usuario. Por ejemplo, los administradores de un sitio de comercio electrónico deben poder agregar enlaces o promociones. Estas funciones no deberían estar disponibles para otros tipos de visitantes.

Hay que alentar a los desarrolladores a incorporar la disciplina de «la seguridad primero» para evitar problemas como los sistemas de gestión de contenido (CMS) que otorgan todos los permisos de acceso de forma predeterminada, incluso los de administrador. Las fallas de control de acceso pueden dar a los visitantes de un sitio web acceso a paneles de administración, servidores, bases de datos y otras aplicaciones críticas para el negocio. De hecho, esta amenaza de OWASP Top 10 incluso podría usarse para redirigir los navegadores a otras URL específicas.

Cómo corregir las fallas de control de acceso

Las vulnerabilidades de control de acceso pueden abordarse de varias maneras:

  • Adopta el principio de privilegio mínimo: asigna a cada rol el nivel de acceso más bajo que necesita para realizar sus tareas.

  • Elimina las cuentas que ya no se necesiten o estén activas.

  • Audita la actividad en los servidores y sitios web para saber quién hace qué y cuándo.

  • Si hay varios puntos de acceso, desactiva los que no se necesiten en ese momento.

  • Mantén los servidores optimizados desactivando los servicios innecesarios.

2. Fallas criptográficas

Los datos en tránsito y en reposo —como contraseñas, números de tarjetas de crédito, expedientes médicos, información personal y secretos comerciales— requieren protección adicional debido al riesgo de fallas criptográficas (exposición de datos confidenciales). Esto es especialmente importante si los datos están sujetos a leyes de privacidad como GDPR, CCPA y otras. ¿Se envían datos en texto sin formato? ¿Se usan algoritmos o protocolos criptográficos obsoletos o inseguros de forma predeterminada o en código antiguo? ¿Se utilizan claves criptográficas predeterminadas, se generan y reutilizan claves débiles o se pasa por alto la gestión y rotación adecuadas de claves? ¿Es posible guardar claves criptográficas en repositorios de código fuente? ¿No se exige el cifrado? ¿Los datos recibidos están cifrados?

Cómo corregir las fallas criptográficas

  • Desactiva el autocompletado en los formularios que recopilan datos.

  • Reduce o minimiza la superficie de datos.

  • Cifra los datos en tránsito y en reposo.

  • Usa las técnicas de cifrado más recientes.

  • Desactiva el almacenamiento en caché en los formularios que recopilan datos.

  • Usa funciones de hash adaptativas, con sal y sólidas al guardar contraseñas.

3. Inyección

Las vulnerabilidades de inyección pueden ocurrir cuando se usa una consulta o un comando para insertar datos no confiables en el intérprete mediante inyección de SQL, del sistema operativo, NoSQL o LDAP. Los datos maliciosos introducidos mediante este vector de ataque engañan al intérprete para que la aplicación haga algo para lo que no fue diseñada, como generar comandos no deseados o acceder a datos sin la autenticación adecuada.

Cualquier aplicación que acepte parámetros como entrada puede ser vulnerable a ataques de inyección. El nivel de riesgo está muy relacionado con la rigurosidad de las medidas de validación de entradas de la aplicación.

Cómo corregir las vulnerabilidades de inyección

Los ataques de inyección pueden prevenirse combinando cualquiera de los siguientes enfoques:

  • Separa los comandos de los datos para evitar ataques que sustituyan los datos por la ejecución de comandos no deseados.

  • Escribe las consultas SQL con parámetros, en lugar de construir el comando únicamente a partir de los datos ingresados por el usuario. Se conocen como consultas parametrizadas o sentencias preparadas.

  • Elimina por completo el intérprete mediante el uso de una API segura.

  • Implementa una validación positiva del lado del servidor y un sistema de detección de intrusiones que identifique comportamientos sospechosos del lado del cliente.

4. Diseño inseguro

Diseño inseguro es un término amplio que abarca diversas fallas y se define como «un diseño de controles ausente o deficiente». El modelado de amenazas, los patrones de diseño seguro y las arquitecturas de referencia son algunas de las nuevas categorías de 2021, junto con la necesidad de aumentar el uso del modelado de amenazas, los patrones de diseño seguro y las arquitecturas de referencia. Como comunidad, debemos ir más allá de «desplazar a la izquierda» la programación y enfocarnos en tareas previas a la codificación que son importantes para los principios de seguridad desde el diseño.

Cómo corregir el diseño inseguro

  • Para ayudar a analizar y desarrollar medidas relacionadas con la seguridad y la privacidad, establece y usa un ciclo de vida de desarrollo seguro junto con profesionales de AppSec.

  • Crea y usa una biblioteca de patrones o componentes de diseño seguro, listos para usar.

  • Usa el modelado de amenazas en los flujos críticos de autenticación, control de acceso, lógica de negocio y gestión de claves.

  • Las historias de usuario deben incluir consideraciones y controles de seguridad.

  • Integra verificaciones de plausibilidad en cada nivel de tu aplicación, desde el frontend hasta el backend.

  • Escribe pruebas unitarias y de integración para garantizar que todos los flujos importantes resistan el modelo de amenazas. Haz una lista de casos de uso y casos de uso indebido para cada nivel de tu aplicación.

  • Divide los niveles en las capas del sistema y la red según los requisitos de exposición y protección.

  • Limita el consumo de recursos de los usuarios y servicios.

5. Configuración de seguridad incorrecta

Gartner estima que hasta el 95 % de las brechas en la nube se deben a errores humanos. Las configuraciones incorrectas de seguridad son una de las principales causas de esta estadística. OWASP señala que esta es la vulnerabilidad más común de las 10 principales. Hay muchos tipos de configuraciones incorrectas que exponen a las empresas a riesgos de ciberseguridad, entre ellos:

  • Aceptar configuraciones predeterminadas inseguras

  • Recursos de almacenamiento en la nube con acceso excesivamente amplio

  • Configuraciones incompletas

  • Encabezados HTTP mal configurados

  • Mensajes de error detallados que contienen información confidencial

Cómo corregir las configuraciones de seguridad incorrectas

Las configuraciones de seguridad incorrectas pueden aparecer prácticamente en cualquier parte del entorno, incluidos dispositivos conectados a la red, bases de datos, servidores web y de aplicaciones, y contenedores. Estas prácticas pueden ayudar a mantener un entorno bien configurado:

  • Usa plantillas para implementar entornos de desarrollo, prueba y producción preconfigurados según las políticas de seguridad de la organización.

  • Aprovecha las arquitecturas de aplicaciones segmentadas para minimizar los riesgos de los elementos configurados de forma insegura, y mantén una biblioteca de imágenes de contenedor correctamente configuradas.

  • Implementa plataformas mínimas y elimina las funciones y los servicios que no uses.

  • Monitorea continuamente los recursos en la nube, las aplicaciones y los servidores para detectar configuraciones de seguridad incorrectas y corregir los problemas identificados en tiempo real. Usa flujos de trabajo automatizados siempre que sea posible.

6. Componentes vulnerables y obsoletos

Las aplicaciones web distribuidas modernas suelen incorporar componentes de código abierto, como bibliotecas y frameworks. Cualquier componente con una vulnerabilidad conocida se convierte en un eslabón débil que puede afectar la seguridad de toda la aplicación.

Aunque el uso de componentes de código abierto con vulnerabilidades conocidas ocupa un lugar bajo en cuanto a la gravedad de los problemas de seguridad, ocupa el puesto n.º 1 si se clasifican las 10 principales vulnerabilidades de OWASP según la frecuencia con que una vulnerabilidad fue la causa raíz de una filtración de datos real.

Cómo corregir componentes vulnerables y obsoletos

La defensa más eficaz es el análisis continuo de todos los componentes del código para detectar vulnerabilidades conocidas, y la implementación de un parche u otra solución lo antes posible cuando se detecte una. Estas prácticas recomendadas pueden aumentar la eficacia de esta línea de defensa:

  • Todos los componentes integrados en los frameworks de la empresa deben estar bajo gestión de configuración.

  • El escáner debe poder descubrir automáticamente todos los componentes que se deben monitorear.

  • El análisis debe realizarse con una base de datos de vulnerabilidades integral y enriquecida con datos de inteligencia sobre amenazas.

  • Los flujos de trabajo de gestión de parches para identificar, probar e implementar el parche adecuado deben automatizarse tanto como sea posible, a fin de reducir al mínimo el riesgo operativo asociado con la aplicación de parches.

7. Fallas de identificación y autenticación

Cuando las aplicaciones ejecutan de forma incorrecta funciones relacionadas con la gestión de sesiones o la autenticación de usuarios, los intrusos pueden comprometer contraseñas, claves de seguridad o tokens de sesión y asumir de forma temporal o permanente las identidades y los permisos de otros usuarios. Esta vulnerabilidad representa una grave amenaza para la seguridad de la aplicación y los recursos a los que accede, y también puede comprometer seriamente otros activos conectados a la misma red.

Cómo corregir las fallas de autenticación

Estas son las principales recomendaciones de OWASP para mitigar las vulnerabilidades de autenticación defectuosa:

  • Implementa la autenticación multifactor.

  • No implementes sistemas con credenciales predeterminadas, especialmente para usuarios con privilegios de administrador.

  • Exige contraseñas seguras.

  • Monitorea cuidadosamente los intentos de inicio de sesión fallidos.

  • Usa un administrador de sesiones seguro que genere identificadores de sesión aleatorios y con límite de tiempo. Nunca incluyas identificadores de sesión en las URL.

8. Fallas de integridad de software y datos

Las fallas de integridad del software y los datos se refieren al código y la infraestructura que no protegen contra las violaciones de integridad. Un programa que usa complementos, bibliotecas o módulos de fuentes, repositorios o redes de distribución de contenido (CDN) no confiables es un ejemplo. Una canalización de CI/CD sin protección puede exponerse a riesgos como el acceso no autorizado, el código malicioso o la vulneración del sistema. Por último, muchos programas ahora incluyen funciones de actualización automática que permiten obtener actualizaciones sin las verificaciones de integridad necesarias y aplicarlas a aplicaciones que antes eran confiables. Los atacantes podrían distribuir y ejecutar sus propias actualizaciones en todos los sistemas que cuenten con esta funcionalidad.

Cómo corregir las fallas de integridad del software y los datos

  • Usa firmas digitales u otras medidas similares para garantizar que el programa o los datos sean auténticos y no se hayan alterado.

  • Para reducir el riesgo de que se introduzca código o configuración dañinos en tu canalización de desarrollo, asegúrate de contar con un procedimiento de revisión para los cambios en el código y la configuración.

  • Asegúrate de que las bibliotecas y dependencias, como npm o Maven, usen repositorios confiables. Si tu perfil de riesgo es más alto, considera alojar un repositorio interno aprobado con versiones conocidas como seguras.

  • Para proteger la integridad del código que pasa por los procesos de compilación e implementación, asegúrate de que tu canalización de CI/CD incluya una segregación, configuración y controles de acceso adecuados.

  • Asegúrate de que los datos serializados sin firmar o cifrar no se entreguen a clientes no confiables sin algún tipo de verificación de integridad o firma digital que permita detectar alteraciones o ataques de repetición.

9. Registro y monitoreo insuficientes

Los estudios indican que el tiempo entre el ataque y su detección puede llegar a ser de hasta 200 días, y a menudo es incluso mayor. Este lapso les da a los ciberdelincuentes tiempo de sobra para manipular servidores, corromper bases de datos, robar información confidencial e instalar código malicioso.

Cómo corregirlo

Implementa software de registro y auditoría de fácil acceso para detectar rápidamente actividades sospechosas e intentos de acceso no autorizado. Aunque un ataque detectado haya fracasado, el registro y el monitoreo ofrecen herramientas muy valiosas para analizar el origen y el vector del ataque, y aprender cómo reforzar las políticas y los controles de seguridad para prevenir intrusiones.

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

La falsificación de solicitudes del lado del servidor (también conocida como SSRF) es una falla de seguridad web que permite a un atacante obligar a una aplicación del lado del servidor a enviar solicitudes HTTP a cualquier dominio que elija.

Se produce una falla SSRF cuando una aplicación web obtiene un recurso remoto sin validar la URL proporcionada por el usuario. Aunque el programa esté protegido por un firewall, una VPN u otro tipo de lista de control de acceso a la red, un atacante puede obligarlo a enviar una solicitud falsificada a una ubicación inesperada.

Cómo corregirlo

  • Valida las entradas.

  • Usa expresiones regulares (RegEx).

  • Acepta únicamente el formato de dirección IP previsto (IPv4 o IPv6).

  • Para comparar con la lista de permitidos, usa como dirección IP el valor que devuelve la biblioteca del método o de salida.

  • Valida los nombres de dominio entrantes.

  • Consulta la serie de hojas de referencia de OWASP

¿Cuáles son las otras vulnerabilidades que no son de OWASP?

OWASP afirma con toda claridad en su metodología que la lista Top 10 es, por definición, solo un subconjunto de los problemas de seguridad importantes, y que las organizaciones deben tener presentes otros riesgos de seguridad.

Debes estar al tanto de otras vulnerabilidades de día cero nuevas que se descubran en el entorno real y mantener un plan de respuesta para hacerles frente cuando aparezcan.

Gráfico de otras vulnerabilidades ajenas a OWASP: el malware, el phishing y los ataques a RDP son las siguientes vulnerabilidades más comunes
Gráfico de otras vulnerabilidades no incluidas en OWASP

A los desarrolladores les encanta. Los equipos de seguridad confían en él.

Las herramientas de Snyk, diseñadas primero para desarrolladores, ofrecen seguridad integrada y automatizada que satisface tus necesidades de gobernanza y cumplimiento.

Preguntas frecuentes sobre vulnerabilidades de OWASP

¿Qué es una vulnerabilidad de OWASP?

Las vulnerabilidades de OWASP son debilidades o problemas de seguridad publicados por el Open Web Application Security Project. Los problemas reportados por empresas, organizaciones y profesionales de seguridad se clasifican según la gravedad del riesgo que representan para las aplicaciones web.

¿Cuáles son las 10 principales vulnerabilidades de OWASP?

La lista de las diez principales vulnerabilidades de OWASP se elabora y publica cada tres o cuatro años, y destaca las vulnerabilidades de seguridad más críticas. Además, incluye ejemplos de las debilidades, cómo pueden explotarlas los atacantes y métodos sugeridos para reducir o eliminar la exposición de las aplicaciones.

¿Cuál es el riesgo de seguridad de aplicaciones número uno reportado por OWASP?

La inyección es la falla número uno reportada por OWASP. La inyección puede enviar datos no confiables a través de SQL u otras vías, como LDAP, lo que permite que el intérprete acceda a datos no autorizados o ejecute comandos que la aplicación no tiene previstos.

¿Cómo se pueden probar las vulnerabilidades del OWASP Top 10?

OWASP ofrece una guía de pruebas detallada con casos para una amplia variedad de escenarios. Muchos equipos de desarrollo han adoptado una solución más automatizada que usa software para analizar el código en busca de vulnerabilidades, emitir alertas automáticas y aplicar buenas prácticas de forma consistente.

¿Cómo se debe usar el OWASP Top 10?

La lista OWASP Top 10 ofrece a los desarrolladores y a los equipos de seguridad una herramienta para evaluar las prácticas de desarrollo y orientar la reflexión sobre la seguridad de las aplicaciones web. Aunque no abarca todas las vulnerabilidades de las aplicaciones web, sirve como referencia para dar visibilidad a las consideraciones de seguridad.