Ak├ę s├║ be┼żn├ę bezpe─Źnostn├ę slabiny mostov?
Domov
Články
Ak├ę s├║ be┼żn├ę bezpe─Źnostn├ę slabiny mostov?

Ak├ę s├║ be┼żn├ę bezpe─Źnostn├ę slabiny mostov?

Roz┼í├şren├ę
Zverejnen├ę Mar 22, 2023Aktualizovan├ę Jun 15, 2023
9m

Tento ─Źl├ínok je komunitn├Ż pr├şspevok. Jeho autorom je Minzhi He, auditor spolo─Źnosti CertiK.

N├ízory uveden├ę v┬átomto ─Źl├ínku s├║ n├ízory prispievate─ża/autora a nemusia nevyhnutne odr├í┼ża┼ą n├ízory Akad├ęmie Binance.

Zhrnutie

Blockchainov├ę mosty s├║ rozhoduj├║cim prvkom pre dosiahnutie interoperability v┬áblockchainovom priestore. Bezpe─Źnos┼ą blockchainov├ęho mosta je preto vrcholne d├┤le┼żit├í. Medzi be┼żn├ę bezpe─Źnostn├ę slabiny mostov patria slab├ę overenie v┬ár├ímci blockchainu a┬ámimo neho, nespr├ívna manipul├ícia s┬ánat├şvnymi tokenmi a┬ánespr├ívne konfigur├ície. Aby sa zabezpe─Źila spo─żahliv├í logika overenia, odpor├║─Źa sa testovanie mosta proti v┼íetk├Żm mo┼żn├Żm vektorom ├║toku.

Úvod 

Blockchainov├Ż most je protokol sp├íjaj├║ci dva blockchainy s┬ácie─żom umo┼żni┼ą komunik├íciu medzi nimi. Ak vlastn├şte bitcoin, ale chcete sa podie─ża┼ą na aktivite DeFi v┬ásieti Ethereum, blockchainov├Ż most v├ím to umo┼żn├ş bez toho, aby ste museli preda┼ą svoj bitcoin.┬á

Blockchainov├ę mosty s├║ z├íkladom pre dosiahnutie interoperability v┬ár├ímci blockchainov├ęho priestoru. Funguj├║ pomocou r├┤znych valid├íci├ş v┬ár├ímci blockchainu a┬ámimo neho, a┬ápreto ─Źelia r├┤znym bezpe─Źnostn├Żm rizik├ím.

Pre─Źo je bezpe─Źnos┼ą mosta kritick├í?┬á

Most zvy─Źajne dr┼ż├ş token, ktor├Ż chce pou┼ż├şvate─ż prenies┼ą z┬ájedn├ęho re┼ąazca do druh├ęho. Mosty, ktor├ę sa ─Źasto nasadzuj├║ ako smart kontrakty, dr┼żia pri nahromaden├ş medzisie┼ąov├Żch prevodov zna─Źn├ę mno┼żstvo tokenov, ─Źo z┬ánich rob├ş lukrat├şvne ciele pre hackerov.┬á

Navy┼íe, blockchainov├ę mosty poskytuj├║ ve─żk├║ ├║to─Źn├║ plochu, ke─Ć┼że obsahuj├║ ve─ża komponentov. Z┬átohto poh─żadu maj├║ ┼íkodliv├ş akt├ęri ve─żk├║ motiv├íciu zamera┼ą sa na medzisie┼ąov├ę aplik├ície s┬ácie─żom od─Źerpa┼ą ve─żk├ę sumy finan─Źn├Żch prostriedkov.┬á

├Ütoky na mosty sp├┤sobili v┬ároku 2022 straty vo v├Ż┼íke viac ako 1,3┬ámiliardy USD, ─Źo pod─ża odhadov spolo─Źnosti CertiK predstavuje 36┬á% celkov├Żch ro─Źn├Żch str├ít.┬á

Be┼żn├ę bezpe─Źnostn├ę slabiny mostov

Na zv├Ż┼íenie bezpe─Źnosti mostov je d├┤le┼żit├ę porozumie┼ą be┼żn├Żm bezpe─Źnostn├Żm slabin├ím mostov a┬áe┼íte pred spusten├şm ich otestova┼ą. Tieto slabiny mo┼żno kategorizova┼ą do nasleduj├║cich ┼ítyroch oblast├ş.┬á

Slab├í valid├ícia v┬ár├ímci re┼ąazca

V┬ápr├şpade jednoduch├Żch mostov, najm├Ą t├Żch, ktor├ę s├║ navrhnut├ę pre ┼ípecifick├ę DApp, je overenie v┬ár├ímci re┼ąazca obmedzen├ę na minimum. Tieto mosty sa pri vykon├ívan├ş z├íkladn├Żch oper├íci├ş (razba, p├ílenie a┬áprenos tokenov) spoliehaj├║ na centralizovan├Ż backend, pri─Źom v┼íetky overenia sa vykon├ívaj├║ mimo blockchainu.

Na rozdiel od toho in├ę typy mostov pou┼ż├şvaj├║ na overovanie spr├ív a┬ávykon├ívanie overen├ş v┬ár├ímci re┼ąazca smart kontrakty. V┬átomto scen├íri, ke─Ć pou┼ż├şvate─ż vlo┼ż├ş prostriedky do re┼ąazca, vygeneruje smart kontrakt podp├şsan├║ spr├ívu a┬ávr├íti podpis v┬átransakcii. Tento podpis sl├║┼żi ako d├┤kaz o┬ávklade a┬ápou┼ż├şva sa na overenie ┼żiadosti pou┼ż├şvate─ża o┬áv├Żber na druhom re┼ąazci. Tento proces by mal by┼ą schopn├Ż zabr├íni┼ą r├┤znym bezpe─Źnostn├Żm ├║tokom vr├ítane opakovan├Żch ├║tokov a┬áfalo┼ín├Żch z├íznamov o vkladoch.┬á

Ak sa v┼íak po─Źas procesu overovania v┬áre┼ąazci vyskytne slabina, ├║to─Źn├şk m├┤┼że sp├┤sobi┼ą v├í┼żnu ┼íkodu. Ak napr├şklad most pou┼ż├şva na overenie z├íznamu transakcie strom Merkle, ├║to─Źn├şk m├┤┼że vytvori┼ą falo┼ín├ę d├┤kazy. To znamen├í, ┼że ak je proces overovania zranite─żn├Ż, ├║to─Źn├şk m├┤┼że ob├şs┼ą overenie d├┤kazov a┬ávyrazi┼ą nov├ę tokeny na svoj ├║─Źet.

Niektor├ę mosty implementuj├║ koncept ÔÇ×zabalen├Żch tokenovÔÇť. Napr├şklad, ke─Ć pou┼ż├şvate─ż prevedie DAI zo siete Ethereum do BNB Chain, jeho DAI sa prevezm├║ z kontraktu siete Ethereum a┬áv┬áBNB Chain sa vyd├í ekvivalentn├ę mno┼żstvo zabalen├Żch DAI.┬á

Ak v┼íak t├íto transakcia nie je spr├ívne overen├í, ├║to─Źn├şk by mohol manipul├íciou s┬áfunkciou nasadi┼ą ┼íkodliv├Ż kontrakt na presmerovanie zabalen├Żch tokenov z┬ámosta na nespr├ívnu adresu.┬á

├Üto─Źn├şci tie┼ż potrebuj├║, aby obete schv├ílili premos┼ąovac├ş kontrakt na prevod tokenov pomocou funkcie ÔÇ×transferFromÔÇť na od─Źerpanie akt├şv z┬ápremos┼ąovacieho kontraktu.┬á

Bohu┼żia─ż, toto je e┼íte hor┼íie, preto┼że mnoho mostov vy┼żaduje od pou┼ż├şvate─żov DApp nekone─Źn├ę schva─żovanie tokenov. Ide o┬ábe┼żn├Ż postup, ktor├Ż zni┼żuje v├Ż┼íku poplatkov gas, vytv├íra v┼íak ─Ćal┼íie rizik├í t├Żm, ┼że smart kontraktu umo┼ż┼łuje pr├şstup k┬áneobmedzen├ęmu po─Źtu tokenov z┬ápe┼ła┼żenky pou┼ż├şvate─ża. ├Üto─Źn├şci dok├í┼żu vyu┼żi┼ą nedostatok v overen├ş a┬ánadmern├ę schv├ílenie na prenos tokenov od in├Żch pou┼ż├şvate─żov k┬ásebe.

Slabá validácia mimo blockchainu

V┬ániektor├Żch premos┼ąovac├şch syst├ęmoch hr├í backend server mimo blockchainu rozhoduj├║cu ├║lohu pri overovan├ş legitimity spr├ív odoslan├Żch z┬áblockchainu. V┬átomto pr├şpade sa zameriame na overenie vkladov.┬á

Blockchainov├Ż most s┬áoveren├şm mimo blockchainu funguje nasledovne:┬á

  1. Pou┼ż├şvatelia interaguj├║ s┬áDApp a┬ávkladaj├║ tokeny do smart kontraktu na┬ázdrojovom re┼ąazci.

  2. DApp potom odo┼íle hash vkladu na backend server prostredn├şctvom rozhrania API.

  3. Hash transakcie podlieha viacer├Żm overeniam serverom. Ak sa vyhodnot├ş ako legit├şmny, podpisovate─ż podp├ş┼íe spr├ívu a┬áodo┼íle podpis sp├Ą┼ą do pou┼ż├şvate─żsk├ęho rozhrania cez API.

  4. Po prijat├ş podpisu ho DApp over├ş a┬áumo┼żn├ş pou┼ż├şvate─żovi, aby si stiahol tokeny z┬ácie─żov├ęho re┼ąazca.

Backend server sa mus├ş uisti┼ą, ┼że vklad, ktor├Ż spracov├íva, skuto─Źne prebehol a┬ánebol sfal┼íovan├Ż. Tento backend server ur─Źuje, ─Źi pou┼ż├şvate─ż m├┤┼że stiahnu┼ą tokeny na cie─żovom re┼ąazci. Preto je pre ├║to─Źn├şkov cenn├Żm cie─żom.

Backend server mus├ş overi┼ą ┼ítrukt├║ru udalosti emitovanej transakciou, ako aj adresu kontraktu, ktor├Ż udalos┼ą vyslala. V┬ápr├şpade zanedbania posledne uveden├ęho by ├║to─Źn├şk mohol nasadi┼ą ┼íkodliv├Ż kontrakt na vytvorenie udalosti vkladu s┬árovnakou ┼ítrukt├║rou, ako m├í udalos┼ą legit├şmneho vkladu.┬á

Ak backend server neover├ş, ktor├í adresa vyslala udalos┼ą, pova┼żoval by to za platn├║ transakciu a┬áspr├ívu by podp├şsal. ├Üto─Źn├şk by potom mohol posla┼ą hash transakcie do backendu, ob├şs┼ą overenie a┬áumo┼żni┼ą ├║to─Źn├şkovi stiahnu┼ą tokeny z┬ácie─żov├ęho re┼ąazca.

Nespr├ívna manipul├ícia s┬ánat├şvnymi tokenmi

Mosty pou┼ż├şvaj├║ na manipul├ícii s┬ánat├şvnymi a┬á├║┼żitkov├Żmi tokenmi r├┤zne pr├şstupy. Napr├şklad v┬ásieti Ethereum je nat├şvnym tokenom ETH a┬áv├Ą─Ź┼íina ├║┼żitkov├Żch tokenov dodr┼żiava ┼ítandard ERC-20.┬á

Ke─Ć pou┼ż├şvate─ż zam├Ż┼í─ża previes┼ą svoje ETH do in├ęho re┼ąazca, mus├ş ich najsk├┤r vlo┼żi┼ą do premos┼ąovacieho kontraktu. Aby to dosiahol, pou┼ż├şvate─ż jednoducho pripoj├ş ETH k┬átransakcii a┬ámno┼żstvo ETH mo┼żno z├şska┼ą pre─Ź├ştan├şm po─ża ÔÇ×msg.valueÔÇť transakcie.

Vkladanie tokenov ERC-20 sa v├Żrazne l├ş┼íi od vkladania ETH. Na ulo┼żenie tokenu ERC-20 mus├ş pou┼ż├şvate─ż najsk├┤r povoli┼ą, aby premos┼ąovac├ş kontrakt pou┼żil jeho tokeny. Po schv├ílen├ş a┬ávlo┼żen├ş tokenov do premos┼ąovacieho kontraktu kontrakt bu─Ć sp├íli tokeny pou┼ż├şvate─ża pomocou funkcie ÔÇ×burnFrom()ÔÇť alebo prenesie token pou┼ż├şvate─ża do kontraktu pomocou funkcie ÔÇ×transferFrom()ÔÇť.┬á

Jedn├Żm z┬ápr├şstupov, ako to odl├ş┼íi┼ą, je pou┼żitie pr├şkazu ÔÇ×if-elseÔÇť v┬ár├ímci tej istej funkcie. ─Äal┼í├şm pr├şstupom je vytvorenie dvoch samostatn├Żch funkci├ş na spracovanie ka┼żd├ęho scen├íra. Pokus o┬ávklad ETH pomocou funkcie vkladu ERC-20 m├┤┼że vies┼ą k┬ástrate t├Żchto prostriedkov.

Pri spracov├ívan├ş ┼żiadost├ş o┬ávklad ERC-20 pou┼ż├şvatelia zvy─Źajne poskytuj├║ adresu tokenu ako vstup do funkcie vkladu. To predstavuje zna─Źn├ę riziko, preto┼że po─Źas transakcie sa m├┤┼żu vyskytn├║┼ą ned├┤veryhodn├ę extern├ę hovory. Na minimaliz├íciu rizika sa be┼żne pou┼ż├şva implement├ícia zoznamu povolen├Żch tokenov, ktor├Ż obsahuje iba tokeny podporovan├ę mostom. Ako d├┤kazy je mo┼żn├ę odovzda┼ą iba tokeny uveden├ę na zozname povolen├Żch tokenov. T├Żm sa zabr├íni extern├Żm hovorom, preto┼że projektov├Ż t├şm u┼ż vyfiltroval adresu tokenu.

Probl├ęmy v┼íak m├┤┼żu nasta┼ą aj vtedy, ke─Ć mosty spracov├ívaj├║ medzisie┼ąov├Ż prenos nat├şvnych tokenov. D├┤vodom je, ┼że nat├şvny token nem├í adresu. Nulov├í adresa (0x000...0) predstavuje nat├şvny token. To m├┤┼że by┼ą probl├ęm, preto┼że odovzdanie nulovej adresy funkcii m├┤┼że ob├şs┼ą overenie zoznamu povolen├Żch adries, aj v┬ápr├şpade nespr├ívnej implement├ície.┬á

Ke─Ć premos┼ąovac├ş kontrakt zavol├í ÔÇ×transferFromÔÇť na prenos akt├şv pou┼ż├şvate─ża do kontraktu, extern├ę volanie na nulov├║ adresu vr├íti hodnotu false, preto┼że v┬ánulovej adrese nie je implementovan├í ┼żiadna funkcia ÔÇ×transferFromÔÇť. Transakcia sa v┼íak m├┤┼że uskuto─Źni┼ą aj vtedy, ak kontrakt nespracuje vr├íten├║ hodnotu spr├ívne. To vytv├íra pr├şle┼żitos┼ą pre ├║to─Źn├şkov vykona┼ą transakciu bez prenosu ak├Żchko─żvek tokenov do kontraktu.

Nesprávna konfigurácia

Vo v├Ą─Ź┼íine blockchainov├Żch mostov je privilegovan├í rola zodpovedn├í za uv├ídzanie tokenov a┬áadries na zoznam povolen├Żch alebo zak├ízan├Żch, prira─Ćovanie alebo zmenu podpisovate─żov a ─Ćal┼íie kriticky d├┤le┼żit├ę konfigur├ície. Zabezpe─Źenie presnosti v┼íetk├Żch konfigur├íci├ş je k─ż├║─Źov├ę, preto┼że aj zdanlivo trivi├ílne prehliadnutia m├┤┼żu vies┼ą k┬ázna─Źn├Żm strat├ím.

V┬áskuto─Źnosti do┼ílo k┬áincidentu, ke─Ć ├║to─Źn├şk ├║spe┼íne obi┼íiel overenie z├íznamu o┬áprenose z┬ád├┤vodu nespr├ívnej konfigur├ície. Projektov├Ż t├şm implementoval upgrade protokolu nieko─żko dn├ş pred hackom, ktor├Ż zah┼Ľ┼łal zmenu premennej. Premenn├í bola pou┼żit├í na vyjadrenie predvolenej hodnoty d├┤veryhodnej spr├ívy. T├íto zmena viedla k┬átomu, ┼że v┼íetky spr├ívy boli automaticky pova┼żovan├ę za overen├ę, ─Źo umo┼żnilo ├║to─Źn├şkovi odosla┼ą ─żubovo─żn├║ spr├ívu a┬áprejs┼ą procesom overenia.

Ako zlep┼íi┼ą zabezpe─Źenie mosta

┼átyri be┼żn├ę slabiny mostov vysvetlen├ę vy┼í┼íie predstavuj├║ v├Żzvy na zaistenie bezpe─Źnosti v┬áekosyst├ęme prepojen├Żch blockchainov. Aby bolo mo┼żn├ę zvl├ídnu┼ą ka┼żd├║ z┬át├Żchto slab├şn, je potrebn├ę venova┼ą im n├íle┼żit├║ pozornos┼ą. ┼Żiadna z┬ápr├şru─Źiek sa nevz┼ąahuje na v┼íetky z┬ánich.┬á

Napr├şklad poskytovanie v┼íeobecn├Żch pokynov na zabezpe─Źenie bezchybn├ęho overovacieho procesu je n├íro─Źn├ę, preto┼że ka┼żd├Ż most m├í jedine─Źn├ę po┼żiadavky na overovanie. Naj├║─Źinnej┼í├şm sp├┤sobom, ako zabr├íni┼ą ob├şdeniu overenia, je d├┤kladne otestova┼ą most proti v┼íetk├Żm mo┼żn├Żm vektorom ├║toku a┬ázabezpe─Źi┼ą, aby overovacia logika bola spr├ívna.┬á

Aby sme to zhrnuli, je nevyhnutn├ę vykona┼ą pr├şsne testovanie proti potenci├ílnym ├║tokom a┬ávenova┼ą osobitn├║ pozornos┼ą najbe┼żnej┼í├şm bezpe─Źnostn├Żm rizik├ím mostov.┬á┬á

Z├ívere─Źn├ę my┼ílienky┬á

Kv├┤li vysokej hodnote s├║ medzisie┼ąov├ę mosty u┼ż dlho cie─żom ├║to─Źn├şkov. V├Żvoj├íri m├┤┼żu posilni┼ą bezpe─Źnos┼ą svojich mostov vykonan├şm d├┤kladn├ęho testovania pred nasaden├şm a┬ápou┼żit├şm auditov tret├şch str├ín, ─Ź├şm sa zn├ş┼żi riziko ni─Źiv├Żch hackov, ktor├Żm mosty v┬áposledn├Żch rokoch musia ─Źeli┼ą. Mosty s├║ kritick├ę vo svete s┬áviacer├Żmi re┼ąazcami. Bezpe─Źnos┼ą v┼íak mus├ş by┼ą prvorad├Żm z├íujmom pri navrhovan├ş a┬ábudovan├ş efekt├şvnej infra┼ítrukt├║ry Web3.

Pre─Ź├ştajte si tie┼ż

─îo je blockchainov├Ż most?

─îo je medzisie┼ąov├í interoperabilita?

3┬áob─ż├║ben├ę kryptomosty a┬áako funguj├║

─îo s├║ zabalen├ę tokeny?

Zrieknutie sa zodpovednosti a┬ávarovanie pred rizikom: Tento obsah tu vid├şte ÔÇ×tak├Ż ak├Ż jeÔÇť a┬ásl├║┼żi len ako v┼íeobecn├í inform├ícia a┬ána ├║─Źely vzdel├ívania, bez akejko─żvek reprezent├ície alebo z├íruky. Tieto inform├ície by ste nemali pova┼żova┼ą za finan─Źn├ę poradenstvo a┬áani nie s├║ ur─Źen├ę ako odpor├║─Źanie na n├íkup ak├ęhoko─żvek konkr├ętneho produktu alebo slu┼żby. Mali by ste po┼żiada┼ą o┬áradu odborn├ęho poradcu. V┬ápr├şpade, ┼że autorom ─Źl├ínku je tretia osoba, upozor┼łujeme v├ís, ┼że n├ízory uveden├ę v┬á─Źl├ínku s├║ n├ízormi tohto prispievate─ża/autora a┬ánemusia nevyhnutne odr├í┼ża┼ą n├ízory Akad├ęmie Binance. ─Äal┼íie podrobnosti n├íjdete v┬ána┼íom ├║plnom zrieknut├ş sa zodpovednosti, ktor├ę sa nach├ídza tu.Ceny digit├ílnych akt├şv m├┤┼żu by┼ą volatiln├ę. Hodnota va┼íej invest├şcie m├┤┼że klesa┼ą alebo st├║pa┼ą a┬áinvestovan├í suma sa v├ím nemus├ş vr├íti┼ą. Za svoje investi─Źn├ę rozhodnutia nesiete v├Żhradn├║ zodpovednos┼ą a┬áAkad├ęmia Binance nezodpoved├í za ┼żiadne straty, ktor├ę v├ím m├┤┼żu vznikn├║┼ą. Tento materi├íl by sa nemal pova┼żova┼ą za finan─Źn├ę poradenstvo. Viac inform├íci├ş n├íjdete v┬ána┼íich Podmienkach pou┼ż├şvania a┬áVarovan├ş pred rizikom.