Phân tích sự kiện tấn công tái nhập của OrionProtocol
Vào chiều ngày 2 tháng 2 năm 2023, OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công tái nhập do lỗ hổng hợp đồng, tổng thiệt hại khoảng 2,9 triệu đô la Mỹ, bao gồm 2.844.766 USDT trên Ethereum và 191.606 BUSD trên Binance Smart Chain.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên triển khai một hợp đồng Token tùy chỉnh, và thực hiện các thao tác chuyển nhượng và ủy quyền liên quan, chuẩn bị cho cuộc tấn công tiếp theo. Sau đó, kẻ tấn công thực hiện vay mượn qua hàm swap của Uniswap V2, và gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện việc trao đổi token.
Cài đặt đường trao đổi là [USDC, Token tấn công, USDT], trong đó Token tấn công được sử dụng để thực hiện thao tác gọi lại. Trong quá trình trao đổi, do hợp đồng Token tấn công chứa logic gọi lại, dẫn đến việc trong phương thức ExchangeWithAtomic.swapThroughOrionPool được thực thi, thông qua Token.Transfer tiếp tục gọi lại hàm ExchangeWithAtomic.depositAsset, từ đó thực hiện cuộc tấn công tái nhập. Điều này khiến số tiền gửi bị cộng dồn nhiều lần, cuối cùng kẻ tấn công hoàn thành việc kiếm lời thông qua thao tác rút tiền.
Dòng tiền
Nguồn vốn ban đầu của kẻ tấn công đến từ ví nóng của một nền tảng giao dịch lớn. Trong số 1,651 ETH kiếm được từ cuộc tấn công, 657.5 ETH vẫn còn trong địa chỉ ví của kẻ tấn công, phần còn lại đã được chuyển qua dịch vụ trộn coin.
Phân tích lỗ hổng
Vấn đề cốt lõi của lỗ hổng xuất hiện trong hàm doSwapThroughOrionPool. Hàm này gọi hàm _doSwapTokens, sau khi thực hiện thao tác chuyển khoản sẽ cập nhật biến curBalance. Kẻ tấn công đã tận dụng logic callback được thêm vào hàm transfer của Token tùy chỉnh, trong quá trình chuyển khoản lại gọi hàm depositAsset, dẫn đến biến curBalance bị cập nhật sai. Điều này cho phép kẻ tấn công rút thêm tiền thông qua hàm withdraw sau khi hoàn trả khoản vay chớp nhoáng.
Đề xuất về an toàn
Để ngăn chặn các cuộc tấn công tương tự, nhóm dự án nên chú ý đến những điểm sau:
Khi triển khai chức năng đổi token, cần xem xét các loại token khác nhau và các nguy cơ an ninh có thể phát sinh từ các con đường đổi khác nhau.
Tuân theo mô hình mã hóa "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions) một cách nghiêm ngặt, tức là trước tiên thực hiện kiểm tra trạng thái, sau đó cập nhật trạng thái hợp đồng, cuối cùng mới tương tác với hợp đồng bên ngoài.
Thực hiện cơ chế bảo mật như khóa tái nhập, ngăn chặn sự xảy ra của các cuộc tấn công tái nhập.
Đối với các chức năng quan trọng liên quan đến thao tác tài chính, cần thực hiện kiểm toán và thử nghiệm an toàn toàn diện.
Cân nhắc việc giới thiệu các biện pháp bảo mật bổ sung như rút tiền trễ hoặc ký nhiều chữ ký để tăng độ khó cho các cuộc tấn công.
Bằng cách thực hiện những biện pháp này, có thể giảm đáng kể nguy cơ hợp đồng thông minh bị tấn công và nâng cao tính an toàn tổng thể của dự án. Trong hệ sinh thái Web3, an toàn luôn nên là yếu tố được ưu tiên hàng đầu.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
8 thích
Phần thưởng
8
5
Chia sẻ
Bình luận
0/400
EntryPositionAnalyst
· 15giờ trước
Một nhóm lại bất cẩn, chịu thiệt để rút kinh nghiệm.
Xem bản gốcTrả lời0
BearMarketSurvivor
· 15giờ trước
Chiến trường chính lại bị tấn công, thiệt hại 290w
Xem bản gốcTrả lời0
PaperHandSister
· 15giờ trước
Lại là Rekt Tại sao lại cứ chú ý vào lỗ hổng hợp đồng vậy?
OrionProtocol bị tấn công tái nhập, thiệt hại 2,9 triệu đô la tài sản.
Phân tích sự kiện tấn công tái nhập của OrionProtocol
Vào chiều ngày 2 tháng 2 năm 2023, OrionProtocol trên Ethereum và Binance Smart Chain đã bị tấn công tái nhập do lỗ hổng hợp đồng, tổng thiệt hại khoảng 2,9 triệu đô la Mỹ, bao gồm 2.844.766 USDT trên Ethereum và 191.606 BUSD trên Binance Smart Chain.
Phân tích quá trình tấn công
Kẻ tấn công trước tiên triển khai một hợp đồng Token tùy chỉnh, và thực hiện các thao tác chuyển nhượng và ủy quyền liên quan, chuẩn bị cho cuộc tấn công tiếp theo. Sau đó, kẻ tấn công thực hiện vay mượn qua hàm swap của Uniswap V2, và gọi phương thức ExchangeWithAtomic.swapThroughOrionPool của OrionProtocol để thực hiện việc trao đổi token.
Cài đặt đường trao đổi là [USDC, Token tấn công, USDT], trong đó Token tấn công được sử dụng để thực hiện thao tác gọi lại. Trong quá trình trao đổi, do hợp đồng Token tấn công chứa logic gọi lại, dẫn đến việc trong phương thức ExchangeWithAtomic.swapThroughOrionPool được thực thi, thông qua Token.Transfer tiếp tục gọi lại hàm ExchangeWithAtomic.depositAsset, từ đó thực hiện cuộc tấn công tái nhập. Điều này khiến số tiền gửi bị cộng dồn nhiều lần, cuối cùng kẻ tấn công hoàn thành việc kiếm lời thông qua thao tác rút tiền.
Dòng tiền
Nguồn vốn ban đầu của kẻ tấn công đến từ ví nóng của một nền tảng giao dịch lớn. Trong số 1,651 ETH kiếm được từ cuộc tấn công, 657.5 ETH vẫn còn trong địa chỉ ví của kẻ tấn công, phần còn lại đã được chuyển qua dịch vụ trộn coin.
Phân tích lỗ hổng
Vấn đề cốt lõi của lỗ hổng xuất hiện trong hàm doSwapThroughOrionPool. Hàm này gọi hàm _doSwapTokens, sau khi thực hiện thao tác chuyển khoản sẽ cập nhật biến curBalance. Kẻ tấn công đã tận dụng logic callback được thêm vào hàm transfer của Token tùy chỉnh, trong quá trình chuyển khoản lại gọi hàm depositAsset, dẫn đến biến curBalance bị cập nhật sai. Điều này cho phép kẻ tấn công rút thêm tiền thông qua hàm withdraw sau khi hoàn trả khoản vay chớp nhoáng.
Đề xuất về an toàn
Để ngăn chặn các cuộc tấn công tương tự, nhóm dự án nên chú ý đến những điểm sau:
Khi triển khai chức năng đổi token, cần xem xét các loại token khác nhau và các nguy cơ an ninh có thể phát sinh từ các con đường đổi khác nhau.
Tuân theo mô hình mã hóa "Kiểm tra - Hiệu lực - Tương tác" (Checks-Effects-Interactions) một cách nghiêm ngặt, tức là trước tiên thực hiện kiểm tra trạng thái, sau đó cập nhật trạng thái hợp đồng, cuối cùng mới tương tác với hợp đồng bên ngoài.
Thực hiện cơ chế bảo mật như khóa tái nhập, ngăn chặn sự xảy ra của các cuộc tấn công tái nhập.
Đối với các chức năng quan trọng liên quan đến thao tác tài chính, cần thực hiện kiểm toán và thử nghiệm an toàn toàn diện.
Cân nhắc việc giới thiệu các biện pháp bảo mật bổ sung như rút tiền trễ hoặc ký nhiều chữ ký để tăng độ khó cho các cuộc tấn công.
Bằng cách thực hiện những biện pháp này, có thể giảm đáng kể nguy cơ hợp đồng thông minh bị tấn công và nâng cao tính an toàn tổng thể của dự án. Trong hệ sinh thái Web3, an toàn luôn nên là yếu tố được ưu tiên hàng đầu.