A withdrawal is signed using another withdrawal's input amounts during a migration

Severity
High
Class
Protocol logic
System
Pegged-asset bridge

During a key migration, a withdrawal is signed against the wrong inputs, freezing the withdrawal and stalling the migration.

A migration is a delicate moment: two sets of state coexist and the code has to keep each withdrawal matched to its own inputs. Here the amounts from one withdrawal's inputs were attributed to another during signing, producing a signature over a transaction that didn't add up.

A withdrawal signed against the wrong inputs can't be completed, and because the flaw sits in the migration path, it jams the migration itself.

Why it rated High

Frozen user withdrawals plus a halted migration — a serious availability and correctness failure at the worst possible time, though not direct theft.

The fix class

Bind each input's amount to the specific withdrawal it belongs to throughout the migration signing flow.