📈 Get daily crypto insights that make you smarter about your money

Dexodus Finance Loses 291K in Stale Oracle Exploit on Base Network

On May 26, 2025, Dexodus Finance — a perpetual derivatives protocol operating on the Base Network — fell victim to a price manipulation exploit that drained approximately $291,000 from its liquidity pools. The attack exploited a critical vulnerability in the protocol’s oracle integration, specifically the absence of a data freshness check in the performUpkeep() function. With Bitcoin trading near $109,400 and Ethereum around $2,564 at the time, the incident served as a stark reminder that even well-audited DeFi protocols remain vulnerable to subtle oracle misconfigurations.

The Exploit Mechanics

The attacker exploited improper freshness validation of Chainlink oracle reports passed through performUpkeep() calls. The core vulnerability allowed the attacker to supply a valid but stale Chainlink price report — approximately one month old — to enter a leveraged long position at an artificially low price of roughly $1,816. They then immediately closed the position at the correct higher market price of approximately $2,520 within the same transaction. This single-transaction attack netted the exploiter roughly $300,000 in profit while draining the protocol’s liquidity pool to approximately $1,000.

The stale report was cryptographically valid and fell within Chainlink’s validity window, which can extend up to a month according to the Chainlink Data Streams guide. The verify() function decoded the signedReport, extracting reportContext and reportData, but critically failed to validate reportContext[1] to ensure the epoch and round were recent. This oversight meant a report from weeks prior could be resubmitted and accepted as if it represented current market conditions.

Affected Systems

The exploit targeted Dexodus Finance’s perpetuals market liquidity pool, which features a weighted WETH/USDC pool designed to automatically rebalance to market prices. The protocol also supports custom index trading through what it calls Dexodus indices. The vulnerability was classified under OWASP SC02:2025 Price Oracle Manipulation, highlighting its significance within the broader smart contract security landscape. On-chain records show the attacker’s address as 0x863D3, with the victim contract at 0x1A84d, and the attack transaction logged at 0x6ffb4 on Base.

The incident follows a devastating month for DeFi security, with May 2025 recording $275.9 million in total losses across just eight incidents, including the catastrophic $260 million Cetus Protocol exploit on Sui just days earlier. Dexodus, while smaller in scale, demonstrated the same fundamental pattern: a protocol trusting external data without sufficient validation safeguards.

The Mitigation Strategy

Preventing stale oracle exploits requires implementing application-level freshness checks that go beyond cryptographic validity. Protocols must verify that the timestamp embedded in oracle reports falls within an acceptable window — typically seconds or minutes for high-frequency trading applications, not the weeks-long validity window that Chainlink’s infrastructure permits. The Chainlink Data Streams guide explicitly warns developers to implement their own application-level checks to ensure data freshness, a warning that Dexodus failed to heed.

Specific mitigation measures include comparing the oracle report’s epoch and round against recently observed values, setting maximum age thresholds for price data, and implementing circuit breakers that halt trading when price deviations exceed defined thresholds between consecutive oracle updates. Cross-referencing multiple oracle sources can also provide additional validation layers.

Lessons Learned

The Dexodus exploit reinforces several critical lessons for the DeFi ecosystem. First, cryptographic validity does not equal data relevance — a signed oracle report may be authentic yet dangerously outdated. Second, protocols built on top of oracle infrastructure must treat oracle data as untrusted input requiring its own validation logic. Third, the OWASP Smart Contract Top 10 provides a valuable framework for categorizing and addressing these vulnerabilities systematically.

Notably, the Dexodus finance team responded quickly, collaborating with security teams to investigate the incident and announcing plans to refund all affected users. This rapid response, while commendable, does not replace the need for preventative measures implemented during the development and audit phases.

User Action Required

Users who had funds in Dexodus Finance’s perpetuals market liquidity pool should monitor official Dexodus communications for refund procedures. More broadly, DeFi users should evaluate whether the protocols they use have implemented proper oracle freshness checks — a detail often overlooked in public documentation but critical for fund safety. As the DeFi ecosystem continues to process over $275 million in monthly losses, due diligence on oracle security practices has never been more important.

Disclaimer: This article is for informational purposes only and does not constitute financial or investment advice. Always conduct your own research before interacting with DeFi protocols.

🌱 FOR BUSINESSES BitcoinsNews.com
Reach 100K+ Crypto Readers
Sponsored content, press releases, banner ads, and newsletter placements. Put your brand in front of Bitcoin's most engaged audience.

12 thoughts on “Dexodus Finance Loses 291K in Stale Oracle Exploit on Base Network”

  1. base_builder_

    a whole month old oracle report accepted as valid. the freshness check was literally a one line comparison. devastating for $291k

    1. base_builder_ a one line timestamp comparison. $291K gone because someone forgot to check if the price feed was from this month. devastating is an understatement

    1. Sofia Petrova

      gas_tracker_ formal verification would catch missing freshness checks. this is the third oracle exploit this month on Base alone

      1. Sofia third oracle exploit on Base this month is a pattern not an accident. Teams treat Chainlink as magic instead of adding basic staleness guards. Base low fees attract new devs but security maturity is lagging behind deployment speed.

  2. accepting a month-old Chainlink report in performUpkeep is wild. the freshness check is literally one require statement. this is basic oracle 101 stuff

    1. Kostya V. literally one require(block.timestamp – reportTime <= MAX_AGE) and K is saved. Audit firms should be catching this in sleep. There is no excuse for a protocol handling real funds to skip this.

  3. Chainlink allowing validity windows up to a month is the real root cause here. Protocols should not have to build custom freshness checks on top of an oracle that should be authoritative. The default should be minutes not weeks.

Leave a Comment

Your email address will not be published. Required fields are marked *

BTC$64,590.00+0.8%ETH$1,766.33+2.5%SOL$74.14+1.3%BNB$596.82+1.6%XRP$1.15+0.4%ADA$0.1616+0.4%DOGE$0.0842+1.5%DOT$0.9691+0.5%AVAX$6.35+1.5%LINK$8.07+1.8%UNI$3.05+1.0%ATOM$1.83+3.0%LTC$45.19+0.5%ARB$0.0861+3.0%NEAR$2.16-3.2%FIL$0.8100+0.5%SUI$0.7342+4.2%BTC$64,590.00+0.8%ETH$1,766.33+2.5%SOL$74.14+1.3%BNB$596.82+1.6%XRP$1.15+0.4%ADA$0.1616+0.4%DOGE$0.0842+1.5%DOT$0.9691+0.5%AVAX$6.35+1.5%LINK$8.07+1.8%UNI$3.05+1.0%ATOM$1.83+3.0%LTC$45.19+0.5%ARB$0.0861+3.0%NEAR$2.16-3.2%FIL$0.8100+0.5%SUI$0.7342+4.2%
Scroll to Top