Juan Fuente

jfuentet@gmail.com

Griefing

Weth permit

Ataque_de_Griefing._Seguridad_en_los_smart_contracts_en_Ethereum_y_blockchain_con_Solidity._By_Juan_Fuente_

Los ataques de griefing a los contratos inteligentes son una forma de explotación que se enfoca en la lógica de negocio de los contratos, causando un impacto negativo en su funcionamiento sin proporcionar beneficios directos para los atacantes. Estos ataques pueden interrumpir las operaciones del sistema o crear desorden en determinados momentos. 

Estos ataques se producen cuando se manipula o interfiere con las operaciones de un contrato inteligente de manera que modifique el modo normal de comportamiento. Esto puede incluir la interrupción de transacciones, la manipulación del estado del contrato para consumir recursos excesivos, o la activación de resultados no deseados.

Ejemplo:

Ataque_de_Griefing._Seguridad_en_los_smart_contracts_en_Ethereum_y_blockchain_con_Solidity._By_Juan_Fuente

En este caso concreto, el ataque podría ser el siguiente:

  1. Cada depósito que se realice en este contrato  necesita un tiempo de espera antes de poder retirarlo. Solo se podrá retirar una vez se cumpla el plazo.
  2. Un atacante realiza múltiples depósitos antes de que se cumpla el período de retiro.
  3. Cada depósito reinicia el contador de tiempo de lastDeposit, lo que significa que el período de retiro se retrasa aún más. Los fondos se bloquean el tiempo que el atacante quiera.

Para mitigar este tipo de ataque, se pueden implementar medidas adicionales en el contrato, como establecer un límite en la cantidad de depósitos permitidos en un período de tiempo determinado, o cambiar el mecanismo a uno de retiro escalonado que permita al beneficiario retirar una parte de los fondos en intervalos regulares.

Otros modos de reducir la exposición a los ataques de griefing podrian ser:

 – Validación de Gas: Asegurarse de que las transacciones y llamadas a otros contratos tengan suficiente gas para completarse correctamente. Esto puede prevenir ataques  relacionados con la insuficiencia de gas que puedan dejar nuestras transacciones sin completar. 

 – Verificación de Retorno de Llamadas: Verificar el éxito de las llamadas a otros contratos es importante. Asegurarse de que se completan como se espera debe prevenir la ejecución parcial de transacciones que generen estados inconsistentes.

Estos ataques representan un sabotaje para el correcto funcionamiento de los contratos inteligentes. Es importante tenerlo en cuenta y adoptar defensas adecuadas  en la medida de lo posible. 

También puedes ver este mismo artículo en Linkedin aqui.