Volver al blog

Más allá del Riesgo de Mercado: Un Error Lógico Identificado en el Contrato KashiPairMediumRiskV1 de SushiSwap

Code Auditing
15 de diciembre de 2022
4 min de lectura

El 08 de noviembre de 2022, detectamos que algunos ataques lograron drenar activos de pools construidas sobre el contrato oficial KashiPairMediumRiskV1 de Sushi (o algunos contratos derivados de él). Tras la investigación, encontramos que la causa raíz se debe a un error de lógica que provoca el cálculo incorrecto de los precios de los tokens.

Inmediatamente contactamos al equipo de seguridad de Sushi, quienes confirmaron nuestros hallazgos. Lo positivo fue que estaban tomando medidas para proteger algunas pools valiosas pero vulnerables de ser atacadas. Además, también proporcionaron procedimientos para compensar a quienes perdieron fondos por el exploit. Por ello, ahora creemos que es seguro divulgar los detalles sobre la vulnerabilidad y los ataques. En este informe, nos gustaría proporcionar un análisis detallado.

Análisis de Vulnerabilidad

Tras analizar el código fuente del contrato KashiPairMediumRiskV1, concluimos que este error se encuentra en la función borrow, que utiliza el exchangeRate desactualizado para verificar la participación del préstamo en el modificador solvent. Específicamente, la verificación se realizará basándose en el valor actual de exchangeRate en la función _isSolvent.

Mientras que en la función liquidate, la función updateExchangeRate se invoca al principio. Por lo tanto, la verificación y el cálculo se realizarán basándose en el valor actualizado.

Obviamente, este error podría ser explotado para generar una (gran) diferencia de precio.

Análisis del Ataque

Observamos dos ataques:

  1. 0xcf8f242ea83100b6d43e659f7f53a698d304fc6ac2ca6fe79e3e07ee05fefe58: la víctima utiliza el contrato KashiPairMediumRiskV1, y la pérdida es de aproximadamente 9.466 USDC.
  2. 0x3d163bfbec5686d428a6d43e45e2626a220cc4fcfac7620c620b82c1f2537c78: la víctima es un contrato de estrategia que utiliza CauldronMediumRiskV1 (el fork de KashiPairMediumRiskV1), y la pérdida es de aproximadamente 110.911 MIM.

Tenga en cuenta que la primera transacción de ataque fue lanzada por un bot que hace front-run a la transacción de ataque original: 0x7a845d8d2af7919f5b9e22dd5571305cb5347d17986a8402715c1463d515fc18, y la dirección del atacante original es 0xb7ea0f0f8c6df7a61bf024db21bbe85ac5688005.

Aquí tomamos la primera transacción de ataque como ejemplo, que consta de los siguientes pasos:

  1. Solicitar un préstamo flash de 40.900 BADGER y 121.904 USDC de Balancer.
  2. Depositar 40.900 BADGER y 113.599 USDC en BentoBox.
  3. Invocar la función addCollateral de kmBADGER/USDC-LINK para depositar 40.900.000.000.000.000.000.000 participaciones de BADGER.
  4. Invocar la función addAsset de kmBADGER/USDC-LINK para depositar 112.529.000.000 participaciones de USDC.
  5. Invocar la función borrow para pedir prestadas 120.755.095.093 participaciones de USDC.
  6. Invocar la función UpdateExchangeRate.
  7. Invocar la función liquidate para liquidarse a sí mismo.
  8. Retirar 40.899 BADGER y 123.006 USDC de BentoBox.
  9. Reembolsar el préstamo flash y obtener una ganancia de aproximadamente 9.466 USDC.

Tenga en cuenta que el paso 6 no es necesario, porque la función borrow invocará la función UpdateExchangeRate.

Los pasos clave son los siguientes:

No es difícil notar que el valor de exchangeRate utilizado en la función borrow se desvía del valor utilizado en la función liquidate:

  • En la función borrow: 250.997.938.545.109.237.740.214.705.193
  • En la función liquidate: 328.266.883.541.864.569.505.752.156.794

El Impacto

Hay decenas de pools (tanto en Ethereum como en BSC) que podrían verse afectadas por este error. Un método temporal para mitigar este problema es reducir o eliminar la desviación invocando la función UpdateExchangeRate ocasionalmente (o periódicamente). Este método ya ha sido adoptado por muchos proyectos afectados y las transacciones correspondientes pueden observarse en la práctica.

Conclusión

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 la usabilidad para el emergente mundo Web3 con el fin de facilitar su adopción masiva. Con este fin, BlockSec proporciona servicios de auditoría de seguridad para contratos inteligentes y cadenas EVM, la plataforma Phalcon para el desarrollo de seguridad y el bloqueo proactivo de amenazas, la plataforma MetaSleuth para el seguimiento e investigación de fondos, y la extensión MetaDock para que los constructores de web3 naveguen eficientemente en el mundo cripto.

Hasta la fecha, la empresa ha servido a más de 300 clientes distinguidos 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
Más allá del Riesgo de Mercado: Un Error Lógico Identificado en el Contrato KashiPairMediumRiskV1 de SushiSwap