Bằng cách khai thác một lỗi, kẻ tấn công đã khiến tính thanh khoản bị “tính gấp đôi”, cho phép họ nhận được mức giá không công bằng cho một giao dịch hoán đổi.
Theo một chủ đề trên mạng xã hội của người sáng lập sàn giao dịch Ambient, Doug Colkitt, kẻ tấn công đã rút 46 triệu USD từ KyberSwap đã dựa vào “khai thác hợp đồng thông minh được thiết kế phức tạp và cẩn thận” để thực hiện cuộc tấn công.
Colkitt đã dán nhãn việc khai thác là “trục trặc về tiền vô hạn”. Theo ông, kẻ tấn công đã lợi dụng cách triển khai độc đáo tính năng thanh khoản tập trung của KyberSwap để “lừa” hợp đồng tin rằng nó có tính thanh khoản cao hơn thực tế.
1/ Đã hoàn thành việc tìm hiểu sâu sơ bộ về cách khai thác Kyber và nghĩ rằng bây giờ tôi đã hiểu khá rõ về những gì đã xảy ra.
Đây dễ dàng là cách khai thác hợp đồng thông minh phức tạp và được thiết kế cẩn thận nhất mà tôi từng thấy…
– Doug Colkitt (@0xdoug) Ngày 23 tháng 11 năm 2023
Hầu hết các sàn giao dịch phi tập trung (DEX) đều cung cấp tính năng “thanh khoản tập trung”, cho phép các nhà cung cấp thanh khoản đặt mức giá tối thiểu và tối đa mà họ sẽ đưa ra để mua hoặc bán tiền điện tử. Theo Colkitt, tính năng này đã được kẻ tấn công KyberSwap sử dụng để rút tiền. Tuy nhiên, việc khai thác “dành riêng cho việc triển khai thanh khoản tập trung của Kyber và có thể sẽ không hoạt động trên các DEX khác,” ông nói.
Colkitt cho biết, cuộc tấn công KyberSwap bao gồm một số cách khai thác nhằm vào các nhóm riêng lẻ, với mỗi cuộc tấn công gần như giống hệt nhau. Để minh họa cách thức hoạt động, Colkitt đã xem xét việc khai thác nhóm ETH/wstETH trên Ethereum. Nhóm này chứa Ether ( ETH ) và Lido Wrapped Staked Ether (wstETH).
Kẻ tấn công bắt đầu bằng cách vay 10.000 wstETH (trị giá 23 triệu USD vào thời điểm đó) từ nền tảng cho vay nhanh Aave, như được hiển thị trong dữ liệu blockchain. Theo Colkitt, kẻ tấn công sau đó đã đổ số token này trị giá 6,7 triệu USD vào pool, khiến giá của nó giảm xuống 0,0000152 ETH trên 1 wstETH. Ở mức giá này, không có nhà cung cấp thanh khoản nào sẵn sàng mua hoặc bán, vì vậy thanh khoản lẽ ra phải bằng 0.
Kẻ tấn công sau đó đã gửi 3,4 wstETH và đề nghị mua hoặc bán trong khoảng giá từ 0,0000146 đến 0,0000153, rút 0,56 wstETH ngay sau khi gửi tiền. Colkitt suy đoán rằng kẻ tấn công có thể đã rút 0,56 wstETH để “thực hiện các phép tính số tiếp theo một cách hoàn hảo”.
Sau khi thực hiện việc gửi và rút tiền này, kẻ tấn công thực hiện lần hoán đổi thứ hai và thứ ba. Lần hoán đổi thứ hai đã đẩy giá lên 0,0157 ETH, điều này đáng lẽ phải làm mất tính thanh khoản của kẻ tấn công. Lần hoán đổi thứ ba đã đẩy giá trở lại mức 0,00001637. Mức giá này cũng nằm ngoài phạm vi giá do ngưỡng thanh khoản của chính kẻ tấn công đặt ra, vì hiện tại nó đã cao hơn mức giá tối đa của chúng.
Về mặt lý thuyết, hai giao dịch hoán đổi cuối cùng sẽ không đạt được kết quả gì vì kẻ tấn công đang mua và bán bằng thanh khoản của chính họ, vì mọi người dùng khác đều có mức giá tối thiểu được đặt thấp hơn nhiều so với các giá trị này. “Trong trường hợp không có lỗi số, ai đó thực hiện việc này sẽ chỉ giao dịch qua lại bằng thanh khoản của chính họ,” Colkitt tuyên bố và nói thêm, “và tất cả các dòng tiền sẽ bằng 0 (trừ phí).”
Tuy nhiên, do tính đặc thù của phép tính số học được sử dụng để tính toán giới hạn trên và giới hạn dưới của phạm vi giá, giao thức đã không thể loại bỏ tính thanh khoản ở một trong hai lần hoán đổi đầu tiên mà còn thêm lại nó trong lần hoán đổi cuối cùng. Kết quả là nhóm đã “đếm gấp đôi tính thanh khoản từ vị trí LP ban đầu”, cho phép kẻ tấn công nhận được 3.911 wstETH với số lượng ETH tối thiểu. Mặc dù kẻ tấn công phải bán 1.052 wstETH trong lần hoán đổi đầu tiên để thực hiện cuộc tấn công, nhưng điều đó vẫn giúp chúng kiếm được 2.859 wstETH (6,7 triệu USD theo giá ngày hôm nay) sau khi trả lại khoản vay ngắn hạn của mình.
Kẻ tấn công rõ ràng đã lặp lại hành vi khai thác này đối với các nhóm KyberSwap khác trên nhiều mạng, cuối cùng đã cướp được tổng cộng 46 triệu đô la tiền điện tử.
Liên quan: Sàn Exchange mất 13,6 triệu USD do hack ví nóng: Báo cáo
Theo Colkitt, KyberSwap chứa một cơ chế an toàn trong hàm tínhSwapStep nhằm ngăn chặn việc khai thác này. Tuy nhiên, kẻ tấn công đã cố gắng giữ các giá trị số được sử dụng trong trao đổi ngay bên ngoài phạm vi có thể khiến kích hoạt tính năng an toàn dự phòng, như Colkitt đã nêu:
“[T]he ‘số lượng tiếp cận’ là giới hạn trên để đạt đến ranh giới đánh dấu được tính là …22080000, trong khi kẻ khai thác đặt số lượng hoán đổi là …220799999[.] Điều đó cho thấy việc khai thác này được thiết kế cẩn thận đến mức nào . Việc kiểm tra không thành công <0,00000000001%.”
Colkitt gọi cuộc tấn công này là “cách khai thác hợp đồng thông minh phức tạp và được thiết kế cẩn thận nhất mà tôi từng thấy”.
Như Cointelegraph đã đưa tin, KyberSwap đã bị khai thác với giá 46 triệu USD vào ngày 22 tháng 11. Nhóm đã phát hiện ra lỗ hổng vào ngày 17 tháng 4, nhưng không có khoản tiền nào bị mất trong sự cố đó. Giao diện người dùng của sàn giao dịch cũng bị hack vào tháng 9 năm ngoái, mặc dù tất cả người dùng đều được bồi thường trong sự cố đó. Kẻ tấn công ngày 22 tháng 11 đã thông báo cho nhóm rằng họ sẵn sàng thương lượng để trả lại một số tiền.
Theo Cointelegraph