Ataques de manipulación de precios

Los ataques de manipulación de precios son el tipo de ataque más común contra los protocolos de finanzas descentralizadas basados en blockchain. Estos ataques casi siempre se ejecutan utilizando un préstamo flash (flash loan), motivo por el que también se conocen por ese nombre. A pesar de que este tipo de ataque ha sido realizado decenas (si no cientos) de veces y su mecanismo es ampliamente conocido, se siguen poniendo en producción proyectos con las mismas vulnerabilidades que permiten estos ataques. Teniendo en cuenta esta realidad, el protocolo Geminon se ha diseñado de forma que sea seguro ante este tipo de ataques.

Préstamos flash

Los préstamos flash son una característica que fue introducida inicialmente por el protocolo de préstamos Aave en 2020, y poco después por Uniswap v2. Dado que la mayoría de protocolos de préstamo e intercambio descentralizado lanzados en los meses siguientes se inspiraron o fueron copias (forks) de Aave y Uniswap, la funcionalidad de préstamo flash terminó estando disponible por doquier.

Un préstamo flash permite tomar prestada cualquier cantidad de tokens disponible en un contrato inteligente (habitualmente un pool de liquidez en un DEX o un pool de préstamos) sin entregar ninguna garantía siempre que se devuelva en la misma transacción. Por definición esto solo es posible si se utiliza otro contrato inteligente para ejecutar la transacción, por lo que el uso de préstamos flash está reservado a desarrolladores especializados en esta tecnología.

Gracias a los préstamos flash cualquiera con los conocimientos necesarios puede disponer de una cantidad casi ilimitada de liquidez para sus operaciones. La funcionalidad de préstamos flash se creó con el objetivo de dotar a los protocolos descentralizados de una gran liquidez y eficiencia del capital, permitiendo que cualquiera pudiera hacer operaciones de arbitraje de gran importe sin necesidad de tener el capital necesario por adelantado, generando además ingresos extra por comisiones a los protocolos. Sin embargo, esto abrió la puerta también a la posibilidad de que cualquier pudiera realizar ataques de manipulación de precios en la blockchain.

Contramedidas

El protocolo Geminon incorpora varias medidas de seguridad destinadas a mitigar, impedir o disuadir los ataques por préstamo flash contra el protocolo. Tomadas en conjunto, todas estas medidas convierten a Geminon en uno de los protocolos más seguros frente a préstamos flash creados hasta la fecha.

Desde la perspectiva de un ataque dirigido a acuñar una gran cantidad de moneda estable usando un préstamo flash existen cinco mecanismos de seguridad solapados:

  • Limitador de suministro del token GEX

  • Oráculo interno del GLP

  • Oráculo del protocolo

  • Limitador de suministro de la moneda estable

  • Captura de entropía del GLP

Todos estos sistemas funcionan de forma conjunta, de forma que en función del estado en que se encuentre el protocolo y las características del ataque, será más probable que intervenga uno o varios de ellos.

Limitador de suministro del token GEX

Cualquier intento de manipulación del token GEX que implique incrementar artificialmente su precio, provocará la acuñación de una gran cantidad de tokens GEX en los GLP. Esta acuñación masiva instantánea podría disparar el limitador de suministro del token, que está establecido en 5 millones de unidades al día en promedio. La activación del limitador implica que la transacción del ataque revierta, por lo que no tendría ningún efecto sobre el sistema. Para más información sobre el funcionamiento de este mecanismo consultar la sección dedicada:

Limitador de suministro

Oráculo interno del GLP

Los GLP incorporan un oráculo interno desarrollado por Geminon cuyo algoritmo es inmune a las manipulaciones de precio utilizando préstamos flash.

Oráculo interno

Oráculo del protocolo

El contrato del oráculo de Geminon actúa como coordinador del resto de contratos del protocolo. Una de sus funciones es la de agregar los datos de los oráculos de cada uno de los GLP de la red, proporcionando un precio seguro para el token GEX que es el promedio de los oráculos internos de cada GLP. Se trata de una capa adicional de seguridad a los oráculos internos de cada pool, que potencia el efecto del resto de sistemas de seguridad:

  • Incrementa la probabilidad de que se active el limitador de suministro del token GEX, ya que para lograr una misma variación del precio medio de los n pools de la red, es necesario acuñar n veces más tokens GEX que si se tratara de un único pool.

  • Potencia la eficacia del oráculo interno de los GLP, añadiendo una tercera capa de suavizado a las alteraciones puntuales de precios.

  • Potencia la captura de entropía de los GLP, multiplicando el coste y las potenciales pérdidas para el atacante que intenta manipular el precio.

Limitador de suministro de moneda estable

Todas las monedas estables de Geminon incorporan un limitador de suministro como el que utiliza el token GEX. Este sistema sería el último en intervenir en caso de ataque, y aunque también puede provocar que reviertan las transacciones del ataque, se considera más un mecanismo para mitigar el alcance de los ataques limitando el posible impacto en las cuentas del protocolo.

Captura de entropía del GLP

Es una de los sistemas de protección más efectivos del pool, ya que hace que las operaciones de alto impacto en el precio sean irreversibles. En el caso de préstamos flash, esto significa que la transacción revertirá al no poder devolverse el importe íntegro del préstamo, y en los ataques al contado hará que la operación no sea rentable para el atacante. En el siguiente punto se trata en detalle este efecto.

Simulaciones

Dada la importancia de asegurar la seguridad del protocolo frente a los ataques de manipulación de precios, el equipo de Geminon llevó a cabo simulaciones del comportamiento del oráculo interno de un GLP frente a diferentes patrones de ataque mediante préstamo flash. Las simulaciones confirmaron empíricamente el comportamiento esperado del diseño del protocolo.

Configuración

Para las simulaciones se utilizó un único pool aislado, por lo que no se tienen en cuenta las sinergias del uso de varios pools y del oráculo maestro del protocolo. Se simularon series de 100.000 operaciones de importe e intervalo aleatorios, que generaban un crecimiento constante de largo plazo del tamaño del pool, y cada 10.000 operaciones legítimas se introducía un ataque de manipulación con un importe aleatorio entre 1 millón y 1000 millones $, de forma que se probaron ataques en todos los regímenes de liquidez del pool. Se probaron tanto patrones de ataque simple, como ataques con múltiples operaciones que buscaban engañar al oráculo interno del pool para hacerlo reflejar el precio manipulado.

Resultados

  • En más del 50% de los ataques simulados la transacción fue revertida debido a que se disparó en primera instancia el limitador de acuñación del token GEX. En un entorno de varios pools, este porcentaje hubiera sido aún mayor.

  • Ningún patrón de ataque logró manipular el precio seguro del pool dentro del mismo bloque, lo que implica que ningún ataque de préstamo flash habría sido efectivo contra el protocolo, incluso habiendo un único GLP funcionando en la red. En la siguiente figura puede verse la secuencia de precios del pool durante uno de los ataques simulados. Puede verse cómo el ataque produce un pico instantáneo en el precio bruto del pool, mientras que el precio instantáneo del oráculo logra filtrar perfectamente el ataque y el precio seguro permanece inalterado hasta que finaliza. También puede verse como durante las operaciones normales antes y después del ataque, el oráculo refleja fielmente y sin retardos el precio exacto del pool.

  • En el caso de ataques al contado, con duración mayor a un bloque, el precio final del pool terminó siendo mayor debido a que el pool capturó un porcentaje importante del colateral depositado por el atacante, haciendo que el ataque no solo no tuviera éxito sino que produjera beneficios para el protocolo. En el caso de préstamos flash las transacciones hubieran sido revertidas por imposibilidad de devolver el préstamo completo al finalizar la transacción. La siguiente figura muestra la variación de balance del atacante durante el préstamo flash. Puede observarse que termina con un balance inferior al inicial, sin contar con las comisiones.

Last updated