El software ha tomado una gran importancia dentro de nuestras vidas (salud, finanzas, vehículos, administración, energía, etc.) y a medida que se convierte en algo indispensable, robusto e interconectado, la dificultad para lograr seguridad en las aplicaciones crece aceleradamente, así mismo el desarrollo ágil de software aumenta aún más el riesgo de no descubrir vulnerabilidades de forma rápida y precisa.
Por este motivo es importante que en cada desarrollo se utilicen metodologías, buenas practicas, lenguajes de programación y API’s estables, pruebas, entre otras, en las que se puedan confiar y sea seguro la creación y manejo de una aplicación.
Dentro de cualquier ámbito normalmente existen organizaciones sin fin de lucro que se enfocan en determinado aspecto y la seguridad de las aplicaciones web no es la excepción, siendo el OWASP una de las organizaciones más famosas de la industria que cada cierto tiempo realiza un listado de las vulnerabilidades más criticas de las aplicaciones web.
¿Que es OWASP?
El Proyecto Abierto de Seguridad en Aplicaciones Web (OWASP por sus siglas en inglés) es una fundación sin fines de lucro que trabaja para mejorar la seguridad del software. Esta se basa en proyectos de software de código abierto liderados por la comunidad, conferencias y capacitación con el fin de que los desarrolladores protejan la web.
¿Que es OWASP TOP 10?
El OWASP Top 10 es un documento que se realiza cada cierto tiempo y se enfoca en identificar los riesgos más críticos de las aplicaciones web, descritas a continuación.
- Inyección
- Pérdida de Autenticación
- Exposición de datos sensibles
- Entidades Externas XML (XXE)
- Pérdida de Control de Acceso
- Configuración de Seguridad Incorrecta
- Secuencia de Comandos en Sitios Cruzados (XSS)
- Deserialización Insegura
- Componentes con vulnerabilidades conocidas
- Registro y Monitoreo Insuficiente
1. Inyección
Este tipo de fallas ocurren cuando se envían datos no confiables a un intérprete (Sql, NoSql, Sistema operativo o cualquier otro interprete), como parte de un comando o consulta. Estos datos pueden engañar al interprete para ejecutar comandos involuntarios o que acceda a los datos sin una autorización.
2. Pérdida de Autenticación
Esta vulnerabilidad tiene que ver con la autenticación y gestión de sesiones con el fin de comprometer usuarios, contraseñas, tokens de sesiones u otras fallas a fin de asumir la identidad de otros usuarios de forma temporal o permanente.
3. Exposición de datos sensibles
Algunos desarrollos y API’s no protegen de manera adecuada datos sensibles, tales como información financiera, salud o Información Personalmente Identificable (PII), ocasionando que una persona ajena pueda robar o modificar datos sensibles para realizar fraudes, robos de identidad u otros delitos.
4. Entidades Externas XML (XXE)
Los ataques de entidad externa XML también conocida XXE, es una vulnerabilidad en la que permite manejar el procesamiento XML de una aplicación, permitiendo a través de este ataque ver los archivos del servidor, escanear puertos LAN, ejecutar código y realizar ataques de negación de servicio (DoS).
5. Pérdida de Control de Acceso
Esta se da cuando no existen restricciones de funcionalidad sobre los usuarios autenticados, ocasionando el acceso no autorizado de funcionalidades, información, archivos, permisos, etc.
6. Configuración de Seguridad Incorrecta
Este problema es muy común dentro de las aplicaciones debido a la mala configuración de permisos en la nube, cuentas predeterminadas y de prueba con contraseñas genéricas, mensaje de error detallados, falta de actualizaciones, frameworks, dependencias y componentes desactualizados, etc.
7. Secuencia de Comandos en Sitios Cruzados (XSS)
La secuencia se comandos ocurre cuando se envían datos no confiables directamente al navegador web, permitiendo ejecutar comandos en el navegador del usuario, obteniendo las credenciales de acceso del usuario, modificar los sitios o redireccionar al usuario a un sitio malicioso.
8. Deserialización Insegura
Existe una vulnerabilidad de deserialización insegura cuando se usan datos no confiables para aprovecharse de la lógica de una aplicación, manipulando o borrando objetos para realizar ataques de repetición, inyecciones o una ejecución remota de código dentro del servidor.
9. Componentes con vulnerabilidades conocidas
Una aplicación que utiliza librerías, frameworks y módulos puede recibir ataque si alguno de sus componentes es vulnerable ocasionando ataques, perdida de información o acceso al servidor.
10. Registro y Monitoreo Insuficiente
La mala supervisión de los registros, un monitoreo insuficiente y una reacción inadecuada a varios incidentes, puede ocasionar un ataques, manipulación y/o extracción de información, siendo esta vulnerabilidad responsabilidad del personal que administra la aplicación.
Todas y cada una de las vulnerabilidades explicadas anteriormente son del reporte del año 2017, y habrá que esperar para ver cuales han cambiado y/o cuales han sido agregadas al listado.