Front-running атаки. Часть 1
Сегодня мы посмотрим на другую, не менее коварную уязвимость: атаки с опережением или Front-Running атаки.
Для иллюстрации представьте, что вы находитесь на оживленном фермерском рынке, где цены меняются в зависимости от спроса. Вы замечаете выгодную сделку по редким трюфелям за 50 долларов, которые, как вы знаете, в других местах стоят 100 долларов. Когда вы подходите, чтобы купить их, инсайдер рынка, который может видеть все поступающие заказы клиентов, замечает ваше намерение. Он быстро проскакивает вперед в очереди, покупает трюфели за 50 долларов, а затем сразу же предлагает продать их вам за 90 долларов. Вы все равно получаете трюфели, но теперь этот посредник заработал 40 долларов, которые могли бы быть вашими.
Это и есть фронт-раннинг в двух словах — увидеть чужую ожидающую транзакцию в публичной системе, а затем вставить свою собственную транзакцию перед ней, чтобы извлечь выгоду из изменения цены, о котором вы знаете.
В блокчейне это происходит, когда злоумышленники используют прозрачность мемпула, чтобы увидеть предстоящие транзакции. Затем они создают свои собственные транзакции с более высокими комиссиями за газ, гарантируя, что их транзакции будут выполнены первыми. Это может привести к ужасным последствиям, от манипулирования ценами на децентрализованных биржах (DEX) до кражи токенов NFT.
Понимание front-running атак
Прежде чем перейти к самому чек-листу, давайте начнем с некоторых важных определений.
1. Атака с опережением: злоумышленник наблюдает за ожидающей транзакцией в мемпуле. Чтобы получить выгоду из этой транзакции, он быстро выполняет свою собственную транзакцию, опережая ее. Обычно для этого он предлагает более высокую цену газа, чтобы его транзакция была обработана первой.
2. Паттерн «Get-or-create»: паттерн проектирования смарт контракта, который предполагает либо извлечение существующих активов (например, существующей торговой пары на DEX), либо создание новых, если они не существуют. Этот паттерн может быть уязвим для фронт-раннинга, если он не защищен должным образом.
3. Фронт-раннинг с двумя транзакциями: эта уязвимость возникает, когда критическое действие в смарт-контракте разделяется на две или более отдельных транзакций. Злоумышленник может использовать временной разрыв между этими транзакциями, чтобы вставить свою собственную операцию, потенциально нарушив запланированный поток или похитив активы.
4. Атака «пыль»: специфическая форма фронт-раннинга, при которой злоумышленник отправляет транзакцию с незначительной суммой («пыль») перед законной транзакцией. Это приводит к сбою (реверсии) законной транзакции из-за измененного состояния или невыполненных предварительных условий.
5. Схема «Commit-reveal»: криптографический протокол, разработанный для обеспечения справедливости и секретности в ситуациях, когда участники должны предоставить информацию, не раскрывая ее сразу. Он состоит из двух отдельных этапов: этапа «commit», на котором участники предоставляют криптографическое обязательство (обычно хэш их предполагаемого действия в сочетании со случайным секретом или nonce), и этапа «reveal», на котором они раскрывают исходное действие и секрет по истечении определенного периода времени. Этот процесс гарантирует, что ни один участник не может изменить свою заявку или реагировать на действия других, пока все обязательства не будут окончательно оформлены. Некоторые версии протокола гарантируют, что только лицо, которое взяло на себя обязательство, может раскрыть его позже. Это предотвращает вмешательство других лиц и обеспечивает ответственность участников.
SOL-AM-FrA-1: Защищены ли шаблоны «get-or-create» от атак front-running?
Post #1453
587
- ❤ 3
- 🔥 1