Sự cố tấn công trên chuỗi trị giá 300.000 đô la: Lỗ hổng lưu trữ tạm thời khiến các dự án giao dịch ký quỹ gặp khó khăn.

robot
Đang tạo bản tóm tắt

Di chứng chết người: Một cuộc tấn công 30 triệu đô la trên chuỗi bắt nguồn từ bộ nhớ tạm thời

Vào ngày 30 tháng 3 năm 2025, một hệ thống giám sát an ninh đã phát hiện 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 hơn 300.000 đô la. Nhóm an ninh đã tiến hành phân tích sâu về sự kiện này, và hiện chia sẻ kết quả như sau:

Bối cảnh

Phiên bản Solidity 0.8.24 (ra mắt tháng 1 năm 2024) đã 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 cách lưu trữ tạm thời hiệu quả về chi phí và có hiệu lực trong suốt quá trình giao dịch.

Các đặc điểm chính của lưu trữ tạm thời bao gồm:

  1. Chi phí gas thấp: Chi phí gas của các thao tác TSTORE và TLOAD được cố định là 100.
  2. 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.
  3. Tự động xóa: Sau khi giao dịch kết thúc, bộ nhớ tạm thời sẽ tự động được đặt lại về không.

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

Nguồn gốc tấn công

Nguyên nhân cơ bản của sự kiện này là giá trị được lưu trữ tạm thời trong hàm bằng cách sử dụng tstore 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 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 ra token.

Di sản 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

Quy trình tấn công

  1. Kẻ tấn công tạo ra hai đồng tiền độc hại A và B, tạo ra các bể cho hai đồng tiền này trên một DEX và tiêm thanh khoản vào đó, trong đó đồng tiền A là hợp đồng tấn công.

  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 tài sản nợ để tạo ra thị trường giao dịch đòn bẩy APE-21.

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

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

  1. Kẻ tấn công tạo ra một hợp đồng độc hại bằng cách sử dụng phương pháp đặc biệt, có địa chỉ giống với giá trị của lần lưu trữ tạm thời thứ hai.

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

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

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 USD trên chuỗi do bộ nhớ tạm thời gây ra

Diệt vong còn lạ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 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 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 bộ nhớ 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 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 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 USD 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

Phân tích dòng tiền

Theo phân tích của công cụ phân tích 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 và 119.871 WETH. Các tài sản này sau đó đã được tích hợp và chuyển đổi thành WETH, cuối cùng được chuyển vào một giao thức giao dịch ẩn danh.

Nguồn vốn ban đầu của kẻ tấn công đến từ 0.3 ETH được chuyển vào giao thức giao dịch riêng tư đó.

Tóm tắt và đề xuất

Tâm điểm của cuộc tấn công lần này là kẻ tấn công đã tận 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 xác thực quyền truy cập của hàm callback để thu lợi. Để ngăn chặn tình huống tương tự xảy ra, đề xuất cho các dự án:

  1. Theo logic kinh doanh, ngay sau khi gọi hàm, hãy sử dụng tstore(key, 0) để xóa giá trị trong bộ nhớ tạm thời.
  2. Tăng cường kiểm toán mã hợp đồng và kiểm tra an ninh.
  3. Thận trọng khi sử dụng các tính năng mới được giới thiệu, hiểu rõ các rủi ro tiềm ẩn của chúng.
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
  • 6
  • Chia sẻ
Bình luận
0/400
LayerZeroHerovip
· 08-02 23:27
Cuộc tấn công chắc chắn có cửa hậu
Xem bản gốcTrả lời0
Web3ProductManagervip
· 08-01 12:37
Tấn công điểm ma sát UX cổ điển
Xem bản gốcTrả lời0
OnchainDetectivevip
· 08-01 04:23
Mã sai là mất hết.
Xem bản gốcTrả lời0
SchrodingersFOMOvip
· 08-01 04:18
Chưa thử đã lên tốt nguy hiểm
Xem bản gốcTrả lời0
ProbablyNothingvip
· 08-01 04:18
Chậm chạp sẽ xuất hiện lỗ hổng.
Xem bản gốcTrả lời0
rug_connoisseurvip
· 08-01 04:11
Lỗ hổng mới kiếm tiền nhanh
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)