С помощью фальшивого сообщения хакер украл $191 тыс

Введение
Allbridge — это сервис (мост), который помогает перемещать криптовалюту между разными блокчейнами. CCTP (Cross-Chain Transfer Protocol) — это технология компании Circle, выпускающей стейблкоин USDC. Она позволяет официально переводить USDC из одной сети в другую.
Ход инцидента
- Злоумышленник создал поддельное сообщение. Оно выглядело как подтверждение от Circle о том, что в Allbridge поступил 1 млн USDC. На самом деле реального перевода не произошло.
- Контракт Allbridge проверил только цифровую подпись Circle, но не проверил, действительно ли токены пришли на баланс маршрутизатора.
- Перед выводом злоумышленник взял мгновенный кредит (flash-loan) на 808 844 USDC из протокола Aave. Это такой кредит, который берётся и возвращается в рамках одной транзакции. Он временно пополнил баланс роутера, чтобы создать видимость наличия средств.
- Контракт, увидев подпись и временный баланс, выполнил выплату 191 155 USDC.
- Злоумышленник вернул мгновенный кредит. Ущерб составил около 189 751 USDC.
Почему это стало возможным
В коде функции
receiveCctpMessage отсутствовала проверка реального изменения баланса USDC. Контракт доверял только внешнему сообщению и его подписи. Поле с суммой бралось прямо из данных сообщения, которые злоумышленник мог сформировать самостоятельно. Отсутствие базовой проверки «а действительно ли деньги пришли» и позволило обмануть систему.
Детали расследования: движение средств
Похищенные 189 751 USDC были выведены на адрес злоумышленника:
Затем через сервис Li.Fi (это агрегатор для обмена и переводов между сетями) токены были обменяны на эфириум (ETH) и отправлены в сеть
Ethereum на тот же адрес. После этого вся сумма в виде ETH перешла на адрес:
Заключение
Инцидент в Allbridge показал, что даже проверенные мосты могут содержать логические ошибки. Доверие к внешнему сообщению без проверки фактического баланса привело к краже.


