Curve Pools Hack: Mất 59 triệu đô la do lỗ hổng Reentrancy trong các phiên bản Vyper

Bài viết này được dịch máy
Xem bản gốc

Cái gì?

Vyper là ngôn ngữ lập trình được thiết kế để tạo hợp đồng thông minh trên nền tảng blockchain. Lấy cảm hứng từ Python, Vyper áp dụng cú pháp thân thiện với người dùng và dễ đọc, giúp các nhà phát triển ở mọi cấp độ có thể truy cập được.

Curve Pool là một giao thức tài chính phi tập trung (DeFi) nhằm cách mạng hóa việc hoán đổi stablecoin trên mạng blockchain. Là Công cụ tạo lập thị trường tự động (Nhà tạo lậo trị trường tự động (AMM)) được tối ưu hóa dành riêng cho stablecoin, Curve Pool đảm bảo trao đổi liền mạch và tiết kiệm chi phí giữa các tài sản ổn định với Slippage (Trượt giá) và phí tối thiểu. Thuật toán độc đáo của nó được thiết kế để giảm thiểu Tác động giá trong quá trình giao dịch và tối đa hóa hiệu quả sử dụng Vốn , khiến nó trở thành lựa chọn ưu tiên cho các nhà giao dịch và nhà cung cấp thanh khoản đang tìm kiếm tính thanh khoản của stablecoin.

Làm sao?

Các cuộc tấn công đã xảy ra trên nhiều chuỗi blockchain khác nhau, dẫn đến tổng thiệt hại hơn 59 triệu USD. Những tổn thất này được cho là do các nhóm sử dụng các phiên bản Vyper dễ bị tổn thương và có chứa ETH. Bể bơi bị hack:

Theo Curve Finance, vẫn có những pool trên Arbitrum có thể dễ bị tấn công. Họ khuyên người dùng nên loại bỏ thanh khoản càng sớm càng tốt vì lý do phòng ngừa.

Trong các cuộc tấn công, kẻ tấn công đã nhập lại hàm add_liquidity sau khi gọi hàm Remove_liquidity . Các trạng thái không cập nhật đầy đủ trước khi nhập lại hàm add_liquidity , dẫn đến lỗi tính toán lp_price .

Tại sao?

Curve Pools được phát triển bằng ngôn ngữ lập trình Vyper và lỗ hổng này tồn tại trong trình biên dịch Vyper.

Lỗ hổng này cho phép kẻ tấn công thực hiện việc đăng nhập lại mặc dù chức năng này được bảo vệ bởi trình trang trí không đăng nhập lại tích hợp trong Vyper.

Nguyên nhân cốt lõi của lỗ hổng có thể bắt nguồn từ một cam kết được thực hiện giữa các phiên bản 0.2.15 đến 0.3.0 của trình biên dịch Vyper, được viết bằng Python. Trong quá trình biên dịch, mã Vyper tải trình trang trí quay lại và lưu nó vào một khe lưu trữ. Tuy nhiên, kiểm tra quan trọng để xác minh xem liệu tính năng gửi lại đã tồn tại hay chưa trước khi thiếu bộ nhớ và phần tăng vị trí trong mã. Do đó, mỗi chức năng sẽ có khe khóa truy nhập lại riêng biệt, độc lập và không cung cấp khả năng bảo vệ chống lại các cuộc tấn công truy cập lại.

Phiên bản Vyper bị ảnh hưởng:

Phần kết luận

Kẻ tấn công đã kiểm tra cẩn thận các bản sửa lỗi của Vyper và các hợp đồng được nhắm mục tiêu sử dụng các phiên bản dễ bị tấn công, dẫn đến tổn thất đáng kể cho Curve.

Bài học quan trọng rút ra là các nhà cung cấp phải thông báo kịp thời cho cộng đồng nhà phát triển về các bản sửa lỗi quan trọng. Chúng tôi khuyến khích sử dụng các công nghệ nguồn mở, bao gồm các tính năng bảo mật được cộng đồng phát triển và xem xét. Việc tiến hành đánh giá bảo mật kỹ lưỡng trước khi phát hành phiên bản mới hoặc thực hiện những thay đổi đáng kể đối với các tính năng thiết yếu là rất quan trọng. Bằng cách áp dụng những biện pháp này, chúng tôi có thể tăng cường bảo mật hệ thống và cung cấp môi trường an toàn hơn cho tất cả người dùng.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận