Kādas ir bieži sastopamās savienojošā kanāla drošības ievainojamības?
Sākums
Raksti
Kādas ir bieži sastopamās savienojošā kanāla drošības ievainojamības?

Kādas ir bieži sastopamās savienojošā kanāla drošības ievainojamības?

Vidēji sarežģītas tēmas
Publicēts Mar 22, 2023Atjaunināts Jun 15, 2023
9m

Šis ir kopienas iesniegts raksts. Tā autors ir uzņēmuma CertiK revidents Minži He (Minzhi He).

Šajā rakstā paustais viedoklis ir tā autora viedoklis un neatspoguļo Binance Akadēmijas pārstāvju uzskatus.

Īsumā

Blokķēdes savienojošajiem kanāliem ir būtiska loma sadarbspējas nodrošināšanā blokķēžu pasaulē. Tāpēc blokķēdes savienojošā kanāla drošība ir ļoti svarīga. Dažas bieži sastopamās savienojošā kanāla drošības ievainojamības ietver neefektīvu validāciju ķēdē un ārpus tās, nepareizu pamata tokenu izmantošanu un nepareizu konfigurāciju. Lai nodrošinātu pienācīgu verifikāciju, ieteicams veikt pārbaudes attiecībā uz visiem iespējamiem uzbrukuma vektoriem.

Ievads 

Blokķēdes savienojošais kanāls ir protokols, kas savieno divas blokķēdes, lai nodrošinātu mijiedarbību starp tām. Ja tev ir Bitcoin un tu vēlies piedalīties kādā DeFi aktivitātē Ethereum tīklā, blokķēdes savienojošais kanāls nodrošina šādu iespēju bez nepieciešamības pārdot tavus Bitcoin. 

Blokķēdes savienojošie kanāli ir ļoti svarīgi, lai varētu nodrošināt sadarbspēju blokķēžu pasaulē. Tie darbojas, izmantojot dažādas validācijas ķēdē un ārpus tās, tāpēc tiem ir dažādas drošības ievainojamības.

Kāpēc savienojošā kanāla drošība ir īpaši svarīga? 

Savienojošais kanāls parasti glabā tokenu, kuru lietotājs vēlas pārskaitīt no vienas ķēdes otrā. Savienojošos kanālus bieži izmanto kā viedos līgumus, un tie ietver ievērojamu tokenu daudzumu, kas veidojas līdz ar starpķēžu pārskaitījumu uzkrāšanos. Tāpēc tie ir kārdinošs mērķis hakeriem. 

Turklāt blokķēdes savienojošajiem kanāliem var uzbrukt dažādās vietās, jo tiem ir daudz komponenšu. Tas viss sniedz motivē krāpniekus uzbrukt starpķēžu lietotnēm, lai nozagtu lielu līdzekļu apjomu. 

Saskaņā ar uzņēmuma CertiK aprēķiniem uzbrukumi savienojošajiem kanāliem 2022. gadā radīja zaudējumus vairāk nekā 1,3 miljardu ASV dolāru apjomā un veidoja 36 % no kopējiem zaudējumiem attiecīgajā gadā. 

Bieži sastopamās savienojošā kanāla drošības ievainojamības

Lai uzlabotu savienojošo kanālu drošību, ir vērtīgi saprast bieži sastopamās savienojošo kanālu drošības ievainojamības un pirms ieviešanas pārbaudīt šos kanālus. Ievainojamības var iedalīt četrās tālāk minētajās kategorijās. 

Neefektīva validācija ķēdē

Vienkāršākajos savienojošajos kanālos, it īpaši noteiktām decentralizētajām lietotnēm paredzētajos, validēšana ķēdē ir minimāla. Šie kanāli paļaujas uz centralizētu aizmugursistēmu, lai veiktu pamatdarbības, piemēram, izgatavošanu, dedzināšanu un tokenu pārskaitīšanu, bet visa verifikācija notiek ārpus ķēdes.

Savukārt citu veidu kanāli izmanto viedos līgumus, lai validētu ziņojumus un ķēdē veiktu verifikāciju. Šajā scenārijā tad, kad lietotājs iemaksā ķēdē līdzekļus, viedais līgums izveido parakstītu ziņojumu un darījumā atgriež parakstu. Šis paraksts ir kā iemaksas apliecinājums, un to izmanto, lai otrā ķēdē verificētu lietotāja izmaksas pieprasījumu. Šim procesam būtu jānovērš dažādi drošības riski, tostarp reproducējoši uzbrukumi un viltoti iemaksas ieraksti. 

Tomēr tad, ja validācijas procesā ķēdē ir kāda ievainojamība, uzbrucējs var radīt ievērojamu kaitējumu. Piemēram, ja kanāls darījuma ieraksta validācijai izmanto Merkles koku, uzbrucējs var ģenerēt viltotus apliecinājumus. Tas nozīmē, ka uzbrucējs var apiet apliecinājuma validāciju un savā kontā izgatavot jaunus tokenus, ja validācijas process ir ievainojams.

Daži kanāli izmanto saistītās vērtības tokenu ideju. Piemēram, kad lietotājs pārskaita DAI no Ethereum uz BNB ķēdi, viņa DAI tiek paņemti no Ethereum līguma un BNB ķēdē tiek izdota atbilstoša saistītās vērtības DAI summa. 

Tomēr tad, ja darījums nav pienācīgi validēts, uzbrucējs var manipulēt ar funkciju un izmantot krāpniecisku līgumu, lai pārvirzītu tokenus no kanāla uz nepareizu adresi. 

Uzbrucējiem arī nepieciešams, lai upuri atļautu kanāla līgumam pārskaitīt tokenus ar funkciju "transferFrom", lai izņemtu aktīvus no kanāla līguma. 

Diemžēl situāciju pasliktina tas, ka daudzi savienojošie kanāli no decentralizēto lietotņu lietotājiem pieprasa neierobežotu tokenu apstiprinājumu. Tā ir izplatīta prakse, kas mazina gāzes komisijas maksu, bet rada papildu riskus, ļaujot viedajam līgumam piekļūt neierobežotam skaitam tokenu lietotāja makā. Uzbrucēji var izmantot šo validācijas trūkumu un pārmērīgo atļauju, lai pārskaitītu citu lietotāju tokenus sev.

Neefektīva validācija ārpus ķēdes

Dažās kanāla sistēmās blokķēdes sūtīto ziņojumu patiesuma pārbaudē svarīgs ir aizmugursistēmas serveris, kas atrodas ārpus ķēdes. Šajā gadījumā pievērsīsimies iemaksas darījumu verifikācijai. 

Blokķēdes savienojošais kanāls ar validāciju ārpus ķēdes darbojas šādi: 

  1. Lietotāji mijiedarbojas ar decentralizēto lietotni, lai avota blokķēdes viedajā līgumā iemaksātu tokenus.

  2. Decentralizētā lietotne nosūta iemaksas darījumu jaucējkodu aizmugursistēmas serverim, izmantojot API.

  3. Serveris darījumu jaucējkodam veic vairākas validācijas. Ja to atzīst par patiesu, parakstītājs paraksta ziņojumu un nosūta parakstu lietotāja saskarnei, izmantojot API.

  4. Pēc paraksta saņemšanas decentralizētā lietotne verificē to un ļauj lietotājam izmaksāt tokenus no mērķa blokķēdes.

Aizmugursistēmas serverim jānodrošina, ka apstrādātais iemaksas darījums tiešām ir noticis un nav viltots. Aizmugursistēmas serveris nosaka, vai lietotājs mērķa blokķēdē var izmaksāt tokenus, tāpēc uzbrucējiem tas ir vērtīgs mērķis.

Aizmugursistēmas serverim jāveic darījuma radītā notikuma struktūras, kā arī kontaktadreses, kas radīja notikumu, validācija. Ja netiek pārbaudīta kontaktadrese, uzbrucējs var izmantot krāpniecisku līgumu, lai viltotu iemaksas notikumu ar tādu pašu struktūru kā patiesam iemaksas notikumam. 

Ja aizmugursistēmas serveris nepārbauda, kura adrese radīja notikumu, tas viltojumu varētu uzskatīt par derīgu darījumu un parakstīt ziņojumu. Tad uzbrucējs varētu nosūtīt aizmugursistēmai darījuma kešatmiņu, apejot verifikāciju, un viņam tiktu atļauts no mērķa blokķēdes izmaksāt tokenus.

Nepareiza pamata tokenu izmantošana

Kanāliem ir dažādas pieejas attiecībā uz pamata tokenu un funkcionālo tokenu izmantošanu. Piemēram, Ethereum tīklā pamata tokens ir ETH un vairums funkcionālo tokenu atbilst ERC-20 standartam. 

Kad lietotājs vēlas pārskaitīt ETH uz citu blokķēdi, tas vispirms jāiemaksā kanāla līgumā. Lai to izdarītu, lietotājs vienkārši pievieno darījumam ETH, un ETH var izgūt, nolasot darījuma "msg.value" lauku.

ERC-20 tokenu iemaksāšana ievērojami atšķiras no ETH iemaksāšanas. Lai iemaksātu ERC-20 tokenu, lietotājam vispirms jāatļauj kanāla līgumam tērēt savus tokenus. Pēc atļaujas sniegšanas un tokenu iemaksāšanas kanāla līgumā tas vai nu dedzinās lietotāja tokenus, izmantojot funkciju "burnFrom()", vai pārskaitīs lietotāja tokenus uz līgumu, izmantojot funkciju "transferFrom()". 

Viens veids, kā to atšķirt, ir tajā pašā funkcijā izmantot "if-else" argumentu. Cits risinājums ir izveidot katram no scenārijiem atšķirīgu funkciju. Mēģinājums iemaksāt ETH, izmantojot ERC-20 iemaksas funkciju, var radīt līdzekļu zaudējumus.

Attiecībā uz ERC-20 iemaksas pieprasījumiem lietotāji parasti norāda tokena adresi, ko izmantot kā ievadi iemaksas funkcijā. Tas rada ievērojamu risku, jo darījuma laikā var rasties neuzticami ārējie pieprasījumi. Lai mazinātu risku, pieņemts ieviest balto sarakstu, kas ietver tikai tos tokenus, kurus atbalsta kanāls. Kā argumentus var norādīt tikai baltajā sarakstā esošās adreses. Tas novērš ārējos pieprasījumus, jo projekta komanda jau ir izfiltrējusi tokena adresi.

Tomēr problēmas var rasties tad, ja savienojošais kanāls apstrādā pamata tokenu starpķēžu pārskaitījumu, jo pamata tokeniem nav adreses. Nulles adrese (0x000...0) atspoguļo pamata tokenu. Tas var radīt problēmas, jo, norādot nulles adresi funkcijai, var apiet baltā saraksta verifikāciju pat tad, ja tā ieviesta nepareizi. 

Ja kanāla līgums aktivizē funkciju "transferFrom", lai pārskaitītu lietotāja aktīvus uz līgumu, ārējais nulles adreses pieprasījums tiek atgriezts kā aplams, jo nulles adresei nav ierakstīta "transferFrom" funkcija. Tomēr pārskaitījums vēl var notikt, ja līgums nepareizi apstrādā atgriezto vērtību. Tas sniedz uzbrucējiem iespēju veikt darījumu, nepārskaitot uz līgumu nekādus tokenus.

Nepareiza konfigurācija

Vairumā blokķēžu savienojošo kanālu par tokenu un adrešu iekļaušanu baltajā un melnajā sarakstā, parakstītāju piešķiršanu un mainīšanu, kā arī par citu svarīgu konfigurāciju atbild priviliģēta loma. Visu konfigurāciju precizitātes nodrošināšana ir svarīga, jo pat šķietami nesvarīgas kļūdas var radīt ievērojamus zaudējumus.

Patiesībā ir bijis gadījums, kad uzbrucējs nepareizas konfigurācijas dēļ veiksmīgi apgāja pārskaitījumu ierakstu verifikāciju. Dažas dienas pirms uzbrukuma projekta komanda ieviesa protokola atjauninājumu, kura ietvaros tikai koriģēts mainīgais elements. Šis mainīgais atspoguļoja uzticama ziņojuma noklusējuma vērtību. Izmaiņu rezultātā visi ziņojumi automātiski tika uzskatīti par apliecinātiem, tāpēc uzbrucējs varēja iesniegt nepamatotu ziņojumu un sekmīgi nokārtot verifikācijas procesu.

Savienojošā kanāla drošības uzlabošana

Četras bieži sastopamās savienojošā kanāla ievainojamības, kuras aprakstītas iepriekš, parāda izaicinājumus, kurus rada savstarpēji saistītu blokķēdes ekosistēmas drošības nodrošināšana. Katrai no šīm ievainojamībām ir savi apsvērumi, un nav vienas universālas metodes, kas derētu tām visām. 

Piemēram, ir grūti sniegt vispārējas vadlīnijas nekļūdīga verifikācijas procesa nodrošināšanai, jo katram kanālam ir unikālas verifikācijas prasības. Efektīvākais veids, kā novērst verifikācijas apiešanu, ir rūpīgi pārbaudīt kanālu attiecībā pret visiem iespējamiem uzbrukuma vektoriem, lai nodrošinātu pienācīgu verifikāciju. 

Rezumējot – ir svarīgi veikt rūpīgu pārbaudi attiecībā pret iespējamiem uzbrukumiem un pievērst īpašu uzmanību biežāk sastopamajām kanālu drošības ievainojamībām.  

Noslēgumā 

Augstās vērtības dēļ starpķēžu savienojošie kanāli jau sen ir bijuši uzbrucēju mērķi. Izstrādātāji var uzlabot kanālu drošību, veicot pārbaudes pirms palaišanas un iesaistot trešās puses revidentus, tādējādi samazinot graujošu uzbrukumu risku, kas pavada šos kanālus pēdējos pāris gadus. Savienojošie kanāli vairāku ķēžu pasaulē ir svarīgi, bet efektīvas Web3 infrastruktūras izstrādē un izveidošanā galvenajai jābūt drošībai.

Turpini lasīt

Kas ir blokķēdes savienojošais kanāls?

Kas ir starpķēžu sadarbspēja?

Trīs populāri kriptovalūtu savienojošie kanāli un to darbības principi

Kas ir saistītās vērtības tokeni?

Atruna un brīdinājums par risku: šis saturs tiek tev nodrošināts nemainītā veidā un ir paredzēts tikai vispārīgai informācijai un izglītojošiem mērķiem; tas neietver nekādus apliecinājumus vai garantijas. Tas nav uzskatāms par finansiālu, juridisku vai cita veida padomu un nav paredzēts kā ieteikums iegādāties kādu konkrētu produktu vai pakalpojumu. Aicinām tevi konsultēties ar atbilstošiem profesionāliem konsultantiem. Ja šo rakstu ir veidojis trešās puses autors, lūdzu, ņem vērā, ka tajā paustie viedokļi pieder attiecīgajam raksta autoram un neatspoguļo Binance Akadēmijas pārstāvju uzskatus. Pilnu atrunas tekstu lasi šeit. Digitālo aktīvu cenas var būt svārstīgas. Tavu ieguldījumu vērtība var samazināties vai pieaugt, kā arī tu vari neatgūt ieguldīto summu. Tu uzņemies pilnu atbildību par saviem ieguldījumu lēmumiem, un Binance Akadēmija neatbild par taviem iespējamajiem zaudējumiem. Šī informācija nav uzskatāma par finansiālu, juridisku vai cita veida profesionālu padomu. Papildinformācijai lasi mūsu Lietošanas noteikumus un Brīdinājumu par riskiem.