traderno1
🐋Cá Voi Phake🐋
Wanaka Farm là một tựa game nông trại và cũng có khá nhiều sự kỳ vọng, tuy nhiên sau các quá trình alpha test, beta test game user report rất nhiều lỗi trong game và các lỗi liên quan đến deposit/withdraw crypto currency.
Kẻ tấn công đã lợi dụng sự trì hoãn (delay) trong quá trình giao dịch đang được xác thực trên chuỗi khối để thực hiện tấn công lặp lại vào API lớp truy cập dữ liệu (backend), dẫn đến việc hàm API này gọi smart contract nhiều lần. Kẻ tấn công lợi dụng lỗi này để đút túi 500.000 USD chỉ trong vài giờ.
Wanaka Farm ra bản game chính thức vào ngày 29/10, chỉ sau vài giờ người dùng báo lỗi liên quan đến deposit/withdraw (rút/gửi tiền ảo), nhà phát hành ra thông báo bảo trì game. Đến ngày 31/10 nhà phát hành thông báo đã sửa lỗi deposit này.
Sau đó nhà phát hành tiếp tục thông báo bảo trì game thời gian dài nhưng vẫn giữ chợ hoạt động.
Các bước mà hacker đã thực hiện:
- Bước 1: Tạo 500 ví và chia 1.188BNB cho 500 ví phụ làm phí giao dịch, mỗi ví khoảng 0.02 BNB. Sau đó chuyển token WANA vào 1 ví phụ bất kỳ.
- Bước 2: Trên ví phụ đó thực hiện deposit WANA vào contract 0x164664fcf89f3b722bcba6f02f2c9e3b9081c2a1, sau đó thực hiện withdraw từ 5–7 lần. Số token đã nhân lên 5–7 lần dù chỉ deposit 1 lần.
- Bước 3: Chuyển số token gốc qua ví phụ khác, và chuyển số token bug được vào ví chính.
- Bước 4: Quay về bước 2
Deposit thì thực hiện thành công, tuy nhiên withdraw thì không thực hiện được do smart contract restrict permission.
Do đó mình nghĩ transaction trên của ví 0x97..ca1 đến từ backend API. Attacker đã replay attack vào API endpoint claim deposited token nhiều lần. Sau khi bị tấn công, nhà phát hành ra thông báo đóng cửa marketplace để bảo trì và truy cập vào backend api bị đóng.
Sau khi thực hiện tấn công, attacker chuyển toàn bộ token về ví 0x1f7234eabcb85242f15e3fd8962b70a4caf92b4c và thực hiện bán số một số lượng lớn token này và thu về 310k usd. Hiện tại ví của attacker vẫn đang còn nắm giữ hơn 112000 Token WANA, với giá đồng WANA trung bình là $2 thì giá trị này tương đương với ~$240.000.
Do sự trì hoãn (delay) trong quá trình rút tiền (withdraw), lúc giao dịch (transaction) chưa được xác thực (confirm). Kẻ tấn công liên tục gửi yêu cầu rút tiền, hệ thống kiểm tra số dư của kẻ tấn công là khả dụng nên gọi đến hàm rút tiền trong hợp đồng thông minh (smart contract), từ đó tạo ra nhiều giao dịch rút tiền cùng lúc.
Đến khi giao dịch rút tiền đầu tiên đã được hoàn tất thì hệ thống không cho phép rút nữa nhưng kẻ tấn công đã thu về x5–7 lần số token. Đây là một lỗi khá cơ bản trong quá trình dev đối với API có giao dịch call smart contract.
Security của một sản phẩm dùng công nghệ blockchain và tiền/token crypto như NFT Game không chỉ nằm ở smart contract mà còn ở app, backend API, quá trình phát triển phần mềm, vận hành và các hệ thống dịch vụ khác nữa...
Đây sẽ là bài học đáng nhớ đối với các dự án game thời gian thực (real-time) nhưng chuỗi khối (blockchain) xử lý giao dịch tính bằng giây chậm hơn đáng kể.