Lỗ hổng lưu trữ tạm thời dẫn đến việc dự án Ethereum bị tấn công 300.000 USD Nhóm an ninh phân tích các chi tiết quan trọng

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

Phân tích sự kiện tấn công 300.000 USD trên chuỗi do lỗ hổng lưu trữ tạm thời gây ra

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, dẫn đến thiệt hại tài sản trên 300.000 đô la. Đội ngũ an ninh đã tiến hành phân tích sâu về sự kiện này, hiện chia sẻ kết quả như sau:

Kiến thức nền tảng

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 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 tự động được thiết lập lại về không.

Diệt mạch tử vong: Một vụ cướp 300.000 USD trên chuỗi do bộ nhớ 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 lần này là giá trị được sử dụng trong tstore để lưu trữ tạm thời trong hàm 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, xây dựng địa chỉ độc hại cụ thể để vượt qua kiểm tra quyền truy cập, từ đó chuyển token ra ngoài.

Di sản chết người: Một vụ cướp 300.000 USD 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 mã thông báo độc hại A và B, và tạo ra bể thanh khoản cho hai mã thông báo này trên một DEX.

  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.

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

  4. Khi bể DEX thực hiện thao tác hoán đổi, sẽ gọi lại hàm uniswapV3SwapCallback của hợp đồng Vault. Hàm này sử dụng tload để lấy giá trị từ bộ nhớ tạm thời để xác minh danh tính của người gọi, và thực hiện lưu trữ tạm thời số lượng đã đúc.

  5. 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.

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

  7. Cuối cùng, kẻ tấn công thông qua việc tấn công hợp đồng (token A) gọi hàm uniswapV3SwapCallback của hợp đồng Vault, chuyển đổi các token khác trong hợp đồng Vault (như WBTC, WETH) để 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 đô 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 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 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 vật 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 tử vong: 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

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

Theo phân tích của công cụ chống rửa tiền và theo dõi trên chuỗi, kẻ tấn công đã đánh cắp tài sản khoảng 300.000 USD, bao gồm:

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

Sau đó, kẻ tấn công đã đổi WBTC và USDC sang WETH, tổng cộng 193.1428 WETH đã được chuyển vào một công cụ trộn. Nguồn vốn ban đầu của kẻ tấn công đến từ 0.3 ETH được chuyển vào từ công cụ trộ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

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

Gợi ý an toàn

  1. Đội ngũ dự án nên sử dụng tstore(key, 0) để xóa giá trị trong bộ nhớ tạm thời ngay lập tức sau khi kết thúc cuộc gọi hàm theo logic kinh doanh.

  2. Tăng cường kiểm toán mã hợp đồng và thử nghiệm an toàn, tránh các lỗ hổng tương tự.

  3. Cẩn thận 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.

  4. Xây dựng cơ chế xác thực đa yếu tố, không chỉ phụ thuộc vào một phương pháp xác thực duy nhất.

  5. Thực hiện đánh giá an ninh và quét lỗ hổng định kỳ, kịp thời sửa chữa các vấn đề phát hiện.

Sự kiện tấn công lần này lại nhấn mạnh rằng các dự án blockchain cần phải cẩn thận đặc biệt khi sử dụng các đặc tính công nghệ mới, đồng thời cũng làm nổi bật tầm quan trọng của việc kiểm toán an ninh liên tục. Các nhà phát triển nên luôn chú ý đến các thực tiễn tốt nhất về an ninh mới nhất và tuân thủ nghiêm ngặt trong việc triển khai mã.

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
DegenWhisperervip
· 07-16 00:47
Được chơi cho Suckers một ngày nữa lại bắt đầu
Xem bản gốcTrả lời0
PensionDestroyervip
· 07-16 00:47
30w lại trơn tru
Xem bản gốcTrả lời0
AirDropMissedvip
· 07-16 00:43
又被 chơi đùa với mọi người một波 đồ ngốc
Xem bản gốcTrả lời0
ruggedNotShruggedvip
· 07-16 00:37
Cấu trúc đã nhỏ lại. Bây giờ, những cuộc tấn công này không đáng kể.
Xem bản gốcTrả lời0
SillyWhalevip
· 07-16 00:28
Lại có dự án nhỏ bị chơi đùa với mọi người.
Xem bản gốcTrả lời0
RugPullAlarmvip
· 07-16 00:21
Một hợp đồng lại bị lộ do không được xử lý sạch sẽ.
Xem bản gốcTrả lời0
SwingingLittleLeekvip
· 07-16 00:19
Gần đây Ethereum dao động trên 3000+! Tương lai sẽ duy trì trên 3000+.
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)