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

Názory vyjádřené v tomto článku jsou názory přispěvatele/autora a nemusí nutně odrážet názory Binance Academy.

Stručně

Blockchainové mosty jsou základem pro dosažení interoperability v sektoru blockchainu. Proto je zabezpečení mostů velmi důležité. Některé běžné chyby zabezpečení mostu zahrnují slabé ověřování v řetězci a mimo něj, nesprávné zacházení s nativními tokeny a nesprávné konfigurace. Most by měl být otestován, aby se zajistilo, že odolá všem útočným vektorům a zajistí správnou ověřovací logiku.

Představit

Blockchain bridge je protokol, který spojuje dva blockchainy a umožňuje mezi nimi interakci. Pokud vlastníte bitcoin, ale chcete se podílet na aktivitě DeFi v síti Ethereum, blockchainový most vám to umožní, aniž byste svůj bitcoin prodali.

Blockchainové mosty jsou zásadní pro dosažení interoperability v blockchainovém sektoru. Fungují pomocí různých on-chain a off-chain autentizací, a proto mají různé bezpečnostní zranitelnosti.

Proč je zabezpečení mostu důležité?

Mosty obvykle obsahují tokeny, které chtějí uživatelé přenést z jednoho řetězce do druhého. Mosty, které se často nasazují jako chytré smlouvy, drží značné množství tokenů, protože se hromadí převody napříč řetězci, což z nich dělá lukrativní cíle pro hackery.

Navíc blockchainové mosty mají velkou útočnou plochu, protože zahrnují mnoho komponent. Vzhledem k této povaze jsou zákeřní aktéři vysoce motivováni k tomu, aby se zaměřili na aplikace napříč řetězci a vybrali tak velké částky finančních prostředků.

Mostní útoky vedou v roce 2022 ke ztrátám více než 1,3 miliardy dolarů, což představuje 36 % celkových ztrát za rok, podle odhadů CertiK.

Běžné přemostění zranitelností

Pro zlepšení zabezpečení mostů je cenné porozumět běžným zranitelnostem mostů a otestovat mosty před jejich spuštěním. Tyto zranitelnosti lze rozdělit do čtyř typů následovně.

Slabá autentizace v řetězci

U jednoduchých mostů, zejména těch navržených pro konkrétní DApps, je ověření v řetězci často minimální. Tyto mosty se spoléhají na centralizovaný backend k provádění základních operací, jako je ražba, vypalování a přenos tokenů, zatímco veškeré ověřování probíhá mimo řetězec.

Naproti tomu jiné typy mostů používají inteligentní smlouvy k ověřování zpráv a provádění ověřování v řetězci. V tomto případě, když uživatel vloží peníze do řetězce, inteligentní smlouva vygeneruje podepsanou zprávu a vrátí podpis v transakci. Tento podpis slouží jako doklad o vkladu, který se používá k ověření požadavku uživatele na výběr na jiném řetězci. Tento proces bude schopen zabránit různým bezpečnostním útokům, včetně útoků opakovaného přehrávání a falešných záznamů o vkladech.

Pokud však proces ověřování v řetězci obsahuje chyby zabezpečení, může útočník způsobit vážné poškození. Pokud například most používá strom Merkle k ověřování záznamů transakcí, útočník by mohl vytvořit zfalšované důkazy. To znamená, že mohou obejít ověřené ověřování a razit nové tokeny do svých účtů, pokud je proces ověřování zranitelný.

Některé mosty implementují koncept „zabalených žetonů“. Když například uživatel převede DAI z Etherea do řetězce BNB, jeho DAI se převezme ze smlouvy Ethereum a ekvivalentní množství zabaleného DAI se uvolní do řetězce BNB.

Pokud však tato transakce není řádně ověřena, může útočník nasadit škodlivou smlouvu ke směrování zabalených tokenů z mostu na nesprávnou adresu manipulací s funkcí.

Útočníci také potřebují, aby oběť schválila překlenovací smlouvu k převodu tokenů pomocí funkce „transferFrom“ k odebrání aktiv z překlenovací smlouvy.

Bohužel se to zhoršuje, protože mnoho mostů vyžaduje neomezené schválení tokenu od uživatelů DApp. Jedná se o oblíbenou metodu, která snižuje poplatky za plyn, ale vytváří další riziko tím, že chytré smlouvě umožňuje přístup k neomezenému počtu tokenů z peněženky uživatele. Útočníci mohou využít chybějící autentizace a nadměrné schvalování k přenosu tokenů od jiných uživatelů k nim.

Slabá mimořetězová autentizace

V některých přemosťovacích systémech hrají off-chain backend servery důležitou roli při ověřování legitimity zpráv odeslaných z blockchainu. V tomto případě se zaměřujeme na ověřování vkladových transakcí.

Blockchain bridge s off-chain autentizací funguje následovně:

  1. Uživatelé interagují s DApp a vkládají tokeny do inteligentní smlouvy ve zdrojovém řetězci.

  2. Tato aplikace DApp poté odešle řetězec hash transakce vkladu na backendový server prostřednictvím rozhraní API.

  3. Řetězec hash transakce podléhá určitému ověření serveru. Pokud je to považováno za legitimní, podepisující podepíše zprávu a odešle podpis zpět do uživatelského rozhraní prostřednictvím rozhraní API.

  4. Po obdržení podpisu jej DApp ověří a umožní uživatelům stáhnout své tokeny z cílového řetězce.

Server typu back-end musí zajistit, aby vkladová transakce, kterou zpracovává, skutečně proběhla a nebyla zfalšována. Tento back-end server určuje, zda uživatelé mohou stáhnout tokeny v cílovém řetězci, a proto je pro útočníky vysoce hodnotným cílem.

Backendový server potřebuje ověřit strukturu události emitované transakce a také adresu smlouvy, která událost emitovala. Pokud je ignorována, může útočník nasadit škodlivou smlouvu k předstírání události vkladu se stejnou strukturou jako legitimní událost vkladu.

Pokud backend server neověří, která adresa vydala událost, považuje to za platnou transakci a zprávu podepíše. Útočník pak může poslat transakční hash do backendu, obejít ověření a umožnit mu stáhnout tokeny z cílového řetězce.

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

Mosty mají různé přístupy ke zpracování nativních tokenů a pomocných tokenů. Například v síti Ethereum jsou nativní tokeny ETH a většina pomocných tokenů odpovídá standardu ERC-20.

Když uživatelé hodlají převést své ETH do jiného řetězce, musí je nejprve vložit do překlenovací smlouvy. Aby toho uživatelé dosáhli, stačí k transakci připojit ETH a množství ETH lze získat přečtením pole „msg.value“ transakce.

Odesílání ERC-20 tokenů se výrazně liší od odesílání ETH. Pro vložení tokenu ERC-20 musí uživatelé nejprve autorizovat překlenovací smlouvu k utracení svých tokenů. Jakmile to schválí a vloží tokeny do překlenovací smlouvy, smlouva buď spálí tokeny uživatele pomocí funkce "burnFrom()" nebo převede tokeny uživatele do smlouvy pomocí funkce "transferFrom(("). )" .

Jedním z přístupů, jak to odlišit, je použití příkazu if-else v rámci stejné funkce. Dalším přístupem je vytvoření dvou samostatných funkcí pro řešení každé situace. Pokus o vklad ETH pomocí funkce vkladu ERC-20 může vést ke ztrátě těchto prostředků.

Při zpracování požadavků na vklad ERC-20 uživatelé obvykle poskytují adresy tokenů jako vstup do funkce vkladu. To představuje značné riziko, protože během transakce může dojít k nedůvěryhodným externím hovorům. Implementace whitelistu, který obsahuje pouze tokeny podporované mostem, je oblíbeným způsobem, jak zmírnit riziko. Jako argumenty mohou být předány pouze adresy ze seznamu povolených. Tím se zabrání externím voláním, protože projektový tým vyfiltroval adresy tokenů.

Problémy však mohou také nastat, když mosty zpracovávají cross-chain přenosy nativních tokenů, protože nativní tokeny nemají adresu. Číslo adresy 0 (0x000...0) představuje původní token. To může být problematické, protože předání adresy 0 funkci může obejít ověření whitelistu, i když je implementováno nesprávně.

Když překlenovací smlouva zavolá "transferFrom" k převedení majetku uživatele do smlouvy, externí volání adresy nula vrátí hodnotu false, protože v adrese nula není implementována žádná funkce "transferFrom". K transakci však stále může dojít, pokud smlouva nezpracovává vrácenou hodnotu odpovídajícím způsobem. To vytváří příležitost pro útočníky provádět transakce bez převodu jakýchkoli tokenů do smlouvy.

Špatná konfigurace

Ve většině blockchainových mostů je privilegovaná role zodpovědná za whitelisting nebo blacklisting tokenů a adres, přiřazení nebo změnu signatářů a další důležité konfigurace. Zajištění správnosti všech konfigurací je zásadní, protože i zdánlivě malé chyby mohou vést ke značným ztrátám.

Ve skutečnosti došlo k problému, kdy útočník úspěšně obešel ověření záznamu o přenosu kvůli nesprávné konfiguraci. Projektový tým provedl několik dní před hackem upgrade protokolu, který zahrnoval změnu proměnné. Proměnná použitá k reprezentaci výchozí hodnoty důvěryhodné zprávy. Tato změna má za následek, že všechny zprávy jsou automaticky považovány za prokázané, což umožňuje útočníkovi odeslat libovolnou zprávu a obejít proces ověření.

Jak zlepšit zabezpečení mostu

Čtyři běžné překlenovací zranitelnosti vysvětlené výše demonstrují výzvy zajištění bezpečnosti v propojeném blockchainovém ekosystému. Pro řešení každé z těchto zranitelností existují důležitá hlediska a žádná samostatná příručka se nevztahuje na všechny z nich.

Například poskytnutí obecných pokynů pro zajištění bezchybného procesu ověřování je náročné, protože každý most má své vlastní požadavky na ověření. Nejúčinnějším způsobem, jak zabránit ověřovacímu bypassu, je důkladně otestovat most proti všem možným útočným vektorům a zajistit správnou ověřovací logiku.

Stručně řečeno, je nezbytné provádět přísné testování proti potenciálním útokům a věnovat zvláštní pozornost nejčastějším bezpečnostním zranitelnostem mostů.

souhrn

Mosty se zkříženými řetězy byly pro svou vysokou hodnotu dlouho cílem útočníků. Vývojáři mohou zvýšit zabezpečení svých mostů provedením důkladného testování před nasazením a využitím třetích stran k účasti na auditu, aby se snížilo riziko ničivých útoků – které mosty sužovaly v posledních několika letech. Mosty jsou velmi důležité součásti ve světě s mnoha řetězci, ale při navrhování a budování efektivní infrastruktury Web3 musí být prioritou bezpečnost.

Přečtěte si více:

Co je Blockchain Bridge?

Co je to Cross-Chain interoperabilita?

Tři populární kryptoměnové mosty a jak fungují

Co jsou to zabalené tokeny?

Zřeknutí se odpovědnosti a varování před rizikem: Tento obsah je vám prezentován „tak, jak je“, pouze pro obecné informační a vzdělávací účely, bez jakéhokoli zastoupení nebo záruky. Nemělo by být vykládáno jako finanční, právní nebo jiné odborné poradenství, ani není zamýšleno jako doporučení ke koupi jakéhokoli konkrétního produktu nebo služby. Měli byste vyhledat vlastní radu od příslušných odborných poradců. V případech, kdy články přispívají přispěvatelé třetích stran, mějte na paměti, že vyjádřené názory patří přispěvateli třetí strany a nemusí nutně odrážet názory Binance Academy. Pro více podrobností si prosím přečtěte naše úplné prohlášení o vyloučení odpovědnosti zde. Ceny digitálních aktiv mohou kolísat. Hodnota vaší investice může klesat i stoupat a nemusíte dostat zpět částku, kterou jste investovali. Jste výhradně odpovědní za svá investiční rozhodnutí a Binance Academy nenese odpovědnost za jakékoli ztráty, které vám mohou vzniknout. Tento materiál by neměl být vykládán jako finanční, právní nebo jiné odborné poradenství. Další informace naleznete v našich podmínkách použití a varování před riziky.