Šis raksts ir kopienas ieguldījums. Autors ir Minži He, CertiK auditors.

Šajā rakstā izteiktie viedokļi ir līdzstrādnieka/autora viedokļi, un tie ne vienmēr atspoguļo Binance akadēmijas uzskatus.

Kopsavilkums

Blokķēdes tilti ir būtiski, lai panāktu sadarbspēju blokķēdes telpā. Tāpēc starpķēžu savienošanas tehnoloģijas drošība ir ļoti svarīga. Dažas izplatītas blokķēdes tilta drošības ievainojamības ietver nepietiekamu ķēdes un ārpus ķēdes verifikāciju, nepareizu vietējo marķieru apstrādi un nepareizu konfigurāciju. Lai pārliecinātos, ka verifikācijas loģika ir pareiza, ieteicams pārbaudīt šķērsķēdes tiltu pret visiem iespējamiem uzbrukuma vektoriem.

Ievads

Blokķēdes tilts ir protokols, kas savieno divas blokķēdes un ļauj tām mijiedarboties. Izmantojot blokķēdes tiltu, ja lietotāji vēlas piedalīties DeFi aktivitātēs Ethereum tīklā, viņiem ir nepieciešams tikai turēt Bitcoin un tas nav jāpārdod, lai sasniegtu savus mērķus. )

Blockchain tilts ir sadarbspējas pamats blokķēdes jomā. Tie izmanto dažādas ķēdes un ārpus ķēdes pārbaudes, tāpēc var būt arī dažādas drošības ievainojamības.

Kāpēc blokķēdes tiltu drošība ir kritiska?

Blockchain tiltos parasti ir marķieri, kurus lietotāji vēlas pārsūtīt no vienas ķēdes uz otru. Blockchain tilti parasti tiek izvietoti viedo līgumu veidā, jo turpinās uzkrāties starpķēžu pārskaitījumi, un šī milzīgā bagātība padarīs tos par iekārojamu hakeru mērķi.

Turklāt blokķēdes tiltu uzbrukuma virsma mēdz būt liela daudzo iesaistīto komponentu dēļ. Tāpēc noziedzniekiem ir spēcīgs stimuls mērķēt uz starpķēžu lietojumprogrammām, lai iegūtu lielus līdzekļu apjomus.

Saskaņā ar CertiK aplēsēm blokķēdes tiltu uzbrukumi 2022. gadā radīja vairāk nekā 1,3 miljardu dolāru zaudējumus, kas veido 36% no kopējiem zaudējumiem tajā gadā.

Izplatītas pārrobežu ķēdes drošības ievainojamības

Lai uzlabotu blokķēdes tilta drošību, ir svarīgi izprast izplatītākās starpķēžu tilta drošības ievainojamības un pārbaudīt blokķēdes tiltu pirms tā palaišanas. Šīs ievainojamības galvenokārt rodas no šādiem četriem aspektiem:

Nepietiekama ķēdes verifikācija

Vienkāršiem blokķēdes tiltiem, īpaši tiem, kas paredzēti konkrētai dApp, parasti ir tikai minimāls ķēdes verifikācijas līmenis. Šie tilti balstās uz centralizētu aizmugursistēmu, lai veiktu pamata darbības, piemēram, kalšanu, dedzināšanu un marķieru pārsūtīšanu, un visa pārbaude notiek ārpus ķēdes.

Lai gan cita veida tilti izmanto viedos līgumus, lai apstiprinātu ziņojumus un pārbaudītu tos ķēdē. Šādā gadījumā, kad lietotājs iemaksā līdzekļus ķēdē, viedais līgums ģenerē parakstītu ziņojumu un atgriež parakstu darījumā. Šis paraksts tiks izmantots kā depozīta apliecinājums un izmantots, lai pārbaudītu lietotāja izņemšanas pieprasījumu citā ķēdē. Šim procesam vajadzētu novērst dažādus drošības uzbrukumus, tostarp atkārtotus uzbrukumus un viltotus papildināšanas ierakstus.

Tomēr, ja ķēdes verifikācijas procesā ir ievainojamība, uzbrukums var izraisīt nopietnus bojājumus. Piemēram, ja blokķēde izmanto Merkle kokus, lai pārbaudītu darījumu ierakstus, uzbrucējs var ģenerēt viltotus pierādījumus. Tas nozīmē, ka, ja verifikācijas process ir ievainojams, uzbrucējs var apiet pierādījumu pārbaudi un savā kontā izveidot jaunus marķierus.

Daži blokķēdes tilti īsteno "iesaiņotu žetonu" jēdzienu. Piemēram, kad lietotājs pārsūta DAI no Ethereum uz BNB ķēdi, viņa DAI tiek izņemta no Ethereum līguma un vienāds daudzums iesaiņotās DAI tiek izsniegts BNB ķēdē.

Tomēr, ja šis darījums nav pareizi apstiprināts, uzbrucējs var izvietot ļaunprātīgu līgumu, kas manipulē ar šo funkcionalitāti, lai novirzītu iesaiņotos marķierus no tilta uz nepareizo adresi. )

Uzbrucējam arī ir nepieciešams, lai upuris apstiprinātu pārrobežu ķēžu tilta līgumu, pirms tiek izmantota funkcija "TransferFrom", lai pārsūtītu marķierus, tādējādi atņemot līdzekļus no starpķēžu tilta līguma.

Taču sarežģītākā daļa ir tāda, ka daudziem pārrobežu ķēžu tiltiem dApp lietotājiem ir jāapstiprina neierobežots daudzums marķieru. Šī prakse ir ļoti izplatīta, kas var samazināt maksu par gāzi, bet ļauj viedajiem līgumiem piekļūt neierobežotam daudzumam marķieru no lietotāja maka. kas radīs papildu riskus. Uzbrucēji izmantos šīs nepietiekamās pārbaudes un pārmērīgos apstiprinājumus, lai pārsūtītu citu lietotāju marķierus sev.

Nepietiekama ārpus ķēdes verifikācija

Dažās starpķēžu tiltu sistēmās ārpus ķēdes aizmugursistēmas serveriem ir izšķiroša loma, pārbaudot no blokķēdes nosūtīto ziņojumu likumību. Šajā gadījumā mums ir jākoncentrējas uz papildināšanas darījuma pārbaudi.

Blokķēdes tilts ar ārpusķēdes verifikāciju darbojas šādi:

  1. Lietotāji mijiedarbojas ar dApp un nogulda marķierus viedos līgumos avota ķēdē.

  2. Pēc tam dApp, izmantojot API, nosūta depozīta darījuma jaucējkodu uz aizmugursistēmas serveri.

  3. Darījuma jaucējkods serverim ir jāpārbauda vairākas reizes. Ja tas tiek uzskatīts par likumīgu, parakstītājs paraksta ziņojumu un nosūta parakstu atpakaļ uz lietotāja interfeisu, izmantojot API.

  4. Kad paraksts ir saņemts, dApp to pārbauda un ļauj lietotājam izņemt marķierus no mērķa ķēdes.

Aizmugursistēmas serverim ir jānodrošina, ka tā apstrādātie papildināšanas darījumi ir reāli un nav viltoti. Šis aizmugursistēmas serveris nosaka, vai lietotāji var izņemt marķierus mērķa ķēdē, padarot to par pirmo uzbrukumu mērķi.

Aizmugursistēmas serverim ir jāpārbauda darījuma iniciēšanas notikuma struktūra un līguma adrese, kas iniciēja notikumu. Ja pēdējais tiek ignorēts, uzbrucēji var izvietot ļaunprātīgus līgumus, lai viltotu uzlādes notikumus ar tādu pašu struktūru kā likumīgiem uzlādes notikumiem.

Ja aizmugursistēmas serveris nepārbauda, ​​kura adrese iniciēja notikumu, tas pieņems, ka darījums ir derīgs, un paraksta ziņojumu. Pēc tam uzbrucējs var nosūtīt darījuma jaucējkodu uz aizmugursistēmas serveri, apejot verifikāciju un ļaujot tam izņemt marķierus no mērķa ķēdes.

Nepareiza vietējo pilnvaru apstrāde

Starpķēžu tiltiem ir atšķirīga pieeja vietējiem marķieriem un lietderības marķieriem. Piemēram, Ethereum tīklā vietējais marķieris ir ETH, un lielākā daļa utilītu marķieru atbilst ERC-20 standartam.

Ja lietotājs plāno nodot savu ETH uz citu ķēdi, viņam tas vispirms ir jāiekļauj pārrobežu ķēdes tilta līgumā. Lai to izdarītu, lietotājs darījumam vienkārši pievieno ETH un var izgūt ETH summu, nolasot darījuma lauku "msg.value".

ERC-20 žetonu noguldīšana ļoti atšķiras no ETH noguldīšanas. Lai noguldītu ERC-20 marķierus, lietotājiem vispirms ir jāļauj šķērsķēžu tilta līgumam izmantot savus marķierus. Pēc marķieru apstiprināšanas un noguldīšanas pārrobežu ķēdes tilta līgumā līgumā tiks izmantota funkcija “burnFrom()”, lai iznīcinātu lietotāja marķierus, vai funkcija “transferFrom()”, lai pārsūtītu lietotāja marķierus uz līgumu.

Lai atšķirtu, kura darbība tā ir, tajā pašā funkcijā varat izmantot priekšrakstus if-else. Vai arī izveidojiet divas atsevišķas funkcijas, lai apstrādātu katru scenāriju. Dažādu apstrādes metožu dēļ, ja lietotājs mēģina noguldīt ETH, izmantojot ERC-20 depozīta funkciju, ETH var tikt zaudēts.

Apstrādājot ERC-20 depozīta pieprasījumus, lietotāji parasti norāda marķiera adresi kā depozīta funkcijas ievades parametru. Tas rada ievērojamu risku, jo darījumu laikā var rasties neuzticami ārējie zvani. Baltā saraksta izmantošana, lai iekļautu tikai tokenus, kurus atbalsta šķērsķēdes tilts, ir izplatīta prakse riska samazināšanai. Kā parametri tiek nodotas tikai baltajā sarakstā iekļautās adreses. Tas novērš ārējos zvanus, jo projekta komanda ir filtrējusi marķiera adreses.

Tomēr problēmas rodas arī tad, kad šķērsķēžu tilts apstrādā vietējo marķieru pārsūtīšanu starp ķēdēm, jo ​​vietējiem marķieriem nav adreses. Vietējos marķierus var attēlot ar īpašu adresi, "nulles adresi" (0x000...0). Taču pastāv problēma, jo baltā saraksta verifikācijas loģika nav ieviesta pareizi, nulles adreses nosūtīšana funkcijai var apiet baltā saraksta verifikāciju.

Ja pārrobežu ķēdes tilta līgums izsauc "TransferFrom", lai pārsūtītu lietotāja līdzekļus uz līgumu, ārējais izsaukums uz nulles adresi atgriezīsies false, jo funkcija "transferFrom" nav ieviesta nulles adresē. Tomēr, ja līgumā netiek pareizi apstrādāta atgriešanas vērtība, darījums joprojām var turpināties. Tas rada iespēju uzbrucējam veikt darījumu, nepārsūtot nekādus marķierus uz līgumu.

Konfigurācijas kļūda

Lielākajā daļā blokķēdes tiltu ir priviliģēta loma, kas ir atbildīga par marķieru un adrešu iekļaušanu baltajā vai melnajā sarakstā, parakstītāju piešķiršanu vai mainīšanu un citas galvenās konfigurācijas. Ir ļoti svarīgi nodrošināt, lai visas konfigurācijas būtu precīzas, jo šķietami nenozīmīgas kļūdas var radīt ievērojamus bojājumus.

Faktiski ir bijuši gadījumi, kad uzbrucēji nepareizas konfigurācijas dēļ veiksmīgi apieta pārsūtīšanas ieraksta pārbaudi. Projekta komanda dažas dienas pirms uzlaušanas ieviesa protokola jaunināšanu, kurā tika mainīts noteikts mainīgais. Šis mainīgais ir noklusējuma vērtība, ko izmanto, lai attēlotu uzticamus ziņojumus. Šo izmaiņu rezultātā visi ziņojumi tiek automātiski uzskatīti par autentificētiem, tādējādi ļaujot uzbrucējam iesniegt nejaušu ziņojumu un nodot validāciju.

Kā uzlabot šķērsķēžu tiltu drošību

Iepriekš aprakstītās četras izplatītās pārrobežu ķēžu tiltu ievainojamības parāda, ka problēmas, ar kurām saskaras savienotā blokķēdes ekosistēmā drošība, nevar novērtēt par zemu. Lai novērstu šīs ievainojamības, mums ir jāapsver "saskaņā ar vietējiem apstākļiem".

Piemēram, tā kā katram šķērsķēdes tiltam ir unikālas verifikācijas prasības, būtu grūti nodrošināt, ka verifikācijas process norit bez kļūdām, vienkārši sniedzot vispārīgas vadlīnijas. Visefektīvākais veids, kā novērst verifikācijas apiešanu, ir rūpīgi pārbaudīt šķērsķēžu tiltu pret visiem iespējamiem uzbrukuma vektoriem un nodrošināt, ka verifikācijas loģika ir saprātīga.

Kopumā ir jāveic stingra pārbaude pret iespējamiem uzbrukumiem, īpašu uzmanību pievēršot visbiežāk sastopamajām drošības ievainojamībām starpķēžu tiltos.

Secinājums

Pateicoties milzīgajam līdzekļu apjomam, uzbrucēju mērķis jau sen ir šķērsķēžu tilti. Būvnieki var stiprināt pārrobežu ķēžu tiltu drošību, veicot visaptverošu pirmsizvēršanas testēšanu un iekļaujot trešo pušu auditus, tādējādi samazinot katastrofālu uzlaušanas risku, kas pēdējos gados ir bijis pāri šķērsķēžu tiltiem. Vairāku ķēžu pasaulē pārrobežu ķēžu tilti ir ļoti svarīgi, taču, izstrādājot un veidojot efektīvu Web3 infrastruktūru, galvenajam apsvērumam ir jābūt drošībai.

Tālāka lasīšana

Kas ir blokķēdes tilts?

Kas ir starpķēžu sadarbspēja?

Trīs populāri kriptovalūtu tilti un kā tie darbojas

Kas ir iesaiņots marķieris?

Atruna un brīdinājums par risku: šī raksta saturs ir fakti un ir paredzēts tikai vispārīgai informācijai un izglītojošiem nolūkiem, un tas nav uzskatāms par apliecinājumu vai garantiju. Šo rakstu nevajadzētu interpretēt kā finansiālu, juridisku vai citu profesionālu padomu, un tas nav ieteikums iegādāties kādu konkrētu produktu vai pakalpojumu. Jums pašam jālūdz padoms pie atbilstošiem profesionāliem konsultantiem. Ja šo rakstu ir iesniedzis trešās puses līdzautors, lūdzu, ņemiet vērā, ka šajā rakstā paustie viedokļi pieder trešās puses līdzautoram un ne vienmēr atspoguļo Binance Academy uzskatus. Lai iegūtu papildinformāciju, lūdzu, noklikšķiniet šeit, lai izlasītu pilnu mūsu atrunu. Digitālo aktīvu cenas var svārstīties. Jūsu ieguldījuma vērtība var gan kristies, gan pieaugt, un jūs, iespējams, neatgūsit ieguldīto pamatsummu. Jūs esat pilnībā atbildīgs par saviem ieguldījumu lēmumiem, un Binance Academy nav atbildīgs par jebkādiem zaudējumiem, kas jums var rasties. Šis raksts nav finansiāls, juridisks vai cits profesionāls padoms. Lai iegūtu papildinformāciju, lūdzu, skatiet mūsu lietošanas noteikumus un brīdinājumu par risku.