• Trang chủ
  • Quan điểm
  • DEFI, Farming – Nguy cơ bị hack, mất sạch tiền và cách phòng tránh
480 lượt xem

DEFI, Farming – Nguy cơ bị hack, mất sạch tiền và cách phòng tránh


Đối với tất cả mọi người (Bao gồm cả người chơi và cả dân dev blockchain):

Thế giới blockchain nhiều tiềm năng nhưng cũng đầy rẫy nguy hiểm. Và có nhiều kiểu lừa đảo. Bỏ qua những kiểu lừa đảo phổ biến như toàn project sập,team biến mất, liquidity bị rút hết,.. thì còn một kiểu lừa đảo nguy hiểm hơn: “RÚT SẠCH TIỀN TRONG VÍ BLOCKCHAIN CỦA BẠN”.

Điều này được thực hiện khá phổ biến và nhiều người tự dưng kiểm tra ví trên Metamask, Trustwallet mà không thấy tiền đâu. Mặc dù họ không làm gì cả. Cứ nạp tiền vào ví bao nhiêu thì mất bấy nhiêu – ngay lập tức.

Cách mà kẻ lừa đảo rút tiền của bạn:
– Mỗi khi bạn chuẩn bị thực hiện 1 thao tác như swap, farming,… trên các ứng dụng DEFI. Bạn sẽ luôn nhìn thấy nút approve. Và bạn bắt buộc thực hiện nó trước khi thực hiện các thao tác như swap,farm,stake.
==>Bản chất là bạn đã approve (chấp nhận) cho các ứng dụng DEFI (ở đây là các smartcontract) được tiêu tiền.
(Gọi đến function approve trong contract ERC20/BEP20==>contract đó có thể thay mặt bạn gửi tiền đi bất cứ lúc nào, trong ngưỡng mà bạn cho phép. Nhưng ngưỡng này thường rất rất cao, gấp nhiều lần số dư hiện tại của bạn,gần như là không giới hạn, cho phép chúng tiêu tiền của bạn trong tương lai).
Một ngày đẹp trời, kẻ lừa đảo quyết định rút hết thanh khoản để cao chạy xa bay.
==>Lúc này toàn bộ token của bạn trong dự án kia sẽ vô giá trị( vì không thể exchange được nữa)
==>Nhưng điều đó vẫn chưa đủ, Điều tồi tệ hơn, kẻ lừa đảo sẽ xem tài khoản của bạn có bao nhiêu token khác(như USDT, WBNB,.. chẳng hạn, mà bạn đã ủy quyền cho chúng), thì bạn xong rồi. Chúng sẽ thông qua smartcontract kia mà rút sạch tiền của bạn(vì bạn đã ĐỒNG Ý CHO CHÚNG TIÊU trong bước 1 trước khi thực hiện bất kỳ thao tác nào.
Con số ủy quyền thường các contract sẽ để rất rất cao, vượt xa so với con số cần thiết, và số dư của bạn tại thời điểm đó==>Ngay cả khi bạn nạp thêm tiền vào ví SAU khi thực hiện các thao tác trên ứng dụng DEFI đó, bạn cũng sẽ bị mất hết.

(kể cả bạn sử dụng ứng dụng DEFI đó từ 1 năm trước, nhưng hôm nay bạn vừa nạp thêm 1000 USDT, thì chúng cũng có thể lấy của bạn, miễn là bạn ĐÃ TỪNG nhấn vào nút approval)
Kẻ lừa đảo chỉ có thể làm như trên nếu đã “Chuẩn bị sẵn” trong code trước khi deploy contract. Nên người có chuyên môn đọc code là biết.

Vậy phòng tránh thì làm cách nào:
– Chỉ thực hiện các giao dịch trên các ứng dụng DEFI đã được audit
– Tham khảo ý kiến các chuyên gia để đánh giá lại 1 lần nữa code của smartcontract.
– Đối với những dự án đã nhỡ ấn approve linh tinh rồi, thì có 2 cách để phòng tránh:
+ Chuyển hết sang 1 ví khác
+ Rà soát lại các token xem mình đã approve cho thằng nào, thì mau chóng remove allowance đó đi(bằng cách call lại 1 lần nữa function approve với giá trị =0 hoặc sử dụng các ứng dụng như Revoke.cash, approved.zone để kiểm tra và Revoke đi)

Đối với DEV code smartcontract (không phải dev code solidity thì bỏ qua nhé):

– Các smartcontract solidity có một lỗ hổng phổ biến, đã được ghi trong sách giáo khoa, nhưng rất ít dev Việt Nam để ý(ngay cả trên thế giới) và rất nhiều project đã bị hack sạch tiền.
Kiểu tấn công này là: Re-entrancy attack. Dựa vào nguyên tắc của solidity là gọi đến hàm fallback mỗi khi smartcontract được gọi đến function send,transfer,call, và/hoặc các function chưa được định nghĩa.
==> Hacker có thể tạo ra 1 contract, sử dụng function fallback trong contract đó để call đến các function của contract có lỗ hổng của bạn==> tạo thành vòng lặp vô hạn, rút hết tiền của smartcontract (hoặc rút nhiều tiền cho đến khi hết gas).

Vậy phòng tránh thì làm cách nào:
– Đọc kỹ “sách giáo khoa”
– Sử dụng modifier “lock” để tránh bị gọi nhiều lần đối với các function nhạy cảm. (sử dụng 1 flag để lock và unlock trước và sau khi call function).
– Thực hiện mọi sự thay đổi state của contract trước khi call ra bên ngoài.
– Thực hiện điều trên với cả các function call đến các function internal mà function đó có call ra bên ngoài.
– Test thật kỹ trước khi publish.

Lâu lâu không mình post bài về blockchain, nhưng thấy dạo này kiểu lừa đảo trên lại nở rộ. Mọi người lưu ý để tránh mất tiền nhé. (Mình sẽ cân nhắc làm 1 ví như metamask, nhưng có thêm tính năng tự động cảnh báo).

(Theo Nguyễn Việt Dinh)

Vote sao
Thẻ tìm kiếm: