OUSD hứng chịu một "cuộc tấn công vào lại cổ điển" và mất 7,7 triệu đô la, vấn đề bảo mật DeFi cần được giải quyết khẩn cấp
PeckShield
2020-11-18 12:58
本文约1810字,阅读全文需要约7分钟
Gần đây, PeckShield đã theo dõi rằng giao thức DeFi Origin Protocol stablecoin OUSD đã bị tấn công bởi reentrancy, gây ra khoản lỗ trị giá 7,7 triệu đô la.

Gần đây, PeckShield đã theo dõi rằng giao thức DeFi Origin Protocol stablecoin OUSD đã bị tấn công. .

Tấn công vào lại là một trong những phương thức tấn công cổ điển nhất đối với các hợp đồng thông minh Ethereum.Vụ đánh cắp DAO nổi tiếng là kẻ tấn công đã sử dụng cuộc tấn công vào lại để gây ra một đợt hard fork của Ethereum và làm mất ETH trị giá 50 triệu đô la.

Kể từ tháng 4 năm nay, các dự án DeFi thường xuyên gặp phải các cuộc tấn công vào lại. Ngày 18/4, tin tặc khai thác lỗ hổng tương thích của Uniswap và tiêu chuẩn ERC777 để thực hiện tấn công vào lại; ngày 19/4, Lendf.Me cũng bị tấn công vào lại tương tự; ngày 14/11, tin tặc sử dụng hợp đồng SavingsModule của Akropolis project in Một lỗi nhất định trong quá trình xử lý tài sản lưu trữ của người dùng đã thực hiện 17 cuộc tấn công vào lại liên tiếp và làm mất 2,03 triệu DAI.

tiêu đề phụ

Cuộc tấn công vào lại tái tạo việc tạo ra 20,5 triệu OUSD ngoài không khí

Thông qua theo dõi và phân tích, PeckShield nhận thấy rằng đầu tiên, kẻ tấn công đã cho vay 70.000 ETH từ khoản vay flash dYdX;

Sau đó, 17.500 ETH lần đầu tiên được chuyển đổi thành 7,85 triệu USDT trong UniswapV2, sau đó 52.500 ETH cho vay còn lại được chuyển đổi thành 20,99 triệu DAI;

Tiếp theo, kẻ tấn công đã đúc stablecoin OUSD trong bốn lần:

Khi đúc OUSD lần đầu tiên thông qua hàm mint(), kẻ tấn công đã gửi 7,5 triệu USDT vào hợp đồng thông minh Origin và thu được 7,5 triệu OUSD;

Khi đúc OUSD thông qua chức năng nhiều stablecoin của mintMultiple() lần thứ hai, kẻ tấn công đã gửi 20,5 triệu DAI và 0 "stablecoin" giả vào hợp đồng thông minh Origin và tấn công hợp đồng thông qua một cuộc tấn công vào lại trong bước này. Kẻ tấn công gửi 20,5 triệu DAI và 0 "đồng tiền ổn định" giả vào VaultCore. Tại thời điểm này, hợp đồng thông minh nhận được 20,5 triệu DAI. Khi cố gắng nhận 0 "đồng tiền ổn định" giả, kẻ tấn công sử dụng hợp đồng độc hại để chiếm đoạt , trước hợp đồng thông minh bắt đầu đúc 20,5 triệu OUSD, hàm mint() được gọi để phát hành 20,5 triệu OUSD một cách độc hại. Việc phát hành độc hại này được thực hiện bằng cách gọi hàm rebase() trong hợp đồng VaultCore.

Điều đáng chú ý là, để thực hiện thành công vụ chiếm quyền điều khiển, kẻ tấn công đã gửi 2.000 USDT bằng tiền thật khi hàm mint() ở trên được gọi, đồng thời lấy được số tiền thứ ba là 2.000 OUSD. Sau đó, gọi hàm oUSD.mint() để đúc 20,5 triệu OUSD lần thứ tư.

Rebase đề cập đến quá trình điều chỉnh đàn hồi của nguồn cung cấp mã thông báo, nghĩa là "đặt lại" nguồn cung cấp mã thông báo. Trong lĩnh vực DeFi, có một loại mã thông báo có cơ chế cung ứng co giãn, tức là số dư trong ví và tổng lượng mã thông báo của mỗi người dùng nắm giữ mã thông báo sẽ thay đổi tương ứng với sự thay đổi của giá mã thông báo. Tại thời điểm này, kẻ tấn công đã lấy được tổng cộng 28,002 triệu OUSD, bao gồm 7,5 triệu USDT đã thế chấp, 20,5 triệu DAI và 2.000 USDT. Do gọi hàm rebase(), tổng số OUSD mà kẻ tấn công thu được đã tăng lên 33.269.000.

Cuối cùng, trước tiên, kẻ tấn công đã đổi 19,5 triệu DAI, 9,4 triệu USDT và 3,9 triệu USDC với 33.269.000 OUSD thu được; sau đó chuyển đổi 10,45 triệu USDT thành 22.898 ETH và 3,9 triệu USDC trong Uniswap lấy 8.305 ETH, đổi 1,9 triệu DAI lấy 47.976 ETH, tổng cộng 79.179 ETH và trả lại 70.000 ETH cho khoản vay flash dYdX.

Theo thống kê của PeckShield, những kẻ tấn công đã kiếm được tổng lợi nhuận là 11.809 ETH và 2.249.821 DAI trong cuộc tấn công này, với tổng trị giá 7,7 triệu USD.

Liên quan đến vụ tấn công, Origin Protocol đã chính thức trả lời rằng họ đang tích cực thực hiện các biện pháp để thu hồi tiền.

Với sự phát triển mạnh mẽ của hệ sinh thái DeFi, các vấn đề bảo mật ẩn dần dần xuất hiện.

Về vấn đề này, người phụ trách PeckShield có liên quan cho biết: "Việc xảy ra các cuộc tấn công vào lại như vậy chủ yếu là do hợp đồng không thực hiện xác minh danh sách trắng đối với Mã thông báo được lưu trữ bởi người dùng. DeFi là một 'khối xây dựng' tổ hợp' bao gồm nhiều hợp đồng thông minh và ứng dụng. Bảo mật tổng thể của nó được đan xen. Phía nền tảng không chỉ phải đảm bảo rằng có kiểm toán mã vững chắc và điều tra lỗ hổng trước khi sản phẩm xuất hiện trực tuyến, mà còn xem xét các vấn đề kiểm soát rủi ro hệ thống tiềm ẩn do chúng logic kinh doanh khác nhau khi kết hợp các sản phẩm khác nhau.”

PeckShield
作者文库