Jaké jsou nejčastější bezpečnostní slabiny mostů?
Domů
Články
Jaké jsou nejčastější bezpečnostní slabiny mostů?

Jaké jsou nejčastější bezpečnostní slabiny mostů?

Středně pokročilí
Zveřejněno Mar 22, 2023Aktualizováno Jun 15, 2023
9m

Tento článek je příspěvkem od naší komunity. Autorem je Minzhi He, auditor ve společnosti CertiK.

Názory v tomto článku jsou názory přispěvatele/autora a nemusí se nutně shodovat s názory Akademie Binance.

TL;DR

Blockchainové mosty mají v blockchainovém odvětví rozhodující význam pro dosažení interoperability. Bezpečnost blockchainového mostu je proto naprosto zásadní. Mezi nejčastější bezpečnostní slabiny mostů patří slabá onchainová a offchainová validace, nesprávné zacházení s nativními tokeny a chybná konfigurace. K zajištění řádné logiky ověřování se doporučuje most testovat proti všem možným vektorům útoku.

Úvod 

Blockchainový most je protokol, který spojuje dva blockchainy, aby dokázaly spolupracovat. Pokud vlastníte bitcoin, ale chcete používat decentralizované finance (DeFi) na Ethereu, blockchainový most vám to umožní, aniž byste museli bitcoin prodat. 

Blockchainové mosty mají zásadní význam pro dosažení interoperability. Používají různé onchainové a offchainové validace, se kterými souvisí různorodé bezpečnostní slabiny.

Proč je bezpečnost mostů tak důležitá? 

Most obvykle drží tokeny, které uživatelé převádí z jednoho blockchainu na druhý. Mosty, často používané jako chytré kontrakty, drží značné množství tokenů, které se na nich při převodech mezi blockchainy hromadí, což z nich dělá lukrativní cíle pro hackery. 

Blockchainové mosty navíc mají velkou útočnou plochu, protože se skládají z mnoha prvků. Subjekty s nekalými úmysly se proto často zaměřují na crosschainové aplikace, ze kterých dokáží odčerpat velké finanční částky. 

Podle odhadů společnosti CertiK vedly útoky na mosty v roce 2022 ke ztrátám ve výši více než 1,3 miliard USD, což představuje 36 % celkových ztrát za celý rok. 

Nejčastější bezpečnostní slabiny mostů

Když chcete zlepšovat bezpečnost mostů, je důležité nejdřív porozumět jejich nejčastějším bezpečnostním slabinám a před spuštěním mostu je otestovat. Tyto slabiny můžeme rozdělit do následujících čtyř oblastí. 

Slabá onchainová validace

U jednoduchých mostů, především těch, které jsou navržené pro konkrétní decentralizované aplikace, je onchainová validace omezena na minimum. Tyto mosty se s realizací základních operací, jako je ražba, pálení a převody tokenů, spoléhají na centralizovaný backend a veškeré ověřování se provádí mimo blockchain.

Jiné typy mostů zase k validaci zpráv a onchainovému ověřování používají chytré kontrakty. Když v tomto případě uživatel vloží na blockchain finanční prostředky, chytrý kontrakt vygeneruje podepsanou zprávu a transakcí mu vrátí podpis. Tento podpis slouží jako důkaz o vkladu a používá se k ověření žádosti uživatele o výběr na druhém blockchainu. Tento proces by měl být schopen bránit různým bezpečnostním útokům, včetně útoků přehráním (replay attack) a padělání záznamů o vkladech. 

Pokud má ale onchainový proces validace nějakou slabinu, útočník může napáchat vážné škody. Pokud například most používá k ověření záznamu o transakci Merkleho strom, útočník může vygenerovat falešné důkazy. To znamená, že pokud je proces ověřování zranitelný, může validaci zcela obejít a vyrazit nové tokeny na svůj účet.

Některé mosty používají takzvané zabalené tokeny. Když například uživatel převede DAI z Etherea na BNB Chain, jeho DAI z ethereového kontraktu se vezme a na BNB Chainu se emituje ekvivalentní množství zabaleného DAI. 

Pokud ale tato transakce není řádně ověřena, útočník může spustit škodlivý kontrakt, který zmanipulováním funkce přesměruje zabalené tokeny z mostu na nesprávnou adresu. 

Útočníci zároveň potřebují, aby oběti schválily kontrakt mostu na převod tokenů, aby mohli pomocí funkce „transferFrom“ vyvést aktiva z kontraktu mostu. 

Tento typ útoku navíc zhoršuje skutečnost, že mnoho mostů uživatele DApp žádá o trvalé schválení žádosti o tokeny. Jedná se o běžnou praxi, která snižuje poplatky gas, ale vytváří další rizika, protože poskytuje chytrému kontraktu přístup k neomezenému počtu tokenů v peněžence uživatele. Útočníci pak mohou nedostatečné validace a nadměrné schvalování využít k převodu tokenů z peněženek jiných uživatelů do peněženek svých.

Slabá offchainová validace

U některých mostů hraje při ověřování legitimity zpráv odesílaných z blockchainu klíčovou roli offchainový backendový server. V tomto případě se zaměříme na ověřování vkladových transakcí. 

Blockchainový most s offchainovou validací funguje následovně: 

  1. Uživatelé použijí DApp ke vkladům tokenů na chytrý kontrakt zdrojového blockchainu.

  2. Tato DApp pak prostřednictvím rozhraní API odešle hash vkladové transakce backendovému serveru.

  3. Hash transakce podléhá několika validacím ze strany serveru. Pokud je považován za legitimní, podepisující podepíše zprávu a prostřednictvím rozhraní API odešle podpis zpět uživatelskému rozhraní.

  4. Po obdržení podpisu ho DApp ověří a umožní uživateli vybrat tokeny z cílového blockchainu.

Backendový server musí zajistit, aby vkladová transakce, kterou zpracovává, skutečně proběhla a nebyla zfalšovaná. Tento backendový server určuje, jestli si uživatel může na cílovém blockchainu vybrat tokeny, a pro útočníky je proto velmi cenným cílem.

Backendový server musí ověřit strukturu emitované události transakce a adresu kontraktu, který událost emitoval. Pokud ověření adresy zanedbá, útočník může spustit škodlivý kontrakt, který zfalšuje vkladovou událost stejnou strukturou, jakou měla legitimní vkladová událost. 

Pokud backendový server neověří, která adresa událost vyslala, bude transakci považovat za platnou a zprávu podepíše. Útočník pak může hash transakce odeslat backendu – obejde tak ověření a bude moct vybrat tokeny z cílového blockchainu.

Nesprávné zacházení s nativními tokeny

Mosty používají ke zpracování nativních a užitkových tokenů různé přístupy. Například nativním tokenem sítě Ethereum je ETH a většina užitkových tokenů této sítě se řídí standardem ERC-20. 

Když chce uživatel převést ethery na jiný blockchain, musí je nejdřív vložit do kontraktu mostu. Funguje to tak, že uživatel jednoduše připojí ETH k transakci a částku v ETH je možné získat přečtením pole transakce „msg.value“.

Vklad ERC-20 tokenů se od vkladu ETH značně liší. Pokud chce uživatel vložit ERC-20 token, musí nejdřív kontraktu mostu dovolit jeho tokeny utratit. Po schválení útraty a vložení tokenů do kontraktu mostu může kontrakt tokeny uživatele buď spálit pomocí funkce „burnFrom()“, nebo je převést jinému kontraktu pomocí funkce „transferFrom()“. 

Jedním z přístupů, jak to odlišit, je použít v rámci stejné funkce příkaz „if-else“. Dalším přístupem je vytvořit pro každou situaci dvě samostatné funkce. Kdybyste se pomocí funkce pro vklad ERC-20 tokenů pokusili vložit ethery, mohli byste o ně přijít.

Při zpracování žádostí o vklad ERC-20 tokenů uživatelé obvykle zadávají jako vstup vkladové funkce adresu tokenu. To představuje značné riziko, protože během transakce může dojít k nedůvěryhodným externím voláním. Toto riziko se často minimalizuje zavedením seznamu povolených, který obsahuje pouze tokeny podporované mostem. Jako argumenty je pak možné zadávat pouze adresy uvedené na seznamu povolených. Zabrání se tak externím voláním, protože projektový tým už adresu tokenu vyfiltroval.

Problémy ale mohou nastat i v případě, že mosty zpracovávají crosschainový převod nativního tokenu, protože nativní token nemá adresu. Nativní token mívá nulovou adresu (0x000…0). To může být problematické, protože předání nulové adresy funkci může obejít i správně zavedený seznam povolených. 

Když kontrakt mostu vyvolá funkci „transferFrom“, aby převedl aktiva uživatele do kontraktu, externí volání nulové adresy vrátí „false“, protože nulová adresa nepoužívá funkci „transferFrom“. K transakci může přesto dojít i v případě, že kontrakt návratovou hodnotou nezpracuje správně. Útočníci tak získají příležitost realizovat transakci, aniž by do kontraktu převedli jakékoli tokeny.

Chybná konfigurace

U většiny blockchainových mostů za přidávání tokenů a adres na seznam povolených nebo zakázaných, přiřazování nebo změnu podepisujících a další kritické konfigurace zodpovídá privilegovaná role. Zajištění správnosti všech konfigurací je klíčové, protože i zdánlivě banální přehlédnutí může vést ke značným ztrátám.

Ve skutečnosti už došlo k incidentu, kdy útočník kvůli chybné konfiguraci úspěšně obešel ověření záznamu o převodu. Pár dní před hackerským útokem provedl projektový tým aktualizaci protokolu, která změnila i jednu proměnnou. Tato proměnná zastupovala výchozí hodnotu důvěryhodné zprávy. Tato změna vedla k tomu, že všechny zprávy byly automaticky považovány za ověřené, takže útočník mohl projít procesem ověření s libovolnou zprávou.

Jak zabezpečení mostů zlepšit

Čtyři nejčastější slabiny blockchainový mostů vysvětlené výše ukazují, jak je zajištění bezpečnosti v propojeném blockchainovém ekosystému náročné. Ke každé slabině je nutné přistupovat z různých úhlů a nelze je všechny vyřešit jednotným přístupem. 

Například poskytnutí obecných pokynů k zajištění bezchybného procesu ověřování je obtížné, protože každý most má jedinečné požadavky na ověřování. Nejúčinnějším přístupem, jak zabránit obejití ověření, je důkladně otestovat most proti všem možným vektorům útoku a zajistit řádnou logiku ověření. 

Závěrem můžeme říct, že důkladné testování proti potenciálním útokům a věnování zvláštní pozornosti nejčastějším bezpečnostním slabinám mostů je naprosto nezbytné.  

Závěrem 

Crosschainové mosty jsou vzhledem ke své vysoké hodnotě cílem útočníků už dlouho. Vývojáři mohou zabezpečení mostů posilovat důkladným testováním ještě před jejich spuštěním a využíváním auditů třetích stran. Sníží tím riziko ničivých hackerských útoků, které v posledních letech mosty sužují. Mosty jsou pro svět plný různých blockchainů velmi důležité, ale při navrhování a budování efektivní infrastruktury Webu 3 se musíme v první řadě zaměřit na bezpečnost.

Související články:

Co je blockchainový most?

Co je crosschainová interoperabilita?

Tři oblíbené kryptoměnové mosty a jak fungují

Co jsou zabalené tokeny?

Vyloučení odpovědnosti a upozornění na rizika: tento obsah je vám předkládán ve stavu, v jakém je, pouze pro obecné informační a vzdělávací účely, bez jakéhokoli prohlášení nebo záruky. Neměl by být chápán jako finanční, právní nebo jiné odborné poradenství ani není jeho cílem doporučit nákup jakéhokoli konkrétního produktu nebo služby. Měli byste se poradit s příslušnými odbornými poradci. Upozorňujeme, že pokud je článek příspěvkem od třetí strany, vyjádřené názory patří této třetí straně a nemusí se nutně shodovat s názory Akademie Binance. Další podrobnosti se dozvíte v našem úplném prohlášení o vyloučení odpovědnosti zde. Ceny digitálních aktiv mohou být volatilní. Hodnota vaší investice může klesnout nebo stoupnout a investovaná částka se vám nemusí vrátit. Za svá investiční rozhodnutí nesete výhradní odpovědnost vy sami a Akademie Binance nenese odpovědnost za žádné ztráty, které vám mohou vzniknout. Tento materiál by neměl být chápán jako finanční, právní nebo jiné odborné poradenství. Další informace získáte v našich podmínkách použití a upozornění na rizika.