Giải thích về các cuộc tấn công Reentrancy trong hợp đồng thông minh

Lỗ hổng tiềm ẩn trong hợp đồng thông minh

Là một nhà nghiên cứu đang nghiên cứu thế giới đổi mới của hợp đồng thông minh, tôi không thể không nhấn mạnh hết tiềm năng mang tính cách mạng của chúng. Tuy nhiên, điều quan trọng là phải thừa nhận rằng những thỏa thuận tự thực hiện này không thể tránh khỏi sự thao túng của những kẻ bất chính.

Xác minh đầu vào không hiệu quả là một vấn đề phổ biến cho phép kẻ tấn công tác động đến việc thực hiện hợp đồng thông qua các đầu vào không lường trước được. Ngoài ra, việc áp dụng logic nghiệp vụ không chính xác có thể dẫn đến các lỗ hổng bằng cách tạo ra các kết quả không mong muốn hoặc các lỗ hổng logic trong hợp đồng. Cuối cùng, các cuộc gọi bên ngoài bị xử lý sai, bao gồm cả những cuộc gọi được liên kết với nguồn dữ liệu bên ngoài hoặc các hợp đồng khác, có thể gây ra rủi ro tiềm ẩn.

Các cuộc tấn công Reentrancy thể hiện một lỗ hổng trong hợp đồng thông minh trong đó hợp đồng thực hiện lệnh gọi bên ngoài tới hợp đồng khác trước khi hoàn tất quá trình chuyển đổi trạng thái của chính nó. Điều này tạo cơ hội cho hợp đồng được gọi can thiệp vào người gọi ban đầu và có khả năng thực hiện một số thao tác nhiều lần. Hậu quả có thể là những hành động ngoài ý muốn hoặc thậm chí cho phép kẻ tấn công thao túng trạng thái của hợp đồng, dẫn đến cạn kiệt quỹ hoặc các tác động bất lợi khác.

Các nhà phát triển cần cảnh giác khi giao dịch với các hợp đồng hoặc nguồn dữ liệu bên ngoài do có thể tiềm ẩn những rủi ro. Để ngăn chặn những hành động không mong muốn và lỗ hổng bảo mật, họ nên quản lý cẩn thận các cuộc gọi bên ngoài. Chú ý tỉ mỉ đến các biện pháp bảo mật hợp đồng thông minh như kiểm tra kỹ lưỡng là điều cần thiết để bảo vệ hợp đồng khỏi các mối đe dọa mới nổi.

Các cuộc tấn công reentrancy trong hợp đồng thông minh là gì?

“Các cuộc tấn công Reentry xảy ra trong các hợp đồng thông minh khi hợp đồng thực hiện các lệnh gọi bên ngoài tới các hợp đồng hoặc chức năng khác trước khi hoàn thành các sửa đổi trạng thái của chính nó.”

Lệnh gọi của hợp đồng A tới hợp đồng B cho phép hợp đồng B tiếp tục tương tác với hợp đồng A, có khả năng lặp lại một số chức năng nhất định và dẫn đến kết quả không mong muốn và thường có hại. Một ví dụ là khi hợp đồng A bắt đầu giao dịch với hợp đồng B để chuyển tiền, nhưng sau đó thay đổi trạng thái của chính nó trong quá trình tương tác.

Chức năng gọi lại trong mã của Hợp đồng B có thể cung cấp cho kẻ tấn công khả năng can thiệp vào quá trình chuyển đổi trạng thái của Hợp đồng A bằng cách liên tục kích hoạt chức năng chuyển giao trước khi nó hoàn thành đầy đủ. Hành động độc hại này có thể khiến kẻ tấn công rút tiền thành công từ Hợp đồng A nhiều lần trong một giao dịch.

Vào năm 2016, đã xảy ra một sự cố khét tiếng liên quan đến Tổ chức tự trị phi tập trung (DAO) trên chuỗi khối Ethereum. Một hacker đã khai thác một lỗ hổng trong mã hợp đồng thông minh được gọi là tấn công reentrancy, cho phép chúng liên tục rút tiền từ DAO. Kết quả là mất số Ether (ETH) trị giá hàng triệu đô la.

Giải thích về các cuộc tấn công Reentrancy trong hợp đồng thông minh

Ngoài ra, nhiều nền tảng tài chính phi tập trung (DeFi) khác nhau như Uniswap, Lendf.Me, BurgerSwap, SURGEBNB, Cream Finance và Siren Protocol đã trải qua những thất bại tài chính đáng kể do các cuộc tấn công tái tổ chức. Thiệt hại do những cuộc xâm nhập này gây ra dao động từ 3,5 triệu USD đến 25 triệu USD, nhấn mạnh nguy cơ liên tục xuất hiện các điểm yếu trong khả năng tái gia nhập trong lĩnh vực DeFi.

Cách thức hoạt động của các cuộc tấn công reentrancy

Các cuộc tấn công Reentrancy khai thác sự tương tác giữa các lệnh gọi chức năng liên tiếp trong hợp đồng thông minh và các giao dịch bên ngoài. Bằng cách thao túng các trình tự này, kẻ tấn công có thể liên tục kích hoạt một số chức năng nhất định trước khi chúng hoàn thành, dẫn đến các hành động không mong muốn như chuyển tiền không chính đáng.

Trước khi hợp đồng được nhắm mục tiêu hoàn tất việc xử lý các thay đổi của nó, một hợp đồng xâm nhập sẽ tìm cách đánh lừa hợp đồng trước đó thực hiện các lệnh gọi trở lại chính nó. Những hành động như vậy có thể dẫn đến việc rút tiền nhiều lần hoặc hành vi bất cẩn.

Giải thích về các cuộc tấn công Reentrancy trong hợp đồng thông minh

Kẻ tấn công bắt đầu giao dịch bằng cách kích hoạt chức năng “rút tiền” trong hợp đồng mục tiêu, chức năng này sẽ gửi Ether trước khi cập nhật số dư. Đồng thời, hợp đồng của kẻ tấn công bao gồm một chức năng dự phòng gọi lại chức năng “rút tiền” theo cách đệ quy, rút ​​thêm tiền từ hợp đồng nạn nhân trước khi số dư được cập nhật, lợi dụng sự giám sát của hợp đồng nạn nhân trong việc cập nhật số dư trước khi gửi tiền.

Hãy phân tích cách hoạt động của các cuộc tấn công reentrancy bằng một ví dụ đơn giản:

Hợp đồng thông minh có chức năng “rút tiền”

Hợp đồng thông minh ví kỹ thuật số tồn tại, quản lý số dư của người dùng và có chức năng rút tiền để xử lý việc rút tiền. Người dùng có thể sử dụng chức năng này để chuyển token hoặc Ether từ hợp đồng thông minh vào ví cá nhân của họ.

Tương tác người dùng và thực hiện chức năng

Người dùng bắt đầu rút tiền từ ví kỹ thuật số của họ một cách độc lập. Bằng cách sử dụng chức năng rút tiền, họ nhập số tiền được chỉ định mà họ muốn rút.

Với tư cách là một nhà nghiên cứu đang nghiên cứu chức năng của các giao dịch tài chính, tôi có thể giải thích rằng khi chức năng “rút tiền” được kích hoạt, nó sẽ kiểm tra xem người dùng có đủ tiền cho việc rút tiền được đề xuất hay không. Nếu điều kiện này được đáp ứng, số tiền cần thiết sẽ được chuyển đến địa chỉ được chỉ định của người dùng.

Cuộc gọi bên ngoài

Trong giai đoạn này, lỗ hổng của hợp đồng trở nên rõ ràng. Cuộc gọi bên ngoài đến hợp đồng hoặc tài khoản khác xảy ra trước khi số tiền rút được trừ vào số dư của người dùng.

Cuộc gọi đệ quy

Nếu mã của hợp đồng bên ngoài chứa hàm cho phép nó gọi hợp đồng ban đầu một lần nữa, chẳng hạn như hàm “rút tiền” được xác định lại, thì thiết lập này sẽ dẫn đến một vòng lặp đệ quy. Do đó, phương thức “rút tiền” có thể được kích hoạt nhiều lần trước khi hoàn thành.

Khai thác trở lại

Là một nhà nghiên cứu nghiên cứu về hợp đồng thông minh, tôi đã gặp một lỗ hổng tiềm ẩn trong một số hoạt động triển khai ví. Kẻ thù có thể khai thác điều này bằng cách tạo một hợp đồng độc hại và lợi dụng vòng lặp trong chức năng của ví. Đây là cách nó có thể diễn ra:

Chức năng dự phòng

Trong các tình huống cụ thể, kẻ tấn công có thể khai thác chức năng dự phòng của hợp đồng thông minh – một tính năng riêng biệt được kích hoạt khi hợp đồng được gọi mà không có bất kỳ dữ liệu hoặc Ethereum nào – nhằm mục đích xấu. Bằng cách liên tục kích hoạt chức năng này trong quá trình xử lý tiền, các cuộc tấn công reentrancy có thể được thực hiện.

Thao túng nhà nước và rút tiền nhiều lần

Kẻ tấn công có thể liên tục sử dụng chức năng “rút tiền” nhiều lần trong một giao dịch vì hợp đồng ví được nhắm mục tiêu không cập nhật số dư tài khoản cho đến khi xử lý các lệnh gọi bên ngoài. Do đó, lỗ hổng này cho phép rút tiền trái phép, cho phép kẻ tấn công đánh cắp số tiền dư thừa và gây tổn thất tài chính đáng kể cho người dùng hợp đồng ví.

Hậu quả của các cuộc tấn công reentrancy

Người dùng hợp đồng thông minh phải đối mặt với rủi ro đáng kể từ các cuộc tấn công quay trở lại do có khả năng bị tổn thất tiền tệ đáng kể.

Các cuộc tấn công Reentrancy có thể dẫn đến kết quả giao dịch trái phép, chẳng hạn như rút tiền mặt không chính đáng hoặc thao túng tiền, trong các hợp đồng thông minh dễ bị tấn công. Những kẻ xấu khai thác điểm yếu này bằng cách liên tục truy cập và rút cạn tài nguyên của hợp đồng, dẫn đến tổn hại tài chính đáng kể cho những người dùng đã gửi hoặc nắm giữ tài sản trong hợp đồng bị xâm phạm.

Niềm tin vào sự an toàn và độ tin cậy của hợp đồng thông minh và công nghệ chuỗi khối có thể bị suy yếu bởi các cuộc tấn công tái xuất hiện. Những điểm yếu này có thể dẫn đến thiệt hại đáng kể, thể hiện qua các sự cố đáng chú ý như vụ vi phạm DAO năm 2016 trên mạng Ethereum, dẫn đến tổn thất tài chính đáng kể và tổn hại danh tiếng cho cộng đồng.

Là một nhà nghiên cứu đang nghiên cứu tác động của các cuộc tấn công reentrancy trên các nền tảng và dự án blockchain, tôi đã phát hiện ra rằng những cuộc tấn công này có thể gây ra những hậu quả sâu rộng ngoài những tác động tài chính ngắn hạn. Ví dụ, sự giám sát pháp lý và quy định có thể xảy ra sau đó, làm xói mòn niềm tin của nhà đầu tư và có khả năng gây tổn hại đến danh tiếng của hệ sinh thái blockchain bị ảnh hưởng. Nhận thức về lỗ hổng này có thể khiến người dùng thận trọng khi tham gia hợp đồng thông minh hoặc đầu tư vào các ứng dụng phi tập trung (DApps), cuối cùng làm chậm việc áp dụng và mở rộng toàn bộ công nghệ blockchain.

Làm thế nào để giảm thiểu các cuộc tấn công reentrancy

Với tư cách là một nhà phân tích hợp đồng, tôi thực sự khuyên bạn nên tuân thủ các quy trình tối ưu khi xây dựng và kiểm tra các hợp đồng thông minh để giảm thiểu rủi ro liên quan đến các cuộc tấn công lại.

Một cách tiếp cận là sử dụng các thư viện mã hóa đã được thiết lập có uy tín cao về bảo mật. Lý do là, các thư viện này đã được cộng đồng nhà phát triển đưa vào kiểm tra và giám sát nghiêm ngặt, giảm thiểu rủi ro tạo ra điểm yếu hoặc lỗ hổng trong mã của bạn.

Các nhà phát triển nên sử dụng thêm các biện pháp bảo mật như thiết kế “kiểm tra-hiệu ứng-tương tác”, giúp giảm nguy cơ tấn công vào lại bằng cách đảm bảo rằng các điều chỉnh trạng thái diễn ra dưới dạng một đơn vị duy nhất, không thể chia cắt. Để phòng ngừa thêm những điểm yếu này, các nhà phát triển có thể sử dụng các khung phát triển hợp đồng thông minh an toàn cho việc tái đăng ký nếu chúng tồn tại.

Nói một cách đơn giản hơn, việc sử dụng các khung bảo mật giúp giảm nhu cầu các nhà phát triển thực hiện các biện pháp bảo vệ theo cách thủ công chống lại các cuộc tấn công tái xuất hiện do các tính năng bảo mật vốn có của các khung này. Tuy nhiên, điều quan trọng đối với các nhà phát triển là phải luôn cập nhật thông tin về các mối đe dọa và lỗ hổng blockchain đang phát triển.

2024-05-16 15:45