paint-brush
DApp của bạn dễ bị tấn công - Đây là nguyên nhân gây ra điều đótừ tác giả@emmanuelaj
428 lượt đọc
428 lượt đọc

DApp của bạn dễ bị tấn công - Đây là nguyên nhân gây ra điều đó

từ tác giả Emmanuel Ajala10m2024/09/29
Read on Terminal Reader

dài quá đọc không nổi

Các nút RPC (Remote Procedure Call) đóng vai trò là xương sống của cơ sở hạ tầng blockchain, cho phép các dApp giao tiếp với blockchain. Tuy nhiên, các nút RPC tập trung có những rủi ro như điểm lỗi đơn lẻ, hạn chế về khả năng mở rộng và lỗ hổng bảo mật. Các nghiên cứu điển hình như sự cố ngừng hoạt động của Infura nêu bật cách thức việc dựa vào cơ sở hạ tầng tập trung có thể gây ra sự gián đoạn lớn. Các giải pháp thay thế như nút RPC tự lưu trữ và phi tập trung cung cấp khả năng kiểm soát, độ tin cậy và khả năng chịu lỗi tốt hơn, nhưng đi kèm với những thách thức riêng như chi phí cao và bảo trì.
featured image - DApp của bạn dễ bị tấn công - Đây là nguyên nhân gây ra điều đó
Emmanuel Ajala HackerNoon profile picture
0-item
1-item

Các nút RPC (Remote Procedure Call) là thành phần quan trọng của cơ sở hạ tầng blockchain. Chúng xử lý giao tiếp giữa sổ cái phi tập trung không thể thay đổi và các ứng dụng front-end. Các cơ sở hạ tầng trung gian này hoạt động như một sứ giả tạo điều kiện cho các yêu cầu và phản hồi giữa các nút và dịch vụ được xây dựng trên blockchain.


Hoạt động cơ bản của RPC



Các nút RPC giống như Dịch vụ Bưu chính Hoa Kỳ (USPS), tạo điều kiện thuận lợi cho việc di chuyển thông tin từ dApp đến blockchain và ngược lại. Giống như bạn dựa vào dịch vụ bưu chính để chuyển thư từ điểm này đến điểm khác, các dApp phụ thuộc vào các nút RPC để truy cập blockchain. Và nếu không có các nút này, các ứng dụng phi tập trung sẽ gặp khó khăn trong việc hoạt động.


Các nút RPC đã phát triển đáng kể trong 10 năm qua, nhưng việc tập trung hóa cơ sở hạ tầng đã tạo ra một lỗ hổng ẩn. Bài viết này nhằm mục đích khám phá vai trò của các nút RPC, mối nguy hiểm của việc tập trung hóa và các giải pháp thay thế có thể bảo vệ dApp của bạn khỏi các lỗ hổng.

Sự phát triển của cơ sở hạ tầng RPC

Ý tưởng về lệnh gọi thủ tục từ xa xuất hiện từ những năm 1970 khi các nhà khoa học máy tính tìm cách giao tiếp giữa các máy khác nhau để làm cho máy tính phân tán trở nên minh bạch đối với các nhà phát triển.


Vào những năm 1980, RPC đầu tiên được Sun Microsystem phát triển có tên là Network File System. Sun Microsystem đã phát triển giao thức Open Network Computing RPC và giao thức này đã trở thành tiêu chuẩn cho việc giao tiếp giữa các chương trình khác nhau trên mạng.


Tuy nhiên, vào đầu những năm 1990, Microsoft đã phát triển và triển khai phiên bản RPC của mình để cho phép giao tiếp giữa các quy trình trên các hệ thống chạy trên Windows. Vào đầu những năm 2000, JSON RPC, sử dụng JSON để mã hóa dữ liệu, đã được giới thiệu. Nó trở nên khét tiếng trong số các nhà phát triển và lập trình viên vì dễ dàng truyền dữ liệu chuẩn hóa.


Trong thập kỷ qua, dApp đã trở thành một phần quan trọng của ngành công nghiệp blockchain và RPC chính là cơ sở hạ tầng hoàn hảo cần có để hoàn thiện mê cung này.


Tại sao?


  1. Khả năng thực hiện lệnh gọi hàm từ xa trên một máy tính khác giống như lệnh gọi hàm cục bộ rất phù hợp với kiến trúc blockchain.
  2. Tính không trạng thái và trọng lượng nhẹ của nó giúp tăng cường sức mạnh cho blockchain và hữu ích trong các tình huống hạn chế về băng thông và tính toán.


Do những lợi ích, RPC nhanh chóng được sử dụng rộng rãi. RPC được đề xuất để cho phép các ứng dụng được viết bằng các ngôn ngữ khác nhau kết nối và giao tiếp. Ý tưởng cơ bản đằng sau RPC là thực hiện lệnh gọi hàm từ xa trên máy tính hoặc máy chủ khác như thể đó là lệnh gọi hàm cục bộ.


Trong nhiều năm qua, đã có ba loại RPC chính (Tập trung, Phi tập trung và Tự lưu trữ) và mỗi loại đều có tính độc đáo riêng.

Mối nguy hiểm của các nút RPC tập trung

Các nút RPC tập trung là các nút được quản lý và kiểm soát bởi một thực thể duy nhất. Các nút tập trung này có các mô hình giống với các dịch vụ lưu trữ đám mây web2 như AWS (Amazon Web Services), Microsoft Azure và Google Cloud Protocol (GCP).


Mặc dù các nhà cung cấp web3 RPC tập trung này duy trì cơ sở hạ tầng nút cho các ứng dụng phi tập trung, nhưng khi xem xét kỹ hệ thống, chúng ta có thể thấy mức độ tập trung của chúng. Trớ trêu thay, các nhà cung cấp cơ sở hạ tầng web3 này cũng phụ thuộc vào cơ sở hạ tầng máy chủ lưu trữ đám mây web2 để duy trì dịch vụ của họ.


Vì vậy, khi các nhà cung cấp đám mây này gặp sự cố, các dịch vụ web3, vốn được cho là phi tập trung, cũng gặp phải thời gian ngừng hoạt động. Sau đây là các ví dụ về các nút RPC tập trung: Alchemy, Infura, Quicknode, v.v.


Hãy cùng xem xét những mối nguy hiểm mà các nút RPC tập trung gây ra cho cơ sở hạ tầng web3.


  1. Điểm lỗi đơn: Có một điểm lỗi đơn luôn ảnh hưởng đến độ tin cậy của hệ thống. Một máy chủ đơn lẻ hoặc một mạng lưới máy chủ do một thực thể duy nhất kiểm soát sẽ tạo ra một điểm quan trọng có thể dẫn đến lỗi dApp của bạn.



    Nếu máy chủ mà dữ liệu được định tuyến qua bị lỗi, liên kết giữa blockchain và dApp sẽ bị hỏng và hệ thống sẽ bị lỗi. Một điểm lỗi duy nhất sẽ ảnh hưởng đến độ tin cậy của hệ thống, đặc biệt là trong các ứng dụng liên quan đến tài chính như nền tảng DeFi.


  1. Vấn đề về khả năng mở rộng : Các nút RPC tập trung có thể trở thành nút thắt cổ chai trong thời gian lưu lượng truy cập cao và điều này hạn chế khả năng mở rộng của dApp. Khi mạng bị tắc nghẽn do phụ thuộc vào một nút duy nhất, điều này ảnh hưởng đến hiệu quả của dApp và làm tăng độ trễ, ảnh hưởng đến người dùng.


    Vì đây là hệ thống tập trung nên việc tăng khả năng mở rộng của dApp là điều không thể.


  1. Rủi ro và lỗ hổng bảo mật: Một nút tập trung hoặc chuyên dụng dễ bị tấn công và có thể dễ dàng trở thành mục tiêu cho những cá nhân vô đạo đức. Dữ liệu có thể bị lộ và bị thao túng, và cuối cùng ảnh hưởng đến việc ra quyết định trong dApp.


    Hơn nữa, một cuộc tấn công phối hợp vào nhà cung cấp cũng có thể dễ dàng được thực hiện, cuối cùng là phơi bày người dùng Dapp. Một thực thể duy nhất có thể bị các cơ quan chính phủ buộc phải đóng cửa một ứng dụng.


    Sau đây là một ví dụ:


    Vào năm 2022, MetaMask bị cáo buộc đã chặn người dùng có địa chỉ IP của Venezuela và Iran thực hiện giao dịch trên blockchain.


    Điều này có thể thực hiện được nhờ RPC tập trung (Infura) được ví web3 sử dụng.

Các nghiên cứu điển hình về lỗi và lỗ hổng của các nút RPC tập trung

RPC tập trung có vẻ an toàn nhưng thực tế không phải vậy. Tuy nhiên, nếu còn nghi ngờ về điều này, hãy cùng xem qua một số nghiên cứu điển hình về những thất bại trong quá khứ của RPC tập trung.

Trường hợp của Infura

Infura là một trong những nhà cung cấp dịch vụ cơ sở hạ tầng backend blockchain đầu tiên (IaaS) trên web3, được mang đến cho bạn thông qua sự đồng thuận. Cơ sở hạ tầng này được cho là có thể hoạt động 99,9% thời gian và có thể sử dụng cho 16 EVM blockchain.


Cho đến năm 2020, Infura vẫn được coi là một anh hùng, là một trong những tiền tuyến cho sự phát triển dApp và dẫn đầu việc áp dụng tiền điện tử/blockchain rộng rãi.


Vào ngày 11 tháng 11 năm 2020, Infura đã gặp sự cố gián đoạn dịch vụ do lỗi ảnh hưởng đến phiên bản GEth do Infura chạy.


Vấn đề chính ở đây là hệ thống Infura đã ngừng hoạt động và tất cả người dùng cơ sở hạ tầng Infura không thể kết nối với blockchain. Máy chủ bị gián đoạn do lỗi và rủi ro tập trung hóa đằng sau mạng lưới phi tập trung đã được tiết lộ.


Metamask, ví Ethereum lớn nhất hướng đến người tiêu dùng với hàng triệu người dùng đang hoạt động đã bị gián đoạn. Tất cả là vì họ dựa vào Infura, một nhà cung cấp RPC tập trung.

Mối quan tâm về tập trung trong quá trình nâng cấp mạng

Trong quá trình nâng cấp mạng/hardfork, thường có những lo ngại về lỗi dịch vụ, đặc biệt là liên quan đến các dAapp dựa vào các nhà cung cấp cơ sở hạ tầng tập trung. Những lo ngại này bao gồm:


Điểm lỗi duy nhất có thể làm gián đoạn hoạt động và dẫn đến thời gian chết.


Sau đây là một số ví dụ trong quá khứ:


  • Trong đợthardfork Ethereum Istanbul năm 2019 , nhiều nhà cung cấp RPC tập trung đã gặp phải tình trạng ngừng hoạt động. Một số thời gian ngừng hoạt động này là do mạng lưới đang trong quá trình nâng cấp. Ứng dụng DeFi không thể xử lý giao dịch, khiến người dùng rơi vào tình trạng bấp bênh.


  • Trong quá trình nâng cấp Polygon Heimdall , các nhà cung cấp dịch vụ RPC đã gặp phải sự cố kết nối và không được đồng bộ hóa với mạng blockchain. Người dùng không thể truy cập DeFi dApps trong nhiều giờ, do đó, các giao dịch bị trì hoãn hoặc không thành công.

Solana RPC quá tải vào năm 2021

Solana đã trải qua nhiều lần ngừng hoạt động vào năm 2021. Một trong những lần ngừng hoạt động khét tiếng là do quá tải các dịch vụ RPC tập trung trong thời gian cao điểm. Khi các nút công khai trở nên quá tải, người dùng không thể tương tác với Solana Blockchain trong nhiều giờ và mạng phải dừng toàn bộ dịch vụ trong nhiều giờ.


Những trường hợp vỗ trán này và vô số trường hợp khác cho thấy tầm quan trọng của nhà cung cấp RPC đối với tiện ích blockchain. Trong khi nhiều dApp vẫn sử dụng nhà cung cấp tập trung (có thể là do thiếu hiểu biết hoặc thiếu suy nghĩ), trong nhiều năm qua đã có những giải pháp thay thế.


Ở các phần tiếp theo, chúng tôi sẽ hướng dẫn bạn các giải pháp thay thế khác và lý do tại sao chúng là lựa chọn tuyệt vời cho sự phát triển của blockchain.

Phân cấp DApp của bạn: Các giải pháp thay thế hàng đầu cho các nút RPC tập trung

Các nút RPC tự lưu trữ

Như tên gọi của nó, các nút RPC tự lưu trữ là các nút bạn lưu trữ hoặc quản lý trên phần cứng hoặc cơ sở hạ tầng đám mây của riêng bạn. Thay vì dựa vào các nhà cung cấp RPC của bên thứ ba, bạn có thể lưu trữ các nút RPC của riêng mình. Bạn có quyền truy cập trực tiếp vào mạng blockchain, xác thực giao dịch, truy vấn dữ liệu blockchain trực tiếp và tương tác với các dApp.


Lợi ích của các nút RPC tự lưu trữ bao gồm:


  1. Tự chủ/Kiểm soát : chạy các nút của bạn có nghĩa là bạn có toàn quyền kiểm soát cấu hình của các nút. Bạn có thể tùy chỉnh phần mềm cho phù hợp với nhu cầu của mình, áp dụng các bản cập nhật theo ý muốn và quản lý bảo mật.


  1. Độ tin cậy : bạn không phải lo lắng về tình trạng gián đoạn dịch vụ hoặc lỗi do vấn đề nhà cung cấp, thường gặp ở các nút tập trung của bên thứ ba.


  1. Truy cập mạng trực tiếp : chạy các nút trên cơ sở hạ tầng của bạn có nghĩa là bạn chịu trách nhiệm về các dịch vụ của chúng, bạn có quyền truy cập vào mạng blockchain với độ trễ thấp.


Mặc dù các nút tự lưu trữ có vẻ đáng tin cậy hơn các giải pháp thay thế tập trung, nhưng chúng cũng có những nhược điểm. Và đây là những nhược điểm:


  1. Yêu cầu tài nguyên cao . Lưu trữ một nút RPC cần dung lượng đĩa đáng kể để lưu trữ lịch sử blockchain. Dung lượng lưu trữ, băng thông và sức mạnh xử lý cần thiết để chạy các nút RPC có thể rất lớn.


    Hơn nữa, bạn cần đồng bộ hóa liên tục với blockchain và điều này có thể tiêu tốn một lượng lớn băng thông, có thể gây quá tải. Công suất xử lý cần thiết cũng có thể quá tải, đặc biệt là khi xử lý thông tin trong các tình huống lưu lượng truy cập cao.


  2. Tốn kém để quản lý : thiết lập các nút tự lưu trữ có vẻ là lựa chọn tốt hơn, nhưng không phải vậy. Chi phí phần cứng, chi phí vận hành và chi phí cơ hội có thể rất lớn.


    Chi phí hoạt động như điện, băng thông internet và phí dịch vụ đám mây (nếu bạn sử dụng cơ sở hạ tầng đám mây) có thể rất lớn. Để chạy một nút thành công, bạn cần một nhóm chuyên gia tận tụy túc trực để khắc phục mọi sự cố hoặc bạn có nguy cơ mất điện trong nhiều giờ.


  1. Thiết lập và bảo trì phức tạp : Bạn cần hiểu rõ về công nghệ blockchain, quản lý máy chủ và các biện pháp bảo mật tốt nhất. Bảo trì thường xuyên để tránh sự cố như cập nhật phần mềm, bản vá bảo mật và nâng cấp phần cứng để các nút hoạt động bình thường.


  1. Khả năng mở rộng hạn chế và không hỗ trợ đa chuỗi : Không giống như các nhà cung cấp bên thứ ba có mô hình xử lý vấn đề này, để tương tác với nhiều chuỗi khối, bạn cần lưu trữ các nút cho mỗi chuỗi khối, điều này có thể tốn nhiều tài nguyên và không bền vững.


    Các nút tự lưu trữ cung cấp tính độc lập, khả năng kiểm soát tuyệt vời đối với tương tác blockchain và quyền riêng tư. Chúng đòi hỏi nhiều nguồn lực, chuyên môn về công nghệ và bảo trì, điều mà ngay cả nhóm phát triển blockchain mạnh nhất hiện có cũng không thể làm được.

Các nút RPC phi tập trung

RPC phi tập trung là máy chủ blockchain cho phép dApp giao tiếp với blockchain theo cách phi tập trung. Các nhà cung cấp RPC phi tập trung phân phối cơ sở hạ tầng của họ trên nhiều nút. Điều này làm giảm điểm lỗi đơn, tăng cường tính ổn định và khả năng mở rộng của mạng và giảm độ trễ.


sự phân cấp của một nút phân tán



Lợi ích của các nút RPC phi tập trung so với các nút khác bao gồm


  1. Mạng phân tán : mạng phân tán của các nhà cung cấp nút đang hoạt động để xử lý các yêu cầu, phản hồi các truy vấn và tương tác với blockchain.


  1. Hoạt động không cần tin cậy : Không tin cậy một nhà cung cấp duy nhất. Các yêu cầu được phân phối trên nhiều nhà cung cấp đảm bảo không có bên nào có quyền kiểm soát hoàn toàn đối với dữ liệu hoặc yêu cầu được thực hiện.


  1. Khả năng chống kiểm duyệt : Vì các nút RPC không nằm trong cùng một khu vực pháp lý, nên thực thể/cơ quan không thể dễ dàng kiểm duyệt, chặn hoặc hạn chế quyền truy cập vào blockchain. Nếu cơ sở hạ tầng RPC ngừng hoạt động do chính sách của một khu vực pháp lý, các yêu cầu của dApp có thể được định tuyến đến các nút RPC khác từ một khu vực pháp lý khác.


  1. Chịu lỗi : Mô hình phi tập trung của dịch vụ RPC giúp chúng chống lại sự cố. Nếu một nút bị sập, một nút khác sẽ thay thế dịch vụ. Điều này làm giảm thời gian chết và đảm bảo tính khả dụng nhất quán.


Những thách thức bao gồm:

  1. Độ trễ : Nếu không được thiết lập đúng cách, các dịch vụ RPC phi tập trung có thể gây ra độ trễ vì nó có thể được định tuyến qua nhiều nút. Sự phi tập trung của các nút RPC có thể dễ dàng trở nên dư thừa và do đó, dữ liệu có thể được định tuyến qua nhiều máy chủ làm tăng độ trễ.


  1. Bảo mật : vì các nút được quản lý bởi nhiều thực thể khác nhau nên mức độ bảo mật của các nút có thể không như nhau.


  1. Sự đồng thuận giữa các nút : đảm bảo dữ liệu nhất quán và đáng tin cậy có thể là một thách thức. Cần có cơ chế để phát hiện và giảm thiểu các nút độc hại/lỗi.


Ví dụ về các nút RPC phi tập trung bao gồm:


dRPC, mạng Pocket và Ankr

Thực hành tốt nhất để tránh rủi ro tập trung trong phát triển dApp

  1. Đa dạng hóa các nhà cung cấp nút

Với việc lựa chọn các nhà cung cấp nút RPC phi tập trung như dRPC, bạn có thể tránh được rủi ro tập trung hóa. Các nhà cung cấp RPC phi tập trung có các hệ thống tại chỗ để đảm bảo các nút hoạt động theo các tính năng cần thiết như bộ cân bằng tải, giám sát nhà cung cấp nút và các ưu đãi cho các tác nhân tốt.


Ví dụ, dRPC cung cấp cho bạn quyền truy cập vào bảng điều khiển để theo dõi sự đa dạng hóa của cơ sở hạ tầng nút của bạn. Mặc dù bạn không có quyền kiểm soát trực tiếp đối với các nút bạn sử dụng và mức độ phi tập trung của chúng, bảng điều khiển cho phép bạn xem mức độ phi tập trung của các nút.


chỉ số phân cấp trên bảng điều khiển dRPC


Nhìn vào hình ảnh trên cho thấy kết nối được phân cấp giữa bốn nhà cung cấp nút RPC khác nhau ( Besked, drpc-free, drpc-public-multiregion, p2p-validator-optimism-free ). Chỉ số phân cấp 0,563 cho thấy số lượng tích lũy của mức độ phân cấp với "một" là phân cấp nhất và "không" là tập trung nhất.


  1. Giám sát và quản lý tình trạng sức khỏe của nút

Các nhà phát triển phải có khả năng giám sát các nút RPC được dApp của họ sử dụng. Điều này đảm bảo độ tin cậy của dApp. Mặc dù bạn có thể không kiểm soát được cách các nhà cung cấp RPC quản lý hệ thống của họ, các nhà cung cấp RPC phi tập trung như dRPC có các hệ thống để giám sát các nhà cung cấp nút RPC.


Bảng điều khiển SaaS của dRPC cung cấp cho bạn quyền truy cập vào các phân tích toàn diện để theo dõi cách dApp của bạn tương tác với cơ sở hạ tầng. Ví dụ, trong bảng điều khiển dRPC, bạn có thể theo dõi tổng số yêu cầu được thực hiện bởi dApp của bạn trong những ngày đã chọn, theo dõi sự phân cấp của nút RPC và phân phối yêu cầu dựa trên khóa API. Bạn thậm chí có quyền truy cập để theo dõi nhật ký lỗi từ bảng điều khiển.


Ngoài bảng điều khiển phân tích dRPC, dRPC còn có cơ chế phụ trợ để giám sát các nhà cung cấp nút và ngăn chặn chúng hoạt động trái phép. Đọc thêm về các cơ chế phụ trợ này tại đây.

Phần kết luận

Các nút RPC đóng vai trò quan trọng trong việc tạo điều kiện thuận lợi cho việc giao tiếp giữa ứng dụng phi tập trung và blockchain. Tuy nhiên, việc tập trung hóa RPC gây ra rủi ro đáng kể cho dApp của bạn và mạng lưới blockchain nói chung. Như đã thấy trong các thất bại trước đây từ các nghiên cứu tình huống được thảo luận ở trên, việc dựa vào các nhà cung cấp RPC tập trung gây ra rủi ro về một điểm lỗi duy nhất và có thể dẫn đến gián đoạn dịch vụ quan trọng của các dịch vụ web3.


Các nhà phát triển không phải là không có giải pháp thay thế. Các RPC tự lưu trữ và phi tập trung cung cấp các giải pháp đáng tin cậy có thể giúp xây dựng các ứng dụng phục hồi. Bằng cách áp dụng các RPC phi tập trung như dRPC , các nhà phát triển có thể giảm thiểu rủi ro tập trung hóa và xây dựng các ứng dụng mạnh mẽ, phục hồi, chống kiểm duyệt và bảo mật.