← All articles
DeFiBearish context

Notional Finance Loses $1.73M in V1 Integer Overflow Exploit

Legacy code on Notional Finance's V1 escrow contracts is drained for $1.73M in an integer overflow attack, raising questions about migration pressure on DeFi protocols.

Maya Ortiz

Maya Ortiz

DeFi & NFT Editor, RefreshCoin

DeFi
RefreshCoin · Market deskBrief #D

Notional Finance, a fixed-rate lending and borrowing protocol on Ethereum, was hit by an attacker who drained roughly $1.73 million from the project's legacy V1 escrow contracts through an integer overflow bug. The exploit, disclosed on September 4, 2026, targeted old code that the team had already begun migrating away from in favor of newer V2 and V3 deployments. The attacker's identity and the laundering path for the stolen funds remain unconfirmed.

How did the exploit actually work?

Integer overflow is one of the oldest classes of smart contract bugs, dating back to early Ethereum ERC-20 token incidents and the famous Beauty Chain incident of 2018. It happens when an arithmetic operation in a Solidity contract produces a number larger than the maximum value the variable type can store, causing the value to wrap around to zero or a small number. A contract that trusts that internal balance figure can then be tricked into releasing more funds than it actually holds, or crediting a user with tokens it never minted.

In Notional's case, the attacker appears to have used the overflow to manipulate accounting inside the V1 escrow logic, which still held user deposits that had not yet been moved to the upgraded contracts. The exploit chain, based on the limited public information, interacted with one or more of the legacy escrow entry points in a way that caused the contract's internal balance check to pass while the actual on-chain reserves were untouched. Funds were then withdrawn to an externally owned account controlled by the attacker.

The technical details mirror a long line of similar exploits across decentralized finance. Notable past examples include the Beauty Chain BEC token overflow in 2018, several inflationary bugs in early ERC-20 implementations, and overflow-driven drains on smaller lending and farming protocols in subsequent years. The persistence of the bug class shows how easy it is for unsafe math to slip past audits, especially in codebases written before libraries like OpenZeppelin's SafeMath became standard.

What is Notional Finance and how did it get here?

Notional Finance launched in 2021 as a protocol for fixed-term, fixed-rate lending and borrowing on Ethereum. Instead of variable-rate pools, users lock collateral and borrow or lend at a known rate for a set duration, similar in spirit to zero-coupon bonds. The protocol went through several iterations: V1 introduced the original nToken-cToken architecture, V2 simplified the system and added cross-currency swaps, and V3 expanded maturities and improved capital efficiency.

Over the lifetime of the protocol, the team encouraged users to migrate positions from older contracts to newer ones as liquidity shifted. Migration windows in DeFi typically include a deadline after which legacy contracts are deprecated, user-facing front ends stop supporting them, and incentives for V1 or V2 pools dry up. Funds that remain in legacy escrow after migration usually belong to long-dormant accounts or users who manually opted out of the migration process.

The fact that $1.73 million in user funds was still sitting in V1 escrow suggests migration was incomplete. It also suggests the V1 contracts had not been fully paused or drained by governance, which is the standard hygiene practice once a new version is live. Attackers routinely monitor on-chain mempools and historical code paths for projects with dormant contracts, and they target exactly these residual balances when a bug is found.

Why does an old contract still matter?

A common misconception among new DeFi users is that a deprecated contract stops being a risk once the project's main front end no longer points at it. In reality, the contract address keeps living on Ethereum indefinitely. Its bytecode does not change. If the code has a logic bug, that bug stays exploitable until the contract is upgraded, self-destructed (where supported), or drained through governance action.

Notional Finance's V1 escrow was sitting in exactly that state: live, holding non-trivial funds, and not actively maintained. The exploit demonstrates how a single arithmetic oversight from several years ago can quietly carry risk into a much later market cycle. It also underscores the value of periodic reaudits and bug bounty coverage on legacy deployments, not just the newest code path.

The broader DeFi sector has gradually improved hygiene around old contracts. Some protocols run sunset scripts that forcibly migrate dormant positions after long warning periods, while others buy out residual balances from users with treasury funds. Both approaches cost the protocol, but both eliminate the persistent attack surface. The Notional incident is likely to reignite a debate within its community about whether such a cleanup should have happened earlier.

How does this fit the wider DeFi security picture?

Smart contract exploits have been a recurring feature of decentralized finance since the first major incidents in 2017 and 2018. According to public industry trackers, cumulative losses from smart contract bugs across all chains and protocols now run into the billions of dollars. While the volume of attacks has not dropped, the average size has trended downward as audits, formal verification, and bug bounty programs have raised the floor on code quality.

Still, single incidents in the low-millions still occur regularly, particularly when attackers find bugs in older, less audited code. Notable comparable drains include the 2022 Rari Capital exploit, several hundred-million-dollar hits on bridges, and recurring overflow-style bugs in fork-derived code. The Notional exploit is smaller in dollar terms than the largest historical events, but it lands in a familiar place on the curve: a residual balance in a legacy contract, hit by a known bug class.

For traders and liquidity providers, the practical takeaway is that exposure to a protocol is not just exposure to its current front end. Deposits that have not been migrated still sit at the old contract address and can be targeted even when the project's main UI ignores them. Users who keep legacy positions open for years should treat them like any other unmaintained smart contract: high risk, often uninsured, and outside the scope of any current security program.

What happens next for Notional and its users?

At the time of writing, the team has not published a detailed reimbursement plan or a treasury address earmarked for affected users. The standard sequence in such incidents is an initial post-mortem, a trace of the attacker's wallet activity across exchanges and mixers, and a governance proposal that determines whether and how to compensate victims. Past cases show that outcomes vary widely: some protocols have fully reimbursed users from treasuries, others have offered partial compensation, and a meaningful share have done nothing after an exploit.

The most important near-term catalysts to watch are the post-mortem report, any communication from law enforcement or centralized exchanges that received the funds, and a governance vote on compensation. The size of the drain, at $1.73 million, is small enough that a treasury-funded reimbursement is plausible if Notional's reserves are healthy, but large enough that token holders will scrutinize the proposal closely. NOTIONAL, the project's governance token, typically reacts to security incidents with elevated volatility on the day and a slower drift as the community digests the response.

What broader risks should DeFi users track?

The Notional exploit is a reminder that protocol risk in DeFi is not just current-version risk. Several practical lessons follow. First, users should migrate positions when protocols officially deprecate a version, rather than leaving residual funds in old contracts. Second, security programs should cover all live deployments, not just the latest one, and bug bounty scopes should explicitly include legacy code. Third, governance forums should consider periodic cleanup proposals that retire dormant contracts entirely.

For institutional and professional users, the incident argues for stricter due diligence around legacy deployments when evaluating lending and fixed-income protocols. For retail users, the lesson is simpler: leaving funds in an unmaintained contract is closer to leaving cash in an unlocked wallet than to keeping money in a vault. Both market participants and protocol teams will be watching Notional's next communications to see whether this old lesson produces a new policy response.

Frequently asked questions

What was stolen in the Notional Finance exploit?

The attacker drained roughly $1.73 million from Notional Finance's legacy V1 escrow contracts. Funds had remained in the old deployment after the protocol began migrating users to V2 and V3.

What is an integer overflow bug?

An integer overflow happens when a Solidity arithmetic operation produces a value larger than the variable type can store, causing the result to wrap around. Attackers use this to bypass internal balance checks and drain funds, a bug class seen in incidents such as the 2018 Beauty Chain exploit.

Will Notional Finance users be reimbursed?

No reimbursement plan has been disclosed at the time of writing. Affected users will need to wait for the team's post-mortem and any subsequent governance vote on compensation from the treasury.

Comments(0)

No comments yet. Be the first to weigh in.

Related reading