
Giải thích bằng ngôn ngữ đơn giản về logic cơ bản của việc lừa đảo Web3: Lừa đảo ủy quyền, sự khác biệt giữa Permit và Permit2
Tuyển chọn TechFlowTuyển chọn TechFlow

Giải thích bằng ngôn ngữ đơn giản về logic cơ bản của việc lừa đảo Web3: Lừa đảo ủy quyền, sự khác biệt giữa Permit và Permit2
Không chơi nữa, trả tiền lại cho tôi.
Tác giả: Bocai
Chỉ mới ký tên một cái, sao tiền của tôi đã mất rồi?? "Câu kéo bằng chữ ký" hiện đang trở thành hình thức lừa đảo yêu thích nhất của các hacker trong thế giới Web3. Dạo gần đây tôi thấy đại ca Yu Xian cùng nhiều công ty ví và an ninh liên tục phổ biến kiến thức về việc bị lừa khi ký tên, nhưng mỗi ngày vẫn có vô số người mắc bẫy.
Theo Bocai, một trong những lý do là phần lớn người dùng không hiểu rõ cơ chế hoạt động nền tảng của ví, đồng thời门槛 học tập quá cao đối với những ai không am hiểu kỹ thuật. Vì vậy, Bocai quyết định làm một bản giải thích dưới dạng minh họa về bản chất của việc câu chữ ký, cố gắng diễn đạt bằng ngôn ngữ đơn giản nhất để cả người không biết kỹ thuật cũng có thể hiểu được.
Trước tiên, chúng ta cần biết rằng khi dùng ví chỉ có hai thao tác: «ký tên» và «tương tác». Cách hiểu đơn giản nhất là: ký tên xảy ra bên ngoài blockchain (off-chain), không cần trả phí Gas; còn tương tác thì diễn ra trên blockchain (on-chain), cần trả phí Gas.
Thường thì việc ký tên nhằm xác minh danh tính của bạn, ví dụ như đăng nhập ví. Khi bạn muốn giao dịch token trên Uniswap, trước tiên phải kết nối ví. Lúc này bạn cần ký một chữ ký để thông báo cho trang web: «Tôi là chủ sở hữu ví này», sau đó bạn mới sử dụng được Uniswap. Thao tác này không gây bất kỳ thay đổi nào về dữ liệu hay trạng thái trên blockchain nên không mất phí.

Còn thao tác tương tác là khi bạn thực sự muốn hoán đổi token trên Uniswap. Bạn cần chi một khoản phí để thông báo tới hợp đồng thông minh USDT rằng: «Tôi muốn dùng 100 USDT để đổi lấy 1 token Bocai, tôi cho phép Uniswap di chuyển 100 USDT của tôi». Thao tác này gọi là cấp quyền (approve). Sau đó bạn lại phải trả thêm một khoản phí để nói với hợp đồng thông minh Uniswap: «Bây giờ tôi chính thức dùng 100 USDT để đổi lấy 1 token Bocai, bạn có thể tiến hành thao tác ngay». Như vậy bạn đã hoàn tất việc đổi 100 USDT lấy 1 token Bocai.

Sau khi hiểu sơ qua sự khác biệt giữa ký tên và tương tác, giờ ta sẽ tìm hiểu nguyên lý bị lừa đảo. Bocai sẽ liệt kê ba phương thức khác nhau: lừa đảo qua cấp quyền (approve), lừa đảo qua chữ ký Permit và lừa đảo qua chữ ký Permit2 — ba kiểu lừa rất phổ biến.
Trước tiên là lừa đảo qua cấp quyền — một trong những thủ đoạn cổ điển nhất trong Web3. Đúng như tên gọi, nó lợi dụng cơ chế cấp quyền (approve). Như ví dụ Uniswap phía trên đã nói, cấp quyền nghĩa là thông báo với hợp đồng thông minh rằng: «Tôi cho phép bạn di chuyển bao nhiêu token xxx của tôi». Hacker có thể tạo một trang web giả mạo, giao diện đẹp đẽ giống hệt một dự án NFT thật, ở giữa là nút to đùng ghi «Nhận airdrop của bạn». Nhưng thực tế, khi bạn nhấn vào, cửa sổ ví hiện lên lại là yêu cầu bạn cấp quyền token của mình cho địa chỉ hacker. Nếu lúc đó bạn bấm xác nhận, xin chúc mừng, hacker vừa hoàn thành chỉ tiêu KPI của mình.

Tuy nhiên, hình thức lừa đảo qua cấp quyền có một điểm yếu: vì phải trả phí Gas, nên hiện nay nhiều người khá cảnh giác với các thao tác phải chi tiền. Chỉ cần liếc nhìn một chút khi truy cập trang lạ là có thể phát hiện điều bất thường, nên loại hình này tương đối dễ phòng tránh.
Vậy đến nhân vật chính hôm nay: lừa đảo bằng chữ ký Permit và Permit2 — vùng đất đen tối hàng đầu trong lĩnh vực bảo mật tài sản Web3. Vì sao khó phòng tránh đến vậy? Vì mỗi lần dùng DApp bạn đều phải ký tên để đăng nhập ví, điều này khiến nhiều người hình thành phản xạ tự động: «Thao tác này an toàn mà». Cộng thêm việc không mất phí và phần đông không hiểu rõ từng chữ ký ẩn chứa ý nghĩa gì.
Ta hãy tìm hiểu cơ chế Permit trước. Permit là một chức năng mở rộng dành cho việc cấp quyền theo chuẩn ERC-20. Ví dụ như USDT mà chúng ta dùng hàng ngày là token ERC-20. Tóm lại, bạn có thể ký tên để cho phép người khác di chuyển token của mình. Chúng ta biết rằng thao tác cấp quyền (Approve) là bạn trả phí để thông báo với hợp đồng thông minh rằng: «Bạn có thể di chuyển xxx lượng token của tôi». Còn Permit giống như bạn ký tên trên một «tờ giấy» đưa cho ai đó, trên đó viết: «Tôi cho phép người XXX di chuyển xxx lượng token của tôi». Người này sẽ mang «tờ giấy» đó đến hợp đồng thông minh và trả một khoản phí Gas để nói rằng: «Anh ta cho phép tôi di chuyển xxx lượng token của anh ta». Thế là tiền của bạn có thể bị người khác rút đi. Trong quá trình này, bạn chỉ đơn thuần ký một chữ ký, nhưng đằng sau đó là việc bạn cho phép người khác gọi lệnh cấp quyền (Approve) và chuyển token của bạn. Hacker chỉ cần tạo một trang web lừa đảo, thay nút đăng nhập ví bằng một nút yêu cầu ký Permit, là có thể dễ dàng đánh cắp tài sản của bạn.

Vậy Permit2 là gì? Thực ra Permit2 không phải là chức năng của ERC-20, mà là một tính năng do Uniswap tung ra để tiện lợi cho người dùng. Như ví dụ trước, để dùng USDT đổi token Bocai trên Uniswap, bạn phải cấp quyền (Approve) một lần, rồi mới tiến hành giao dịch — mất hai lần phí Gas. Do đó Uniswap nghĩ ra cách: «Bạn cứ cấp toàn bộ hạn mức cho tôi luôn đi, mỗi lần giao dịch bạn chỉ cần ký tên, tôi sẽ xử lý giúp bạn». Tính năng này giúp người dùng Uniswap chỉ cần trả một lần phí Gas khi sử dụng, và vì đây là thao tác ký tên nên thực tế phí Gas không phải bạn trả, mà do hợp đồng Permit2 trả hộ, nhưng khoản phí này sẽ được khấu trừ từ lượng token bạn nhận được sau giao dịch.

Tuy nhiên, điều kiện để bị lừa bởi Permit2 là bạn từng dùng Uniswap và đã cấp quyền hạn mức vô hạn cho hợp đồng thông minh Permit2. Vì hiện tại thao tác mặc định của Uniswap là cấp quyền hạn mức vô hạn, nên số lượng người dùng đáp ứng điều kiện này là khá lớn. Hacker chỉ cần lừa bạn ký tên là có thể rút token của bạn (chỉ với những token đã từng cấp quyền).
Tóm lại, bản chất của lừa đảo qua cấp quyền là bạn trả tiền để nói với hợp đồng thông minh: «Tôi cho phép bạn di chuyển token của tôi sang địa chỉ hacker». Bản chất của lừa đảo bằng chữ ký là bạn ký một «tờ giấy» cho phép người khác di chuyển tài sản của mình, rồi đưa tờ giấy đó cho hacker; hacker sẽ dùng nó để trả phí và nói với hợp đồng thông minh: «Tôi muốn chuyển token của anh ta sang cho tôi». Permit và Permit2 hiện là hai vùng trọng điểm bị lừa bằng chữ ký. Permit là chức năng mở rộng cấp quyền của ERC-20, còn Permit2 là tính năng mới do Uniswap triển khai.
Vậy hiểu được nguyên lý rồi, làm sao để phòng tránh?
1. Trước tiên và quan trọng nhất là phải rèn luyện ý thức an toàn. Mỗi thao tác với ví đều cần kiểm tra kỹ xem bạn đang làm gì?
2. Tách biệt ví chứa tài sản lớn và ví dùng để chơi trên mạng lưới. Nếu chẳng may bị lừa, tổn thất cũng được giảm thiểu tối đa.
3. Học cách nhận diện định dạng chữ ký Permit và Permit2. Chỉ cần thấy các nội dung ký tên dưới đây, bạn cần lập tức cảnh giác:
-
Interactive: trang web tương tác
-
Owner: địa chỉ bên ủy quyền
-
Spender: địa chỉ bên được ủy quyền
-
Value: số lượng được cấp quyền
-
Nonce: số ngẫu nhiên
-
Deadline: thời hạn hiệu lực

Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News










