OWASP Top 10
El OWASP Top 10 es la lista de los 10 riesgos de seguridad de aplicaciones web más comunes. Al escribir código y realizar pruebas sólidas teniendo en cuenta estos riesgos, los desarrolladores pueden crear aplicaciones seguras que mantienen los datos confidenciales de sus usuarios a salvo de los atacantes.
¿Que hace el OWASP?
Evalúa cada clase de falla utilizando la metodología de clasificación de riesgos de OWASP y proporciona pautas, ejemplos, mejores prácticas para prevenir ataques y referencias para cada riesgo. Al conocer las fallas en el cuadro OWASP Top 10 y cómo resolverlas, los desarrolladores de aplicaciones pueden dar pasos concretos hacia una aplicación más segura que ayude a mantener a los usuarios seguros cuando se trata de ataques maliciosos.
Una guía para sacar partido a OWASP TOP 10
Las 10 principales vulnerabilidades de OWASP
1. Inyección
La inyección ocurre cuando un atacante explota un código inseguro para insertar (o inyectar) su propio código en un programa. Debido a que el programa no puede determinar el código insertado de esta manera a partir de su propio código, los atacantes pueden usar ataques de inyección para acceder a áreas seguras e información confidencial como si fueran usuarios confiables. Los ejemplos de inyección incluyen inyecciones SQL, inyecciones de comando, inyecciones CRLF e inyecciones LDAP.
Las pruebas de seguridad de la aplicación pueden revelar fallas de inyección y sugerir técnicas de reparación, como eliminar caracteres especiales de la entrada del usuario o escribir consultas SQL parametrizadas.
2. Autenticación vulnerable
Las llamadas de administración de sesión y autenticación implementadas incorrectamente pueden ser un gran riesgo para la seguridad. Si los atacantes notan estas vulnerabilidades, pueden asumir fácilmente las identidades de los usuarios legítimos.
La autenticación multifactor es una forma de mitigar la autenticación rota. Implemente escaneos DAST y SCA para detectar y eliminar problemas con errores de implementación antes de que se implemente el código.
3. Exposición de datos confidenciales
Las API, que permiten a los desarrolladores conectar su aplicación a servicios de terceros como Google Maps, son excelentes para ahorrar tiempo. Sin embargo, algunas API se basan en métodos de transmisión de datos inseguros, que los atacantes pueden explotar para obtener acceso a nombres de usuario, contraseñas y otra información confidencial.
El cifrado de datos, la tokenización, la gestión adecuada de claves y la desactivación del almacenamiento en caché de respuestas pueden ayudar a reducir el riesgo de exposición de datos confidenciales.
4. Entidades externas XML
Este riesgo ocurre cuando los atacantes pueden cargar o incluir contenido XML hostil debido a un código, integraciones o dependencias inseguros. Un escaneo puede encontrar riesgos en componentes de terceros con vulnerabilidades conocidas y le advertirá sobre ellos. Deshabilitar el procesamiento de entidades externas XML también reduce la probabilidad de un ataque de entidad XML.
5. Control de acceso vulnerable
Si la autenticación y la restricción de acceso no se implementan correctamente, es fácil que los atacantes tomen lo que quieran. Con fallas en el control de acceso, los usuarios no autenticados o no autorizados pueden tener acceso a archivos y sistemas confidenciales, o incluso a configuraciones de privilegios de usuario.
Los errores de configuración y las prácticas de control de acceso inseguras son difíciles de detectar, ya que los procesos automatizados no siempre pueden probarlos. Las pruebas de penetración pueden detectar la falta de autenticación, pero se deben usar otros métodos para determinar los problemas de configuración. Los controles de acceso débiles y los problemas con la gestión de credenciales se pueden prevenir con prácticas de codificación seguras, así como con medidas preventivas como el bloqueo de cuentas y controles administrativos y el uso de autenticación multifactor.
6. Configuración incorrecta de la seguridad
Al igual que los controles de acceso mal configurados, los errores de configuración de seguridad más generales son riesgos enormes que brindan a los atacantes acceso rápido y fácil a datos confidenciales y áreas del sitio.
Las pruebas dinámicas pueden ayudarlo a descubrir la seguridad mal configurada en su aplicación.
7. Secuencias de comandos entre sitios
Con las secuencias de comandos entre sitios, los atacantes aprovechan las API y la manipulación del DOM para recuperar datos o enviar comandos a su aplicación. Las secuencias de comandos entre sitios amplían la superficie de ataque para los actores de amenazas, lo que les permite secuestrar cuentas de usuario, acceder a los historiales del navegador, propagar troyanos y gusanos, controlar los navegadores de forma remota y más.
Capacitar a los desarrolladores en las mejores prácticas, como la codificación de datos y la validación de entrada, reduce la probabilidad de este riesgo. Desinfecte sus datos validando que es el contenido que espera para ese campo en particular y codificándolo para el “punto final” como una capa adicional de protección.
8. Deserialización insegura
La deserialización, o la recuperación de datos y objetos que se han escrito en discos o se han guardado de otro modo, se puede utilizar para ejecutar código de forma remota en su aplicación o como una puerta para futuros ataques. El formato en el que se serializa un objeto es texto estructurado o binario a través de sistemas de serialización comunes como JSON y XML. Esta falla ocurre cuando un atacante usa datos que no son de confianza para manipular una aplicación, iniciar un ataque de denegación de servicio (DoS) o ejecutar código impredecible para cambiar el comportamiento de la aplicación.
Aunque la deserialización es difícil de explotar, las pruebas de penetración o el uso de herramientas de seguridad de aplicaciones pueden reducir aún más el riesgo. Además, no acepte objetos serializados de fuentes no confiables y no use métodos que solo permitan tipos de datos primitivos.
9. Uso de componentes con vulnerabilidades conocidas
No importa qué tan seguro sea su propio código, los atacantes pueden explotar las API, las dependencias y otros componentes de terceros si no son seguros.
Un análisis estático acompañado de un análisis de composición de software puede localizar y ayudar a neutralizar componentes inseguros en su aplicación.
10. Registro y monitoreo insuficientes
No registrar errores o ataques y prácticas de monitoreo deficientes pueden introducir un elemento humano en los riesgos de seguridad. Los actores de amenazas cuentan con la falta de monitoreo y tiempos de remediación más lentos para que puedan llevar a cabo sus ataques antes de que tenga tiempo de darse cuenta o reaccionar.
Para evitar problemas de registro y supervisión insuficientes, asegúrese de que todas las fallas de inicio de sesión, fallas de control de acceso y fallas de validación de entrada del lado del servidor se registren con contexto para que pueda identificar actividades sospechosas. Las pruebas de penetración también son una excelente manera de encontrar áreas de su aplicación con registros insuficientes. También es esencial establecer prácticas de seguimiento eficaces.