Vulnerabilidad Business logic

www.onlinetis.com
 

Las vulnerabilidades de lógica de negocio son fallos en el diseño e implementación de las reglas y el flujo de trabajo de una aplicación. A diferencia de las vulnerabilidades técnicas, como la inyección SQL, que explotan debilidades en el código o la infraestructura, estas vulnerabilidades se aprovechan de cómo la aplicación maneja sus procesos internos. Un atacante puede manipular la lógica de negocio para realizar acciones no autorizadas, como comprar productos a precio reducido o acceder a datos de otros usuarios.


Tipos comunes de vulnerabilidades de lógica de negocio

Estas vulnerabilidades pueden manifestarse de muchas maneras, dependiendo del tipo de aplicación:

  • Manipulación de precios: Un atacante podría interceptar la solicitud para comprar un producto y cambiar el precio o la cantidad antes de que llegue al servidor. Si el servidor no vuelve a verificar el precio del producto y solo confía en el valor enviado por el cliente, la transacción se completará con el precio manipulado.

  • Acceso a datos de otros usuarios (Insecure Direct Object Reference - IDOR): Si una aplicación utiliza un identificador predecible (como un número secuencial) en la URL o en los parámetros de la solicitud para acceder a la información de un usuario (por ejemplo, misitio.com/perfil?id=123), un atacante podría simplemente cambiar el id para ver la información de otros usuarios.

  • Omisión de pasos en un flujo de trabajo: Algunas aplicaciones tienen un flujo de trabajo que consta de varios pasos, como la compra de un producto (añadir al carrito, ir a la página de pago, confirmar). Si la aplicación no verifica que cada paso se haya completado correctamente y en el orden correcto, un atacante podría omitir pasos críticos, como el pago, y obtener acceso a la siguiente fase del proceso.

  • Escalado de privilegios: Un atacante podría explotar una debilidad en la lógica de negocio para obtener permisos de administrador. Por ejemplo, si en la configuración del perfil de usuario existe un campo booleano (is_admin=false), el atacante podría interceptar la solicitud de actualización de perfil y cambiar el valor a true. Si el servidor no valida que solo los administradores pueden cambiar este valor, el atacante se convertirá en administrador.


Prevención

Para prevenir las vulnerabilidades de lógica de negocio, es fundamental implementar una validación robusta y una lógica a prueba de manipulaciones:

  • Validar la entrada del usuario en el servidor: Nunca confíes en los datos enviados por el cliente. El servidor debe siempre validar y verificar la entrada del usuario, especialmente en procesos críticos como pagos o actualizaciones de información.

  • Usar identificadores de objetos impredecibles: En lugar de usar números secuenciales, utiliza identificadores únicos y aleatorios (GUIDs o UUIDs) para los objetos, como los perfiles de usuario o los pedidos. Esto dificulta que un atacante adivine los identificadores de otros usuarios.

  • Implementar verificaciones de estado: El servidor debe verificar que el usuario ha completado los pasos de un flujo de trabajo en el orden correcto. Por ejemplo, antes de procesar un pago, el servidor debe confirmar que el pedido ha sido creado y que el usuario está autorizado para realizar esa acción.

  • Implementar controles de autorización a nivel de función: Verifica siempre que el usuario que intenta realizar una acción tiene los permisos necesarios. La verificación de permisos debe realizarse en el servidor para evitar que un atacante manipule los roles de usuario.

Entradas populares de este blog

Ciberseguridad y hacking con Whatweb

Como robar contraseñas haciendo un phishing web

Arsenal software hacking NFC