La red Blockchain es segura, pero no las aplicaciones o integraciones .

Las aplicaciones o integraciones de las blockchain

Al evaluar la seguridad de una aplicación web basada en blockchain, se observó que algunas de las funciones eran vulnerables a la transferencia de ETH no autenticada desde una billetera de administrador a la billetera del atacante. La aplicación web era una aplicación de reserva donde un usuario puede reservar boletos y pagar con un token criptográfico. Además, la aplicación se ha integrado con el marco Metamask para admitir transacciones Web3 en la cadena de bloques.

Picture 1

Metodo de trabajo

  1. Usuario Inicia la función de reserva de billetes. Digamos que un boleto (T1) requiere un pago de (0.1 ETH) para ser transferido a la billetera del administrador.
  2. La aplicación web envía la solicitud de transferencia 0.1ETH de la billetera Metamask incorporada.
  3. El usuario firma la transacción desde Metamask.
  4. Después de una transacción exitosa de 0.1ETHla aplicación web confirma el pago con una llamada API POST a https://Redactado.com/api/v1/wallet/metamask_send_token

Picture 12

  1. Ahora que la aplicación tiene una confirmación de transacción exitosa de Metamask, el boleto se reserva para el usuario a través de una solicitud POST

https://Redactado.com/api/v1/booking/book_ticket/

Picture 3

  1. Esta solicitud POST es para una transacción exitosa. Contiene dos parámetros, es decir transacción_hash y entradas_totales. Se identifica que estos dos parámetros no están mapeados juntos.
  2. Ya que solo verifica el transacción_hash, el otro parámetro se puede manipular para reservar varios billetes con el mismo importe.
  3. Un usuario malintencionado puede alterar el “entradas_totales » parámetro y puede reservar cualquier número de boletos solo para 0.1ETH. Para este ejemplo dado, hemos reservado 100 boletos para 0.1ETH.
  4. Si bien se aprovecha aún más la vulnerabilidad, se ha identificado que existe una función que permite al usuario cancelar la reserva y obtener el reembolso correspondiente.
  5. Cuando un usuario cancela el ticket reservado, el servidor principal solo valida si el ticket reservado es válido o no. Una vez que la verificación es exitosa, se inicia el reembolso.
  6. Las siguientes funciones se realizan al acceder a este flujo de funciones:
    • Get_total_booked_ticket()
    • Reembolso()
  7. Si la billetera de los usuarios contiene identificaciones de boletos válidas, el servidor subyacente ejecuta una solicitud POST enviada al punto final: https://Redactado.com/api/v1/booking/cancel_ticket/ con ID de usuario y “Identificación de entradas” como parámetros. El servidor backend recupera el valor del ticket del “Identificación de entradas” y envía el ETH a la billetera del usuario.

Picture 4

  1. Todas las transacciones de reembolso/compra se dirigen a/desde la billetera del administrador
  2. Dado que la llamada a la API carece de un mapeo adecuado entre sus parámetros de consulta y no realiza transacciones que coincidan con los números de los boletos, un usuario malintencionado puede aprovechar fácilmente esta falla para aumentar drásticamente la cantidad de boletos y obtener un reembolso mayor que el monto gastado.
  3. Aquí, se han reservado más de 100 boletos para la compra de un boleto que cuesta 0.1 ETH. Al iniciar un reembolso, cualquier monto puede recuperarse simplemente cambiando la cantidad de boletos.
  1. Dado que hubo una gran cantidad de boletos válidos en este caso, un pirata informático puede recuperar hasta 10ETH (100*0.1=10) de las carteras de administración y agotar ETH de la cartera de administración.

Picture 5

  1. Esta falla de pago se confirmó al verificar los hashes de blockchain de Etherscan (un sitio web que rastrea todas las transacciones de blockchain basadas en Ether)

Picture 6

Conclusión

La red Blockchain es de hecho difícil de penetrar porque Blockchain tiene la red segura para construir DAPPS, pero el arquitectura de la aplicación, código fuente, flujos de trabajo y configuraciones siempre están abiertos a este tipo de ataques. Es necesario aplicar auditorías y evaluaciones de seguridad periódicas para descubrir vulnerabilidades y errores en el flujo de trabajo. Una pequeña falla puede provocar que el token no autenticado se drene de las billeteras, lo que afectará negativamente a los usuarios y a toda la comunidad.

La red post Blockchain es segura! Pero no fueron las aplicaciones y sus integraciones lo primero que apareció en WeSecureApp: Simplifying Enterprise Security.

Escrito por Keyur Talati

Source link

Deja un comentario