Millised on tuntud sildade turvaaugud?
Avaleht
Artiklid
Millised on tuntud sildade turvaaugud?

Millised on tuntud sildade turvaaugud?

Edasijõudnud
Avaldatud Mar 22, 2023Värskendatud Jun 15, 2023
9m

See artikkel on kogukonna esitatud. Autor on Minzhi He, CertiK audiitor.

Selles artiklis kaasautori/autori vaated ei pruugi kajastada Binance'i akadeemia vaateid.

TL;DR

Plokiahela sillad on plokiahela ruumis koostalitlusvõime saavutamiseks kriitilise tähtsusega. Seetõttu on plokiahela silla turvalisus ülimalt tähtis. Levinumate sildade turvaaukude hulka kuuluvad nõrk ahelasisene ja ahelaväline valideerimine, natiivsete tokenite ebaõige käsitlemine ja valed konfiguratsioonid. Hea kontrollimise loogika tagamiseks on soovitatav testida silda kõigi võimalike ründevektorite vastu.

Sissejuhatus 

Plokiahela sild on protokoll, mis ühendab kahte plokiahelat, et lubada nende vahelist suhtlust. Kui sul on Bitcoin, kuid soovid osaleda DeFi tegevuses Ethereumi võrgus, lubab plokiahela sild seda teha ilma oma Bitcoine müümata. 

Plokiahela sillad on plokiahela ruumis koostalitlusvõime saavutamiseks üliolulised. Need toimivad erinevate ahelasisese ja ahelavälise valideerimiste abil ning seetõttu on neil erinevad turvaaugud.

Miks on silla turvalisus kriitiline? 

Sild hoiab tavaliselt tokenit, mille kasutaja soovib ühest ahelast teise üle kanda. Nutilepingutena kasutusele võetud sildadel on tihti märkimisväärne hulk tokeneid, kuna ahelatevahelised ülekanded kogunevad, muutes need häkkerite jaoks tulusateks sihtmärkideks. 

Lisaks on plokiahela sildadel suur ründepind, kuna need sisaldavad paljusid komponente. Seda silmas pidades on pahatahtlikud osapooled väga motiveeritud sihtima ahelatevahelisi rakendusi, et saada suuri rahasummasid. 

Rünnakud sildade vastu tekitasid 2022. aastal üle 1,3 miljardi USA dollari suuruse kahju, mis moodustas CertiKi hinnangul 36% aasta kogukahjust. 

Tuntud sildade turvaaugud

Sildade turvalisuse suurendamiseks on kasulik mõista sildade levinumaid turvaauke ja enne käivitamist sildu testida. Need turvaauke võib liigitada nelja järgmisesse valdkonda. 

Nõrk ahelasisene valideerimine

Lihtsate sildade puhul, eriti nende, mis on loodud konkreetsete DApp-ide jaoks, on ahelasisene valideerimine hoitud minimaalsena. Need sillad toetuvad tsentraliseeritud taustaprogrammile, et teostada põhitoiminguid, nagu vermimine, põletamine ja tokenite ülekandmine, samal ajal kui kõik kontrollid tehakse väljaspool ahelat.

Seevastu muud tüüpi sillad kasutavad sõnumite kinnitamiseks ja ahelasiseseks kontrollimiseks nutilepinguid. Selle stsenaariumi korral, kui kasutaja kannab raha ahelasse, genereerib nutileping allkirjastatud sõnumi ja tagastab tehingus allkirja. See allkiri on sissemakse tõend ja seda kasutatakse teises ahelas kasutaja väljamaksetaotluse kontrollimiseks. See protsess peaks suutma ära hoida mitmesuguseid turvarünnakuid, sealhulgas kordusrünnakuid ja võltsitud sissemaksekirjeid. 

Kui aga ahelasisese valideerimise käigus ilmneb haavatavus, võib ründaja põhjustada tõsist kahju. Näiteks kui sild kasutab tehingukirje kinnitamiseks räsipuud, võib ründaja luua võltsitud tõendeid. See tähendab, et kui valideerimisprotsess on haavatav, saavad nad tõendi kinnitamisest mööda minna ja oma kontole uusi tokeneid vermida.

Teatud sillad rakendavad „mähitud tokenite“ kontseptsiooni. Näiteks kui kasutaja kannab DAI Ethereumist BNB ketti, võetakse tema Ethereumi lepingust DAI ja samaväärne kogus pakitud DAI-d väljastatakse BNB ketti. 

Kui see tehing pole aga korralikult kinnitatud, võib ründaja funktsiooniga manipuleerides juurutada pahatahtliku lepingu, et suunata mähitud tokenid sillalt valele aadressile. 

Ründajad vajavad ka ohvreid, kes kinnitaksid tokenite ülekandmiseks sillalepingu, kasutades funktsiooni „transferFrom”, et sillalepingust varasid võtta. 

Kahjuks on see veelgi hullemaks muutunud, kuna paljud sillad nõuavad DApp-i kasutajatelt lõpmatut tokeni kinnitust. See on levinud praktika, mis alandab gaasitasusid, kuid tekitab lisariske, võimaldades nutilepingul pääseda ligi kasutaja rahakotis olevatele piiramatule tokenite kogusele. Ründajad saavad kasutada ära valideerimise puudumist ja liigset heakskiitu, et teistelt kasutajatelt tokeneid endale üle kanda.

Nõrk ahelaväline valideerimine

Mõnes sildsüsteemis mängib ahelaväline taustaserver plokiahelast saadetud sõnumite legitiimsuse kontrollimisel kriitilist rolli. Antud juhul keskendume sissemaksete kontrollimisele. 

Ahelavälise valideerimisega plokiahela sild toimib järgmiselt: 

  1. Kasutajad suhtlevad tokenite lähteahela nutilepingusse hoiustamiseks DApp-iga.

  2. Seejärel saadab DApp API kaudu deposiiditehingu räsi taustaserverisse.

  3. Server peab tehingu räsi mitu korda kinnitama. Kui seda peetakse õiguspäraseks, allkirjastab allkirjastaja sõnumi ja saadab allkirja API kaudu kasutajaliidesesse tagasi.

  4. Allkirja saamisel DApp kontrollib seda ja lubab kasutajal oma tokenid sihtahelast eemaldada.

Taustserver peab tagama, et tema poolt töödeldav sissemakse on tegelikult toimunud ja seda ei ole võltsitud. See taustaserver määrab, kas kasutaja saab sihtahelas tokeneid välja võtta, ja on seetõttu ründajatele väärtuslik sihtmärk.

Taustaserver peab kinnitama nii tehingu väljastatud sündmuse struktuuri kui ka sündmuse väljastanud lepingu aadressi. Kui viimane jäetakse tähelepanuta, võib ründaja juurutada pahatahtliku lepingu, et võltsida sissemakset, millel on sama struktuur kui seaduslikul sissemaksel. 

Kui taustaserver ei kontrolli, milline aadress sündmuse väljastas, loeb ta seda kehtivaks tehinguks ja allkirjastab sõnumi. Ründaja võib seejärel saata tehingu räsi taustaprogrammi, minnes kontrollist mööda ja lubades neil tokenid sihtahelast eemaldada.

Natiivsete tokenite ebaõige käsitlemine

Sillad kasutavad natiivsete ja kasutustokenite käsitlemisel erinevaid lähenemisviise. Näiteks Ethereumi võrgus on natiivseks tokeniks ETH ja enamik kasutustokeneid järgib ERC-20 standardit. 

Kui kasutaja kavatseb oma ETH teise ketti üle kanda, peab ta selle esmalt sillalepingusse kandma. Selle tegemiseks lisab kasutaja tehingule lihtsalt ETH ja ETH summa saab kätte, lugedes „msg.value“ tehingu välja.

ERC-20 tokenite sissemaksmine erineb oluliselt ETH sissemaksmisest. ERC-20 tokeni sissemaksmiseks peab kasutaja esmalt lubama sillalepingul oma tokenid kulutada. Pärast seda, kui nad on selle heaks kiitnud ja tokenid sillalepingusse lisanud, põletab leping kasutaja tokenid kasutades funktsiooni "burnFrom()" või kannab kasutaja tokenid lepingusse, kasutades funktsiooni "transferFrom()". 

Üks viis selle eristamiseks on kasutada samas funktsioonis if-else fraasi. Teine lähenemisviis on luua iga stsenaariumi käsitlemiseks kaks eraldi funktsiooni. Proovides teha ETH sissemakset kasutades ERC-20 sissemaksefunktsiooni võib see põhjustada nende vahendite kadumise.

Kasutajad annavad tavaliselt ERC-20 sissemaksetaotluste käsitlemisel sissemaksefunktsiooni sisendiks tokeni aadressi. See kujutab endast märkimisväärset ohtu, kuna tehingu ajal võivad toimuda ebausaldusväärsed väliskõned. Riski minimeerimise tavaline praktika on valge nimekirja rakendamine, mis sisaldab ainult silla toetatud tokeneid. Argumentidena on võimaldatud edastada ainult lubatud aadresse. See hoiab ära väliskõnede tekke, kuna projektimeeskond on tokeni aadressi juba filtreerinud.

Probleemid võivad aga tekkida ka siis, kui sillad tegelevad natiivse tokeni ahelatevahelise edastamisega, kuna algsel loal puudub aadress. Natiivset tokenit esindab nullaadress (0x000...0). See võib olla problemaatiline, kuna funktsioonile nullaadressi edastamine võib lubatud nimekirja kinnitamisest mööda minna, isegi kui see on valesti rakendatud. 

Kui sillaleping kutsub kasutaja varade lepingusse ülekandmiseks välja funktsiooni „transferFrom“, tagastab väliskutse nullaadressile väärtuse Väär, kuna nullaadressis pole ühtegi funktsiooni „transferFrom“. Kui leping ei käsitle tagastusväärtust nõuetekohaselt, võib tehing siiski aset leida. See loob ründajatele võimaluse teha tehingut ilma tokeneid lepingusse üle kandmata.

Vale konfiguratsioon

Enamikus plokiahela sildades vastutab privilegeeritud roll tokenite ja aadresside valgesse või musta nimekirja lisamise, allkirjastajate määramise või muutmise ning muude kriitiliste konfiguratsioonide eest. Ülioluline on tagada kõigi konfiguratsioonide täpsus, sest isegi näiliselt tühised möödalaskmised võivad kaasa tuua märkimisväärseid kahjusid.

Tegelikult on toimunud juhtum, kus ründaja läks vale konfiguratsiooni tõttu edukalt mööda ülekandekirje kontrollist. Projektimeeskond tegi paar päeva enne häkkimist protokolli uuenduse, mis sisaldas muutuja muutmist. Muutujat kasutati usaldusväärse sõnumi vaikeväärtuse esitamiseks. Selle muudatuse tulemusena loeti kõik sõnumid automaatselt tõestatuks, mis võimaldas seega ründajal suvalise sõnumi saata ja kinnitusprotsess läbida.

Kuidas parandada sildade turvalisust

Neli eespool kirjeldatud levinumat silla haavatavust näitavad väljakutseid, mis on seotud turvalisuse tagamisega omavahel ühendatud plokiahela ökosüsteemis. Kõigi nende haavatavuste käsitlemisel pööratakse suurt tähelepanu ja ükski tegevuskava ei kehti nende kõigi kohta. 

Näiteks üldiste juhiste andmine veatu kinnitamisprotsessi tagamiseks on keeruline, kuna igal sillal on kordumatud kinnitamise nõuded. Kõige tõhusam viis kontrollimisest möödavaatamise vältimiseks on silla põhjalik testimine kõigi võimalike ründevektorite vastu ja kontrolliloogika hea toimimine. 

Kokkuvõtteks võib öelda, et võimalike rünnakute suhtes on oluline teostada rangeid teste ja pöörata erilist tähelepanu sildade levinuimatele turvaaukudele.  

Lõppmärkused 

Ahelatevahelised sillad on oma kõrge väärtuse tõttu olnud pikka aega ründajate sihtmärgiks. Arendajad saavad tugevdada oma sildade turvalisust, tehes põhjalikke kasutuselevõtueelseid teste ja osaledes kolmandate osapoolte auditites, vähendades seeläbi sildu viimase paari aasta jooksul tabanud laastavate häkkimiste ohtu. Sillad on mitmeahelalises maailmas kriitilise tähtsusega, kuid tõhusa Web3 infrastruktuuri kavandamisel ja ehitamisel peab esmatähtis olema turvalisus.

Lisalugemist

Mis on plokiahela sild (Blockchain Bridge)?

Mis on ahelateülene koostalitlusvõime?

Kolm populaarset krüptosilda ja kuidas need toimivad

Mis on mähitud tokenid?

Lahtiütlus ja riskihoiatus: seda sisu esitatakse sellisel kujul, nagu see on, ainult üldiseks teabeks ning hariduslikel eesmärkidel, ilma igasuguse esinduse või garantiita. Seda ei tohiks tõlgendada kui finants-, juriidilist või muud professionaalset nõustamist ega kui soovitust konkreetse toote või teenuse ostmiseks. Peaksid küsima nõu asjakohastelt professionaalsetelt nõustajatelt. Kui artiklit on koostanud kolmandast osapoolest kaastööline, pane tähele, et väljendatud seisukohad kuuluvad kolmandast osapoolest kaastöölisele ja ei pruugi kajastada Binance'i Akadeemia omasid. Lisateabe saamiseks lugege meie täielikku lahtiütlust siit. Digitaalsete varade hinnad võivad olla kõikuvad. Sinu investeeringu väärtus võib langeda või tõusta ning sa ei pruugi investeeritud summat tagasi saada. Sina vastutad ainuisikuliselt oma investeerimisotsuste eest ja Binance'i Akadeemia ei vastuta võimalike kahjude eest. Seda materjali ei tohiks tõlgendada finants-, juriidilise või muu professionaalse nõustamisena. Lisateabe saamiseks loe meie kasutustingimusi ja riskihoiatust.