Преглед на приватноста

Оваа веб-страница користи колачиња за да ви обезбеди најдобро можно корисничко искуство. Информациите за колачињата се складираат во вашиот прелистувач и извршуваат функции како препознавање кога се враќате на нашата веб-страница и им помагаат на нашите програмери да разберат кои делови од веб-страницата ви се најинтересни и најкорисни.

Строго неопходни колачиња

Строго неопходните колачиња треба да бидат овозможени во секое време за да можеме да ги зачуваме вашите поставки за колачиња.

Cosmos EVM под напад: пропустот е искористен иако Cosmos Labs знаела дека сите мрежи се ранливи

Cosmos Labs предупреди дека критичен пропуст во обработката на салдата во заедничкиот Cosmos EVM модул бил искористен за извлекување средства од шест блокчејни во периодот од 20 до 25 август 2026 година.

Ранливоста, означена како GHSA-7g4w-cg88-2cq2, од Cosmos Labs е оценета како Critical (критична) и е објавена без CVE идентификатор, класификација на слабоста или CVSS оцена.

Засегнати се верзиите < 0.6.2 и >= 0.7.0 < 0.7.2, а исправката е објавена во верзиите v0.6.2 и v0.7.2 на 19 август. Од операторите на блокчејните се бара да надградат на една од овие или понова верзија. Промената е state-breaking, што значи дека бара координирана мрежна надградба.

Операторите кои не можат веднаш да извршат надградба се советуваат да го запрат блокчејнот, наместо да се обидуваат со координирана governance надградба.

Во анализа по инцидентот (post-mortem) објавена на 28 август, Cosmos Labs соопшти дека ранливоста била пријавена преку нивната програма за bug bounty на 25 април и дека во тој момент било проценето дека не претставува ризик за средствата на активните мрежи.

„Не успеавме да ја репродуцираме ранливоста на мрежи со 18 децимали и погрешно заклучивме дека таа ги засега само мрежите кои немаат 18 децимали“, наведе Cosmos Labs во post-mortem анализата.

До 13 август, тимот потврдил дека сите Cosmos EVM блокчејни се засегнати, без оглед на конфигурацијата на децималите. Потоа исправката била дистрибуирана преку истиот јавен процес на silent patching што компанијата го користи за проблеми за кои не се смета дека предизвикуваат загуба на средства на продукциските блокчејни.

„Во овој момент, за ранливост за која е познато дека претставува закана за средствата на корисниците на продукциски мрежи, тимот вообичаено би користел безбедни канали за приватно дистрибуирање на закрпата до засегнатите мрежи. Бидејќи закрпата веќе била јавно достапна на главната гранка, без позната експлоатација, тимот заклучил дека е безбедно да продолжи со процесот на silent patching“, соопшти Cosmos Labs.

Сепак, сопствената објавена политика на компанијата за silent patching предвидува поинаков пристап за ранливост од ваков тип.

„Кога одреден проблем претставува непосреден или ризик за целата мрежа, Cosmos Labs ќе иницира итни мерки за ублажување, приватна дистрибуција на исправката или координирани надградби пред да се изврши какво било јавно објавување“, наведува Cosmos Labs во својата bug bounty политика, последно синхронизирана на 27 јули.

Како функционира ранливоста

Пропустот се наоѓа во кодот кој ја усогласува состојбата на Ethereum Virtual Machine (EVM) со модулот Cosmos SDK x/bank.

EVM StateDB го следи само расположливото салдо на сметката, додека vesting сметките во SDK состојбата имаат и расположливо и заклучено салдо. И x/staking и staking precompile овозможуваат заклучениот дел да биде делегиран.

Кога vesting сметка ќе делегира повеќе средства отколку што има во расположливото салдо, при запишувањето на состојбата по делегацијата, целосниот делегиран износ се одзема од помалото расположливо салдо.

Одземањето не е проверено, па салдото се „превртува“ до вредност од приближно 2^256.

При повторното усогласување (reconciliation), позитивната разлика создава (mint) нови средства, а негативната разлика ги уништува (burn) средствата.

Напаѓачот може да префрли ограничен износ од сметката со превртено салдо или да испрати до сметка на жртвата износ од 2^256 минус нејзиното салдо, со што reconciliation процесот ќе ги уништи вистинските средства на жртвата.

Блокчејните што користат 0.6.x вршат mint и burn на базниот SDK ledger. Поради тоа, голем mint може да предизвика overflow на вкупната понуда и да го запре блокчејнот.

Блокчејните што работат на 0.7.x директно ги поставуваат салдата во x/bank и прифаќаат промени кои остануваат валидни по конверзијата од uint256 во int256.

Двата дела се извршуваат во рамките на една трансакција со нето-промена на понудата од нула, преку smart contract распореден на однапред пресметана адреса, која претходно била претворена во vesting сметка.

За експлоатацијата е потребно блокчејнот да дозволува permissionless креирање vesting сметки.

Препораки за операторите

Операторите кои користат Cosmos EVM се советуваат да ги преземат следните чекори:

  • Надградба: Надградете на v0.6.2, v0.7.2 или понова верзија. Надградбата треба да се изврши како координирана мрежна надградба бидејќи промената го прекинува компатибилитетот со постојната состојба (state-breaking).
  • Запрете наместо да гласате: Мрежите кои не можат веднаш да се надградат треба да го запрат производството на блокови наместо да спроведуваат координирана governance надградба. Советот наведува дека не постои mitigation што може да се примени само преку конфигурација. Исклучувањето на staking precompile го отстранува главниот пат за активирање на ранливоста, но не претставува замена за закрпата.
  • Затворете го предусловот: Во ante handler треба да се одбијат MsgCreateVestingAccount, MsgCreatePermanentLockedAccount и MsgCreatePeriodicVestingAccount. Vesting сметките дефинирани во genesis состојбата не се засегнати.
  • Проверете ја активната патека на кодот на fork: Cherry-pick закрпа која го поправа само exported helper-от може да остави дуплиран unexported helper непроменет, иако сите тестови продолжуваат успешно да поминуваат.
  • Применете ги двете дополнителни исправки: Snapshot-от на locked balance и заштитата на module account се одделни промени. Module-account guard ги одбива module accounts безусловно, што може да ги прекине EVM повиците направени од module account.
  • Регистрирајте безбедносен контакт со Cosmos Labs: За време на инцидентот Cosmos Labs дознала за 11 Cosmos EVM deployment-и кои претходно немале регистрирано контакт преку нејзините безбедносни канали.

Советот документира една upstream промена — SubBalance underflow guard, споена во main гранката на 15 мај како pull request #1176 и backport-ирана на 13 август.

Во истиот repository постојат уште две промени поврзани со салдата, но тие никаде не се наведени во advisory-то.

Pull request #1187, споен на 20 мај, прави snapshot на locked balance на сметката за правилно да се реконструира bank салдото откако precompile ќе го промени.

Backport-ите на #1187 за двете release линии биле отворени истиот ден и споени во рок од 24 часа, додека backport-от на #1176, кој исто така е state-breaking промена, следел околу 90 дена подоцна.

Commit 3524ebc, со наслов „Merge commit from fork“, го одбива секој обид за поставување на салдото на module account.

Придонесувачот на ZetaChain, morde08, на 21 август објавил port на сите три исправки и навел дека cherry-picked закрпата ја оставила активната патека на fork-от незакрпена, бидејќи fork-от содржел дуплирани unexported helper-и, додека upstream промената го менувала само exported helper-от.

Warden Protocol два дена подоцна избрал друг пристап и целосно го блокирал креирањето vesting сметки.

„Vesting сметките се единствениот извор на заклучени салда на Warden и ништо не зависи од тоа дали корисниците можат да ги креираат. Затоа, отстранувањето на тој пат го затвора предусловот, наместо да се потпираме на тоа дека реконструкцијата ќе биде правилна“, навел придонесувачот на Warden Protocol, jlehtimaki, во commit порака.

Јавен pull request во fork-от на Cosmos EVM на Push Chain детално ја опишал ранливоста и начинот на нејзина експлоатација во 07:16 UTC на 20 август, односно осум часа и 15 минути откако биле објавени исправените верзии.

Првиот напад, против MANTRA, започнал 11 часа и 50 минути подоцна, во 19:06 UTC.

Cosmos Labs ја испратила првата приватна нотификација преку безбеден email во 03:36 UTC на 21 август, приближно два часа откако MANTRA пријавила дека била компромитирана.

„Cosmos Labs тивко објави закрпи за 37 ранливости во последните 13 месеци, без downstream програмерите јавно и прецизно да ги опишат патеките за експлоатација“, соопшти Cosmos Labs во post-mortem анализата.

Белешките за изданијата v0.6.2 и v0.7.2 наведуваат дека изданијата содржат важни безбедносни исправки и треба да се применат што е можно побрзо. Сепак, ниту едно од нив не ја наведува безбедносната backport промена во changelog-от.

The Hacker News на 29 август потврди дека ниту едно од двете изданија не ги наведува pull request-ите преку кои била имплементирана закрпата.

Cosmos Labs соопшти дека знае за шест блокчејни на кои експлоатацијата била искористена.

Напаѓачите продале приближно 2,87 милиони американски долари во засегнати средства на децентрализираните берзи, пресметано според цените од 19 август. Компанијата наведува дека оваа бројка била доставена од засегнатите блокчејни и не била независно ревидирана.

Дополнителни 2,85 милиони американски долари биле продадени на централизирани берзи. Cosmos Labs ја проценила оваа сума врз основа на јавно достапните податоци за обемот на тргување.

Екосистемот на Cosmos опфаќа повеќе од 115 познати јавни блокчејни, а компанијата соопшти дека нема целосен регистар на мрежите кои го користат нејзиниот софтвер.

Истата празнина претходно им оставила на downstream добавувачите обврска да ги закрпат вклучените filesystem пропусти во јули.

The Hacker News побара од Cosmos Labs коментар зошто закрпата не била приватно дистрибуирана откако тимот потврдил дека сите блокчејни се засегнати. Приказната ќе биде ажурирана доколку компанијата одговори.

Извори:

  • The Hacker News – Cosmos EVM Flaw Exploited After Cosmos Labs Knew Every Blockchain Running It Was Vulnerable The Hacker News