Back to Blog

Beyond the Market Risk: A Logic Bug Identified in SushiSwap's KashiPairMediumRiskV1 Contract

Code Auditing
December 15, 2022

On Nov 08, 2022, we detected that some attacks successfully drained assets from pools that are built on top of Sushi’s official KashiPairMediumRiskV1 contract(or some contracts that fork from it). After investigation, we found that the root cause is due to a logic bug that causes the miscalculation of the token prices.

We immediately contacted Sushi's security team, and they confirmed our findings. The good thing was that they were taking action to protect some valuable but vulnerable pools from being attacked. Besides, they also provided procedures to compensate those that lost funds from the exploit. As such, we now believe it is safe to disclose the details about the vulnerability and the attacks. In this report, we'd like to provide a detailed analysis.

Vulnerability Analysis

After anaylzing the source code of the KashiPairMediumRiskV1 contract, we conclude that this bug lies in the borrow function, which uses the outdated exchangeRate to verify the borrow share in the solvent modifier. Specifically, the verification will be performed based on the current value of exchangeRate in the _isSolvent function.

While in the liquidate function, the updateExchangeRate function is invoked at the very beginning. Hence the verfication and calculation will be performed based on the updated value.

Obviously, this bug could be exploited to lead to a (huge) price difference.

Attack Analysis

We observed two attacks:

  1. 0xcf8f242ea83100b6d43e659f7f53a698d304fc6ac2ca6fe79e3e07ee05fefe58: the victim uses the KashiPairMediumRiskV1 contract, and the loss is around 9,466 USDC.
  2. 0x3d163bfbec5686d428a6d43e45e2626a220cc4fcfac7620c620b82c1f2537c78: the victim is a strategy contract uses CauldronMediumRiskV1 (the fork of KashiPairMediumRiskV1), and the loss is around 110,911 MIM.

Note that, the first attack transaction was launched by a bot which front-runs the original attack transaction: 0x7a845d8d2af7919f5b9e22dd5571305cb5347d17986a8402715c1463d515fc18, and the original attacker address is 0xb7ea0f0f8c6df7a61bf024db21bbe85ac5688005.

Here we take the first attack transaction as an example, which consists of the following steps:

  1. Borrowing a flashloan of 40,900 BADGER and 121,904 USDC from Balancer.
  2. Depositing 40,900 BADGER and 113,599 USDC to BentoBox.
  3. Invoking the addCollateral function of kmBADGER/USDC-LINK to deposit 40,900,000,000,000,000,000,000 shares of BADGER.
  4. Invoking the addAsset function of kmBADGER/USDC-LINK to deposit 112,529,000,000 shares of USDC.
  5. Invoking the borrow function to borrow 120,755,095,093 shares of USDC.
  6. Invoking the UpdateExchangeRate function.
  7. Invoking the liquidate function to liquidate itself.
  8. Withdraw 40,899 BADGER and 123,006 USDC from BentoBox.
  9. Repaying the flashloan and obtaining a profit of about 9466 USDC.

Note that step 6 is not necessary, because the borrow function will invoke the UpdateExchangeRate function.

The key steps are as follows:

It is not difficult to figure that the value of exchangeRate used in the borrow function deviates from the value used in the liquidate function:

  • In the borrow function: 250,997,938,545,109,237,740,214,705,193
  • In the liquidate function: 328,266,883,541,864,569,505,752,156,794

The Impact

There are dozens of pools (on both Ethereum and BSC) that might be affected by this bug. A temporary method to mitigate this issue is to reduce or eliminate the deviation by invoking the UpdateExchangeRate function occasionally (or periodically). This method has already been adopted by many affected projects and the corresponding transactions can be observed in the wild.

Takeaway

Making a DeFi project secure is not an easy job. Besides the code audit, we think the community should take a proactive method to monitor the project status, and block the attack before it even takes place.

About BlockSec

BlockSec is a pioneering blockchain security company established in 2021 by a group of globally distinguished security experts. The company is committed to enhancing security and usability for the emerging Web3 world in order to facilitate its mass adoption. To this end, BlockSec provides smart contract and EVM chain security auditing services, the Phalcon platform for security development and blocking threats proactively, the MetaSleuth platform for fund tracking and investigation, and MetaDock extension for web3 builders surfing efficiently in the crypto world.

To date, the company has served over 300 esteemed clients such as MetaMask, Uniswap Foundation, Compound, Forta, and PancakeSwap, and received tens of millions of US dollars in two rounds of financing from preeminent investors, including Matrix Partners, Vitalbridge Capital, and Fenbushi Capital.

Official website: https://blocksec.com/

Official Twitter account: https://twitter.com/BlockSecTeam

Sign up for the latest updates
~$418M Lost: Bitget, NEAR Intents Exploits | BlockSec Weekly
Security Insights

~$418M Lost: Bitget, NEAR Intents Exploits | BlockSec Weekly

This biweekly security report records eight incidents from September 21 to October 4, 2026, with approximately $418.4M in losses across Ethereum, BNB Chain, Solana, Bitcoin, TRON, XRP Ledger, Zcash, Avalanche, NEAR, and related networks. Detailed analysis covers Bitget's $387.5M third-party security product vulnerability and NEAR Intents' $3.87M refund validation flaw and missing state rollback.

Bitget's $387.5M Off-Chain Breach: Beyond Keys and Contracts
Security Insights

Bitget's $387.5M Off-Chain Breach: Beyond Keys and Contracts

On September 24, 2026, attackers exploited a vulnerability in a third-party security product, obtained internal credentials, and forged withdrawal commands. The resulting transfers moved approximately $387.5M from some of Bitget's operational wallets across Ethereum, other EVM networks, XRP Ledger, Zcash, and TRON; private keys and cold wallets remained intact. This deep dive summarizes the disclosed incident path and fund flow, examines rapid conversion into native assets and the ecosystem recovery response, proposes a systematic defense-in-depth framework for institutions, and explains how authorized blockchain penetration testing can validate cross-layer assumptions.

~$11.3M Lost: Multicall Router, Nostra | BlockSec Weekly
Security Insights

~$11.3M Lost: Multicall Router, Nostra | BlockSec Weekly

This report, covering 2026/09/14 - 2026/09/20, examines two security incidents with approximately $11.3M in combined losses, on Ethereum and Starknet. In the larger one, a multicall router accepted its own address as a dispatch target, so the nested call reached the Gateway module of a Safe wallet carrying the router's own already-authorized identity instead of the external caller's, and roughly 2,900 `aEthrsETH` was routed out of that wallet into an attacker-created Uniswap v4 pool. On Starknet, Nostra's oracle integration required a minimum of only one aggregated source, so when only two of the three configured price sources reached the aggregation, a manipulated thin-pool quote averaged with a normal quote to value `NSTR` at roughly $49.52, supporting approximately $3.5M of borrowing against overvalued collateral.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit