[Hóng hớt hacking #2] $LZ token và câu chuyện phía sau

TH13🇻🇳
4 min readAug 1, 2023

--

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 giá bất ngờ:

Sau khi nhận thông tin, Tôi/Verichains đã tiến hành “tác chiến” 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. Tôi/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/0xaee8ef10ac816834cd7026ec34f35bdde568191fe2fa67724fcf2739e48c3cae

Hacker đã 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.

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

tx approve 1 tỷ LZ

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

tx approve 39 triệu BUSD
  • 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.

Proxy thực hiện call implement contract
  • 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.
SwapX là AMM deploy bởi LZ

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 “dù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.

Bên cạnh đó rất nhiều khai thác lỗ hổng này đối với các token khác, nạn nhân là những address đã approve tiền vào contract.

Lời khuyên

  1. 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
  2. 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.
  3. Chỉ approve lượng vừa đủ để thực hiện giao dịch, không nên approve lượng quá lớn.
  4. 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.

--

--