Хакер викрав 200 ETH з MakerDAO через вразливість контракту 2026
Зловмисник експлуатував недостатньо захищену функцію у legacy-контракті MakerDAO і вивів 200 ETH (~$543 тис.). Атака спиралась на незавершені позиції ліквідацій 2020 року та відсутність перевірки прав доступу
6 жовтня 2026 року невідомий зловмисник успішно використав вразливість у застарілому контракті MakerDAO на блокчейні Ethereum, виведучи 200 ETH вартістю близько $543 тисяч доларів. Експлойт ґрунтувався на недостатньому контролі доступу до однієї з ключових функцій протоколу, яка залишалася незащищеною з часів масштабної ліквідації активів у березні 2020 року, відомої як «чорний четвер».
Механізм атаки та етапи експлуатації
Зловмисник здійснив операцію методично та обережно. Спочатку він профінансував адресу атаки 0,1 ETH через мікшер Tornado Cash, потім о 06:12 UTC розгорнув спеціалізований контракт для виконання експлойту. Критичною уразливістю став функціональний модуль з позначенням 0x8804d1de, який — на відміну від інших привілейованих функцій системи — повністю ігнорував перевірку прав доступу та дозволяв передавати делегацію довільній адресі через механізм MakerDAO Vat.
Атака складалася з послідовних кроків: спочатку зловмисник розробив адаптерний модуль і передав його адресу в уразливу функцію legacy keeper-контракту; далі система автоматично надала цьому модулю повні права над обліковим записом keeper у Vat через виклик Vat.hope(); потім keeper активував функцію join() модуля, передавши контроль над виконанням коду зловмиснику; нарешті, зловмисник завершив чотири старі аукціони (№1457, 1458, 1459 та 1460), кожен з яких містив 50 ETH, виграні keeper ще у березні 2020 року, але так і не розраховані.
Чому застарілі позиції стали мішенню
Саме наявність незавершених ліквідаційних позицій з 2020 року зробила цю давню технічну вразливість економічно привабливою для зловмисника. На момент експлойту 200 ETH становили значну суму, достатню для запуску атаки. Кошти були переведені на рахунок keeper у Vat протягом однієї експлойт-трансакції, а вже за шість хвилин зловмисник розпочав їхнє змішування через Tornado Cash, розділяючи викрадене на депозити по 10 ETH кожен.
Коренева причина та безпекові висновки
Експерти ідентифікували два ключові недоліки системи: перший — це повна відсутність валідації прав доступу до функції 0x8804d1de; другий — контракт не відкликав отримані повноваження після завершення операції (не викликав nope), що дозволило переданій делегації залишатися активною й бути використаною повторно. Цей інцидент підкреслює критичну важливість своєчасної дезактивації застарілих компонентів протоколу та аудиту функцій, що зберігають адміністративні права.
Що таке legacy keeper-контракт у MakerDAO?
Legacy keeper — це застарілий компонент протоколу, створений для управління ліквідаціями активів під час кризи «чорного четверга» у березні 2020 року. Він містив 200 ETH з незавершених аукціонів і не отримував регулярних оновлень безпеки протягом років.
Як функція 0x8804d1de відрізнялася від інших функцій протоколу?
На відміну від інших привілейованих функцій, вона не перевіряла права доступу користувача перед передачею делегації через механізм Vat. Це дозволило будь-кому передати адміністративний контроль своєму спеціалізованому контракту.
Чому кошти намагалися вивести через Tornado Cash?
Tornado Cash — це мікшер, який розділяє кошти на малі частини і переводить їх через різні адреси, розривво трас між вхідними і вихідними операціями. Це ускладнює відстеження викрадених активів на публічному блокчейні.
Чи можна було запобігти цьому інциденту?
Так — своєчасна дезактивація застарілого keeper-контракту, видалення функцій без перевірки доступу та належний аудит усіх функцій адміністративного рівня значно знизили б ризик така атаки.