Riesgo A5 en OWASP - Pérdida de control de acceso
En nuestro post Qué es OWASP y por qué todo desarrollador debería conocerlo vimos una introducción a OWASP y por qué es tan importante en el desarrollo de aplicaciones web. Dentro del proyecto TOP TEN, vamos a ahondar un poco en cada una de los diez riesgos de seguridad más críticos en aplicaciones web. Hoy es el turno del Riesgo A5 - Pérdida de control de acceso.
Definición
Este riesgo refiere a cualquier implicación o acto a por fuera de los permisos previstos a un usuario. Es decir, que no se puede tener acceso a funciones o características más allá de las que se debería tener.
Ejemplos
- El acceso a ficheros o páginas privilegiadas cambiando parámetros de la URL del navegador en una aplicación.
- la ejecución de scripts maliciosos producto de funcionalidades de subida de archivos.
Prevención
- Se debe optar siempre como política predeterminada denegar el acceso, con excepción de recursos públicos.
- Se debe asegurar que cada usuario tenga los permisos que debe tener acorde a su rol.
- Debe deshabilitarse el listado de directorios en el servidor web y evitar que copias de seguridad de base de datos, código fuente u otros archivos sensibles puedan ser accedidos de manera pública.
- El equipo de QA y desarrolladores deben incluir pruebas de control de acceso dentro de sus pruebas automatizadas y de integración.
- En lo posible se debe limitar la tasa de acceso a las API para minimizar la posibilidad de un ataque automatizado.
- Se debe tener un registro de errores de acceso que envíe alertas a los administradores cuando se detecten comportamientos anómalos.
- Se puede utilizar herramientas SAST (Static Application Security Testing) o DAST (Dynamic Application Security Testing) para ayudar a la detección automatizada de este tipo de vulnerabilidades.