Lỗi lưu trữ tạm thời dẫn đến tổn thất 300.000 USD cho dự án on-chain
Vào ngày 30 tháng 3 năm 2025, một dự án giao dịch đòn bẩy trên Ethereum đã bị tấn công, gây thiệt hại tài sản lên đến hơn 300.000 USD. Đội ngũ an ninh đã tiến hành phân tích sâu về sự kiện này, tiết lộ các chi tiết kỹ thuật của cuộc tấn công và nguyên nhân cơ bản.
Bối cảnh sự kiện
Cuộc tấn công nhắm vào một dự án giao dịch đòn bẩy có tên là SIR.trading. Kẻ tấn công đã khai thác thành công một lỗ hổng trong hợp đồng của dự án, từ đó chuyển giao trái phép một lượng lớn tài sản.
Phân tích nguyên nhân kỹ thuật
Vấn đề cốt lõi của cuộc tấn công này xuất phát từ tính năng lưu trữ tạm thời (transient storage) được giới thiệu trong phiên bản Solidity 0.8.24. Lưu trữ tạm thời là một vị trí lưu trữ dữ liệu mới, nhằm cung cấp một phương thức lưu trữ tạm thời hiệu quả về chi phí trong suốt giao dịch. Tuy nhiên, trong trường hợp này, việc sử dụng lưu trữ tạm thời không đúng cách đã dẫn đến những lỗ hổng bảo mật nghiêm trọng.
Nguyên nhân cơ bản của cuộc tấn công là giá trị được sử dụng tstore để lưu trữ tạm thời trong hợp đồng không được xóa đúng cách sau khi kết thúc cuộc gọi hàm. Điều này cho phép kẻ tấn công xây dựng các địa chỉ độc hại cụ thể, vượt qua kiểm tra quyền hạn, chuyển token trái phép.
Quá trình tấn công
Kẻ tấn công tạo ra hai token độc hại A và B, và tạo một bể thanh khoản cho hai token này trên một DEX nào đó.
Kẻ tấn công sử dụng hai token này để tạo ra một thị trường giao dịch đòn bẩy mới trong dự án mục tiêu.
Thông qua các giao dịch được thiết kế tỉ mỉ, kẻ tấn công đã để lại các giá trị cụ thể trong bộ nhớ tạm thời.
Kẻ tấn công tạo ra một hợp đồng độc hại có địa chỉ khớp với giá trị đã lưu trữ trước đó.
Sử dụng hợp đồng độc hại này, kẻ tấn công đã thành công trong việc vượt qua kiểm tra quyền hạn trong hợp đồng dự án.
Cuối cùng, kẻ tấn công đã thành công trong việc chuyển các token khác trong hợp đồng dự án (như WBTC, WETH) ra ngoài để thu lợi.
Phân tích dòng tiền
Theo phân tích dữ liệu on-chain, 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
Những tài sản bị đánh cắp này sau đó được đổi thành WETH, tổng cộng khoảng 193.1428 WETH, và đã được chuyển vào một giao thức giao dịch bảo mật nào đó.
Cần lưu ý rằng vốn ban đầu của kẻ tấn công (0.3 ETH) cũng đến từ cùng một giao thức bảo mật, điều này có thể gợi ý rằng kẻ tấn công đang cố gắng ẩn danh tính và nguồn gốc tài chính của mình.
Đề xuất an toàn
Để ngăn chặn các sự kiện tương tự xảy ra lần nữa, các chuyên gia an ninh khuyên rằng:
Khi sử dụng bộ nhớ tạm thời, nên ngay lập tức sử dụng tstore(key, 0) để xóa giá trị đã lưu trữ sau khi kết thúc cuộc gọi hàm.
Tăng cường kiểm toán và kiểm tra an ninh mã hợp đồng, đặc biệt cần thận trọng với các tính năng mới được giới thiệu.
Trong việc thực hiện kiểm tra quyền quan trọng, hãy tránh phụ thuộc quá nhiều vào cơ chế lưu trữ có thể bị thao túng.
Sự kiện lần này một lần nữa nhấn mạnh rằng khi áp dụng các tính năng công nghệ mới, phải xem xét đầy đủ các tác động an ninh tiềm ẩn của chúng. Đối với các dự án blockchain, việc kiểm toán an ninh và đánh giá rủi ro liên tục là cực kỳ quan trọng.
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.
Lỗ hổng lưu trữ tạm thời gây ra thiệt hại 300.000 USD cho dự án giao dịch ký quỹ. Kẻ tấn công đã chuyển WBTC và WETH.
Lỗi lưu trữ tạm thời dẫn đến tổn thất 300.000 USD cho dự án on-chain
Vào ngày 30 tháng 3 năm 2025, một dự án giao dịch đòn bẩy trên Ethereum đã bị tấn công, gây thiệt hại tài sản lên đến hơn 300.000 USD. Đội ngũ an ninh đã tiến hành phân tích sâu về sự kiện này, tiết lộ các chi tiết kỹ thuật của cuộc tấn công và nguyên nhân cơ bản.
Bối cảnh sự kiện
Cuộc tấn công nhắm vào một dự án giao dịch đòn bẩy có tên là SIR.trading. Kẻ tấn công đã khai thác thành công một lỗ hổng trong hợp đồng của dự án, từ đó chuyển giao trái phép một lượng lớn tài sản.
Phân tích nguyên nhân kỹ thuật
Vấn đề cốt lõi của cuộc tấn công này xuất phát từ tính năng lưu trữ tạm thời (transient storage) được giới thiệu trong phiên bản Solidity 0.8.24. Lưu trữ tạm thời là một vị trí lưu trữ dữ liệu mới, nhằm cung cấp một phương thức lưu trữ tạm thời hiệu quả về chi phí trong suốt giao dịch. Tuy nhiên, trong trường hợp này, việc sử dụng lưu trữ tạm thời không đúng cách đã dẫn đến những lỗ hổng bảo mật nghiêm trọng.
Nguyên nhân cơ bản của cuộc tấn công là giá trị được sử dụng tstore để lưu trữ tạm thời trong hợp đồng không được xóa đúng cách sau khi kết thúc cuộc gọi hàm. Điều này cho phép kẻ tấn công xây dựng các địa chỉ độc hại cụ thể, vượt qua kiểm tra quyền hạn, chuyển token trái phép.
Quá trình tấn công
Phân tích dòng tiền
Theo phân tích dữ liệu on-chain, kẻ tấn công đã đánh cắp khoảng 300.000 đô la tài sản, bao gồm:
Những tài sản bị đánh cắp này sau đó được đổi thành WETH, tổng cộng khoảng 193.1428 WETH, và đã được chuyển vào một giao thức giao dịch bảo mật nào đó.
Cần lưu ý rằng vốn ban đầu của kẻ tấn công (0.3 ETH) cũng đến từ cùng một giao thức bảo mật, điều này có thể gợi ý rằng kẻ tấn công đang cố gắng ẩn danh tính và nguồn gốc tài chính của mình.
Đề xuất an toàn
Để ngăn chặn các sự kiện tương tự xảy ra lần nữa, các chuyên gia an ninh khuyên rằng:
Sự kiện lần này một lần nữa nhấn mạnh rằng khi áp dụng các tính năng công nghệ mới, phải xem xét đầy đủ các tác động an ninh tiềm ẩn của chúng. Đối với các dự án blockchain, việc kiểm toán an ninh và đánh giá rủi ro liên tục là cực kỳ quan trọng.