Volver al blog

La causa raíz real del incidente de seguridad de Vee Finance

Code Auditing
22 de septiembre de 2021
4 min de lectura

VEE finance ha publicado un informe sobre el reciente incidente de seguridad. En el informe, afirman que la causa principal es "Manipular el precio de la máquina oracle de Vee Finance y la adquisición del precio de la máquina oracle no fueron procesados para decimales, lo que resultó en que la verificación de deslizamiento esperada antes del intercambio no funcionara."

"La causa principal del accidente fue que en el proceso de crear una orden para trading con apalancamiento, solo se utilizó el precio del pool de Pangolin por el oracle como fuente de alimentación de precios, y el precio del pool fluctuó más del 3%. El oracle actualizó el precio, lo que provocó que el atacante manipulara el precio del pool de Pangolin. Manipular el precio de la máquina oracle de Vee Finance y la adquisición del precio de la máquina oracle no fueron procesados para decimales, lo que resultó en que la verificación de deslizamiento esperada antes del intercambio no funcionara." — citado del informe publicado por VEE finance.

Sin embargo, después de nuestra cuidadosa investigación, encontramos que esto puede NO ser el caso. La razón real es que el atacante crea un ctokenB FALSO y lo pasa al contrato. Dado que el ctokenB está controlado por el atacante, puede devolver un token subyacente arbitrario que se utiliza para calcular el precio del token. Esta es la verdadera causa raíz del ataque.

El Proceso Completo

Existe una función externa llamada createOrderERC20ToERC20 que puede ser invocada por cualquier usuario para crear un intercambio de tokens, utilizando el ctoken obtenido al depositar el colateral en el contrato. El ctoken tiene un token subyacente que representa el token real.

En un caso normal, al invocar createOrderERC20ToERC20 para intercambiar un par de tokens usando apalancamiento, la dapp necesita asegurarse de que la operación no genere ninguna pérdida (de lo contrario, la dapp perderá dinero). Esto se aplica invocando la función getAmountOutMin.

Supongamos que depositamos 0.95 ETH en la dapp y obtenemos un ctoken que vale 0.5 ETH (Sobrecolateralización). Luego podemos usar el apalancamiento de 3x para pedirle a la dapp que intercambie 1.5 ETH por otro token (digamos tokenX), en nombre del usuario. En este caso, para prevenir pérdidas, la dapp necesita asegurarse de que el valor del tokenX intercambiado no pueda estar por debajo de 0.95* 1.5ETH (de lo contrario, la dapp tiene el riesgo de perder dinero). La dapp utiliza un oracle de precios externo para calcular el valor de ETH y tokenX.

Sin embargo, la función createOrderERC20ToERC20 no valida el ctokenB pasado. Por lo tanto, el atacante podría implementar su propio contrato como ctokenB y proporcionárselo a la función createOrderERC20ToERC20. Como resultado, este ctokenB falso puede devolver el token subyacente como LINK (0x5947bb275c521040051d82396192181b413227a3) cuando es invocado en createOrderERC20ToERC20 y getAmountOutMin, pero devolver el token subyacente como BTC cuando es invocado en IPriceOracle(oracle).getUnderlyingPrice(createParams.ctokenB). Por lo tanto, puede eludir la verificación isRightPrice — ya que el token utilizado para calcular el precio es BTC (en lugar de LINK). Esto puede confirmarse por el valor devuelto del priceB — 0x15e1549d1216fe9fc032e7c00000 (443783124870000000000000000000000). Este es el precio de BTC.

Conclusión

En resumen, el atacante explota la verificación faltante del ctokenB. Dado que el ctokenB no es de confianza, el token subyacente devuelto por ctokenB no puede ser confiable. Sin embargo, el oracle de precios NO fue comprometido en este ataque.

Lección Aprendida

Hacer que un proyecto DeFi sea seguro no es una tarea fácil. Además de la auditoría de código, creemos que la comunidad debería adoptar un método proactivo para monitorear el estado del proyecto y bloquear el ataque antes de que ocurra.

Acerca de BlockSec

BlockSec es una empresa pionera en seguridad blockchain establecida en 2021 por un grupo de expertos en seguridad de renombre mundial. La empresa está comprometida con mejorar la seguridad y usabilidad del emergente mundo Web3 con el fin de facilitar su adopción masiva. Con este fin, BlockSec ofrece servicios de auditoría de seguridad de contratos inteligentes y cadenas EVM, la plataforma Phalcon para el desarrollo de seguridad y el bloqueo proactivo de amenazas, la plataforma MetaSleuth para el rastreo e investigación de fondos, y la extensión MetaSuites para que los desarrolladores de web3 naveguen eficientemente en el mundo cripto.

Hasta la fecha, la empresa ha prestado servicios a más de 300 distinguidos clientes como MetaMask, Uniswap Foundation, Compound, Forta y PancakeSwap, y ha recibido decenas de millones de dólares estadounidenses en dos rondas de financiación de inversores prominentes, incluyendo Matrix Partners, Vitalbridge Capital y Fenbushi Capital.

Sitio web oficial: https://blocksec.com/

Cuenta oficial de Twitter: https://twitter.com/BlockSecTeam

Apúntate para recibir las novedades
Pérdidas de ~5,57 millones USD: exploits de X100 Freezer y NEM | Resumen semanal de BlockSec
Security Insights

Pérdidas de ~5,57 millones USD: exploits de X100 Freezer y NEM | Resumen semanal de BlockSec

Este informe semanal cubre dos incidentes de seguridad ocurridos en Ethereum y BNB Chain durante el período 19/10/2026–25/10/2026. Examina una toma de control de la gobernanza de X100 Freezer financiada mediante un préstamo flash y un fallo en la liquidación de impuestos que afectó a un pool de liquidez de un token NEM en BNB Chain. Las pérdidas estimadas dentro del alcance del informe suman aproximadamente 5,57 millones USD: ~4,75 millones USD de la transacción representativa de X100 y ~820 mil USD del incidente del pool de NEM. El total excluye las extracciones posteriores de X100 reportadas por separado.

Pérdidas de aproximadamente 3,87 millones USD: hackeos de Autheo Network y UNCX | Resumen semanal de BlockSec
Security Insights

Pérdidas de aproximadamente 3,87 millones USD: hackeos de Autheo Network y UNCX | Resumen semanal de BlockSec

Este informe semanal cubre 3 incidentes de seguridad correspondientes al período 12/10/2026–18/10/2026, con pérdidas totales estimadas en aproximadamente 3,87 millones USD. Autheo Network sufrió una vulneración de clave privada con pérdidas de aproximadamente 1,76 millones USD; Qubic Wallet perdió aproximadamente 1,30 millones USD debido a la generación de una semilla débil; y los contratos Smart Token Vesting V2 de UNCX Network sufrieron un error contable con pérdidas de aproximadamente 807 mil USD en Ethereum, BNB Chain, Base y Robinhood Chain. El análisis destacado de UNCX explica cómo un cálculo agregado de participaciones defectuoso mezcló tramos de adquisición de derechos creados con distintas proporciones entre tokens y participaciones, lo que permitió retiros excesivos de pools compartidos.

Pérdidas de ~542.000 dólares: explotación de MakerDaoBot | Resumen semanal de BlockSec
Security Insights

Pérdidas de ~542.000 dólares: explotación de MakerDaoBot | Resumen semanal de BlockSec

Ethereum (05–11/10/2026): 1 incidente; pérdida estimada de $542 mil. MakerDaoBot, sin control de acceso, dio a un adaptador malicioso acceso a sus saldos MakerDAO. Este cerró 4 subastas ETH-A y convirtió 200 ETH-A en WETH; el atacante los cambió por 200 ETH y se los envió.

El mejor auditor de seguridad para Web3

Valida el diseño, el código y la lógica de negocio antes del lanzamiento, siguiendo los estándares de seguridad más exigentes del sector.

Auditoría de BlockSec