Cointime

Download App
iOS & Android

SharkTeam: Lỗ hổng Vyper khiến các dự án như Curve và JPEG bị tấn công Phân tích nguyên tắc

Vào ngày 30 tháng 7, do lỗ hổng trong một số phiên bản của Vyper, các dự án như Curve và JPEG'd đã bị tấn công liên tiếp, với tổng thiệt hại hơn 52 triệu đô la Mỹ.

SharkTeam lần đầu tiên tiến hành phân tích kỹ thuật về sự cố này và tóm tắt các biện pháp phòng ngừa bảo mật, hy vọng rằng các dự án tiếp theo có thể rút kinh nghiệm và cùng nhau xây dựng tuyến phòng thủ bảo mật cho ngành công nghiệp blockchain.

1. Phân tích sự kiện

Lấy JPEG'd bị tấn công làm ví dụ:

Địa chỉ kẻ tấn công: 0x6ec21d1868743a44318c3c259a6d4953f9978538

Hợp đồng của kẻ tấn công: 0x9420F8821aB4609Ad9FA514f8D2F5344C3c0A6Ab

Giao dịch tấn công: 0xa84aa065ce61dbb1eb50ab6ae67fc31a9da50dd2c74eefd561661bfce2f1620c

(1) Kẻ tấn công (0x6ec21d18) đã tạo hợp đồng 0x466B85B4 và mượn 80.000 WETH từ [Balancer: Vault] thông qua khoản vay nhanh.

(2) Kẻ tấn công (0x6ec21d18) đã thêm 40.000 WETH vào nhóm thanh khoản pETH-ETH-f (0x9848482d) và thu được 32.431 pETH.

(3) Sau đó, kẻ tấn công (0x6ec21d18) liên tục rút thanh khoản khỏi nhóm thanh khoản pETH-ETH-f (0x9848482d).

(4) Cuối cùng, kẻ tấn công (0x6ec21d18) đã kiếm được 86.106 WETH. Sau khi hoàn trả khoản vay chớp nhoáng, anh ta đã rời đi với số tiền lãi là 6.106 WETH.

2. Phân tích lỗ hổng

(1) Cuộc tấn công này là một cuộc tấn công vào lại điển hình. Bằng cách giải mã bytecode của hợp đồng dự án bị tấn công, chúng ta có thể tìm thấy từ hình bên dưới: khi hai hàm add_liquidity và remove_liquidity xác minh giá trị của vị trí lưu trữ, thì các vị trí lưu trữ được xác minh là khác nhau. Sử dụng một khe lưu trữ khác, khóa vào lại có thể bị vô hiệu. Tại thời điểm này, nó bị nghi ngờ là lỗ hổng thiết kế cơ bản của Vyper.

(2) Kết hợp với tweet chính thức của Curve. Cuối cùng, vị trí là một lỗ hổng phiên bản Vyper. Lỗ hổng này tồn tại trong các phiên bản 0.2.15, 0.2.16 và 0.3.0 và có lỗi trong thiết kế khóa truy cập lại. Chúng tôi đã so sánh phiên bản 0.2.14 trước 0.2.15 và phiên bản 0.3.1 sau 0.3.0 và thấy rằng phần mã này liên tục được cập nhật và các phiên bản 0.2.14 và 0.3.1 cũ không có vấn đề này .

(3) Trong tệp cài đặt liên quan đến khóa truy cập lại data_positions.py tương ứng với Vyper, giá trị của storage_slot sẽ bị ghi đè. Trong ret, vị trí của khóa có được lần đầu tiên là 0, sau đó khi chức năng được gọi lại, vị trí của khóa sẽ tăng lên 1 và khóa vào lại lúc này sẽ không hợp lệ.

Tóm tắt lỗ hổng: Nguyên nhân gốc rễ của cuộc tấn công này là do các phiên bản Vyper 0.2.15, 0.2.16 và 0.3.0 có thiết kế khóa truy cập lại không hợp lý và không đủ kiểm tra chức năng toàn diện. Do đó, khóa truy cập lại trong các dự án sử dụng các phiên bản này sau đó trở nên không hợp lệ và cuối cùng đã bị tấn công.

3. Khuyến nghị bảo mật

Đối với cuộc tấn công này, các nhà phát triển nên thực hiện các biện pháp bảo mật sau trong quá trình phát triển hàng ngày:

(1) Bên dự án cần đảm bảo rằng thiết kế chức năng là hợp lý và tiến hành kiểm tra toàn diện mã để tránh bỏ sót một số kiểm tra chức năng nhất định.

(2) Trước khi dự án được công bố, cần tìm kiếm sự hỗ trợ kỹ thuật từ nhóm kiểm toán chuyên nghiệp của bên thứ ba.

Về chúng tôi

Tầm nhìn của SharkTeam là bảo vệ toàn diện an ninh của thế giới Web3. Nhóm bao gồm các chuyên gia bảo mật giàu kinh nghiệm và các nhà nghiên cứu cấp cao từ khắp nơi trên thế giới. Họ thành thạo lý thuyết cơ bản về chuỗi khối và hợp đồng thông minh, đồng thời cung cấp các dịch vụ bao gồm kiểm toán hợp đồng thông minh, phân tích trên chuỗi và ứng phó khẩn cấp. Nó đã thiết lập mối quan hệ hợp tác lâu dài với những người chơi chính trong các lĩnh vực khác nhau của hệ sinh thái blockchain, chẳng hạn như Polkadot, Moonbeam, đa giác, OKC, Huobi Global, imToken, ChainIDE, v.v.

Trang web chính thức: https://www.sharkteam.org

Twitter: https://twitter.com/sharkteamorg

Bất hòa: https://discord.gg/jGH9xXCjDZ

Điện tín: https://t.me/sharkteamorg

Các bình luận

Tất cả bình luận

Recommended for you