Incidents

Notional V1 exploit: a 2^128 debt cast to zero

Illustration: Integer truncation

Published Oct 13, 2026

Project
Notional V1
Chain
Ethereum
Date
Sep 3, 2026
Loss
$1.73M
Class
Integer truncation
Basis
Project post-mortem or audit firm analysis

Notional V1 was deprecated in January 2022 but its escrow contract was still live on Ethereum. On September 3–4, 2026 an attacker drained 1,658,524 USDC and 69,257 DAI from it, about $1.73M.

The post-mortem calls it an "integer overflow error related to the mintfCashPair function". Third-party analysis fills in the path: two calls to mintfCashPair() leave an account with an obligation of exactly −2^128. In ExchangeRate._convertToETH the value balance.abs() is cast to uint128 without a range check. 2^128 does not fit in 128 bits, so the cast silently produces zero, and the free-collateral check sees an account with no debt.

The contract was written in Solidity 0.6, where narrowing casts never revert. The attacker swapped the proceeds to about 689 ETH and sent them through Tornado Cash. Notional upgraded the contract and paused all operations.

How to protect your protocol

Sources

How this was prepared: compiled from the sources above with the help of automated tools, then reviewed by the Foothold security team before publication.

Give Atlant a task Could the same thing happen in your code? Get it checked →