es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo evitar el ataque de stack en el caso de ausencia de EIP-150?

Mientras que antes de EIP-150, ¿podríamos evitar el ataque de la pila de llamadas verificando si el valor de retorno de las funciones de bajo nivel .send(), .call(), .delegatecall() y .staticcall() es falso o no?

Por ejemplo (msg.sender es un contrato):


msg.sender.send(amount);

cambiando a:


if(!msg.sender.send(amount)) revert Error(“¡La llamada falló!”);

Contrato completo en:
https://hackernoon.com/smart-contract-attacks-part-2-ponzi-games-gone-wrong-d5a8b1a98dd8

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Antes de EIP-150, no era posible prevenir completamente el ataque de la pila de llamadas mediante la verificación del valor de retorno de funciones de bajo nivel como .send(), .call(), .delegatecall() y .staticcall(). La razón de esto es que estas funciones no revierten en caso de fallo. Por lo tanto, los atacantes podrían aprovechar esta vulnerabilidad enviando una serie de llamadas recursivas, lo que eventualmente provocaría un desbordamiento de pila y causaría un fallo en el contrato.

    Sin embargo, todavía era posible mitigar el riesgo de un ataque a la pila de llamadas agregando verificaciones y salvaguardias adicionales al código del contrato. Por ejemplo, los desarrolladores podrían implementar un límite en el número de llamadas recursivas permitidas o usar una bandera para hacer un seguimiento de la profundidad de la pila de llamadas y evitar un desbordamiento de pila.

    Con la introducción de EIP-150, se modificó el opcode CALL para incluir un nuevo mecanismo de costo de gas, lo que dificultó que los atacantes aprovecharan la vulnerabilidad de la pila de llamadas. Específicamente, el nuevo mecanismo de costo de gas incentiva el uso de llamadas estáticas, que no crean un nuevo marco de pila de llamadas y, por lo tanto, evitan las llamadas recursivas.

    En resumen, aunque antes de EIP-150 no era posible prevenir completamente el ataque de la pila de llamadas mediante la verificación del valor de retorno de funciones de bajo nivel, los desarrolladores aún podían mitigar el riesgo mediante la implementación de verificaciones y salvaguardias adicionales. Con la introducción de EIP-150, el riesgo de ataques a la pila de llamadas se ha reducido significativamente debido al nuevo mecanismo de costo de gas.

Comments are closed.