Кто-то только что украл $142K у $SUI 's Scallop без каких-либо навыков хакерства.

Без гениальных flash loan.
Без манипуляций с оракулами.
Без эксплойтов в коде.

Просто... старый контракт, за которым никто не следил. 👀
Вот как это произошло 👇

#scallop работает на #sui 💧
У него есть пул вознаграждений для стейкеров sSUI.
Они давно обновили свои контракты.

Но старый V2?
Все еще сидит в блокчейне.
Все еще доступен для вызова.
Забыт — но не мертв.

На #SUI🔥 развернутые контракты неизменяемы.
Вы не можете их удалить.
Вы не можете их выключить.
Они просто... существуют вечно.

Нападающий нашел V2 от ноября 2023 года — 17 месяцев назад — и вызвал его напрямую.
Без фронтенда. Без SDK. Прямой вызов контракта.

Ошибка была смущающе простой:

Каждый новый стейкинг-аккаунт должен был записывать last_index — временную метку, когда кто-то начал.

В старом V2 это никогда не инициализировалось.
Так что контракт предполагал, что кто-то был #staking с первого дня.

Индекс спула работал 20 месяцев.
Он достиг 1.19 миллиарда.

Нападающий застейкал 136K sSUI.
Контракт вычислил 162 триллиона баллов вознаграждений.
Пул имел 150,000 SUI по курсу 1:1.

Одна транзакция. Все пропало.

Scallop заморозил контракт.
Покрыл 100% убытков.
Возобновил работу менее чем за 2 часа.

Но вот что меня мучает:

Нападающий затем связался и предложил вернуть 80% за вознаграждение.
Что значит, что они даже не пытались скрываться.
Они зашли через парадную дверь пустого дома, о котором никто не помнил, что он им принадлежит.

Это не "$SUI проблема."
Это проблема архитектуры #defi .

Сколько старых контрактов сейчас лежит на вашем любимом протоколе?🫵

Аудированы один раз.
Обновлены.
Забыты.
Все еще живы в блокчейне.

Самые страшные хакерские атаки не являются сложными.
Они терпеливы.