Hlavní navigace

Veřejné blockchainy pod útokem: problémy se nevyhýbají Bitcoinu ani Ethereu

24. 3. 2021
Doba čtení: 6 minut

Sdílet

 Autor: Depositphotos
Krátká historie technologie veřejného blockchainu je plná úspěšných útoků a fatálních zranitelností. Nejde přitom jen o problém menších platforem.

Není v kapacitách článku vyčerpat téma bezpečnosti veřejných blockchainů na maximum, po přečtení již ale budete tušit, kdy se dvakrát rozmyslet, než nějaké blockchainové technologii svěříte svůj pracně nastřádaný kapitál.

Termínem blockchain v daném kontextu máme na mysli hlavně otevřený veřejný blockchain. Privátní blockchainy, zejména ty, které dosahují konsenzu prostřednictvím mechanismu practical byzantine fault tolerance (pBFT), který je značně zranitelný Sybiliným útokem a velmi špatně škáluje, si raději necháme na jindy. 

Blockchain pro naši potřebu ve zkratce představuje formu databáze (nebo ještě lépe knihy účetních záznamů), která je distribuovaná, nemá centrálního správce, může ji číst kdokoli, ale zapisovat do ní lze jen na základě konsenzu. 

Ten vzniká prostřednictvím hlasování finančně motivovaných účastníků sítě. Díky tomu je možné bezpečně a trvale uchovávat data nebo transakce bez nutnosti centrální dohledové autority. 

O validaci se stará samotná síť. Uživatelé, kteří se na validaci transakcí svým hlasováním podílejí, jsou za svoji aktivitu odměňováni síťovými tokeny daného blockchainu, ten tak vlastně nahrazuje síť trhem. 

Mezi jeho stránky důležité z technického hlediska patří stabilita, jednoduchost specifikace a trvalá povaha v čase. To by mělo například umožňovat více stranám provádět mezi sebou transakce, aniž by se musely znát a důvěřovat si (Bitcoin), využívat jej jako mechanismus pro dokazování pravosti určitého časového otisku nebo třeba do blockchainu ukládat sekvence kódu, které se automaticky se spustí, když jsou splněny předem stanovené podmínky (smart kontrakty). 

Transakce prováděné pomocí blockchainu by neměly být napadnutelné prostřednictvím cenzury ani vyloučením jedné ze stran (jako se to stalo například v roce 2010, kdy společnosti Visa, MasterCard a PayPal začaly blokovat dárcovské příspěvky na účty Wikileaks). Je tomu ale ve skutečnosti vždycky tak?

Útoky na Bitcoin

Všechny blockchainové aplikace tiše předpokládají, že blockchain nemůže být modifikován a že má schopnost ukládat veřejně ověřitelné a nezpochybnitelné záznamy. Ne vždy tomu tak ale skutečně je a krátká historie technologie veřejného blockchainu je plná úspěšných útoků a fatálních zranitelností. Pokud si myslíte, že jde jen o problém menších platforem a blockchainů, které pracují s turingovsky úplnými jazyky, rychle vás vyvedu z omylu.

Podobné chyby se nevyhýbají ani Bitcoinu, v srpnu 2010 se například podařilo v bloku 74638 potvrdit transakci, které se povedlo poslat 184 467 440 737 bitcoinů. Z hlediska útočných vektorů je ale zajímavější mnohem mladší chyba s označením CVE-2018–17144 umožňující zrealizovat na bitcoinovou síť úspěšný DoS útok a za splnění určitých podmínek provést dvojitou útratu neutracené transakce (UTXO). 

Chyba byla objevena až v roce 2018 a rok se v produkčním kódu nacházela bez povšimnutí. Po jejím nahlášení byla relativně rychle opravena (Bitcoin core klient od verze 0.16.3 již chybu neobsahoval). Chyba samotná měla dva projevy – ve verzích klienta 0.14.x se projevoval „pouze“ Denial of Service zranitelností, kvůli které software nodu pozná, že je něco špatně, a přestane pracovat (čímž se značně omezí šíření chybné transakce dále do sítě), ve verzích od 0.15.x do 0.16.2 se již objevuje také inflation bug umožňující za specifických podmínek provést dvojitou útratu a tím pádem umělé nafukování finálního množství bitcoinů. 

DoS útok fungoval na tom principu, že přijmutí duplikovaného UTXO vedlo ke zhroucení klientů bitcoind a Bitcoin-Qt. Pokud by vás zajímala podrobná technická anatomie obou útoků, popisuji ji v článku Osudná chyba, která nezabila Bitcoin. Co se stalo a jak se z toho poučit? 

Bitcoinový blockchain byl ještě nedávno také oblíbeným terčem pro dust attack neboli zahlcení mempoolu množstvím spamových transakcí, které mají za úkol významně zdržet vytěžení legitimních transakcí (v listopadu 2017 se takto na řadu dní podařilo zdržet transakce v celkové tehdejší hodnotě asi 700 milionů dolarů).

Útoky na Ethereum a další

V květnu a červnu 2018 jsme pro změnu mohli být svědky nevýhody nedostatečně rozvinutého proof of work chainu. Slabý bezpečnostní rozpočet vedl k úspěšnému 51% útoku, o kterém se dlouho soudilo, že je spíše teoretický, na blockchainy kryptoměn Monacoin, Bitcoin Gold, Zencash, Verge a Litecoin Cash. 

Ve finále skončil ztrátou 5 milionů dolarů pro jejich uživatele. Útočníkům se na daných blockchainech podařilo dočasně získat více než 51 % hash rate sítě a zabránit dalším těžařům v přidávání nových bloků. Díky tomu mohli prosadit vlastní verzi blockchainu s dvojitou útratou vlastních transakcí s vysokou hodnotou. Úspěšným 51% útokem si dvakrát prošlo také Ethereum Classic, přičemž ten druhý ze srpna 2020 vyústil v dvojitou útratu ETC v hodnotě téměř 5,6 milionu amerických dolarů. 

Úspěšné útoky se ale nevyhýbají ani hlavní Ethereum síti. V červnu 2016 například neznámý útočník kvůli chybě v chytrém kontraktu referenční decentralizované organizace, projektu The DAO společnosti Slock.it, z kontraktu odčerpal Ethereum za 50 milionů dolarů. 

Útok, který díky funkční smyčce umožnil vysát do smart kontraktu svěřené prostředky, vedl až k hard forku sítě a vzniku dvou udržovaných větví (Ethereum a Ethereum Classic), z nichž na jedné se útok nikdy nestal (Ethereum). Přepisování historie blockchainu, kterou tehdy navíc aktivně podpořilo asi jen 6 % zainteresované komunity (ostatní se zdrželi hlasování), na dlouhou dobu poškodilo pověst celé platformy.

Teď už ale k samotnému dělení. Pro zjednodušení se zaměříme na útoky, případně varianty, které jsou typické pouze pro blockchain. Začneme přímými útoky na síť.

Distributed Denial of Service (DDoS) v blockchainovém podání

DDoS útoky patří k nejstarším síťovým útokům vůbec. Jejich základní idea je zaplavit síť nebo zařízení požadavky nebo síťovým provozem do té míry, že dojde k závažnému zpomalení nebo kolapsu systému. To lze poměrně snadno provést u centralizovaných řešení, protože je ale veřejný blockchain minimálně z části decentralizovaný a distribuovaný, musí útočník ovlivnit větší počet nodů v síti ve stejný čas, aby útok dokázal na síti způsobit dostatečný chaos. To znamená také větší časové i finanční náklady. 

Ukázkový DDoS útok zažila v létě 2016 síť Etherea. Celý útok byl postavený jako výpočetní DDoS, kdy se útočníkovi podařilo donutit těžaře a nody trávit velmi dlouhou dobu zpracováním bloků, takže se síť stala prakticky nepoužitelnou. Využil k tomu přitom relativně jednoduchého triku: zahltil síť transakcemi, které volaly opcode  EXTCODESIZE, vyžadující, aby nody četly informace o stavu z disku. Útočník využil toho, že daný opcode měl v dané době velmi nízkou cenu za gas, takže jej volal zhruba 50 000krát za blok. Dnes dojde v podobných případech k navýšení gas fee, takže by se podobný útok velice rychle prodražil.

Relativně novou a málo prozkoumanou variantou DDoS útoku je takzvaný BDoS (Blockchain Denial-of-Service) útok objevený díky společnému výzkumu technologickému kampusu Cornell Tech při Cornellově univerzitě a Technion Israel Institute of Technology. Útok využívá mechanismu odměn u proof of work blockchainů k odrazování těžařů od participace na další těžbě. 

Tip do článku - EBF21 tematické bloky

Celou technickou specifikaci útoku si je možné přečíst zde, ve stručnosti jde ale o to, že miner s více než 21% hash rate signalizuje ostatním svoji konkurenční výhodu, což odradí ostatní od další participace na těžbě. „Pokud je pokles ziskovosti dostatečně významný, aby všichni těžaři zastavili těžbu, může útočník zastavit těžbu také a síť se zastaví,“ tvrdí výzkumníci. Útok nicméně předpokládá čistě pragmatické a racionální chování těžařů a nezohledňuje příliš dobře dlouhodobé plánování minig operací a další faktory.

V příštím článku se podrobně podíváme, jak funguje nejznámější druh útoku na konsensus protokol: 51% útok. Popíšeme si také, jak funguje Sybilin útok, transaction malleability, timejacking, routovací útoky, Eclipse útok a long range útoky v proof of stake sítích, útoky na smart kontrakty a virtuální stroje, útoky na verifikační mechanismus transakcí, Finneyho útok, race útoky, Vector76 a reorganizační útoky (Alternative history attacks), selfish mining nebo třeba „fork after withholding“.

Autor článku

Externí spolupracovník serveru Lupa.cz a expert na blockchain a kryptoměny. Jako šéfredaktor v minulosti vedl ADASTRA Business Intelligence Magazine a server ITbiz.cz.