Melyek a hidak (bridge) gyakran elŇĎfordul√≥ biztons√°gi probl√©m√°i, sebezhetŇĎs√©gei?
KezdŇĎlap
Cikkek
Melyek a hidak (bridge) gyakran elŇĎfordul√≥ biztons√°gi probl√©m√°i, sebezhetŇĎs√©gei?

Melyek a hidak (bridge) gyakran elŇĎfordul√≥ biztons√°gi probl√©m√°i, sebezhetŇĎs√©gei?

Haladó
Közzétéve Mar 22, 2023Frissítve Jun 15, 2023
9m

Ez a cikk egy k√∂z√∂ss√©gi beadv√°ny. A szerzŇĎje Minzhi He, a CertiK auditora.

A jelen cikkben kifejtett n√©zetek a bek√ľldŇĎ/szerzŇĎ n√©zetei, √©s nem felt√©tlen√ľl t√ľkr√∂zik a Binance Academy √°ll√°spontj√°t.

TL;DR

A blokkl√°nchidak kritikus szerepet j√°tszanak a blokkl√°nct√©ren bel√ľli √°tj√°rhat√≥s√°g el√©r√©s√©ben. Ez√©rt a blokkl√°nchidak (bridge-ek) biztons√°ga kiemelten fontos. A hidak gyakori biztons√°gi probl√©m√°i k√∂z√© sorolhat√≥ a gyenge on-chain √©s off-chain valid√°l√°s, a nat√≠v tokenek helytelen kezel√©se √©s rossz be√°ll√≠t√°sai. Javasolt a hidak tesztel√©se az √∂sszes lehets√©ges t√°mad√°si vektorral szemben, hogy biztos√≠tott legyen a megb√≠zhat√≥ j√≥v√°hagy√°si/hiteles√≠t√©si logika.

Bevezetés 

A blokkl√°nch√≠d k√©t blokkl√°ncot √∂sszek√∂tŇĎ protokoll, amely lehetŇĎv√© teszi k√∂zt√ľk az interakci√≥t. Ha √Ėn bitcoinnal rendelkezik, de szeretne r√©szt venni az Ethereum h√°l√≥zaton zajl√≥ DeFi-tev√©kenys√©gben, akkor egy blokkl√°nch√≠d lehetŇĎv√© teszi ezt an√©lk√ľl, hogy el kellene adnia a bitcoinj√°t.¬†

A blokkl√°nchidak alapvetŇĎ fontoss√°g√ļak a blokkl√°nc t√©ren bel√ľli √°tj√°rhat√≥s√°g el√©r√©s√©hez. K√ľl√∂nb√∂zŇĎ on-chain √©s off-chain valid√°l√°st haszn√°lnak a mŇĪk√∂d√©s√ľkh√∂z, ez√©rt k√ľl√∂nb√∂zŇĎ biztons√°gi probl√©m√°kkal, sebezhetŇĎ pontokkal b√≠rnak.

Mi√©rt b√≠r kritikus jelentŇĎs√©ggel a h√≠dbiztons√°g?¬†

√Āltal√°ban a h√≠d t√°rolja azt a tokent, amelyet a felhaszn√°l√≥ az egyik l√°ncr√≥l a m√°sikra szeretne tov√°bb√≠tani. A gyakran okosszerzŇĎd√©sek form√°j√°ban megjelenŇĎ hidak a keresztl√°nc√ļ tov√°bb√≠t√°sok felhalmoz√≥d√°s√°val jelentŇĎs mennyis√©gŇĪ tokent t√°rolhatnak, ez√©rt a hekkerek sz√°m√°ra j√∂vedelmezŇĎ c√©lpontot jelentenek.¬†

Emellett a blokkl√°nchidak a sok komponens√ľknek k√∂sz√∂nhetŇĎen nagy t√°mad√°si fel√ľletet adnak. Ez pedig jelentŇĎs motiv√°ci√≥t jelent a rosszindulat√ļ szereplŇĎk sz√°m√°ra, hogy a keresztl√°nc√ļ alkalmaz√°sokat t√°madva nagy mennyis√©gŇĪ p√©nzeszk√∂zt sziv√°rogtassanak el a rendszerbŇĎl.¬†

A hidak elleni támadások a CertiK becslése szerint 2022-ben több mint 1,3 milliárd USD veszteséget okoztak, az éves veszteség 36%-át. 

A hidak gyakran elŇĎfordul√≥ biztons√°gi probl√©m√°i, sebezhetŇĎs√©gei

A hidak biztons√°g√°nak fokoz√°s√°hoz √©rdemes megismerni a hidak gyakori biztons√°gi probl√©m√°it, sebezhetŇĎ pontjait, tov√°bb√° tesztelni a hidakat az elind√≠t√°suk elŇĎtt. Ezeket a sebezhetŇĎs√©geket a k√∂vetkezŇĎ n√©gy ter√ľlethez sorolhatjuk.¬†

Gyenge on-chain valid√°l√°s

Az egyszerŇĪ hidak ‚Äď k√ľl√∂n√∂sen a konkr√©t DAppokhoz tervezett hidak ‚Äď eset√©n az on-chain valid√°l√°st a minimumra szor√≠tj√°k. Ezek a hidak centraliz√°lt h√°tt√©rre √©p√≠tve hajtj√°k v√©gre az alapvetŇĎ mŇĪveleteket ‚Äď pl. mintel√©s, √©get√©s √©s token√°tutal√°sok ‚Äď, m√≠g a j√≥v√°hagy√°sokat/hiteles√≠t√©seket teljes eg√©sz√©ben off-chain m√≥don v√©gzik.

Ezzel ellent√©tben m√°s t√≠pus√ļ hidak okosszerzŇĎd√©seket haszn√°lnak az √ľzenetek valid√°l√°s√°hoz, √©s on-chain v√©gzik a j√≥v√°hagy√°st/hiteles√≠t√©st. Ebben az esetben amikor egy felhaszn√°l√≥ p√©nzeszk√∂z√∂ket helyez let√©tbe az egyik l√°ncon, az okosszerzŇĎd√©s egy al√°√≠rt √ľzenetet gener√°l, √©s az al√°√≠r√°st visszavezeti a tranzakci√≥ba. Ez az al√°√≠r√°s szolg√°l let√©ti bizony√≠t√©kk√©nt, √©s ezt haszn√°lja a rendszer a felhaszn√°l√≥ kiutal√°si k√©relm√©nek j√≥v√°hagy√°s√°hoz a m√°sik l√°ncon. Ez a folyamat hivatott a k√ľl√∂nb√∂zŇĎ t√°mad√°sok megelŇĎz√©s√©re, ide√©rtve a visszaj√°tsz√°sos (replay) √©s a hamis√≠tott let√©ti adatok (forged deposit records) t√≠pus√ļ t√°mad√°sokat is.¬†

Ugyanakkor ha az on-chain valid√°l√°si folyamat sor√°n alakul ki sebezhetŇĎs√©g, akkor a t√°mad√≥ jelentŇĎs k√°rokat okozhat. P√©ld√°ul, ha egy h√≠d a Merkle-fa seg√≠ts√©g√©vel valid√°lja a tranzakci√≥-nyilv√°ntart√°st, akkor a t√°mad√≥ hamis bizony√≠t√©kokat gener√°lhat. Ez azt jelenti, hogy ha a valid√°l√°si folyamat sebezhetŇĎ, akkor megker√ľlhetik a bizony√≠t√©kvalid√°l√°st √©s √ļj tokeneket mintelhetnek a sz√°ml√°jukra,.

Egyes hidak a ‚Äěwrapped token.‚ÄĚ (becsomagolt token) koncepci√≥t alkalmazz√°k. P√©ld√°ul, amikor egy felhaszn√°l√≥ DAI-t k√ľld az Ethereum r√≥l a BNB Chainre, akkor a h√≠d DAI-t vesz ki az Ethereum szerzŇĎd√©sbŇĎl, √©s azonos mennyis√©gŇĪ wrapped DAI-t bocs√°t ki a BNB Chain blokkl√°ncon.¬†

Ugyanakkor, ha a tranzakci√≥ valid√°l√°sa nem megfelelŇĎ, akkor egy t√°mad√≥ egy rosszindulat√ļ szerzŇĎd√©ssel manipul√°lva ezt a funkci√≥t helytelen c√≠mre ir√°ny√≠thatja √°t a becsomagolt tokeneket a h√≠dr√≥l.¬†

A p√©nzeszk√∂z√∂k elsziv√°rogtat√°s√°hoz a t√°mad√≥knak emellett sz√ľks√©g√ľk van arra is, hogy az √°ldozatok a ‚ÄětransferFrom‚ÄĚ f√ľggv√©nnyel j√≥v√°hagyj√°k a h√≠dszerzŇĎd√©st a tokenek tov√°bb√≠t√°s√°hoz.¬†

Sajnos a helyzetet tov√°bb rontja, hogy sok h√≠d v√©gtelen tokenj√≥v√°hagy√°st k√∂vetel meg a DApp-felhaszn√°l√≥kt√≥l. Ez a bevett gyakorlat cs√∂kkenti a gas d√≠jakat, de extra kock√°zatot gener√°lva lehetŇĎv√© teszi, hogy egy okosszerzŇĎd√©s v√©gtelen sz√°m√ļ tokenhez hozz√°f√©rjen a felhaszn√°l√≥ t√°rc√°j√°ban. A t√°mad√≥k a valid√°l√°si r√©st √©s a t√ļlzott j√≥v√°hagy√°st kihaszn√°lva k√©pesek m√°s felhaszn√°l√≥kt√≥l magukhoz tov√°bb√≠tani a tokeneket.

Gyenge off-chain valid√°l√°s

N√©h√°ny h√≠drendszerben az off-chain h√°tt√©rkiszolg√°l√≥ kritikus szerepet t√∂lt be a blokkl√°ncr√≥l k√ľld√∂tt √ľzenetek legitimit√°s√°nak igazol√°s√°ban. Ebben az esetben a let√©ti tranzakci√≥k hiteles√≠t√©s√©re √∂sszpontos√≠tunk.¬†

Egy off-chain valid√°l√°ssal mŇĪk√∂dŇĎ blokkl√°nch√≠d az al√°bbiak szerint mŇĪk√∂dik:¬†

  1. A felhaszn√°l√≥k a DApp felhaszn√°l√°s√°val tokeneket helyeznek let√©tbe a forr√°sl√°ncon l√©trehozott okosszerzŇĎd√©sben.

  2. A DApp ezut√°n egy API-n kereszt√ľl elk√ľldi a let√©ti tranzakci√≥ hash-k√≥dj√°t a h√°tt√©rkiszolg√°l√≥nak.

  3. A tranzakci√≥hash-t a kiszolg√°l√≥ t√∂bbsz√∂r is valid√°lja. Ha legitimnek tal√°lja, akkor egy al√°√≠r√≥ al√°√≠rja az √ľzenetet, √©s az API-n kereszt√ľl visszak√ľldi az al√°√≠r√°st a felhaszn√°l√≥i fel√ľletre.

  4. Az aláírás beérkezésekor a DApp hitelesíti azt, és engedélyezi, hogy a felhasználó a rendeltetési blokkláncon lehívja a tokenjeit.

A h√°tt√©rkiszolg√°l√≥nak meg kell gyŇĎzŇĎdnie arr√≥l, hogy az √°ltala feldolgozott let√©ti tranzakci√≥ val√≥ban megt√∂rt√©nt-e, √©s nem csak hamis√≠tv√°ny. Ez a h√°tt√©rkiszolg√°l√≥ hat√°rozza meg, hogy a felhaszn√°l√≥ leh√≠vhatja-e a tokeneket a rendeltet√©si blokkl√°ncon, √©ppen ez√©rt a t√°mad√≥k szem√©ben √©rt√©kes c√©lpontot k√©pvisel.

A h√°tt√©rkiszolg√°l√≥nak valid√°lnia kell a tranzakci√≥ √°ltal l√©trehozott esem√©ny strukt√ļr√°j√°t, valamint az esem√©nyt l√©trehoz√≥ szerzŇĎd√©sc√≠met. Ha ez ut√≥bbit elhanyagolja, akkor a t√°mad√≥ egy rosszindulat√ļ szerzŇĎd√©ssel hamis√≠that egy let√©ti esem√©nyt, amelynek strukt√ļr√°ja megegyezik a legitim let√©ti esem√©ny strukt√ļr√°j√°val.¬†

Ha a h√°tt√©rkiszolg√°l√≥ nem hiteles√≠ti az esem√©nyt l√©trehoz√≥ c√≠met, akkor ezt √©rv√©nyes tranzakci√≥nak tekinti √©s al√°√≠rja az √ľzenetet. A t√°mad√≥ ezut√°n elk√ľldheti a tranzakci√≥hash-t a h√°tt√©rkiszolg√°l√≥nak, megker√ľlve a hiteles√≠t√©st, √©s lehetŇĎv√© t√©ve, hogy a rendeltet√©si blokkl√°ncon leh√≠vja a tokeneket.

Natív tokenek helytelen kezelése

A hidak a nat√≠v tokenek √©s a hasznoss√°gi tokenek kezel√©se sor√°n elt√©rŇĎ megk√∂zel√≠t√©st alkalmaznak. P√©ld√°ul, az Ethereum h√°l√≥zat√°n a nat√≠v token az ETH, √©s a legt√∂bb hasznoss√°gi token az ERC-20 szabv√°nyt k√∂veti.¬†

Ha egy felhaszn√°l√≥ ETH-et szeretne egy m√°sik l√°ncra √°tutalni, akkor elŇĎsz√∂r let√©tbe kell azt helyeznie a h√≠d szerzŇĎd√©s√©ben. Ehhez a felhaszn√°l√≥nak csak csatolnia kell az ETH-et a tranzakci√≥hoz, √©s az ETH-√∂sszeg kinyerhetŇĎ a tranzakci√≥ ‚Äěmsg.value‚ÄĚ mezŇĎj√©nek leolvas√°s√°val.

Az ERC-20 tokenek let√©tbe helyez√©se jelentŇĎsen elt√©r az ETH-let√©t elhelyez√©s√©tŇĎl. Egy ERC-20 token let√©tbe helyez√©s√©hez a felhaszn√°l√≥nak enged√©lyeznie kell, hogy a h√≠dszerzŇĎd√©s elk√∂ltse a tokenjeit. Ennek enged√©lyez√©se √©s a tokenlet√©t h√≠dszerzŇĎd√©sben val√≥ elhelyez√©se ut√°n a szerzŇĎd√©s vagy el√©geti a felhaszn√°l√≥ tokenjeit a ‚ÄěburnFrom()‚ÄĚ f√ľggv√©nnyel, vagy √°tutalja a felhaszn√°l√≥ tokenjeit a szerzŇĎd√©sre a "transferFrom()" f√ľggv√©nnyel.¬†

Ennek eld√∂nt√©s√©re az egyik megk√∂zel√≠t√©s egy if-else (ha, k√ľl√∂nben) √°ll√≠t√°st alkalmaz ugyanazon a f√ľggv√©nyen bel√ľl. Egy m√°sik megk√∂zel√≠t√©s k√©t k√ľl√∂n f√ľggv√©nyt hoz l√©tre a k√©t forgat√≥k√∂nyv kezel√©s√©hez. Ha valaki az ERC-20 let√©tbe helyez√©si f√ľggv√©nnyel pr√≥b√°l meg ETH-et let√©tben helyezni, az a p√©nzeszk√∂z√∂k elveszt√©s√©t eredm√©nyezheti.

Az ERC-20 let√©tbe helyez√©si k√©relmek kezel√©sekor a felhaszn√°l√≥k a let√©tbe helyez√©si f√ľggv√©ny bemeneti adatak√©nt √°ltal√°ban megadj√°k a tokenc√≠met. Ez jelentŇĎs kock√°zattal j√°r, mivel a tranzakci√≥ sor√°n nem megb√≠zhat√≥ k√ľlsŇĎ h√≠v√°sok t√∂rt√©nhetnek. A kiz√°r√≥lag a h√≠d √°ltal t√°mogatott tokeneket tartalmaz√≥ feh√©rlista alkalmaz√°sa gyakori m√≥dszer a kock√°zat minimaliz√°l√°s√°ra. Csak a feh√©rlist√°n szereplŇĎ c√≠meket lehet argumentumk√©nt alkalmazni. Ez megakad√°lyozza a k√ľlsŇĎ h√≠v√°sokat, mivel a projektcsapat m√°r megszŇĪrte a tokenc√≠meket.

Mindazon√°ltal akkor is mer√ľlhetnek fel probl√©m√°k, amikor a hidak nat√≠v tokenek keresztl√°nc√ļ utal√°s√°t kezelik, mivel a nat√≠v tokennek nincs c√≠me. A nat√≠v tokent null√°s c√≠mmel (0x000...0) lehet jel√∂lni. Ez probl√©m√°s lehet, mivel ha null√°s c√≠met k√ľld√ľnk a f√ľggv√©nynek, azzal elker√ľlhetŇĎ a feh√©rlist√°s j√≥v√°hagy√°s, m√©g akkor is, ha egy√©bk√©nt mindent helyesen tesz√ľnk.¬†

Amikor a h√≠dszerzŇĎd√©s a ‚ÄětransferFrom‚ÄĚ seg√≠ts√©g√©vel utalja √°t a felhaszn√°l√≥ eszk√∂zeit a szerzŇĎd√©sre, akkor a null√°s c√≠met √©rintŇĎ k√ľlsŇĎ h√≠v√°s hamis √©rt√©ket ad vissza, mivel a null√°s c√≠m nem tartalmaz ‚ÄětransferFrom‚ÄĚ f√ľggv√©nyt. Ugyanakkor a tranzakci√≥ tov√°bbra is bek√∂vetkezhet, ha a szerzŇĎd√©s helytelen√ľl kezeli a visszaadott √©rt√©ket. Ez lehetŇĎs√©get ad a t√°mad√≥knak a tranzakci√≥ v√©grehajt√°s√°ra an√©lk√ľl, hogy tokent utaln√°nak √°t a szerzŇĎd√©sre.

Hibás beállítások

A legt√∂bb blokkl√°nch√≠d eset√©n egy kiemelt szerepk√∂r felel a tokenek √©s c√≠mek feh√©r- √©s feketelist√°z√°s√°√©rt, az al√°√≠r√≥k kijel√∂l√©s√©√©rt vagy m√≥dos√≠t√°s√°√©rt, tov√°bb√° egy√©b kritikus be√°ll√≠t√°sok konfigur√°l√°s√°√©rt. Kulcsfontoss√°g√ļ, hogy az √∂sszes konfigur√°ci√≥ pontos legyen, mivel m√©g a l√°tsz√≥lag trivi√°lis t√©ved√©sek is jelentŇĎs vesztes√©gekhez vezethetnek.

Bizony, volt olyan eset, ahol a t√°mad√≥ egy hib√°s be√°ll√≠t√°s miatt sikeresen megker√ľlte az √°tutal√°si adatok hiteles√≠t√©s√©t. A projektcsapat a hekkert√°mad√°s elŇĎtt n√©h√°ny nappal protokollfriss√≠t√©st hajtott v√©gre, amely sor√°n egy v√°ltoz√≥t is m√≥dos√≠tottak. A v√°ltoz√≥ k√©pviselte a megb√≠zhat√≥ √ľzenet alap√©rtelmezett √©rt√©k√©t. A v√°ltoztat√°s azt eredm√©nyezte, hogy a rendszer minden √ľzenetet automatikusan hiteles√≠tettnek tekintett, √≠gy a t√°mad√≥ tetszŇĎleges √ľzeneteket elk√ľldve mehetett √°t a hiteles√≠t√©si folyamaton.

A hídbiztonság fokozása

A fent le√≠rt n√©gy gyakori h√≠dbiztons√°gi r√©s √©rezteti azokat a kih√≠v√°sokat, amelyeket egy kapcsolatokkal √°tszŇĎtt blokkl√°nc-√∂kosziszt√©ma v√©delme jelent. Minden egyes felsorolt sebezhetŇĎs√©g kezel√©se jelentŇĎs megfontol√°sokat ig√©nyel, √©s nincs olyan forgat√≥k√∂nyv, amely mind a n√©gyet kezeln√©.¬†

P√©ld√°ul a hibamentes j√≥v√°hagy√°si/hiteles√≠t√©si folyamatot biztos√≠t√≥ √°ltal√°nos ir√°nymutat√°s kiad√°sa nagy kih√≠v√°s, mivel minden h√≠d egyedi j√≥v√°hagy√°si/hiteles√≠t√©si k√∂vetelm√©nyeket alkalmaz. A j√≥v√°hagy√°s/hiteles√≠t√©s elker√ľl√©s√©t √ļgy lehet a leghat√©konyabban megakad√°lyozni, hogy alapos tesztel√©snek vetj√ľk al√° a hidat az √∂sszes lehets√©ges t√°mad√°si vektorral szemben, biztos√≠tva, hogy a j√≥v√°hagy√°si/hiteles√≠t√©si logika szil√°rd alapokon √°ll.¬†

√Ėsszefoglalva, alapvetŇĎ fontoss√°g√ļ a potenci√°lis t√°mad√°sok elleni szigor√ļ tesztel√©s √©s k√ľl√∂n√∂s elŇĎvigy√°zatoss√°g a hidak leggyakoribb biztons√°gi r√©seivel kapcsolatban.¬†¬†

Záró gondolatok 

A nagy √©rt√©k miatt a keresztl√°nc√ļ hidak m√°r r√©g√≥ta a t√°mad√≥k c√©lkeresztj√©ben vannak. A fejlesztŇĎk az √©les √ľzem elŇĎtti alapos tesztel√©ssel √©s harmadik felek √°ltal lefolytatott auditokkal erŇĎs√≠thetik a l√©trehozott hidak v√©delm√©t, cs√∂kkentve az els√∂prŇĎ erejŇĪ hekkert√°mad√°sok kock√°zat√°t, amelyek az ut√≥bbi n√©h√°ny √©vben a hidakat s√ļjtott√°k. Egy t√∂bbl√°nc√ļ vil√°gban a hidak kritikus jelentŇĎs√©ggel b√≠rnak, de a hat√©kony Web3 infrastrukt√ļra tervez√©se √©s meg√©p√≠t√©se sor√°n a biztons√°got kiemelten kell kezelni.

További olvasnivaló

Mi az a blokklánchíd?

Mi az a keresztl√°nc√ļ interoperabilit√°s?

H√°rom n√©pszerŇĪ kriptoh√≠d √©s mŇĪk√∂d√©s√ľk

Mik azok a becsomagolt (wrapped) tokenek?

FelelŇĎss√©gi nyilatkozat √©s kock√°zati figyelmeztet√©s: A jelen bejegyz√©s tartalm√°t annak mindenkori form√°j√°ban bocs√°tjuk rendelkez√©sre √°ltal√°nos t√°j√©koztat√°si √©s oktat√°si c√©llal, √©s semmilyen felelŇĎss√©get vagy szavatoss√°got nem v√°llalunk az alkalmaz√°s√°val kapcsolatban. Az itt le√≠rtak nem tekintendŇĎk p√©nz√ľgyi, jogi vagy egy√©b szakmai tan√°csad√°snak, sem egy konkr√©t term√©k vagy szolg√°ltat√°s megv√°s√°rl√°s√°ra tett javaslatnak. Javasoljuk, hogy megfelelŇĎ szaktan√°csad√≥kt√≥l k√©rjen tan√°csot. Mivel a jelen cikket k√ľlsŇĎ szerzŇĎ √≠rta, felh√≠vjuk figyelm√©t, hogy az itt kifejtett n√©zŇĎpontok a harmadik f√©l szerzŇĎ √°ll√°spontj√°t r√©szletezik, √©s nem felt√©tlen√ľl t√ľkr√∂zik a Binance Academy v√©lem√©ny√©t. K√©rj√ľk, hogy idekattintva olvassa el r√©szletes felelŇĎss√©gi nyilatkozatunkat. A digit√°lis eszk√∂z√∂k √°ra erŇĎsen ingadozhat. A befektet√©s √©rt√©ke cs√∂kkenhet vagy nŇĎhet, √©s az is elŇĎfordulhat, hogy √Ėn nem kapja vissza a befektetett √∂sszeget. A befektet√©si d√∂nt√©sei√©rt egyed√ľl √Ėn felel, √©s a Binance Academy nem v√°llal felelŇĎss√©get az esetlegesen felmer√ľlŇĎ vesztes√©gek√©rt. Az itt le√≠rtak nem minŇĎs√ľlnek p√©nz√ľgyi, hogy vagy egy√©b szakmai tan√°csnak. Tov√°bbi inform√°ci√≥√©rt tekintse meg Felhaszn√°l√°si felt√©teleinket √©s a Kock√°zati figyelmeztet√©st.