Skip to content

Glossary

Read-Only Reentrancy

Una variante de reentrancy donde un atacante, en una ventana de estado inconsistente, explota una función view que devuelve datos obsoletos sin reentrar ninguna función que cambie el estado.

La read-only reentrancy explota funciones view (solo lectura) que devuelven datos obsoletos mientras otra operación aún está a mitad de ejecución. Los guards clásicos nonReentrant protegen las funciones que cambian el estado, pero dejan los getters sin protección. Así, un atacante puede disparar un callback durante una operación — como retirar liquidez de un pool al estilo Curve — y, desde ese callback, llamar a un getter de precio o de participación que lee un estado a medio actualizar. Los protocolos posteriores que confían en ese getter, como mercados de préstamo y vaults, pueden quedar mal valorados y ser drenados.

Una oleada de incidentes en 2022 contra mercados de préstamo integrados con Curve dio a conocer esta clase. Las defensas incluyen extender el lock de reentrancy a las funciones view, o comprobar el estado del lock del pool antes de leer un valor reportado.