Chữ ký bị đánh cắp? Hãy cảnh giác với lừa đảo chữ ký Uniswap Permit2
*Bài viết này được tài trợ bởi nhà nghiên cứu độc lập khách mời của Beosin Spinach Spinach! (twitter@wzxznl) Bài đăng đồng tác giả với nhà nghiên cứu bảo mật Beosin, Sivan.
Hacker, đây là sự tồn tại khiến tất cả mọi người trong hệ sinh thái Web3 sợ hãi.Đối với phía dự án, khi các hacker trên toàn thế giới có thể nhìn chằm chằm vào bạn, bản chất nguồn mở của mã khiến phía dự án sợ viết sai một dòng mã khi phát triển Nếu để sơ hở, một khi xảy ra sự cố về ANTT thì hậu quả khó mà gánh nổi.
Về mặt cá nhân, mọi tương tác hoặc chữ ký trên chuỗi mà bạn thực hiện đều có khả năng bị đánh cắp tài sản nếu bạn không hiểu mình đang làm gì.Do đó, vấn đề bảo mật luôn là một trong những vấn đề rắc rối nhất trong thế giới mã hóa và do đặc điểm của chuỗi khối, một khi tài sản bị đánh cắp, hầu như không có cách nào lấy lại được, vì vậy điều đặc biệt quan trọng là phải có kiến thức bảo mật. trong thế giới mã hóa.
mới gần đây,Rau bina, bạn tốt của Beosin, đã phát hiện ra một phương pháp đánh bắt mới đã hoạt động được gần hai tháng.Miễn là chữ ký bị đánh cắp, phương pháp này cực kỳ ẩn và khó ngăn chặn.Ngoài ra, các địa chỉ đã tương tác với Uniswap có thể gặp rủi ro.Trong bài viết này, Beosin và nhà nghiên cứu độc lập Pincai sẽ phổ biến kỹ thuật lừa đảo chữ ký này để tránh tổn thất tài sản nhiều hơn cho mọi người.
tiêu đề cấp đầu tiên
quá trình
Mới đây, một người bạn (tên tạm thời là Tiểu A) đã tìm thấy Spinach sau khi tài sản trong ví bị đánh cắp, khác với cách đánh cắp thông thường, Tiểu A không tiết lộ khóa cá nhân cũng như không tương tác với hợp đồng của trang web lừa đảo nên Spinach started Vụ trộm cắp tài sản bị điều tra.
Trong trình duyệt blockchain, có thể thấy rằng USDT bị đánh cắp từ ví A nhỏ đã được chuyển thông qua chức năng Chuyển từ.Hãy phổ biến khoa học ở đây. Khi chúng tôi chuyển Mã thông báo trên Ethereum, chúng tôi thực sự gọi chức năng Chuyển của hợp đồng thông minh Mã. Sự khác biệt giữa hai loại này chỉ đơn giản là Chuyển là hoạt động của chính chủ sở hữu tài sản để chuyển Mã thông báo sang các địa chỉ khác và Transfer From là bên thứ ba chuyển Token trong địa chỉ này sang các địa chỉ khác.Điều này cũng có nghĩa là tài sản bị đánh cắp đã được chuyển từ một địa chỉ khác, chứ không phải khóa riêng của ví đã bị rò rỉ.
Bằng cách truy vấn chi tiết giao dịch, chúng tôi có thể tìm thấy một số manh mối chính:
Địa chỉ kết thúc bằng f d5 1 chuyển tài sản của Little A đến địa chỉ kết thúc bằng 0 c 8
Thao tác này tương tác với hợp đồng Permit 2 của Uniswap
Vì vậy, ở đây xuất hiện nghi ngờ, làm thế nào mà địa chỉ kết thúc bằng f d5 1 lại nhận được sự cho phép của nội dung này? Tại sao nó lại liên quan đến Uniswap?
Trước hết, chúng ta cần biết rằng điều kiện tiên quyết để gọi thành công chức năng Chuyển từ là người gọi cần phải có thẩm quyền hạn ngạch của Mã thông báo này, tức là phải phê duyệt. Khi chúng tôi sử dụng một số Dapp Đôi khi, sau khi liên quan đến việc chuyển giao tài sản, trước tiên chúng tôi cần thực hiện thao tác ủy quyền (phê duyệt) để hợp đồng Dapp có quyền chuyển giao tài sản của chúng tôi.
Để giải đáp bí ẩn này, chúng ta cần tiếp tục đào sâu,Và câu trả lời nằm trong bản ghi tương tác của địa chỉ kết thúc bằng f d5 1,Trước khi chuyển từ địa chỉ để chuyển tài sản của Little A, có thể thấy địa chỉ đó cũng đã thực hiện thao tác Giấy phép và đối tượng tương tác của hai thao tác này là hợp đồng Giấy phép 2 của Uniswap, sau đó chức năng Giấy phép này và Giấy phép Uniswap 2 là gì tình huống?
Hợp đồng Uniswap Permit 2 là hợp đồng thông minh mới được Uniswap ra mắt vào cuối năm 2022. Theo tuyên bố chính thức, đây là hợp đồng phê duyệt mã thông báo cho phép chia sẻ và quản lý ủy quyền mã thông báo trong các ứng dụng khác nhau, tạo ra một hệ thống thống nhất hơn và hơn thế nữa Tiết kiệm chi phí, trải nghiệm người dùng an toàn hơn.
Và trong tương lai, khi ngày càng có nhiều dự án tích hợp với Giấy phép 2, Giấy phép 2 có thể đạt được phê duyệt mã thông báo tiêu chuẩn hóa trong tất cả các ứng dụng. Giấy phép 2 sẽ cải thiện trải nghiệm người dùng bằng cách giảm chi phí giao dịch đồng thời tăng tính bảo mật của hợp đồng thông minh.

Mô tả hình ảnh
Nguồn hình ảnh: https://github.com/dragonfly-xyz/useful-solidity-patterns/tree/main/patterns/permit 2
Việc ra mắt Giấy phép 2 có thể thay đổi luật chơi của toàn bộ hệ sinh thái Dapp. Nói một cách đơn giản, phương pháp truyền thống là bạn cần ủy quyền mỗi khi bạn tương tác với một Dapp để chuyển tài sản và Giấy phép 2 có thể lưu bước này. Đi, cái này rất có thể giảm chi phí tương tác của người dùng và mang lại trải nghiệm người dùng tốt hơn.
Giải pháp là Permit 2 hoạt động như một người trung gian giữa người dùng và Dapp. Người dùng chỉ cần ủy quyền quyền của Token đối với hợp đồng Permit 2. Tất cả các Dapp tích hợp hợp đồng Permit 2 đều có thể chia sẻ số tiền ủy quyền này cho người dùng , chi phí tương tác giảm. và trải nghiệm người dùng được cải thiện. Đối với Dapp, việc cải thiện trải nghiệm người dùng mang lại nhiều người dùng và tiền hơn. Đây là một tình huống đôi bên cùng có lợi, nhưng đồng thời nó cũng có thể là con dao hai lưỡi và vấn đề nằm ở 2 tương tác.
Mô tả hình ảnh
Nguồn hình ảnh: https://github.com/dragonfly-xyz/useful-solidity-patterns/tree/main/patterns/permit 2
Mặc dù sự xuất hiện của Permit 2 có thể thay đổi luật chơi của trò chơi Dapp trong tương lai, nhưng có thể thấy đây là con dao hai lưỡi mạnh mẽ, đối với người dùng, chữ ký ngoài chuỗi là mắt xích dễ dàng nhất để phá vỡ sự phòng thủ của họ. ví dụ, khi chúng tôi Khi đăng nhập vào một số Dapp bằng ví, cần có chữ ký để kết nối và hầu hết mọi người không kiểm tra kỹ nội dung của chữ ký và không hiểu nội dung của chữ ký, và đây là phần đáng sợ nhất.
Sau khi hiểu hợp đồng Permit 2, chúng ta có thể hiểu tại sao tài sản bị đánh cắp tương tác với hợp đồng Permit 2 khi chúng ta quay lại sự cố nhỏ A, vì vậy hãy để Spinach tái tạo phương thức lừa đảo chữ ký Permit 2 này, điều đầu tiên rất quan trọng Điều kiện tiên quyết là rằng ví lừa đảo cần phải có Mã thông báo được ủy quyền cho hợp đồng Giấy phép 2 của Uniswap. Spinach nhận thấy rằng miễn là Swap được thực hiện trên Dapp hoặc Uniswap được tích hợp với Giấy phép 2, thì nó cần được ủy quyền cho hợp đồng Giấy phép 2 (hình bên dưới Bảo mật Spinach A plugin được sử dụng).
Một điểm đáng sợ khác là cho dù bạn muốn Swap bao nhiêu, hợp đồng Permit 2 của Uniswap sẽ cho phép bạn ủy quyền toàn bộ số dư của Token theo mặc định. trên giá trị tối đa hoặc giá trị mặc định và giá trị mặc định của Giấy phép 2 là hạn ngạch không giới hạn....

Điều này cũng có nghĩa là miễn là bạn đã tương tác với Uniswap và ủy quyền số tiền cho hợp đồng Permit 2 sau năm 2023, bạn sẽ phải đối mặt với rủi ro lừa đảo này.
tiêu đề cấp đầu tiên
tiêu đề phụ
chức năng cho phép:
Bạn có thể nghĩ về chức năng Giấy phép như một cách để ký hợp đồng trực tuyến. Chức năng này cho phép bạn (PermitSingle) ký trước một"hợp đồng", cho phép những người khác (người chi tiêu) chi tiêu một số mã thông báo của bạn vào một thời điểm nào đó trong tương lai.
Đồng thời, bạn cũng cần cung cấp chữ ký (signature), giống như ký hợp đồng bằng giấy, để chứng minh điều này"hợp đồng"Thực sự là bạn đã ký nó.
Vậy chức năng này hoạt động như thế nào?
Đầu tiên, nó kiểm tra xem thời gian hiện tại có vượt quá ngày hết hạn chữ ký của bạn (sigDeadline) hay không. Giống như hợp đồng bạn đã ký có ngày hết hạn, nếu thời điểm hiện tại vượt quá ngày hết hạn, thì điều này"hợp đồng"Nó không còn có thể được sử dụng và chương trình sẽ dừng trực tiếp.
Tiếp theo, nó kiểm tra xem chữ ký của bạn có thực sự là của bạn không. Chương trình sẽ sử dụng một phương pháp đặc biệt (signature.verify) để kiểm tra chữ ký nhằm đảm bảo rằng chữ ký đó thực sự do bạn ký và không bị người khác giả mạo.
Cuối cùng, nếu kiểm tra vượt qua, chương trình sẽ cập nhật bản ghi để lưu ý rằng bạn đã cho phép người khác sử dụng một số mã thông báo của mình.
tiêu đề phụ
xác minh chức năng:
tiêu đề phụ
_updateChức năng phê duyệt:
Khi xác minh chữ ký được thông qua, hàm _updateApproval sẽ được gọi để cập nhật giá trị ủy quyền, điều đó có nghĩa là quyền của bạn đã được chuyển. Tại thời điểm này, thuận tiện để gọi hàm transferfrom để chuyển mã thông báo đến địa chỉ được chỉ định sau khi được ủy quyền, như được hiển thị trong mã bên dưới.
Chà, sau khi giải thích chức năng cấp phép, chúng ta hãy xem các giao dịch thực trên chuỗi, chúng ta có thể tìm hiểu chi tiết về sự tương tác này:
chủ sở hữu là địa chỉ ví của Little A (số cuối 308 a)
Trong phần Chi tiết, bạn có thể xem địa chỉ hợp đồng Token được ủy quyền (USDT) và số tiền cũng như các thông tin khác
Spender là địa chỉ hacker có đuôi f d5 1
sigDeadline là thời gian có hiệu lực của chữ ký và chữ ký là thông tin chữ ký của Little A
Và nhìn lại thành tích tương tác của Tiểu A, chúng ta sẽ thấy rằng,Khi cậu bé A sử dụng Uniswap trước đây, cậu ấy đã nhấp vào giới hạn ủy quyền mặc định, gần như không giới hạn.
Chỉ cần phát lại nó,Little A đã ủy quyền Uniswap Permit 2 hạn ngạch USDT không giới hạn trong quá trình sử dụng Uniswap trước đó và Little A đã vô tình rơi vào bẫy lừa đảo chữ ký Permit 2 do tin tặc thiết kế khi thực hiện các thao tác ví và hacker đã lấy được chữ ký của Little A. Sau đó, hai hoạt động của Giấy phép và Chuyển từ được thực hiện trong hợp đồng Giấy phép 2 sử dụng chữ ký của Little A để chuyển tài sản của Little A đi.Mô tả hình ảnh
Nguồn: https://etherscan.io/address/0x000000000022d473030f116ddee9f6b43ac78ba3
Mô tả hình ảnh
tiêu đề cấp đầu tiên
chữ
Xét rằng hợp đồng Uniswap Permit 2 có thể trở nên phổ biến hơn trong tương lai và nhiều dự án sẽ tích hợp hợp đồng Permit 2 để chia sẻ quyền hạn, chúng ta có thể nghĩ ra các phương pháp phòng ngừa hiệu quả như sau:
1 Hiểu và nhận biết nội dung chữ ký:
Định dạng chữ ký của Permit thường bao gồm các định dạng chính là Owner, Spender, value, nonce, deadline Nếu muốn tận hưởng sự tiện lợi và chi phí thấp của Permit 2, bạn phải học cách nhận biết dạng chữ ký này. (Tải xuống plugin bảo mật là một lựa chọn tốt)

Chúng tôi đề xuất plug-in chống lừa đảo Beosin Alert sau đây cho độc giả và bạn bè, plugin này có thể xác định hầu hết các trang web lừa đảo trong trường Web3 và bảo vệ an toàn cho ví và tài sản của bạn.
Tải xuống plug-in chống lừa đảo:
https://chrome.google.com/webstore/detail/beosin-alert/lgbhcpagiobjacpmcgckfgodjeogceji? hl=en
2 Ví tài sản và ví tương tác được sử dụng riêng:
Nếu bạn có một lượng lớn tài sản, nên đặt tất cả tài sản vào ví lạnh và đặt một lượng tiền nhỏ vào ví tương tác trên chuỗi, điều này có thể giảm đáng kể tổn thất trong trường hợp lừa đảo.
3 Không ủy quyền số tiền quá mức cho hợp đồng Giấy phép 2 hoặc hủy bỏ ủy quyền:
Khi thực hiện Hoán đổi trên Uniswap, bạn chỉ ủy quyền số tiền bạn muốn tương tác, do đó, mặc dù mỗi tương tác yêu cầu ủy quyền lại, sẽ có một số chi phí tương tác, nhưng nó có thể tránh được hành vi lừa đảo chữ ký của Giấy phép 2. Nếu bạn đã ủy quyền hạn ngạch, bạn có thể tìm phần bổ trợ bảo mật tương ứng để hủy ủy quyền.
4 Xác định bản chất của mã thông báo và liệu nó có hỗ trợ chức năng cho phép hay không:
Trong tương lai, ngày càng nhiều mã thông báo ERC 20 có thể sử dụng giao thức mở rộng này để thực hiện chức năng cấp phép. Đối với bạn, bạn cần chú ý xem mã thông báo bạn nắm giữ có hỗ trợ chức năng này hay không. Nếu nó hỗ trợ thì giao dịch hoặc thao tác của mã thông báo phải hết sức cẩn thận và kiểm tra nghiêm ngặt xem từng chữ ký không xác định có phải là chữ ký của chức năng cho phép hay không.
5 Nếu có mã thông báo được lưu trữ trên các nền tảng khác sau khi bị lừa, cần xây dựng kế hoạch giải cứu toàn diện:
Khi bạn phát hiện mình bị lừa đảo và token của bạn đã bị tin tặc chuyển đi nhưng bạn vẫn có token được lưu trữ trên các nền tảng khác thông qua các phương thức như cầm cố, v.v., bạn cần rút chúng và chuyển chúng đến một địa chỉ an toàn. lần này, bạn cần biết rằng tin tặc có thể luôn theo dõi bạn Số dư mã thông báo của địa chỉ, bởi vì anh ta có chữ ký của bạn, chỉ cần mã thông báo xuất hiện trên địa chỉ bị đánh cắp của bạn, tin tặc có thể chuyển trực tiếp. Tại thời điểm này, cần phải xây dựng một quy trình giải cứu mã thông báo hoàn chỉnh. Hai quá trình trích xuất mã thông báo và chuyển mã thông báo cần được thực hiện cùng nhau. Các giao dịch của hacker không thể được đưa vào đó. Có thể sử dụng chuyển MEV, yêu cầu một số kiến thức về blockchain và kỹ năng viết mã. Bạn có thể tìm một công ty bảo mật chuyên nghiệp như nhóm Beosin để sử dụng tập lệnh ưu tiên giao dịch để đạt được điều đó.
Tôi tin rằng sẽ ngày càng có nhiều hoạt động đánh bắt cá dựa trên Giấy phép 2 trong tương lai,tiêu đề phụ
Reference:
https://t.co/G9Mnq8eUle
https://github.com/dragonfly-xyz/useful-solidity-patterns/tree/main/patterns/permit2


