Protección de activos de cola larga en protocolos de préstamos contra ataques de Oracle TWAP
La mayoría de los ataques a los protocolos de préstamos se deben a vulnerabilidades de los contratos inteligentes, lo que da como resultado el robo de cientos de millones de dólares cada año. Los desarrolladores y auditores se han vuelto más cautelosos ante los ataques comunes, mientras que los protocolos se someten a múltiples rondas de revisiones de código y programas de recompensas por errores. Sin embargo, los protocolos de préstamos también enfrentan ataques económicos como resultado de la volatilidad del mercado y problemas de precios, como eventos de desvinculación y manipulación de oráculos.
Para evitar estos ataques, la mayoría de los protocolos solo incluyen activos altamente líquidos y utilizan los proveedores de oráculos más confiables, principalmente Chainlink. Si bien la mayoría de los protocolos de préstamos no utilizan oráculos de precio promedio ponderado en el tiempo (TWAP) de intercambio descentralizado, son una de las opciones más accesibles. Sin embargo, la mayoría de los protocolos no han podido encontrar una metodología segura para usar estos oráculos solos de manera segura, ya que generalmente es demasiado riesgoso en comparación con las alternativas.
Los oráculos de precios Uniswap V3 TWAP se han utilizado en protocolos de préstamos como Inverse Finance, Rari Capital y Euler Finance. Aunque se hace referencia a Uniswap y sus oráculos V3 en repetidas ocasiones a lo largo del informe, otros oráculos TWAP podrían funcionar de manera similar. Estos oráculos tienen una serie de ventajas, como la libertad de integrarse en protocolos y una menor dependencia de controles centralizados, pero las desventajas impiden su uso generalizado.
Existen muchos ejemplos de manipulación de oráculos, especialmente oráculos TWAP, junto con investigaciones que detallan por qué ocurren estos ataques. Por lo general, es problemático cuando la liquidez es inadecuada en la fuente del oráculo, como un pool Uniswap, lo que deja a los protocolos de préstamos que utilizan el oráculo para los precios en riesgo de un ataque.
El equipo de Euler Finance escribió informes, incluido Manipulating Uniswap v3 TWAP Oracles de Michael Bentley , y lanzó un ataque de oráculo.
Los atacantes intentarán limitar el riesgo de fracaso utilizando un préstamo flash para completar el ataque dentro de un bloque. Aunque los préstamos flash permiten a los atacantes utilizar más liquidez de la que podrían tener, es poco probable que tengan éxito en los activos más líquidos dentro de un bloque.
Por ejemplo, la Figura 1 a continuación muestra el costo total (598.850 millones de dólares) de realizar un ataque de un bloque para un impacto del 20 % en el precio del par USDC/WETH con una tarifa del 0,3 %. Debido a las restricciones de préstamo, como los factores de préstamo y de garantía (ratio LTV), los atacantes normalmente necesitarían aumentar o reducir los precios mucho más allá del 20 % para lograr un ataque rentable.
Minimizar la cantidad de bloques para llevar a cabo un ataque es esencial por dos razones. En primer lugar, los atacantes utilizan préstamos flash que deben reembolsarse dentro del mismo bloque. En segundo lugar, cuantos más bloques se produzcan, más probabilidades hay de que el atacante sea objeto de arbitraje, lo que pondría fin al ataque, ya que los operadores verían la diferencia de precio y realizarían una operación para que el precio vuelva a la normalidad antes de que se pueda completar el ataque.
Los activos más utilizados, como USDC, USDT y WETH, suelen ser lo suficientemente líquidos como para evitar un ataque de manipulación del oráculo TWAP, en particular en el caso de los préstamos flash. Esto es más evidente en la red principal de Ethereum, ya que la mayoría de las cadenas de capa dos y otras tienen una liquidez comparativamente menor. Los protocolos de préstamos suelen utilizar oráculos de precios de Chainlink para activos de primera línea de todos modos, ya que vale la pena el costo de proteger estos activos, que suelen establecerse como activos colaterales.
Incluso si los pools más líquidos no tienen suficiente liquidez, hay muchos otros pools en Uniswap y otros DEX que presentan oportunidades de arbitraje instantáneo. La diferencia de precio entre dos tokens altamente líquidos en diferentes pools será corregida por los traders que encuentren manualmente la oportunidad de arbitraje, bots, agregadores o, más probablemente, por el servicio de arbitraje de Uniswap.
El enrutador automático encontrará el mejor precio disponible dividiendo las transacciones entre varios grupos. Esto significa que si un atacante encuentra un grupo de préstamos con depósitos sustanciales que utiliza un grupo de bajo volumen y baja liquidez en Uniswap V3 como su oráculo, el ataque aún podría fallar si los otros grupos para el mismo token tuvieran un alto volumen y liquidez porque la próxima transacción del enrutador automático aprovecharía la oportunidad de arbitraje. Es aún más difícil que el ataque tenga éxito ya que el enrutador automático también puede dividirse entre rutas de otros tokens no relacionados.
También se pueden hacer suposiciones similares sobre pools de alto volumen y baja liquidez. Con baja liquidez, el oráculo del pool puede ser un objetivo vulnerable. Sin embargo, debido al volumen significativo, las transacciones ajustarán constantemente el precio a la tasa del mercado. Por lo tanto, puede ser poco probable que un ataque tenga éxito.
Un atacante también debería considerar la distribución de liquidez en Uniswap V3, ya que los proveedores de liquidez pueden proporcionar liquidez de rango completo o liquidez concentrada. La liquidez de rango completo, que agrega tokens en ambos lados para todo el rango de precios desde cero hasta el infinito, aumenta los costos de un ataque. La liquidez concentrada, un rango específico que puede ser solo unilateral, puede aumentar o disminuir los costos según el precio actual y la asignación de liquidez dentro del rango. El CTO de Wonderland, 0xGorilla, brinda más detalles sobre esto en su artículo.
Un pool Uniswap "seguro" no necesita tener miles de millones de dólares en tokens distribuidos en un rango completo para que el oráculo de precios sea seguro. Considere la Figura 1 anterior, donde costó $598.85 mil millones mover el precio un 20% en un bloque, y aún costaría casi $200 millones en diez bloques. Este pool tiene casi $70 millones en valor total bloqueado. Sin embargo, el spread de este pool no está puramente en el rango completo, ya que gran parte de la liquidez está concentrada, lo que puede aumentar el riesgo.
La herramienta del oráculo de Euler también puede mostrar que 10 millones de dólares moverán el precio casi un 14 % hacia abajo a un costo de 1 millón de dólares y casi un 56 % hacia arriba a un costo de 1,7 millones de dólares para este fondo. Esto sería potencialmente preocupante para su uso como oráculo, pero este fondo del 0,3 % probablemente no sería el fondo principal utilizado en los protocolos de préstamos, ya que el fondo con una tarifa del 0,05 % contiene 129 millones de dólares en TVL y 2400 millones de dólares en volumen de 7 días, según los datos de Uniswap.
Los usuarios deben tener en cuenta los diferentes perfiles de diferencial de liquidez para comprender mejor los riesgos de depositar en protocolos de préstamos que utilizan oráculos de precios TWAP de Uniswap V3. Los gráficos de la Figura 2 muestran varios perfiles de liquidez que un usuario puede encontrar en los pools de Uniswap.
El gráfico LP 1 a continuación muestra un perfil de liquidez que se suele asumir para los pools de Uniswap V3. La liquidez (L) generalmente se concentra alrededor del precio actual (P), pero disminuye a medida que se aleja en cada dirección de los dos tokens, Token01 y Token02.
LP 2 demuestra un perfil típico de par de monedas estables, como USDC/USDT, donde la liquidez está extremadamente concentrada en varios ticks alrededor del precio actual.
LP 3 muestra cómo podría lucir un pool de rango completo sin ticks concentrados de liquidez.
La liquidez en LP 4 se concentra en el lado Token01 del precio actual, lo que hace que sea costoso deshacerse de ella pero más barato bombearla, mientras que LP 5 muestra lo contrario.
Si el protocolo de préstamo permite ambos tokens como garantía, entonces el atacante puede optar por bombear o descargar en la dirección que sea menos costosa y más rentable. Si un activo está aislado y no se puede utilizar como garantía, entonces el atacante solo puede deshacerse de él para obtener ganancias. Hay otras formas de obtener ganancias bombeando un activo aislado, pero puede ser más complejo, costoso o riesgoso en comparación con simplemente deshacerse de un activo aislado en un ataque de oráculo o confiar en otros tipos de metodología de explotación.
LP 6 muestra esto en acción, ya que sería menos costoso cambiar el token del precio anterior (P1) en el punto A al nuevo precio (P0) en el punto B.
Los usuarios deben conocer los niveles de liquidez, el spread y el volumen de transacciones si un protocolo de préstamos utiliza oráculos de precios TWAP de Uniswap V3 para sus pools. Un pool de Uniswap altamente vulnerable para un atacante tendría baja liquidez, bajo volumen, liquidez concentrada lejos del precio objetivo y el precio actual, y ningún otro pool en Uniswap y otros DEX, o al menos pools estructurados de manera similar.
Los pools de activos de cola larga suelen tener una liquidez baja y menores costos de ataque, pero no necesariamente un riesgo menor para un atacante. Si bien un volumen bajo disminuye la posibilidad de que el arbitraje interrumpa un ataque, puede haber una liquidez altamente concentrada y una cantidad baja de tokens circulando en el mercado abierto para adquirir para el ataque. Esto podría hacer que sea inviable para el atacante obtener ganancias.
La rentabilidad de un ataque multibloque depende de que el valor de los tokens en el pool de Uniswap sea menor que el valor de la liquidez en el pool objetivo del protocolo de préstamos. La determinación del valor del pool de Uniswap también debe tener en cuenta el costo de manipular el oráculo si el valor al precio actual del token es demasiado alto. Por lo tanto, el valor del pool de Uniswap puede ser mayor que el valor del pool del protocolo de préstamos, pero si el costo de revertir esto es menor que el valor del pool del protocolo de préstamos, entonces el ataque puede ser rentable.
Una vez que el atacante ha determinado que podrá obtener ganancias, puede determinar si es más eficiente comprar los tokens necesarios para el ataque o tomarlos prestados. Primero, deduciría el costo de comprar los tokens de las ganancias de venderlos en Uniswap en el ataque. Esto probablemente sería una pérdida debido al deslizamiento, dado que están tratando de reducir el precio en un pool de Uniswap con baja liquidez. Sin embargo, el problema también puede ser que no haya suficientes tokens para comprar, o que no tengan suficiente capital para comprar suficientes tokens. Un atacante también puede considerar que una pérdida potencial sería demasiado alta si el costo de comprar suficientes tokens es demasiado alto si el ataque fallara.
Si la compra de tokens es demasiado problemática, el atacante podría tomarlos prestados del protocolo de préstamo en cuestión o de otro. Es más probable que el atacante reduzca los costos tomando prestados los tokens del protocolo de préstamo en cuestión, suponiendo que alguien más no se adelante al ataque. Debido a los cambios de precio por manipular el oráculo, se vuelve progresivamente más barato tomar prestados tokens del protocolo de préstamo en cuestión.
Por último, el atacante consideraría si desea minimizar los bloqueos mientras arriesga más garantías o intentar múltiples rondas de préstamos y ventas para utilizar menos garantías. La situación ideal es encontrar la cantidad mínima de garantías requerida para robar la mayor cantidad de depósitos. Si el precio cambia o el precio no puede bajar más hasta el objetivo previsto, entonces el ataque puede bloquear parte o la totalidad de sus garantías en el protocolo.
Podemos calcular la ganancia potencial suponiendo que el atacante toma prestados tokens del protocolo de préstamo objetivo y los vende para manipular el oráculo de precios en Uniswap. Para ello, debemos considerar las restricciones del protocolo de préstamo, como los factores de préstamo y garantía si tiene ambos, una cantidad de garantía para depositar y la liquidez del grupo de oráculos.
Uso del ataque multibloque
La posición de usuario 1 muestra la cantidad máxima de tokens que el atacante puede pedir prestados en función de la garantía depositada. El atacante vendería la cantidad máxima de tokens prestados en el pool de Uniswap de destino e ingresaría la ganancia y el nuevo precio en la sección Ronda de liquidación 1. La posición de usuario 2 y las rondas de liquidación posteriores muestran los nuevos valores considerando la garantía requerida para el precio del nuevo token prestado.
El objetivo de las rondas adicionales es hacer un seguimiento de la cantidad de tokens que se pueden vender para crear un impacto en el precio deseado si la primera ronda no es suficiente. Los usuarios también pueden determinar cuánta garantía se necesita para lograr un ataque rentable en la menor cantidad de rondas de venta posible. Las secciones adicionales calculan las ganancias si el atacante deja su garantía o finaliza el ataque en una ronda final, y se lleva las ganancias o pérdidas que haya acumulado.
Los usuarios pueden simular diferentes escenarios y construir marcos de riesgo personalizados al trabajar con protocolos de préstamos utilizando oráculos TWAP. Al combinar la herramienta de oráculos de Euler con el Simulador de ataques multibloque, los usuarios también pueden tener una imagen completa de los riesgos potenciales de préstamos flash y ataques multibloque. Además, los usuarios pueden ejecutar numerosas simulaciones para descubrir los parámetros de riesgo de mejores prácticas para los protocolos de préstamos, las categorías de tokens con mayor riesgo de ataques de oráculos, desarrollar sistemas de alerta temprana y más.
Los usuarios pueden automatizar esta hoja de cálculo mediante API, complementos o desarrollar una aplicación basada en los cálculos. El objetivo de una hoja de cálculo es garantizar una metodología que cualquier persona pueda utilizar en el futuro, en caso de que una API o una aplicación se elimine, restrinja o modifique.
El objetivo de esta herramienta es intentar mejorar la conciencia de los riesgos y brindar mayor seguridad para el préstamo de activos de cola larga, que normalmente no están cubiertos por la mayoría de los oráculos. Esta herramienta también ignora el arbitraje y el número exacto de bloques en un ataque, y se centra en contabilizar los posibles costos y ganancias de un ataque de múltiples bloques.
El Simulador de Ataque de Bloques Múltiples contiene una guía de usuario, cálculos y un ejemplo para la comodidad de los usuarios. Haga una copia y edite las celdas azules en la pestaña Simulador.
Si bien existe un gran potencial para crear mercados de préstamos para activos de cola larga, es evidente que los riesgos para permitir oportunidades de préstamos seguras pueden superar los beneficios. Los protocolos deberían al menos ofrecer más herramientas para que los usuarios sean conscientes del nivel de riesgo involucrado. Los activos de cola larga, como las memecoins, los tokens de gobernanza y los lanzamientos de tokens descentralizados, pueden beneficiarse de los mercados de préstamos y los derivados, pero estos tokens también son los más vulnerables a la manipulación.
Se sigue intentando liberar el potencial de préstamos y empréstitos de los activos de cola larga, y se intenta añadir más oráculos, poner límites a los préstamos, crear fondos aislados y retrasar los retiros. Es incierto que los controles de volatilidad funcionen en los activos más ilíquidos porque es probable que el control no pueda distinguir entre los movimientos de precios genuinos y los que tienen como objetivo manipular el oráculo.
Varios protocolos de préstamos han analizado la posibilidad de crear préstamos basados en plazos. Sin embargo, el problema fundamental de la creación de deudas incobrables sigue existiendo y los prestamistas tendrían que estar dispuestos a aceptar ese riesgo. Si bien este estudio no profundiza en esta área de los protocolos de préstamos, los protocolos basados en tasas de interés variables siguen dominando el mercado.
Las posibles soluciones podrían considerar el análisis del volumen de Uniswap, el diferencial de liquidez y la cantidad de tokens para determinar el riesgo en los mercados de préstamos y empréstitos de cola larga. Los mercados a los que se les otorguen calificaciones de riesgo más altas podrían bloquearse o limitarse hasta que se proporcione más liquidez al grupo de oráculos en Uniswap. Algunos de estos factores se utilizaron en el sistema de calificación de oráculos de Euler V1.
Se están desarrollando otras soluciones, como los ganchos de Uniswap V4, y las actualizaciones y revisiones de protocolos existentes, como Euler V2 y Bunni. Los oráculos de precios también pueden volverse más eficientes al utilizar otros tipos de intercambios descentralizados, como los creadores de mercado automatizados ponderados en el tiempo (TWAMM) o el protocolo de préstamos basado en libros de órdenes descrito por Bedlam Research. Plataformas como Kamino Finance muestran una serie de medidas de control de riesgos, incluido el LTV dinámico, mientras que otros protocolos, como GammaSwap, Timeswap y Ammalgam, ofrecen soluciones sin oráculos y de otro tipo.
En última instancia, si sólo hay una fuente de precios que es de escasa liquidez, casi ninguna cantidad de controles de riesgo puede hacer que sea segura y financieramente viable para los participantes del protocolo de préstamo.