Web3-проекты любят хардкодить RPC-ключи в фронтенд. Разработчики думают: «Мы просто читаем балансы из блокчейна, кому нужен наш ключ?». На деле они дарят MEV-ботам и снайперам идеальный, а главное - бесплатный инструмент для фронтраннинга своих же пользователей.
Вектор атаки: Мемпул как на ладони
Открываем рандомный DEX. В минифицированном JS достаем публичный ключ от премиум-ноды проекта. Делаем один
curl запрос прямо к провайдеру:curl -s 'https://rpc.provider.com/v1?chainId=eip155:1&projectId=LEAKED_PROJECT_ID' \
-X POST -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"txpool_content","params":[],"id":1}'
В ответ мы получаем не просто статус, а весь
txpool - «зал ожидания» блокчейна. Тысячи pending транзакций, которые юзеры уже подписали, но валидаторы еще не включили в блок. Доступ к этому тяжелому методу без rate-лимитов - это прямой канал данных для мониторинга рынка в реальном времени.Анатомия сэндвич-атаки (Sandwich & Frontrun)
Имея на руках
txpool_content с чужой премиум-ноды, атакующий (или скрипт) видит действия юзеров *до* их фактического исполнения. Дальше начинается стрижка:1. Снайпинг: Бот парсит ответ ноды и декодирует
calldata смарт-контрактов. Он ищет жирный свап. Например, кто-то хочет купить токен X на крупную сумму, что неминуемо сдвинет кривую цены в пуле ликвидности.2. Frontrun (Первый кусок хлеба): Бот мгновенно формирует свою транзакцию на покупку этого же токена X. Чтобы обогнать жертву, он выставляет
maxPriorityFeePerGas (чаевые валидатору) чуть выше.3. Памп: Транзакция бота попадает в блок первой. Резервы пула меняются, цена токена летит вверх.
4. Мясцо (Жертва): Следом исполняется огромная транзакция обычного юзера. Из-за искусственного сдвига цены он покупает токен по завышенному курсу. Его спасает только
slippage tolerance (допуск на проскальзывание), но бот заранее просчитывает математику пула и выжимает этот допуск до самого предела. Юзер толкает цену еще выше.5. Backrun (Второй кусок хлеба): Бот тут же продает купленные токены обратно в пул *в том же самом блоке* сразу после жертвы, фиксируя безрисковую прибыль.
Прибыль генерируется из воздуха просто за счет проскальзывания обычных юзеров. На Ethereum mainnet это работает напрямую через сборщиков блоков (Flashbots/Builders). На L2-сетях (Optimism, Arbitrum) секвенсоры работают по принципу FIFO (кто первый встал, того и тапки). И вот тут скорость премиум-RPC, за который платит сам проект, дает боту решающее тайминговое преимущество перед конкурентами.
Импакт: Эксплойты за ваш счет
Атакующий не только читает мемпул. На этом же ключе в 90% случаев открыт метод
eth_sendRawTransaction.То есть эксплойты, фронтран и сэндвичи льются прямо через инфраструктуру атакуемого проекта. Защита по HTTP Origin обходится одним фейковым заголовком в запросе.
Billing abuse: Проект сам оплачивает гигантские счета за премиум-методы (типа
debug_traceBlockByNumber для трассировки опкодов), которыми его же юзеров технично бреют на бабки.Да, нужно чтобы боты высчитывали оптимальный газ и slippage жертвы для идеального сэндвича на уровне математики пулов (x * y = k). Но думаю это меньшая из проблем.
Проект tier1 и является ведущим протоколом децентрализованной биржи на блокчейнах L2 экосистемы Ethereum. Протокол развёрнут на 12+ блокчейн-сетях, совокупный объём заблокированных средств (TVL) превышает $600 млн. Ежедневный объём торгов составляет десятки миллионов долларов. Протокол неоднократно проходил аудиты безопасности смарт-контрактов у ведущих аудиторских компаний отрасли и сидит на багбаунти в Immunefi. Является системообразующим элементом ликвидности для двух крупнейших L2-сетей.
Это одна из самых частых баг встречающихся при тестировании Web3 проектов. Вот вам и крипта)