A01: El control de acceso roto (by OWASP)

Visión general

Subiendo desde la quinta posición, el 94 % de las aplicaciones se probaron en busca de algún tipo de control de acceso roto con una tasa de incidencia promedio de 3,81 %, y tiene la mayor cantidad de ocurrencias en el conjunto de datos contribuido con más de 318k.

Las Enumeraciones de debilidades comunes (CWE) notables incluidas son CWE-200: Exposición de información confidencial a un actor no autorizado , CWE-201: Inserción de información confidencial en datos enviados y CWE-352: Falsificación de solicitud entre sitios.

Descripción

El control de acceso aplica una política tal que los usuarios no pueden actuar fuera de sus permisos previstos. Las fallas generalmente conducen a la divulgación, modificación o destrucción no autorizada de todos los datos oa la realización de una función comercial fuera de los límites del usuario. Las vulnerabilidades comunes de control de acceso incluyen:

  • Violación del principio de privilegio mínimo o denegación por defecto, donde el acceso solo debe otorgarse para capacidades, roles o usuarios particulares, pero está disponible para cualquiera.

  • Omitir las comprobaciones de control de acceso mediante la modificación de la URL (alteración de parámetros o navegación forzada), el estado interno de la aplicación o la página HTML, o mediante el uso de una herramienta de ataque que modifica las solicitudes de API.

  • Permitir ver o editar la cuenta de otra persona, al proporcionar su identificador único (referencias de objetos directos inseguros)

  • Acceso a la API sin controles de acceso para POST, PUT y DELETE.

  • Elevación de privilegio. Actuar como usuario sin haber iniciado sesión o actuar como administrador cuando se ha iniciado sesión como usuario.

  • Manipulación de metadatos, como la reproducción o manipulación de un token de control de acceso JSON Web Token (JWT), o una cookie o un campo oculto manipulado para elevar los privilegios o abusar de la invalidación de JWT.

  • La configuración incorrecta de CORS permite el acceso a la API desde orígenes no autorizados/no confiables.

  • Forzar la navegación a páginas autenticadas como usuario no autenticado o a páginas privilegiadas como usuario estándar.

Como prevenir

El control de acceso solo es efectivo en el código del lado del servidor confiable o API sin servidor, donde el atacante no puede modificar la verificación de control de acceso o los metadatos.

  • Excepto para los recursos públicos, denegar por defecto.

  • Implemente mecanismos de control de acceso una vez y reutilícelos en toda la aplicación, incluida la minimización del uso compartido de recursos de origen cruzado (CORS).

  • Los controles de acceso al modelo deben imponer la propiedad de los registros en lugar de aceptar que el usuario pueda crear, leer, actualizar o eliminar cualquier registro.

  • Los modelos de dominio deben hacer cumplir los requisitos de límite comercial de aplicaciones únicas.

  • Deshabilite la lista de directorios del servidor web y asegúrese de que los metadatos del archivo (p. ej., .git) y los archivos de copia de seguridad no estén presentes en las raíces web.

  • Registrar fallas de control de acceso, alertar a los administradores cuando sea apropiado (por ejemplo, fallas repetidas).

  • Tasa de límite API y acceso al controlador para minimizar el daño de las herramientas de ataque automatizado.

  • Los identificadores de sesión con estado deben invalidarse en el servidor después de cerrar la sesión. Los tokens JWT sin estado deberían ser de corta duración para minimizar la ventana de oportunidad para un atacante. Para los JWT de mayor duración, se recomienda encarecidamente seguir los estándares de OAuth para revocar el acceso.

Los desarrolladores y el personal de control de calidad deben incluir una unidad de control de acceso funcional y pruebas de integración.

Ejemplos de escenarios de ataque

Escenario n.º 1: la aplicación utiliza datos no verificados en una llamada SQL que accede a la información de la cuenta:

 pstmt.setString(1, request.getParameter("acct"));
 ResultSet results = pstmt.executeQuery( );

Un atacante simplemente modifica el parámetro ‘acct’ del navegador para enviar cualquier número de cuenta que desee. Si no se verifica correctamente, el atacante puede acceder a la cuenta de cualquier usuario.

 https://example.com/app/accountInfo?acct=notmyacct

Escenario n.º 2: un atacante simplemente fuerza las búsquedas a las URL de destino. Se requieren derechos de administrador para acceder a la página de administración.

 https://example.com/app/getappInfo
 https://example.com/app/admin_getappInfo

Si un usuario no autenticado puede acceder a cualquiera de las páginas, es una falla. Si alguien que no es administrador puede acceder a la página de administración, esto es una falla.

Referencias

Lista de CWE mapeados

CWE-22 Limitación incorrecta de un nombre de ruta a un directorio restringido (‘Path Traversal’)

Recorrido de ruta relativa CWE-23

CWE-35 Recorrido de ruta: ‘…/…//’

CWE-59 Resolución de enlace incorrecta antes del acceso al archivo (“Seguimiento del enlace”)

CWE-200 Exposición de información confidencial a un actor no autorizado

CWE-201 Exposición de información confidencial a través de datos enviados

CWE-219 Almacenamiento de archivos con datos confidenciales bajo Web Root

CWE-264 Permisos, privilegios y controles de acceso (ya no debe usarse)

Problemas de permisos CWE-275

CWE-276 Permisos predeterminados incorrectos

CWE-284 Control de acceso inadecuado

CWE-285 Autorización incorrecta

CWE-352 Falsificación de solicitud entre sitios (CSRF)

CWE-359 Exposición de información personal privada a un actor no autorizado

CWE-377 Archivo Temporal Inseguro

CWE-402 Transmisión de recursos privados a una nueva esfera (“Fuga de recursos”)

CWE-425 Solicitud directa (‘Navegación forzada’)

CWE-441 Apoderado o intermediario no deseado (‘Adjunto confuso’)

CWE-497 Exposición de información confidencial del sistema a una esfera de control no autorizada

CWE-538 Inserción de información confidencial en un archivo o directorio accesible externamente

CWE-540 Inclusión de información confidencial en el código fuente

CWE-548 Exposición de información a través de la lista de directorios

CWE-552 Archivos o directorios accesibles a partes externas

CWE-566 Omisión de autorización a través de la clave principal SQL controlada por el usuario

CWE-601 Redirección de URL a un sitio que no es de confianza (“Abrir redirección”)

CWE-639 Omisión de autorización mediante clave controlada por el usuario

CWE-651 Exposición del archivo WSDL que contiene información confidencial

CWE-668 Exposición del recurso a la esfera incorrecta

CWE-706 Uso de nombre o referencia incorrectamente resueltos

CWE-862 Autorización faltante

CWE-863 Autorización incorrecta

CWE-913 Control inadecuado de recursos de código administrados dinámicamente

CWE-922 Almacenamiento inseguro de información confidencial

CWE-1275 Cookie confidencial con atributo de SameSite inadecuado

Más información: OWASP ORG

Relacionado

ForEach de Javascript: Array para bucles

Como una de las estructuras de control básicas en la programación, los bucles son casi una adición diaria al código que escribimos. El bucle forEach clásico es uno de los primeros fragmentos de código que aprendemos a escribir como programadores. Si fueras un desarrollador de Javascript, sabrías que Javascript no es ajeno a la iteración a través de los elementos de una matriz o un mapa ¡SEGUIR LEYENDO!

10 Mejores alternativas de Sci-hub para descargar artículos de investigación gratis

Como sabemos, Sci-hub es un sitio web increíble con millones de artículos de investigación para todos los estudiantes universitarios y académicos. El sitio web de Sci-Hub se encarga de obtener los artículos de investigación y artículos de pago utilizando las credenciales que se filtran. La fuente de credenciales utilizada por este sitio web no está clara. Sin embargo, se supone que muchas de ellas son donadas, ¡SEGUIR LEYENDO!

10 Características Sorprendentes de Windows que Deberías Conocer en 2024

Aunque haya sido usuario de Windows durante décadas, el sistema operativo es tan amplio y complejo que siempre existen características útiles, pero menos conocidas, que podrían sorprenderte. En este sentido, he identificado diez funciones poco conocidas de Windows que pueden potenciar su eficiencia, comodidad e incluso su experiencia de uso lúdico en su PC.

¡REBAJADO!
Microsoft Surface Go 2 - Portátil 2 en 1 de 10.5 pulgadas Full HD, Wifi, Intel...
  • Procesador Dual-Core Intel Pentium Gold 4425Y (2...
  • Memoria RAM de 8 GB LPDDR3
  • Disco SSD de 128 GB
Todas estas características deberían ser compatibles tanto con Windows 10 ¡SEGUIR LEYENDO!
10 Criptomonedas con Potencial de Crecimiento de Futuro

El rumor en torno a las criptomonedas no se desvanece por mucho que existan grandes pesimistas alrededor de los malos rumores. Entonces, si consideras invertir en el mundo de las criptomonedas, deberías estar atento a las criptomonedas que se espera que tengan un buen desempeño para el resto de 2021. En los últimos tiempos, los tokens DeFi están recibiendo toda la atención y es más que ¡SEGUIR LEYENDO!

10 Empresas de robótica más importantes del mundo

Los cambios de paradigma revolucionarios debido a los desarrollos de la robótica en todo el mundo están generando nuevos puntos de vista en muchos sectores, entre ellos en los de la industria y la tecnología. Con la ayuda de la Inteligencia Artificial, la tecnología produce resultados innovadores cada segundo y el campo de la robótica define y reconfigura su uso a cada instante. Cada día que ¡SEGUIR LEYENDO!

10 Frameworks que los Desarrolladores de Software deberían Aprender 2024

Bienvenidos desarrolladores web y de software, estamos en los inicios de 2023 y es posible que muchos se esten planteado sus objetivos para lo largo del año. Con anterioridad ya he compartidos las rutas de aprendizaje para un desarrollador front-end, un desarrollador full-stack o un desarrollador back-end entre otros muchos contenidos más. En este artículo, me gustaría compartir algunos de los mejores frameworks y bibliotecas para ¡SEGUIR LEYENDO!

10 Repositorio de GitHub que todo Desarrollador Web debería conocer

GitHub es el lugar que debes buscar cuando intentas mejorar como desarrollador, toda la información que necesitas está disponible en algún repositorio que alguien ya se ha molestado en indexar. Sin embargo, la parte complicado es encontrar el repositorio más adecuado. Es fácil sentirse perdido en todos los repositorios disponibles dentro de GitHub. Para ayudarte, he elaborado una lista de 10 repositorios de GitHub que pueden ¡SEGUIR LEYENDO!

Deja un comentario

Salir de la versión móvil