XUT_ / COURSES / PENETRATION TESTER

Vulnerability VI - Mass Assignment

¿Cómo Ocurre?

Mass Assignment refleja un escenario donde la información del lado del cliente se relaciona automáticamente con objetos o variables del lado del servidor. Los hackers explotan esta cualidad entendiendo la lógica de negocio de la aplicación y mandando información especialmente construida al servidor, adquiriendo permisos administrativos o insertando información alterada.


Impacto Posible

El ataque puede resultar en manipulación de información y escalada de privilegios desde un usuario normal a un administrador.


Ejemplo Práctico

  1. A Bob le han asignado desarrollar un endpoint API de registro /apirule6/user que tomará el nombre, nombre de usuario y contraseña como parámetros de input (POST). La tabla de usuarios tiene una columna credit con un valor de 50. Los usuarios mejorarán su suscripción para tener un valor más alto.
  2. Bob ya ha diseñado el formulario y usado la funcionalidad de mass assignment en Laravel para guardar toda la información proveniente del lado del cliente a la base de datos. Vulnerability VI - Mass Assignment
  3. El problema aquí es que Bob no está filtrando del lado del servidor. Como está usando la funcionalidad de mass assign, también está introduciendo valores de crédito en la base de datos que los atacantes pueden modificar.
  4. La solución es asegurarse de que se filtra del lado del servidor /apirule6/user_s y que el valor por defecto de crédito debe ser 50 incluso si se introduce otro valor del lado del cliente. Vulnerability VI - Mass Assignment

Medidas de Mitigación

  • Antes de usar cualquier framework, debes estudiar cómo las inserciones y actualizaciones del backend se realizan. En el framework Laravel, los arrays fillable y guarded mitigan dichos escenarios.
  • Evita usar funciones que relacionen un input de un cliente a variables de código automáticamente.
  • Permite el cambio sólo de aquellas variables que deban ser actualizadas del lado del servidor.