Αυτό το άρθρο είναι μια υποβολή από την κοινότητα. Συντάκτης είναι ο Minzhi He, ελεγκτής της CertiK.
Οι απόψεις σε αυτό το άρθρο είναι του συντάκτη/συγγραφέα και δεν αντιπροσωπεύουν απαραίτητα εκείνες της Ακαδημίας Binance.
TL;DR
Οι γέφυρες blockchain είναι καθοριστικής σημασίας για να επιτευχθεί η διαλειτουργικότητα στον χώρο του blockchain. Ωστόσο, η ασφάλεια της γέφυρας blockchain είναι πρωταρχικής σημασίας. Ορισμένα κοινά τρωτά σημεία ασφαλείας της γέφυρας περιλαμβάνουν ανεπαρκή επικύρωση εντός και εκτός αλυσίδας, ακατάλληλο χειρισμό εγγενών token και λάθος παραμετροποιήσεις. Για να διασφαλιστεί η σωστή λειτουργία της λογικής επαλήθευσης, προτείνεται η δοκιμή της γέφυρας έναντι όλων των πιθανών φορέων επίθεσης.
Εισαγωγή
Μια γέφυρα blockchain είναι ένα πρωτόκολλο που συνδέει δύο blockchain για να επιτρέπει τις αλληλεπιδράσεις μεταξύ τους. Εάν έχετε bitcoin αλλά θέλετε να συμμετάσχετε στη δραστηριότητα DeFi στο δίκτυο Ethereum, μια γέφυρα blockchain σάς δίνει τη δυνατότητα να το κάνετε χωρίς να πουλήσετε το bitcoin σας.
Οι γέφυρες blockchain αποτελούν το θεμέλιο για την επίτευξη διαλειτουργικότητας εντός του χώρου blockchain. Λειτουργούν χρησιμοποιώντας διάφορες επικυρώσεις εντός και εκτός αλυσίδας και, επομένως, έχουν διαφορετικά τρωτά σημεία ασφαλείας.
Γιατί είναι κρίσιμη η ασφάλεια μιας γέφυρας;
Μια γέφυρα συνήθως διατηρεί το token που ο χρήστης θέλει να μεταφέρει από μια αλυσίδα σε μια άλλη. Συχνά χρησιμοποιούνται ως έξυπνες συμβάσεις, οι γέφυρες διαθέτουν σημαντικό αριθμό token καθώς συσσωρεύονται οι μεταφορές Cross-chain, γεγονός που τις κάνει επικερδείς στόχους για τους χάκερ.
Επιπλέον, οι γέφυρες blockchain έχουν μεγάλη έκταση επιθέσεων, καθώς περιλαμβάνουν πολλά στοιχεία. Λαμβάνοντας αυτό υπόψη, οι κακόβουλοι παράγοντες έχουν μεγάλο κίνητρο να στοχεύουν σε εφαρμογές cross-chain για να αντλήσουν μεγάλα χρηματικά ποσά.
Οι επιθέσεις σε γέφυρες είχαν ως αποτέλεσμα απώλειες άνω των 1,3 δισεκατομμυρίων δολαρίων το 2022, αντιπροσωπεύοντας το 36% των συνολικών απωλειών του έτους, σύμφωνα με τις εκτιμήσεις της CertiK.
Κοινά τρωτά σημεία ασφαλείας μιας γέφυρας
Για να ενισχύσετε την ασφάλεια μιας γέφυρας, είναι σημαντικό να κατανοήσετε τα κοινά τρωτά σημεία ασφαλείας μιας γέφυρας και να ελέγξετε τις γέφυρες σχετικά με αυτά πριν από την κυκλοφορία. Αυτά τα τρωτά σημεία μπορούν να κατηγοριοποιηθούν στις παρακάτω τέσσερις κατηγορίες.
Ανεπαρκής επικύρωση στην αλυσίδα
Για απλές γέφυρες, ειδικά εκείνες που έχουν σχεδιαστεί για συγκεκριμένα dApp, η επικύρωση στην αλυσίδα περιορίζεται στο ελάχιστο. Αυτές οι γέφυρες βασίζονται σε ένα κεντρικό backend που εκτελεί βασικές λειτουργίες όπως η δημιουργία, η ανάλωση και οι μεταφορές token, ενώ όλες οι επαληθεύσεις εκτελούνται εκτός αλυσίδας.
Αντίθετα, άλλοι τύποι γέφυρας χρησιμοποιούν έξυπνες συμβάσεις για την επικύρωση μηνυμάτων και την εκτέλεση επαληθεύσεων εντός της αλυσίδας. Σε αυτό το σενάριο, όταν ένας χρήστης κάνει καταθέσεις σε μια αλυσίδα, η έξυπνη σύμβαση δημιουργεί ένα υπογεγραμμένο μήνυμα και επιστρέφει την υπογραφή στη συναλλαγή. Αυτή η υπογραφή λειτουργεί ως απόδειξη της κατάθεσης και χρησιμοποιείται για την επαλήθευση του αιτήματος ανάληψης του χρήστη στην άλλη αλυσίδα. Αυτή η διαδικασία θα πρέπει να μπορεί να αποτρέπει διάφορες επιθέσεις ασφαλείας, συμπεριλαμβανομένων των επιθέσεων επανάληψης και των πλαστών αρχείων καταθέσεων.
Ωστόσο, εάν υπάρχει τρωτό σημείο κατά τη διαδικασία επικύρωσης εντός της αλυσίδας, ο επιτιθέμενος μπορεί να προκαλέσει σοβαρή ζημιά. Για παράδειγμα, εάν μια γέφυρα χρησιμοποιεί Merkle tree για την επικύρωση της καταχώρησης συναλλαγής, ένας επιτιθέμενος μπορεί να δημιουργήσει πλαστές αποδείξεις. Αυτό σημαίνει ότι μπορεί να παρακάμψει την επικύρωση αποδεικτικού και να δημιουργήσει νέα token στον λογαριασμό του, εάν η διαδικασία επικύρωσης είναι επισφαλής.
Ορισμένες γέφυρες εφαρμόζουν την έννοια των "wrapped token". Για παράδειγμα, όταν ένας χρήστης μεταφέρει DAI από το Ethereum στο BNB Chain, το DAI λαμβάνεται από το συμβόλαιο Ethereum και ένα ισοδύναμο ποσό wrapped DAI εκδίδεται στο BNB Chain.
Ωστόσο, εάν αυτή η συναλλαγή δεν επικυρωθεί σωστά, ένας επιτιθέμενος θα μπορούσε να δημιουργήσει μια κακόβουλη σύμβαση για να προωθήσει τα wrapped token από τη γέφυρα σε μια λάθος διεύθυνση, χειραγωγώντας τη συνάρτηση.
Επίσης, οι επιτιθέμενοι απαιτούν από τα θύματα να εγκρίνουν τη σύμβαση της γέφυρας για να μεταφέρουν token χρησιμοποιώντας τη λειτουργία “transferFrom” για να αντλήσουν τα κεφάλαια από τη σύμβαση της γέφυρας.
Δυστυχώς, αυτό επιδεινώνεται επειδή πολλές γέφυρες ζητούν έγκριση απεριόριστων token από τους χρήστες dApp. Αυτή είναι μια κοινή πρακτική που μειώνει την προμήθεια Gas, αλλά προκαλεί επιπλέον κινδύνους, καθώς επιτρέπει σε μια έξυπνη σύμβαση να έχει πρόσβαση σε απεριόριστο αριθμό token από το πορτοφόλι του χρήστη. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν την έλλειψη επικύρωσης και την υπέρμετρη έγκριση για να μεταφέρουν token από άλλους χρήστες στους ίδιους.
Ανεπαρκής επικύρωση εκτός αλυσίδας
Σε ορισμένα συστήματα γέφυρας, ο διακομιστής backend εκτός αλυσίδας παίζει κρίσιμο ρόλο στην επαλήθευση της νομιμότητας των μηνυμάτων που αποστέλλονται από το blockchain. Στην προκειμένη περίπτωση, επικεντρωνόμαστε στην επαλήθευση των συναλλαγών καταθέσεων.
Μια γέφυρα blockchain με επικύρωση εκτός αλυσίδας λειτουργεί ως εξής:
Οι χρήστες αλληλεπιδρούν με την εφαρμογή dApp για να καταθέσουν token στην έξυπνη σύμβαση στην αλυσίδα πηγής.
Στη συνέχεια, η εφαρμογή dApp στέλνει το hash της συναλλαγής κατάθεσης στον διακομιστή backend μέσω ενός API.
Το hash της συναλλαγής υποβάλλεται σε διάφορες επικυρώσεις από τον διακομιστή. Εάν κριθεί νόμιμο, ο υπογράφων υπογράφει ένα μήνυμα και στέλνει την υπογραφή στη διεπαφή χρήστη μέσω του API.
Μόλις λάβει την υπογραφή, η εφαρμογή dApp την επαληθεύει και επιτρέπει στον χρήστη να κάνει ανάληψη των token του από την αλυσίδα-πηγή.
Ο διακομιστής backend πρέπει να διασφαλίζει ότι η συναλλαγή κατάθεσης που διεκπεραιώνεται έχει όντως πραγματοποιηθεί και δεν έχει παραποιηθεί. Αυτός ο διακομιστής backend καθορίζει εάν ένας χρήστης μπορεί να κάνει ανάληψη token στην αλυσίδα-στόχο και, επομένως, αποτελεί στόχο υψηλής αξίας για τους επιτιθέμενους.
Ο διακομιστής backend πρέπει να επικυρώσει τη δομή του συμβάντος που εκδίδει τη συναλλαγή, καθώς και τη διεύθυνση του συμβολαίου που εκδίδει το συμβάν. Εάν το τελευταίο δεν ληφθεί υπόψη, ένας επιτιθέμενος θα μπορούσε να αναπτύξει ένα κακόβουλο συμβόλαιο για να παραποιήσει ένα συμβάν κατάθεσης με την ίδια δομή με ένα νόμιμο συμβάν κατάθεσης.
Εάν ο διακομιστής backend δεν επαληθεύσει ποια διεύθυνση εξέδωσε το συμβάν, θα θεωρήσει ότι πρόκειται για έγκυρη συναλλαγή και θα υπογράψει το μήνυμα. Ο επιτιθέμενος θα μπορούσε στη συνέχεια να στείλει το hash της συναλλαγής στο backend, παρακάμπτοντας την επαλήθευση και επιτρέποντάς του να κάνει ανάληψη των token από την αλυσίδα-στόχο.
Ακατάλληλος χειρισμός εγγενών token
Οι γέφυρες ακολουθούν διαφορετικές πρακτικές για τον χειρισμό των εγγενών token και των token εναλλακτικής χρησιμότητας. Για παράδειγμα, στο δίκτυο Ethereum, το εγγενές token είναι το ETH και τα περισσότερα token εναλλακτικής χρησιμότητας ακολουθούν το πρότυπο ERC-20.
Όταν ένας χρήστης θέλει να μεταφέρει τα ETH του σε μια άλλη αλυσίδα, πρέπει πρώτα να τα καταθέσει στο συμβόλαιο γέφυρας. Για να συμβεί αυτό, ο χρήστης απλώς συνδέει το ETH με τη συναλλαγή και το ποσό του ETH μπορεί να ανακτηθεί διαβάζοντας το πεδίο "msg.value" της συναλλαγής.
Η κατάθεση token ERC-20 διαφέρει σημαντικά από την κατάθεση ETH. Για να καταθέσει ένα token ERC-20, ο χρήστης πρέπει πρώτα να επιτρέψει στο συμβόλαιο γέφυρας να ξοδέψει τα token του. Αφού το εγκρίνουν και καταθέσουν τα token στο συμβόλαιο γέφυρας, το συμβόλαιο είτε θα αναλώσει τα token του χρήστη χρησιμοποιώντας τη συνάρτηση "burnFrom()" είτε θα μεταφέρει το token του χρήστη στο συμβόλαιο χρησιμοποιώντας τη συνάρτηση "transferFrom()".
Μια προσέγγιση για να διαφοροποιηθεί αυτό είναι η χρήση μιας δήλωσης "if-else" εντός της ίδιας συνάρτησης. Μια άλλη προσέγγιση είναι η δημιουργία δύο ξεχωριστών συναρτήσεων για τον χειρισμό κάθε σεναρίου. Η απόπειρα κατάθεσης ETH χρησιμοποιώντας τη λειτουργία κατάθεσης ERC-20 μπορεί να οδηγήσει στην απώλεια αυτών των κεφαλαίων.
Κατά τη διεκπεραίωση αιτημάτων κατάθεσης ERC-20, οι χρήστες συνήθως παρέχουν τη διεύθυνση του token ως δεδομένο στη λειτουργία κατάθεσης. Αυτό ενέχει σημαντικό κίνδυνο, καθώς κατά τη διάρκεια της συναλλαγής μπορεί να πραγματοποιηθούν μη αξιόπιστες εξωτερικές κλήσεις. Η εφαρμογή μιας λίστας επιτρεπόμενων που περιλαμβάνει μόνο τα token που υποστηρίζονται από τη γέφυρα είναι μια κοινή πρακτική για την ελαχιστοποίηση του κινδύνου. Μόνο οι διευθύνσεις που περιλαμβάνονται στη λίστα επιτρεπόμενων μπορούν να μεταβιβαστούν ως παραμέτρους. Αυτό αποτρέπει τις εξωτερικές κλήσεις, καθώς η ομάδα έργου έχει ήδη φιλτράρει τη διεύθυνση token.
Ωστόσο, μπορεί επίσης να προκύψουν προβλήματα όταν οι γέφυρες διαχειρίζονται τη μεταφορά εγγενών token μεταξύ των αλυσίδων, καθώς το εγγενές token δεν έχει διεύθυνση. Μια μηδενική διεύθυνση (0x000...0) αντιπροσωπεύει το εγγενές token. Αυτό μπορεί να είναι επικίνδυνο, καθώς η διαβίβαση της μηδενικής διεύθυνσης στη συνάρτηση μπορεί να παρακάμψει την επαλήθευση της λίστας επιτρεπόμενων, ακόμη και αν εφαρμοστεί εσφαλμένα.
Όταν το συμβόλαιο γέφυρας καλεί τη συνάρτηση "transferFrom" για να μεταφέρει περιουσιακά στοιχεία του χρήστη στο συμβόλαιο, η εξωτερική κλήση στη μηδενική διεύθυνση επιστρέφει ψευδείς τιμές, καθώς δεν υπάρχει συνάρτηση "transferFrom" που να έχει υλοποιηθεί στη μηδενική διεύθυνση. Ωστόσο, η συναλλαγή μπορεί να πραγματοποιηθεί εάν το συμβόλαιο δεν χειρίζεται κατάλληλα την τιμή απόδοσης. Αυτό δημιουργεί μια πιθανότητα για τους επιτιθέμενους να εκτελέσουν τη συναλλαγή χωρίς να μεταφέρουν κανένα token στο συμβόλαιο.
Λάθος παραμετροποίηση
Στις περισσότερες γέφυρες blockchain, ένας εξουσιοδοτημένος ρόλος είναι υπεύθυνος για τη δημιουργία λίστας επιτρεπόμενων και μιας λίστας αποκλεισμένων token και διευθύνσεων, την ανάθεση ή την αλλαγή των υπογράφων και άλλες σημαντικές παραμετροποιήσεις. Η διασφάλιση της ακρίβειας όλων των ρυθμίσεων είναι καθοριστικής σημασίας, καθώς ακόμη και φαινομενικά ασήμαντες αστοχίες μπορούν να οδηγήσουν σε σημαντικές απώλειες.
Για την ακρίβεια, υπήρξε ένα περιστατικό όπου ο επιτιθέμενος παρέκαμψε επιτυχώς την επαλήθευση της καταχώρισης μεταφοράς λόγω λανθασμένης παραμετροποίησης. Η ομάδα έργου εφάρμοσε μια αναβάθμιση του πρωτοκόλλου λίγες ημέρες πριν από την παραβίαση, η οποία περιελάμβανε την αλλαγή μιας μεταβλητής. Η μεταβλητή χρησιμοποιήθηκε για να αντιπροσωπεύει την προεπιλεγμένη τιμή του αξιόπιστου μηνύματος. Αυτή η αλλαγή είχε ως αποτέλεσμα όλα τα μηνύματα να κρίνονται αυτόματα ως αποδεδειγμένα, επιτρέποντας έτσι σε έναν επιτιθέμενο να στείλει ένα αυθαίρετο μήνυμα και να περάσει τη διαδικασία επαλήθευσης.
Πώς να βελτιώσετε την ασφάλεια της γέφυρας
Τα τέσσερα κοινά τρωτά σημεία της γέφυρας που εξηγούνται παραπάνω αποδεικνύουν τις προκλήσεις για τη διασφάλιση της ασφάλειας σε ένα αλληλένδετο οικοσύστημα blockchain. Υπάρχουν σημαντικές παρατηρήσεις για τον χειρισμό καθενός από αυτά τα τρωτά σημεία και δεν υπάρχει ένα μόνο σενάριο δράσης για όλα αυτά.
Για παράδειγμα, είναι δύσκολο να δοθούν γενικές οδηγίες για την εξασφάλιση μιας διαδικασίας επαλήθευσης χωρίς σφάλματα, δεδομένου ότι κάθε γέφυρα έχει μοναδικές απαιτήσεις επαλήθευσης. Η πιο αποτελεσματική προσέγγιση για την πρόληψη της παράκαμψης της επαλήθευσης είναι η διεξοδική δοκιμή της γέφυρας έναντι όλων των πιθανών φορέων επίθεσης και η διασφάλιση της ορθής λογικής επαλήθευσης.
Συνοψίζοντας, είναι απαραίτητο να διεξάγετε σχολαστικές δοκιμές έναντι πιθανών επιθέσεων και να δίνετε ιδιαίτερη προσοχή στα πιο συνηθισμένα τρωτά σημεία ασφαλείας στις γέφυρες.
Συμπεράσματα
Λόγω της υψηλής τους αξίας, οι γέφυρες cross-chain αποτελούν εδώ και καιρό στόχο για τους επιτιθέμενους. Οι κατασκευαστές μπορούν να ενισχύσουν την ασφάλεια των γεφυρών τους διεξάγοντας λεπτομερείς δοκιμές πριν από την εγκατάσταση και συμμετέχοντας σε ελέγχους τρίτων, μειώνοντας τον κίνδυνο των καταστροφικών παραβιάσεων που έχουν πλήξει τις γέφυρες τα τελευταία χρόνια. Οι γέφυρες παίζουν καθοριστικό ρόλο σε έναν κόσμο πολλαπλών αλυσίδων, αλλά η ασφάλεια πρέπει να αποτελεί πρωταρχικό μέλημα κατά τον σχεδιασμό και την ανάπτυξη μιας αποτελεσματικής υποδομής Web3.
Για περαιτέρω ανάγνωση
Τι είναι μια γέφυρα Blockchain;
Τι είναι η διαλειτουργικότητα Cross-chain;
Τρεις δημοφιλείς γέφυρες κρύπτο και πώς λειτουργούν
Αποποίηση ευθυνών και Προειδοποίηση κινδύνου: Αυτό το περιεχόμενο παρουσιάζεται σε εσάς "ως έχει" μόνο για γενική ενημέρωση και εκπαιδευτικούς σκοπούς, χωρίς καμία δήλωση ή εγγύηση οποιουδήποτε είδους. Δεν θα πρέπει να ερμηνεύεται ως οικονομική, νομική ή άλλη επαγγελματική συμβουλή, ούτε σκοπεύει να προτείνει την αγορά οποιουδήποτε συγκεκριμένου προϊόντος ή υπηρεσίας. Θα πρέπει να αναζητήσετε μόνοι σας συμβουλές από κατάλληλους επαγγελματίες συμβούλους. Όταν το άρθρο αποτελεί συνεισφορά τρίτου, λάβετε υπόψη ότι οι απόψεις που εκφράζονται ανήκουν στον τρίτο συνεισφέροντα και δεν αντικατοπτρίζουν απαραίτητα εκείνες της Ακαδημίας Binance. Διαβάστε την πλήρη δήλωση αποποίησης ευθυνών εδώ για περισσότερες λεπτομέρειες. Οι τιμές των ψηφιακών περιουσιακών στοιχείων ενδέχεται να είναι ασταθείς. Η αξία της επένδυσής σας μπορεί να μειωθεί ή να αυξηθεί, καθώς είναι πιθανό και να μην σας επιστραφεί το ποσό που επενδύσατε. Έχετε την αποκλειστική ευθύνη για τις αποφάσεις σχετικά με τις επενδύσεις σας και η Ακαδημία Binance δεν φέρει καμία ευθύνη για οποιαδήποτε ζημία που μπορεί να προκύψει. Αυτό το υλικό δεν πρέπει να ερμηνεύεται ως οικονομική, νομική ή άλλη επαγγελματική συμβουλή. Για περισσότερες πληροφορίες, ανατρέξτε στους Όρους Χρήσης και την Προειδοποίηση κινδύνου.