Автор: Sissice

тло

24 квітня 2024 року, згідно з даними служби безпеки SlowMist, проект YIEDL у мережі BSC був атакований, і зловмисник отримав прибуток у розмірі приблизно 300 000 доларів США. Команда безпеки SlowMist проаналізувала інцидент атаки та поділилася такими результатами:

(https://twitter.com/SlowMist_Team/status/1782962346039898473)

Пов'язана інформація

Адреса зловмисника:

0x322696471792440499b1979e0a440491e870667a

Атакована адреса контракту:

0x4edda16ab4f4cc46b160abc42763ba63885862a4

Частина транзакції атаки:

0x49ca5e188c538b4f2efb45552f13309cc0dd1f3592eee54decfc9da54620c2ec

0x3629ad588ac120163792e92b6c43bd4bdc5bf35cac66eb7f3a0267df93abc849

0x0a89b8670c40b4067b9522a5933c3bf8c44c968103aa642b04c65d49ad9e6457

0x5e468cba495e5f6165418fb9d87d824309c54261055425f33f588dd3b3abbcea

0x8710034dadecfc8c26f651c612f613fffdece6e2f9957b9ec8ab843218168c1d

0x9da398ed274c8cfa774b36003fa8c930d3430d0fc5889b5008830fd6463f68a9

0x2e3d4332f66a334e0170187011ed673dc222f95bf4443b618e08f8052437ef7a

0x5a15fdc57c35f2305aaa0bb95b109ad412b17406d737d137190fe5867393339d

0x8ef3765665cd849cdf9132ab37caf6aa0f891e1f7d9f418f86a6ab6ea38b6f5b

0xa9fa04b033afbed2218679aea92e9429a5f7839d0b4c65358ebf9ba20efcd021

Атакуйте ядро

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

аналіз транзакцій

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

Однак після виконання функції redeem ми можемо виявити, що ця функція проходитиме список активів, дозволених контрактом, і коли поточний актив не є тим активом, який користувач хоче отримати, вона аналізуватиме відповідно до вхідного параметра dataList і зовнішньо виклик відповідної функції в 1inch Router для виконання операцій обміну.

Оскільки переданий тут список даних не було перевірено та підтверджено, зловмисник може створити шкідливі значення для виконання функції unoswapTo контракту 1inch Router для виконання довільних контрольованих операцій обміну маркерами.

У результаті токен WBNB-ADA в контракті Yiedl BULL було обміняно на BNB на адресу зловмисника.

Таким чином зловмисник може ініціювати операцію обміну токенів, керовану параметром dataList, фактично не володіючи акціями викупу, мобілізувати контрактні кошти кілька разів, не споживаючи власні активи, і залишити ринок із прибутком.

Підведіть підсумки

Суть цієї атаки полягає в тому, що функція не може повністю перевірити параметр dataList, введений користувачем, що дозволяє зловмиснику створювати шкідливі зовнішні дані та використовувати 1inch для викрадення токенів у контракті. Команда безпеки SlowMist рекомендує, щоб сторона проекту запровадила суворий механізм перевірки параметрів у розробці, особливо коли йдеться про фінансові операції в контракті, щоб переконатися, що всі зовнішні виклики відповідають очікуваним поведінковим специфікаціям, а також провести ретельний аудит безпеки логіка контракту, щоб запобігти повторенню подібних інцидентів.