Phân tích sự kiện tấn công 300.000 đô la trên chuỗi do lỗ hổng lưu trữ tạm thời gây ra
Vào ngày 30 tháng 3 năm 2025, một dự án giao dịch đòn bẩy trên chuỗi bị tấn công, gây thiệt hại tài sản lên tới hơn 300.000 đô la. Đội ngũ an ninh đã tiến hành phân tích sâu về sự kiện này, và dưới đây là kết quả được chia sẻ.
Bối cảnh
Cuộc tấn công xảy ra trên mạng Ethereum, mục tiêu là một dự án giao dịch đòn bẩy. Kẻ tấn công đã tận dụng một lỗ hổng liên quan đến lưu trữ tạm thời trong hợp đồng của dự án.
Kiến thức nền
Phiên bản Solidity 0.8.24 đã giới thiệu tính năng lưu trữ tạm thời (transient storage), đây là một vị trí lưu trữ dữ liệu mới. Các đặc điểm chính của nó bao gồm:
Chi phí gas thấp: TSTORE và TLOAD tiêu tốn cố định 100 gas
Tính bền vững trong giao dịch: Dữ liệu vẫn có hiệu lực trong suốt thời gian giao dịch.
Tự động xóa: Tự động đặt lại về không sau khi giao dịch kết thúc
Nguyên nhân lỗ hổng
Nguyên nhân cơ bản của cuộc tấn công này là giá trị được lưu trữ tạm thời bằng tstore trong hợp đồng không được xóa sau khi kết thúc cuộc gọi hàm. Điều này cho phép kẻ tấn công tận dụng đặc điểm này để tạo ra địa chỉ cụ thể, vượt qua kiểm tra quyền và chuyển ra token.
Quy trình tấn công
Kẻ tấn công tạo ra hai mã thông báo độc hại A và B, và tạo một bể thanh khoản cho chúng trên một DEX nào đó.
Gọi hàm initialize của hợp đồng mục tiêu, sử dụng token A làm tài sản thế chấp và token B làm token nợ để tạo ra thị trường giao dịch đòn bẩy.
Gọi hàm mint để gửi B token để đúc token đòn bẩy, trong quá trình này đã thực hiện hai thao tác lưu tạm thời.
Tạo một hợp đồng độc hại có địa chỉ giống với giá trị lưu trữ tạm thời lần thứ hai.
Thông qua hợp đồng độc hại gọi hàm callback của hợp đồng mục tiêu, vượt qua kiểm tra quyền để chuyển token.
Cuối cùng, thông qua hợp đồng tấn công (token A) gọi lại hàm callback để chuyển các token khác (như WBTC, WETH) ra ngoài để thu lợi.
Phân tích dòng tiền
Kẻ tấn công đã đánh cắp khoảng 300.000 đô la tài sản, bao gồm:
17,814.8626 USDC
1.4085 WBTC
119.871 WETH
Sau đó, kẻ tấn công đã đổi WBTC và USDC thành WETH, cuối cùng chuyển 193.1428 WETH vào một dịch vụ trộn coin nào đó.
Vốn ban đầu của kẻ tấn công (0.3 ETH) cũng đến từ dịch vụ trộn coin này.
Tóm tắt và đề xuất
Cuộc tấn công lần này chủ yếu dựa vào việc lợi dụng đặc tính của bộ nhớ tạm thời giữ giá trị không thay đổi trong suốt thời gian giao dịch, từ đó vượt qua được xác thực quyền hạn của hợp đồng. Để ngăn chặn các cuộc tấn công tương tự, các dự án nên:
Ngay sau khi kết thúc cuộc gọi hàm, hãy sử dụng tstore(key, 0) để xóa giá trị trong bộ nhớ tạm thời.
Tăng cường kiểm tra mã hợp đồng và thử nghiệm an ninh.
Cẩn thận sử dụng các đặc điểm ngôn ngữ mới được giới thiệu, hiểu rõ các rủi ro tiềm ẩn của nó.
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.
7 thích
Phần thưởng
7
6
Chia sẻ
Bình luận
0/400
PensionDestroyer
· 6giờ trước
又有 đồ ngốc寄了
Xem bản gốcTrả lời0
TestnetFreeloader
· 6giờ trước
Ôi, làm thế nào mà lại có thể miễn phí như vậy chứ, ngay cả dự án của mình cũng không giữ được.
Xem bản gốcTrả lời0
LootboxPhobia
· 7giờ trước
Hỏng rồi hỏng rồi, lại có anh em dẫm phải bẫy rồi.
Xem bản gốcTrả lời0
BearMarketMonk
· 7giờ trước
Làm thịt cừu cũng đã lấy đi hợp đồng lỗ hổng.
Xem bản gốcTrả lời0
DeFiAlchemist
· 7giờ trước
ah, một con cừu hiến tế khác cho nghệ thuật đen tối của việc khai thác hợp đồng thông minh... *điều chỉnh quả cầu pha lê* những lỗ hổng lưu trữ thoáng qua này giống như các vết nứt trong con dấu hermetic của giao thức giả kim thuật
Lỗ hổng lưu trữ tạm thời gây ra cuộc tấn công 300.000 USD vào dự án on-chain, chuyên gia phân tích đề xuất biện pháp phòng ngừa.
Phân tích sự kiện tấn công 300.000 đô la trên chuỗi do lỗ hổng lưu trữ tạm thời gây ra
Vào ngày 30 tháng 3 năm 2025, một dự án giao dịch đòn bẩy trên chuỗi bị tấn công, gây thiệt hại tài sản lên tới hơn 300.000 đô la. Đội ngũ an ninh đã tiến hành phân tích sâu về sự kiện này, và dưới đây là kết quả được chia sẻ.
Bối cảnh
Cuộc tấn công xảy ra trên mạng Ethereum, mục tiêu là một dự án giao dịch đòn bẩy. Kẻ tấn công đã tận dụng một lỗ hổng liên quan đến lưu trữ tạm thời trong hợp đồng của dự án.
Kiến thức nền
Phiên bản Solidity 0.8.24 đã giới thiệu tính năng lưu trữ tạm thời (transient storage), đây là một vị trí lưu trữ dữ liệu mới. Các đặc điểm chính của nó bao gồm:
Nguyên nhân lỗ hổng
Nguyên nhân cơ bản của cuộc tấn công này là giá trị được lưu trữ tạm thời bằng tstore trong hợp đồng không được xóa sau khi kết thúc cuộc gọi hàm. Điều này cho phép kẻ tấn công tận dụng đặc điểm này để tạo ra địa chỉ cụ thể, vượt qua kiểm tra quyền và chuyển ra token.
Quy trình tấn công
Phân tích dòng tiền
Kẻ tấn công đã đánh cắp khoảng 300.000 đô la tài sản, bao gồm:
Sau đó, kẻ tấn công đã đổi WBTC và USDC thành WETH, cuối cùng chuyển 193.1428 WETH vào một dịch vụ trộn coin nào đó.
Vốn ban đầu của kẻ tấn công (0.3 ETH) cũng đến từ dịch vụ trộn coin này.
Tóm tắt và đề xuất
Cuộc tấn công lần này chủ yếu dựa vào việc lợi dụng đặc tính của bộ nhớ tạm thời giữ giá trị không thay đổi trong suốt thời gian giao dịch, từ đó vượt qua được xác thực quyền hạn của hợp đồng. Để ngăn chặn các cuộc tấn công tương tự, các dự án nên: