📈 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.

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

  1. performUpkeep with no staleness check is beginner level stuff. how does something like that pass a mainnet deployment review

    1. Greta W. the fact that it passed mainnet deployment review means nobody on the team understood oracle basics. not a bug, an education gap

  2. 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

  3. exploit_archivist_

    one month old chainlink price report accepted without freshness check. thats like a bank accepting a check from last month because the signature looks valid

  4. the attacker opened a long at $1816 using the stale price then closed at the real $2520 price. single transaction, $300k profit. brutally simple

    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.

        1. oracle_truther_

          Rashid O. its not just Base. every L2 with low fees attracts teams that ship fast and audit later. same story on Arbitrum last cycle

  5. 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.

      1. reentrancy_rat

        defi_auditor_ literally one line of code. these audits cost 50k+ and nobody thought to check if the timestamp was fresh. insane

  6. 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.

  7. a month-old Chainlink report accepted without a freshness check. one require statement would have saved 291K. this is hiring test level stuff

    1. timestamp_rat one require statement saving 291K is the most DeFi summary ever. audit firms charging 50K to miss basic checks while protocols bleed six figures

  8. stale_feed_rat

    Dexodus accepting a Chainlink report that was a MONTH old without checking freshness. one require(block.timestamp – report.timestamp < 1 hours) would have saved 291K. this is literally day one stuff

    1. stale_feed_rat the performUpkeep function had no staleness guard at all. audit firms charging 50K+ to review perpetual protocols and missing this is embarrassing for the entire industry

  9. base_leak_math_

    entering at 1816 and closing at 2520 in the same tx. Dexodus basically had a sign on the door saying free money, one transaction only

  10. Chainlink allowing month-old reports to stay valid is the upstream issue. protocols should not have to build custom staleness defenses on top of an oracle that costs money to use

    1. Pavel D. exactly. chainlink markets itself as authoritative then leaves protocols to handle freshness. pick one

Leave a Comment

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

BTC$64,898.00+0.0%ETH$1,915.95+0.1%SOL$75.79+2.7%BNB$602.88+2.1%XRP$1.04+1.1%ADA$0.1989-0.5%DOGE$0.0702+0.5%DOT$0.8139-0.8%AVAX$6.48+0.3%LINK$8.31+1.7%UNI$3.98+0.1%ATOM$1.39+1.6%LTC$46.05+1.1%ARB$0.0781-0.4%NEAR$1.62+1.3%FIL$0.7126+3.6%SUI$0.6893+2.0%BTC$64,898.00+0.0%ETH$1,915.95+0.1%SOL$75.79+2.7%BNB$602.88+2.1%XRP$1.04+1.1%ADA$0.1989-0.5%DOGE$0.0702+0.5%DOT$0.8139-0.8%AVAX$6.48+0.3%LINK$8.31+1.7%UNI$3.98+0.1%ATOM$1.39+1.6%LTC$46.05+1.1%ARB$0.0781-0.4%NEAR$1.62+1.3%FIL$0.7126+3.6%SUI$0.6893+2.0%
Scroll to Top