Revoke là gì? Cách sử dụng công cụ Token Approval để không bị mất tiền oan


Chào anh em, đầu tiên mình muốn hỏi là anh em nghĩ sao về vấn đề bảo mật để bảo vệ tài sản của mình trong quá trình giao dịch? Anh em đã bao giờ cảm thấy khó chịu về các Dapp khác nhau mà anh em đã chấp thuận sử dụng token ERC20 từ tài khoản của mình chưa? Có thể anh em có số vốn nhỏ thì nghĩ rằng điều đó là không cần thiết, nhưng việc tạo thói quen bảo mật sẽ giúp anh em tránh những rủi ro không đáng có.


Chuyện là Jhon Doe vào tháng 10/2020, sau khi nạp tiền và farm tại dự án lừa đảo UniCats, anh rút tiền về ví Metamask và nghĩ đã an toàn, nhưng trong đêm anh đã mất 36K token UNI (hơn $1M).


Trong bài viết này mình sẽ giải thích mánh lừa đảo này và hướng dẫn anh em cách sử dụng một tool Token Approval để phòng tránh, đó là Revoke!


Revoke là gì?

Revoke là một loại công cụ Token Approval, cho phép theo dõi toàn bộ hợp đồng mà người dùng đã chấp thuận sử dụng tiền trong ví của mình, đồng thời người dùng cũng có thể thu hồi những quyền truy cập đó nếu nó không cần thiết. Nhưng nếu không muốn thu hồi hoàn toàn quyền truy cập, người dùng có thể cập nhật số tiền giới hạn mà Dapp đó được sử dụng.


Revoke có liên kết giữa địa chỉ ví các Dapp và tên của Dapp đó. Điều này giúp người dùng theo dõi liên kết một cách trực quan và dễ hiểu hơn (tức là anh em sẽ có thể nhìn thấy Aave, Sushi thay vì là địa chỉ ví Dapp đó).


Lỗ hổng bảo mật mang tên unlimited ERC20 allowances

Khi đặt cọc số tiền cụ thể (ví dụ 100 DAI) vào hợp đồng, anh em có set allowance chính xác số tiền đó. Nhưng thay vào đó, nhiều ứng dụng yêu cầu unlimited allowance (cho phép không giới hạn) từ phía người dùng. Điều này giúp anh em chỉ cần phê duyệt 1 lần mà không phải lặp lại quy trình này cho các lần gửi tiền tiếp theo.


Tuy nhiên thiết lập này tiềm ẩn rủi ro vô cùng lớn. Hệ thống có thể gặp bug, khi đã phê duyệt unlimited allowance, anh em không chỉ khiến những khoản tiền đã gửi vào ứng dụng chuyển sang báo động đỏ, mà còn cả những token còn lại trong ví cũng có thể không cánh mà bay.

Người đề cập tới vấn đề này đầu tiên là Paul Berg tại Devcon 5, anh em có thể theo dõi lại thông qua video tại đây. Bên cạnh lý thuyết, thì mình cũng xin đưa cho anh em một vài ví dụ để cảnh tỉnh.


Đầu năm nay, Bancor đã gặp phải bug khiến tiền của người dùng gặp rủi ro. Hàm thực thi ERC20 transferFrom() đã vô tình được đặt ở chế độ công khai (thay vì private như trong hợp đồng), điều này cho phép bất kỳ ai cũng có thể thực thi nó và rút ví của người dùng.


Bancor đã thực hiện một vụ white-hat hack để ngăn chặn thiệt hại và trả lại tiền cho người dùng.


Câu chuyện về Jhon Doe tại mở đầu mình xin được kể chi tiết lại. Đầu tiên Jhon thấy một trang web khá bắt mắt với hình con mèo dễ thương, tên là UniCats, anh quyết định cho một số tiền của mình vào đây và nghĩ rằng đây có thể là YFI tiếp theo

Jhon quyết định deposit UNI và nhận được thông điệp “Allow this Dapp to spend your UNI” từ Metamask, anh nghĩ nó cũng giống những lần farm trước của anh. Sau đó anh farm $MEOW, nghĩ rằng mình đã kiếm đủ và lấy lại toàn bộ UNI về ví Metamask.


Điều mà John không biết đó là anh đã chấp thuận cho tên lừa đảo Unicats sử dụng không giới hạn số UNI của anh. Và sau đó anh đã mất tổng cộng 36K UNI khi đang ngủ. Anh em có thể theo dõi thêm tại đây.

Tại sao lại cần Revoke địa chỉ ví?

Cách hoạt động của các công cụ Token Approval là sẽ hủy quyền truy cập của các DApp đối với token mà người dùng đã phê duyệt (approve), từ đó giúp người dùng tránh khỏi những rủi ro liên quan đến việc chấp thuận các quyền truy cập từ DApp sử dụng ERC20 token trong ví của mình.


Revoke cũng vậy, ý nghĩa của công cụ này là để giúp anh em tránh mất tiền oan khi hoang mang không biết mình đang chơi App nào, và nó đang yêu cầu quyền gì với ví của mình.


Giống như trong ví dụ với UniCats phía trên, khi giao dịch xong với Dapp, anh em có thể sử dụng Revoke để tắt quyền truy cập từ UniCats vào ví của mình. Nếu Jhon xài Revoke sớm hơn thì có lẽ không xảy ra mất mát hơn $1M như vậy.


Hay một trường hợp gần đây cũng cần phải Revoke đó là OpenSea, khi dự án đã bị Exploited dẫn đến tổng thiệt hại trị giá khoảng 3 triệu đô cho người dùng. Chi tiết về sự việc, anh em tham khảo thêm: Thực hư việc OpenSea bị tấn công.


Một số công cụ Token Approval khác để bảo mật tài sản

Anh em cũng có thể tham khảo một vài app Token Approval sau để bảo mật tài sản của mình, với cách thức hoạt động tương tự với revoke như: Approved.zone, Tac.dappstar.io


Còn để chắc chắn hơn nữa, anh em cũng có thể tạo ra những ví phụ chuyên để giao dịch và cấp phép cho các Dapp, sau khi giao dịch xong anh em lại đưa hết token về ví chính.


Tổng kết

Để kiếm được tiền trên thị trường này đã khó, thế nên anh em cũng nên dành chút thời gian để tìm hiểu về những cách thức bảo mật để tránh bị mất tiền vì không hiểu biết. Trên đây mình đã giới thiệu tới anh em những vấn đề xung quanh việc cấp phép cho Dapp trên ERC20 và hướng dẫn sử dụng revoke để đảm bảo tính bảo mật cho tài khoản của anh em.

0 lượt xem

Bài đăng gần đây

Xem tất cả