Можливий злом Connext's Bridge! Понад 70 тисяч лідерів

TLDR: Дослідницька команда Sayfer виявила нову потенційну вразливість у смарт-контрактах міжланцюгового мосту Connext. Схоже, що їхня система винагороди для маршрутизаторів (користувачів, які роблять передачу можливими в ланцюгах надсилання та отримання) є чутливою до передових. Дійсно, ми знайшли понад 1000 транзакцій MEV лише в блокчейні Ethereum на загальну суму 70 тисяч доларів США вкрадених комісій.

Візьми мене до технічних деталей.

Web3 — це надзвичайне та революційне бачення Всесвітньої павутини, яке пропонує нам багато нових можливостей. Однак, як і все нове, воно має хороші та погані сторони, і знаменита війна між білими та чорними капелюхами не щадить web3. Безсумнівно, web3 став новим майданчиком для хакерів.

Як охоронна компанія, ми часто знаходимо вразливості, якими можуть скористатися хакери, і в цій статті ми збираємося представити вам одну з них, уразливість Connext fees front-run.

Що таке Connext?

Connext — це платформа, заснована на блокчейні Ethereum, яка дозволяє користувачам проводити транзакції в різних мережах, сумісних з Ethereum. Connext виконує свою функцію без використання будь-якого валідатора поза мережею. Він працює через Noncustodial Xchain Transfer Protocol (NXTP) для міжланцюжкових переказів.

Архітектура Connect

NXTP — це простий протокол для повністю некастодіальних міжланцюжкових переказів і контрактних викликів. Ключовий висновок цього протоколу полягає в тому вся інформація, необхідна для обох сторін, доступна в мережі

Кожного разу, коли хтось переміщує гроші з одного блокчейну в інший, відбувається три кроки:

  1. Вибір маршруту: Користувачі вибирають мережі та активи та починають аукціон із інформацією про передачу. Маршрутизатори роблять ставки, щоб завершити передачу в межах часу/ціни.
  2. Підготуйте: Користувачі надсилають транзакцію до контрактів NXTP у ланцюжку надсилання. Побачивши подію контракту, маршрутизатори блокують ліквідність у приймальному ланцюжку.
  3. Виконати: Користувачі надають підпис, щоб розблокувати кошти в ланцюжку отримання, а маршрутизатори використовують розкритий підпис, щоб отримати ліквідність у ланцюзі відправлення.

Що таке Front-Running?

Початковий запуск — це акт розміщення транзакції в черзі із знанням майбутньої транзакції. Фронт-ранінг на платформі блокчейн зазвичай відбувається, коли майнер, який має доступ до інформації про незавершені транзакції, розміщує замовлення, яке принесе йому чи їй прибуток на основі незавершеної угоди. Наприклад, у блокчейні Ethereum може відбуватися авангардна операція, коли боти можуть вказувати вищу ціну на газ, ніж незавершена угода, таким чином прискорюючи її обробку. В основному це відбувається з арбітражних причин.

Mempool — це набір транзакцій Ethereum, які транслюються в мережу та очікують на упаковку в блоки. Це передумова для реалізації фронту.

Фронтальний бот аналізує та знаходить цілі, які можна атакувати, постійно скануючи незавершені транзакції в Mempool.

Максимальна (або Майнер) витягувана вартість (MEV) відноситься до прибутку, який майнери та інші організації можуть отримати, використовуючи прозорість блокчейну для первинних прибуткових транзакцій до їх підтвердження.

Технічні деталі

Маршрутизатори мають два джерела доходу: аукціонні збори та плата за подання ретранслятора.

Як пояснюється на Академія Коннекст:

Аукціонні збори

Щоразу, коли користувач здійснює трансляцію в мережу Connext, сигналізуючи про свій намір здійснити міжланцюгову передачу, маршрутизатори можуть відповісти запечатаними заявками. Основний процес для цього описано більш детально тут: Маршрутний аукціон. Ставки включають зобов’язання маршрутизаторів виконати транзакцію протягом заздалегідь визначеного часу та цінового діапазону. Потім Connext підбирає для користувача найдешевшу ставку.

Як тільки маршрутизатор виявляє подію, яка містить підписану ставку, маршрутизатор надсилає транзакцію. Щоб заохотити маршрутизатор завершити транзакцію, сума, заблокована в приймальному ланцюжку, зменшується на комісію аукціону, яку отримує маршрутизатор.

Плата за подання Relayer

Користувач, який ініціював трансляцію, підписує повідомлення, коли маршрутизатор підготує транзакцію.

Повідомлення надсилається ретранслятору, який отримує плату за подання. Ретранслятором зазвичай є інший маршрутизатор. Тут використовується ретранслятор, щоб дозволити користувачам надсилати транзакції з довільними даними виклику в приймальному ланцюжку, не потребуючи для цього газу. Потім маршрутизатор надсилає те саме підписане повідомлення та завершує транзакцію на стороні відправника, розблоковуючи вихідну суму.

Під час нашого дослідження ми виявили, що виконати функція в TransactionManager.sol у контракті відсутній певний механізм автентифікації, що дає змогу зловмиснику MEV передати транзакцію ретранслятора та викрасти його relayerFees.

Зловмисники MEV можуть шукати незавершені транзакції в Mempool, які викликають виконати функція в TransactionManager договір. Потім вони можуть здійснити атаку заміщення, відправивши ту саму транзакцію в Mempool, але з вищою комісією за газ. Це обходить заходи автентифікації, які зараз діють, оскільки зловмисник просто копіює транзакцію, включаючи її підпис.

Уразливість цієї атаки походить від логічної помилки в TransactionManager.sol:842.

LibAsset.transferAsset(txData.receivingAssetId, payable(msg.sender), relayerFee);

Команда relayerFee надсилається відправнику повідомлення без будь-якої перевірки. Хто дзвонить виконати функція першою отримує плату.

Якщо транзакція лідера успішно випереджає вихідну транзакцію, надіслану ретранслятором, ця законна транзакція повертається за допомогою '#F:019' код помилки, оскільки він виконується вдруге.

Вплив

Фінансовий вплив тут має вирішальне значення, оскільки це економічна атака, спрямована на один із компонентів протоколу NXTP – ретранслятор (Важливо зазначити, що кошти користувачів наразі не піддаються ризику). Використовуючи атаки MEV, зловмисники можуть потенційно вкрасти комісію ретранслятора, тим самим перешкоджаючи стимулу ретранслятора виконати транзакцію.

Без достатньо прибуткових комісій ретранслятори можуть припинити надавати свої послуги, що з часом може перешкодити роботі протоколу NXTP.

Цей сценарій зовсім не теоретичний. Під час нашого дослідження MEV ми виявили, що цю атаку активно використовують досвідчені спеціалісти загальні боти-лідери сімей, які ми зараз відстежуємо. Ці боти призводять до втрати величезної кількості коштів у мережі Ethereum. 

З моменту його розгортання ми виявили понад тисячу успішних атак на TransactionManager.sol договір. Один із таких прикладів:

Транзакція зловмисника:

  1. https://etherscan.io/tx/0xfeedceaa9be3c8bffc1519ec612d2797d63de63bb22aced0e9eb2635d57f2985
  2. https://ethtx.info/mainnet/0xfeedceaa9be3c8bffc1519ec612d2797d63de63bb22aced0e9eb2635d57f2985/

Операція жертви:

  1. https://etherscan.io/tx/0x08b17148c1239a80d7ceead53e888b88fadb0239446b90cf280c0e9cd7b42dff
  2. https://ethtx.info/mainnet/0x08b17148c1239a80d7ceead53e888b88fadb0239446b90cf280c0e9cd7b42dff/

Перевіривши значення параметра підпису в даних транзакції, ми можемо визначити, що обидві транзакції пов’язані з одним і тим же міжланцюжковим передаванням. Оскільки в нашому прикладі вище підписи однакові, ми знаємо, що обидва відправники намагаються отримати relayerFee, тож один із них намагається випередити іншого. Щоб ідентифікувати бота, нам просто потрібно порівняти вартість транзакцій, найдорожча у зловмисника.

Наша команда оцінила загальну суму отриманих комісій лише за блокчейн Ethereum приблизно в 70 тисяч доларів.

Звітність

Ми повідомили про цю вразливість Connext через платформу винагород за помилки Immunefi. Після тривалої розмови Connext повідомила нам, що це не вразливість і що «це задумом".

Ось їхня остання відповідь:

Ми вважаємо, що смарт-контракти все ще можуть бути недостатньо безпечними для звичайних користувачів, і ми вважаємо, що такі історії, як цей випадок, є причиною цього. Ми віримо, що криптовалюта змінить світ (якщо ще не змінила). Ось чому ми вважаємо своїм обов’язком інформувати світ про те, як деякі протоколи розглядають свої обов’язки щодо кібербезпеки.

Написане
Авігдор Сасон Коен

Авігдор є дослідником безпеки web3 у Sayfer. Він захоплений новими технологіями блокчейну та тим, як ми можемо забезпечити їх безпечний розвиток.

 

Перейти до вмісту