Verichains

Share this post

Hacker bỏ túi 1 triệu usd nhờ vào bug backend API trong game Wanakafarm

blog.verichains.io

Discover more from Verichains

Leading web3 security firm in APAC. Trusted by top blockchain customers such as BNBChain (Binance), Klaytn (Kakao Talk), Wemix (Wemade), Solana, Axie Infinity/Ronin Network (Sky Mavis)
Continue reading
Sign in

Hacker bỏ túi 1 triệu usd nhờ vào bug backend API trong game Wanakafarm

Verichains
Nov 23, 2021
2
Share this post

Hacker bỏ túi 1 triệu usd nhờ vào bug backend API trong game Wanakafarm

blog.verichains.io
Share

NFT hiện đang là xu hướng khá hot trong thế giới DeFi hiện nay với sự thành công của tựa game Axie Infinity cùng một số tựa game NFT khác. Verichains Lab đã audit khá nhiều NFT Game và team cũng rất quan tâm theo dõi thị trường GameFi.

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. 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.

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 500k 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ờ 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 100 ví để exploit bug này.

https://bscscan.com/tx/0x9bd6611c36ee393d0a3fad938911c2b91db743f3851e392e2d22c89421bcf7b2

Các bước mà hacker đã thực hiện:

Bước 1: Tạo 1000 ví và chia 2x1.188BNB cho 1000 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.

Transaction withdraw của hacker thực hiện bởi ví
 0x97b4f4a0290c4b7f50bcbf1f908a1f81b7d29ca1
Transaction withdraw của hacker thực hiện bởi ví 0x97b4f4a0290c4b7f50bcbf1f908a1f81b7d29ca1

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.

https://explorer.bitquery.io/bsc/address/0x1f7234eabcb85242f15e3fd8962b70a4caf92b4c/inflow

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…

Một số ví đang giữ tiền của hacker:

  • 0xb23067D4660f0E2de2978dc8Bda1432986709554: 235k BUSD + 125k WANA

  • 0xD704b5CDf9737997b89181DFe4fd8457F3E42F53: 235k BUSD

  • 0xAC68f671A876Bff46a66CFFFE064F0283d59BC91: 245k BUSD


Hacker bỏ túi 1 triệu usd nhờ vào bug backend API trong game Wanakafarm was originally published in VeriChains Lab on Medium, where people are continuing the conversation by highlighting and responding to this story.

2
Share this post

Hacker bỏ túi 1 triệu usd nhờ vào bug backend API trong game Wanakafarm

blog.verichains.io
Share
Previous
Next
Comments
Top
New
Community

No posts

Ready for more?

© 2023 Verichains
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing