Según las estadísticas mantenidas por openweb application security project (OWASP), se pueden distinguir los diez errores de seguridad más comunes. El siguiente gráfico muestra la frecuencia con la que veracode, una organización de investigación de seguridad de aplicaciones web, detecta estas vulnerabilidades durante una evaluación preliminar de riesgos.
La tasa de detección de vulnerabilidades de la lista OWASP Top 10 durante la evaluación de riesgos inicial de veracode. Fuente: [Veracode]
Las vulnerabilidades más comunes citadas anteriormente según la OWASP son:
- Susceptibilidad de inyectar datos que no son de confianza en un intérprete de código como parte de un comando oconsulta (SQLi, OS, XXE, LDAP). Un atacante podría ser más astuto que el intérprete para ejecutar comandos no programados u obtener acceso a los datos sin la autorización adecuada.
- Mecanismos implementados incorrectamente para la autenticidad y la administración de sesiones. Esto permite al atacante poner en peligro contraseñas, claves, tokens de sesión o secuestrar la identidad de otro usuario de la aplicación.
- El scripting entre sitios (XSS)es un ataque que inyecta JavaScript en el contenido de la página atacada. Se puede utilizar para secuestrar la sesión de un usuario, redirigir a un sitio de usuario peligroso, o ataques de ingeniería social.
- Mecanismos de control de acceso rotos con respecto a los permisos y recursos a los que tiene acceso un usuario del sistema. Un atacante podría aprovechar esta vulnerabilidad para obtener acceso a funciones no autorizadas o datos confidenciales, así como para obtener acceso a las cuentas de otros usuarios.
- Configuración de seguridad incorrecta : para proteger correctamente el sistema, se definen e implementan las configuraciones adecuadas para la aplicación, el marco, el servidor de aplicaciones, el servidor de bases de datos, la plataforma, etc. Además, el software debe actualizarse regularmente.
- Compartir datos confidenciales: muchas aplicaciones web y API no protegen adecuadamente los datos confidenciales, como los datos financieros, médicos o personales. Un atacante puede robar o modificar dicha información mal protegida y usarla para el fraude en una tarjeta de crédito, robar identidad o cometer otros delitos. Los datos confidenciales deben estar protegidos adicionalmente por cifrado durante la transmisión y el almacenamiento.
- Protección inadecuada contra ataques: muchos sistemas no tienen la capacidad básica de detectar, prevenir y responder a ataques manuales y automatizados. Debe implementar mecanismos que vayan más allá de los mecanismos básicos para validar la entrada e incluir la detección automática, el registro e incluso el bloqueo de los intentos de ataque. Además, los propietarios de aplicaciones deben poder cargar fácilmente parches de seguridad.
- Cross-Site Request Forgery (CSRF)– consiste en forzar el navegador del usuario para enviar una consulta al servidor en el contexto de ese usuario. Por lo tanto, permite a la víctima realizar alguna acción no autorizada, por ejemplo, cambiar la contraseña, realizar una transferencia.
- Uso de componentes con vulnerabilidades conocidas: componentes como bibliotecas, marcos y otros módulos utilizados en el software funcionan con los mismos permisos que la propia aplicación. Si un componente vulnerable se ve comprometido, un ataque de este tipo puede suponer una amenaza grave para los datos o el sistema en su conjunto. Las aplicaciones que utilizan componentes con vulnerabilidades conocidas pueden quitar la capa que protege la aplicación abriéndolo a varios tipos de ataques.
- API no seguras: las aplicaciones actuales a menudo proporcionan API para comunicarse con ellas además de la funcionalidad básica(SOAP/XML, REST/JSON, RPC, GWT, etc.). Estas interfaces son a menudo inseguras y contienen muchas vulnerabilidades.