[VI] Phân tích sự cố hack LZ Token
Vào chiều 14:35 giờ Việt Nam ngày 27/02/2023, LZ Token ghi nhận 1 sự kiện dump bất ngờ như sau:
Sau khi nhận thông tin, Verichains đã tiến hành phân tích nguyên nhân và xác định lý do bị hack đến từ việc khai thác lỗi bảo mật trên một contract, tạm gọi là Contract X tại địa chỉ 0x6d8981847eb3cc2234179d0f0e72f6b6b2421a01, chưa được verify. Điểm đáng lưu ý là ví “LZ Deployer” đã “approve” một số lượng rất lớn LZ và BUSD đến contract này hơn 1 năm về trước. Verichains sau đó đã gửi thông tin phân tích sự cố cho dự án LaunchZone để có thể tiến hành xử lý, khắc phục và giảm thiệt hại.
Phân tích luồng tấn công
LZ Token bị khai thác bởi address được gán nhãn là
DND Exploiter
vào lúc 14:32 giờ Việt Nam ngày 27/02/2023. Tx khiến cho giá LZ Token bị dump: https://bscscan.com/tx/0xaee8ef10ac816834cd7026ec34f35bdde568191fe2fa67724fcf2739e48c3caeHacker đã deploy một “attack contract”, luồng thực thi tấn công LZ Token diễn ra trong contract này như sau:
Gọi hàm có chức năng tìm pair và thực hiện swap LZ to BUSD trên Biswap (tạm gọi là swap function). Function này thuộc Contract X nói trên và hơn 1 năm về trước, ví “LZ Deployer” đã approve 1 tỷ LZ, 39 triệu BUSD cho contract này.
LZ Deployer approve cho contract 1 tỷ LZ: https://bscscan.com/tx/0x3ab13a622105fdcf0293ed1a0a7918375e1a05123160efdc5e23ec121ac6d944
LZ Deployer approve cho contract hơn 39 triệu BUSD: https://bscscan.com/tx/0x444edcefe7de6504ae70deb292c80211dbff0ddb13bf6689cb05d5a068307ca0
hacker gọi function swap của contract bên thứ 3 để thực hiện swap 9,8tr LZ, nhận lại gần 7 BUSD về LZ Deployer thông qua BSW-LP Pair (Biswap).
Sau đó, hacker nạp vào attack contract 50 BUSD và ngay lập tức swap 50 BUSD lấy lại hơn 9,8tr LZ thông qua Biswap.
Cuối cùng attacker swap hơn 9,8tr LZ thu được gần 88k BUSD thông qua PancakeSwap. Lúc này giá của LZ Token bị giảm 46 lần.
Khi thu được gần 88k BUSD, hacker claim số token này về ví riêng và thực hiện self-destruct attack contract.
Một số address liên quan:
+ LZ Deployer: 0xdad254728A37D1E80C21AFae688C64d0383cc307
+ Attacker: 0x7d192FA3a48C307100C3E663050291Fff786aA1F
+ Attack Contract: 0x1C2B102f22c08694EEe5B1f45E7973b6EACA3e92
+ Contract X : 0x6D8981847Eb3cc2234179d0F0e72F6b6b2421a01
+ BSW-LP: 0xDb821BB482cfDae5D3B1A48EeaD8d2F74678D593
Phân tích lỗ hổng và nguyên nhân
Phía trên là hành vi của Hacker thực hiện khai thác làm dump giá LZ Token và trục lợi gần 88k BUSD. Sau đây là phân tích chi tiết về lỗ hổng bảo mật và nguyên nhân gây ra của cuộc tấn công.
Chúng tôi xác định được Contract X nhắc ở trên chính là implement contract của SwapX Proxy (chưa được verify và audit), Proxy sẽ cho phép người dùng truyền data và call implement contract: https://bscscan.com/address/0x0ccee62efec983f3ec4bad3247153009fb483551
SwapX là AMM được phát triển trong hệ sinh thái BSCex và LZ token được tích hợp bên trong hệ sinh thái này.
Khi review bytecode của contract, có thể thấy được một số lỗi bảo mật xuất hiện như sau:
Call implement bằng call thay vì delegatecall
Các function trong implement cho phép external call không hạn chế cho mỗi proxy
Đặc biệt, lỗi nghiêm trọng đến từ việc function đảm nhiệm chức năng swap trong implement đã thực hiện transferfrom() từ 1 address bất kì thay vì logic transferfrom từ msg.sender thông thường của các swap khác. Do đó, hacker có thể swap “giùm” người khác thông qua việc control được data call truyền vào.
Kết hợp việc ví “LZ Deployer”, sử dụng SwapX trước đây, đã approve cho contract này một lượng lớn token cần swap là BUSD và LZ token, hacker đã thực hiện swap 1 lượng cực lớn LZ token để đổi lấy BUSD, làm cho giá của LZ giảm cực thấp thông qua pair của Biswap. Sau đó Hacker dùng 50 BSUD mua lại 9,8 triệu LZ token, cuối cùng đem đổi 9.8 triệu token đó đổi lấy được gần 88k BUSD trên sàn giao dịch của PancakeSwap.
Verichains đã gửi thông tin chi tiết phân tích sự cố cho dự án LaunchZone để có thể tiến hành xử lý, khắc phục và giảm thiệt hại.
Lời khuyên
Nếu bạn đã từng dùng SwapX trên BSCex, hãy vui lòng kiểm tra lại ví của mình, đặc biệt là revoke các giao dịch approval trước đây thông qua các công cụ online như https://defi.krystal.app/token-approval-checker hoặc https://revoke.cash
Các địa chỉ nắm giữ nhiều tiền trong hệ sinh thái cần cẩn thận mỗi khi sử dụng.
Chỉ approve lượng vừa đủ để thực hiện giao dịch, không nên approve lượng quá lớn.
Mỗi sản phẩm trước khi ra mắt hoặc được tin tưởng sử dụng cần phải thông qua security audit bởi các công ty bảo mật uy tín.
==============
About Verichains
Since 2017, Verichains has been a pioneer and leading blockchain security firm in APAC, with extensive expertise in security, cryptography and core blockchain technology. More than 200 clients trust us with $50 billion in assets under protection, including several high-profile clients such as BNB Chain, Klaytn, Wemix, Multichain, Line Corp, Axie Infinity, Ronin Network, and Kyber Network.
Our world-class security and cryptography research team have found several vulnerabilities in layer-1 protocol, crypto library, bridge, and smart contracts. We are also proud to be the firm that helped to investigate, root cause analysis, and fix security issues in the two largest global crypto hacks: BNB Chain Bridge and Ronin Bridge (Sky Mavis).
With the in-depth research and development of blockchain technology, Verichains provides blockchain security services such as blockchain protocol and smart contract security audit, mobile application protection, key management solution, on-chain risk monitoring, and red team/penetration testing services.
Homepage:
https://www.verichains.io
Email: info@verichains.io
Twitter: https://twitter.com/Verichains
Linkedin: https://www.linkedin.com/company/verichains
Facebook: https://facebook.com/verichains
Telegram: https://t.me/+Y29xcaxJLJxjNDVl