Lỗ hổng lưu trữ tạm thời gây thiệt hại 300.000 USD cho dự án giao dịch ký quỹ Ethereum

Lỗ hổng lưu trữ tạm thời dẫn đến việc đánh cắp tài sản trị giá 300.000 đô la

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 Ethereum đã bị tấn công, gây thiệt hại hơn 300.000 đô la tài sản. Đội ngũ an ninh đã thực hiện phân tích sâu về sự kiện này, và hiện tại chia sẻ kết quả như sau:

Bối cảnh

Phiên bản Solidity 0.8.24 đã giới thiệu tính năng lưu trữ tạm thời dựa trên EIP-1153. Đây là một vị trí lưu trữ dữ liệu mới, nhằm cung cấp cho các nhà phát triển một phương pháp lưu trữ tạm thời hiệu quả về chi phí và có hiệu lực trong suốt giao dịch. Lưu trữ tạm thời được thực hiện thông qua hai lệnh mới TSTORE và TLOAD trong EVM, với đặc điểm chi phí gas thấp, tính bền vững trong giao dịch và tự động xóa.

Di sản chết người: Một vụ cướp 300.000 đô la trên chuỗi do lưu trữ tạm thời gây ra

Nguyên nhân tấn công

Nguyên nhân cơ bản của sự kiện này là giá trị được sử dụng trong hàm tstore để lưu trữ tạm thời không được xóa sau khi kết thúc cuộc gọi hàm. Kẻ tấn công đã lợi dụng đặc điểm này để tạo ra các địa chỉ độc hại cụ thể, vượt qua kiểm tra quyền và chuyển tiền.

Di sản chết người: Một vụ cướp 300.000 đô la trên chuỗi do lưu trữ tạm thời gây ra

Các bước tấn công

  1. Kẻ tấn công tạo ra hai token độc hại A và B, và tạo pool cho hai token này trên một DEX và tiêm thanh khoản.

  2. Kẻ tấn công gọi hàm initialize của hợp đồng Vault, 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.

  3. Kẻ tấn công gọi hàm mint của hợp đồng Vault, gửi vào mã nợ B để đúc mã đòn bẩy. Trong quá trình này, địa chỉ pool DEX và số lượng đúc được lưu trữ tạm thời.

  4. Kẻ tấn công tạo ra 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.

  5. Kẻ tấn công gọi hàm callback của hợp đồng Vault thông qua hợp đồng độc hại để chuyển token. Do giá trị trong bộ nhớ tạm thời không được xóa, dẫn đến việc kiểm tra danh tính bị vượt qua sai.

  6. Cuối cùng, kẻ tấn công gọi hàm callback của hợp đồng Vault thông qua việc tấn công hợp đồng (token A), rút các token khác (như WBTC, WETH) để thu lợi.

Di sản chết người: Một vụ cướp trên chuỗi trị giá 300.000 đô la do bộ nhớ tạm thời gây ra

Di sản chết người: Một vụ cướp trên chuỗi trị giá 300.000 USD do lưu trữ tạm thời gây ra

Di sản chết người: Một vụ cướp trên chuỗi trị giá 300.000 đô la do lưu trữ tạm thời gây ra

Di sản chết người: Một vụ cướp 300.000 đô la trên chuỗi do lưu trữ tạm thời gây ra

Di chứng chết người: Một vụ cướp trên chuỗi trị giá 300.000 USD do lưu trữ tạm thời gây ra

Di sản chết người: Một cuộc cướp trên chuỗi trị giá 300.000 đô la do lưu trữ tạm thời gây ra

Di sản chết người: Một vụ cướp trên chuỗi trị giá 300.000 đô la do bộ nhớ tạm thời gây ra

Di sản chết người: Một vụ cướp trên chuỗi trị giá 300.000 USD do bộ nhớ tạm thời gây ra

Di sản chết người: Một vụ cướp 300.000 đô la trên chuỗi do lưu trữ tạm thời gây ra

Di sản chết người: Một vụ cướp 300.000 đô la trên chuỗi do lưu trữ tạm thời gây ra

Di chứng chết người: Một vụ cướp 300.000 đô la trên chuỗi do bộ nhớ tạm thời gây ra

Di sản chết người: Một vụ cướp 300.000 đô la trên chuỗi do lưu trữ tạm thời gây ra

Di sản chết người: Một vụ cướp trên chuỗi trị giá 300.000 đô la do lưu trữ tạm thời gây ra

Tàn dư chết người: Một vụ cướp 300.000 đô la trên chuỗi do bộ nhớ tạm thời gây ra

Di sản chết người: Một vụ cướp trên chuỗi trị giá 300.000 đô la do lưu trữ tạm thời gây ra

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 và 119,871 WETH. WBTC đã được đổi thành 63,5596 WETH, USDC đã được đổi thành 9,7122 WETH. Sau đó, tổng cộng 193,1428 WETH đã được chuyển vào một nền tảng ẩn danh nào đó. Nguồn vốn ban đầu của kẻ tấn công đến từ 0,3 ETH được chuyển vào từ nền tảng đó.

Tóm tắt

Cuộc tấn công lần này tập trung vào việc kẻ tấn công lợi dụng đặc tính của bộ nhớ tạm thời giữ nguyên trong suốt quá trình giao dịch, đã vượt qua xác thực quyền truy cập của hàm gọi lại. Đề nghị các bên dự án ngay lập tức sử dụng tstore(key, 0) để xóa giá trị trong bộ nhớ tạm thời ngay sau khi hàm gọi kết thúc dựa trên logic kinh doanh. Đồng thời, cần tăng cường kiểm toán mã hợp đồng và thử nghiệm an ninh để ngăn chặn các tình huống tương tự xảy ra.

ETH5.84%
Xem bản gốc
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.
  • Phần thưởng
  • 7
  • Chia sẻ
Bình luận
0/400
VitaliksTwinvip
· 5giờ trước
Đợt này tổng hợp vẫn tốn gas.
Xem bản gốcTrả lời0
CountdownToBrokevip
· 5giờ trước
30w lại có một anh gửi
Xem bản gốcTrả lời0
0xLuckboxvip
· 5giờ trước
Lại bị đánh cắp ba trăm ngàn~hợp đồng thông minh bảo an toàn nhé
Xem bản gốcTrả lời0
OnchainGossipervip
· 5giờ trước
Lại bị khai thác lỗ hổng, ngốc quá đi.
Xem bản gốcTrả lời0
GateUser-0717ab66vip
· 5giờ trước
30w cũng dám đề cập
Xem bản gốcTrả lời0
VibesOverChartsvip
· 5giờ trước
30w? Chỉ là phí giao dịch một ngày.
Xem bản gốcTrả lời0
DefiPlaybookvip
· 5giờ trước
Dựa trên mẫu dữ liệu, lỗ hổng lưu trữ này dẫn đến tỷ lệ tổn thất lên đến 86,3%, hãy cảnh giác!
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)