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.
Bài viết dưới đây là một phân tích của Verichains Lab cùng với team BShield (startup cung cấp giải pháp bảo vệ ứng dụng trên Android/iOS) về một tấn công vào Wanaka Farm cho phép hacker lợi dụng lỗ hổng bỏ túi triệu USD.
Tất cả credit của bài viết này xin gửi tới Verichains Labs và tác giả Văn Hòa Nguyễn.
TLDR;
Attacker đã lợi dụng sự delay trong quá trình transaction đang được confirm trên chain để thực hiện tấn công replay attack vào backend API. Dẫn đến việc backend API call smart contract nhiều lần. Attacker đã lợi dụng bug này để bỏ túi khoảng $500.000 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ờ user report lỗi liên quan đến deposit/withdraw, 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 đã fix lỗi deposit.

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ữ marketplace hoạt động.

Tuy nhiên vào ngày 11/11, hacker đã lợi dụng bug deposit/withdraw và bỏ túi khoảng 400k usd. Sau khi inspect giao dịch của hacker, thì thấy attacker tạo ra 500 ví để exploit bug này.

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
Mình thử thực hiện reproduce bug này, tuy nhiên sau đó phát hiện bug này không phải là bug của smart contract, mình đoán là bug backend API. Mình đã thử replay payload của attacker, call 2 function trong smart contract depositWana(uint256)
, withdrawWana(address,uint256)
.

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.

Sau khi inspect kỹ lại transaction của hacker, mình nhận ra transaction withdraw không phải thực hiện từ ví của hacker mà là một ví khác có quyền operator.

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.

Kết luận: Do sự delay trong quá trình withdraw, lúc transaction chưa được confirm. Attacker liên tục gửi yêu cầu withdraw, backend check số dư của attacker là available nên call hàm withdraw trong smart contract, từ đó tạo ra nhiều giao dịch withdraw cùng lúc. Đến khi transaction withdraw đầu tiên đã được hoàn tất thì backend không cho phép withdraw nữa nhưng attacker đã 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…
Đừng quên đăng ký Otis Report - Nơi cung cấp và cập nhật nhanh nhất mọi thông tin vĩ mô và phương pháp đầu tư tăng trưởng với giá trị vượt thời gian.
Hãy đăng ký và tham gia các nhóm, channel của Otis Report dưới đây để được thảo luận cùng các chuyên gia và nhiều Otiser khác:
- Theo dõi Otis Podcast - Những góc nhìn thú vị về thị trường
- Đăng ký kênh YouTube Otis Report - Các video chia sẻ kinh nghiệm đầu tư
- Otis Telegram - Chat cùng các chuyên gia và Otiser
- Group Otis Report - Cập nhật & thảo luận thông tin