Няколко децентрализирани финансови протокола бяха ударени в неделя от нападатели, които откраднаха криптовалути на стойност над 24 млн. долара. Нападателите използваха уязвимост в пуловете за ликвидност на Curve, платформата за автоматизирано създаване на пазари.
Уязвимостта е била проследена до Vyper, алтернативен език за програмиране от трета страна за интелигентни договори на Ethereum, според Curve в Twitter. От Curve заявиха, че другите пулове за ликвидност, които не използват езика, са изправни.
Няколко стабилни пула (alETH/msETH/pETH), използващи Vyper 0.2.15, са били експлоатирани в резултат на неправилно функциониращо заключване на реентрацията. Оценяваме ситуацията и ще информираме общността за развитието на нещата.
Другите басейни са в безопасност. https://t.co/eWy2d3cDDj
– Curve Finance (@CurveFinance) July 30, 2023
Поликвидните пулове са интелигентни договори, които държат токени и могат да осигурят ликвидност на криптопазарите по начин, който не разчита на финансови посредници. Но, както няколко проекта научиха в неделя, малък недостатък може да доведе до значителни загуби.
Криптовалута на стойност 11 млн. долара беше открадната от протокола за кредитиране на NFT JPEG’d, според фирмата за децентрализирана финансова сигурност Decurity. JPEG’d беше сред първите, които идентифицираха проблем с пула си на Curve.
„Имаше атака“, заяви JPEG’d в Twitter. „Разгледахме проблема в момента, в който бяхме уведомени, и […] проблемът изглежда е свързан с пула на Curve.“
JPEG’d дава възможност на потребителите да публикуват НФП като обезпечение за заеми. По отношение на активите, депозирани в JPEG’d, протоколът има блокирана обща стойност (TVL) от около 32 млн. долара. JPEG’d заяви, че кодът, отговарящ за съхранението на NFT и касовите средства, не е засегнат.
Според данни от CoinGecko, към момента на писане на този документ, управляващият токен на протокола JPEG е намалял с 23%. В неделя монетата се размина с най-ниското си ниво за всички времена от 0,000347 USD.
Във вече изтрит туит Curve първоначално описа уязвимостта като обикновена атака за „повторно включване“ само за четене, която е можело да бъде избегната. Атаката „re-entrancy“ се случва, когато интелигентен договор взаимодейства с друг договор, който на свой ред се обръща към първия договор, преди да се изпълни напълно.
Уязвимостите в повторното ориентиране позволяват на нападателя да вкара множество повиквания в една функция и да подведе интелигентния договор да изчисли неправилни баланси. Един от най-ярките примери за това е хакването на DAO за 55 млн. долара през 2016 г. в Ethereum.
Отговаряйки на акаунт в Twitter, който по-късно повтори изчистеното изявление, Curve обаче заяви, че първоначалното му впечатление е било погрешно.
„Да, не е само за четене“, каза Curve, добавяйки, че няма „никакво нарушение от страна на проектите, които са интегрирали, или дори от страна на потребителите на Vyper.“
Да, не само за четене. Тук няма неправомерни действия от страна на проектите, които се интегрираха, или дори от страна на потребителите на vyper
– Curve Finance (@CurveFinance) July 30, 2023
Атаките за повторно въвеждане са твърде често срещан вектор за кражба на протоколи от страна на нападателите, заяви пред TCN Меир Долев, съосновател и главен технически директор на фирмата за киберсигурност Cyvers.
„Те са доста разпространени“, казва Долев. „И е възможно да бъдат избегнати с подходящ дизайн и разработка.“
Проблемът не е специфичен за JPEG’d. Малко след като протоколът за кредитиране на NFT беше експлоатиран, Alchemix и Metronome DAO загубиха съответно 13,6 млн. долара и 1,6 млн. долара по подобен начин, каза той.
Alchemix призна в Twitter, че активно работи за отстраняване на проблем с ликвидния си пул. MetronomeDAO заяви в Twitter, че нейното разследване на случилото се продължава, като описа атаката като „част от по-широк набор от експлойти“.
В случая с JPEG’d нападателят е бил изпреварен от бот с максимална извличаема стойност (MEV), каза Долев. Ботът е идентифицирал трансакцията на бъдещия нападател и е платил такса, за да изпълни подобна трансакция преди него.
От Vyper заявиха в Twitter, че грешката е била в компилатора на езика за програмиране. Когато разработчикът приключи с писането на код, той се компилира от формат, който може да се чете от човек, във вид, който компютрите могат да изпълняват.
Това е попречило на работата на защитите за повторно влизане – защити, които са били включени в кода на проектите и би трябвало да предпазват от атаки за повторно влизане, каза Долев.
„В някои версии компилаторът не успява да го компилира по правилния начин“, каза Долев. „Има някои грешки или неуспехи. „