Khi tương tác với DApps, người dùng cần chú ý kiểm soát số lượng Token được ủy quyền, kiểm tra nội dung chữ ký và các tình huống ủy quyền bất thường.
Được viết bởi: Lisa
lý lịch
Vào ngày 11 tháng 5, người dùng Twitter "pineapple.eth" đã tweet rằng ví của anh ấy đã bị đánh cắp do nhấp nhầm vào một trang web lừa đảo (syncswap[.]network) và anh ấy đã mất hơn 100 đô la.
(
Số tiền thất thoát tuy không lớn nhưng ẩn chứa trong đó là rủi ro bảo mật rất lớn, nạn nhân thường mất tài sản rất lớn vì chữ ký “kín đáo” có nguy cơ “không nhìn thấy”. Đó là lý do tại sao chúng tôi viết bài này.
Theo mô tả của nạn nhân, các giao dịch bị đánh cắp như sau:
(
(
Từ hai giao dịch này, người gọi hợp đồng (0x00002…d0000) chuyển 34,87 USDC trên địa chỉ của nạn nhân (0xA4089…82C3) đến (0x8256…D6B8) và chuyển 81,36 USDC đến (0x5A69…1C17). Nếu bạn chỉ nhìn vào chức năng transferFrom, không khó để thấy rằng chức năng của chức năng này là cho phép bên thứ ba bắt đầu giao dịch để chuyển tài sản kỹ thuật số có liên quan từ tài khoản của chủ sở hữu sang tài khoản của người nhận.
Sau đó, phân tích địa chỉ của người gọi hợp đồng (0x00002...d0000) và thấy rằng có một hoạt động cấp phép bổ sung, hoạt động này không có trong hồ sơ giao dịch của nạn nhân. Vai trò của giấy phép là gì?
(
Giấy phép là gì?
Theo phần giới thiệu chính thức, giấy phép đã được đưa vào giao thức ERC20 trong EIP-2612 và người dùng có thể tương tác với hợp đồng ứng dụng bằng cách đính kèm chữ ký ủy quyền (giấy phép) mà không cần ủy quyền trước. Cụ thể, chúng ta đều biết rằng trong giao dịch tiền tệ ERC20, A có thể gọi chức năng phê duyệt để ủy quyền cho B, tức là ủy quyền mã thông báo do A chỉ định cho một tài khoản khác để hoạt động và phải là chủ sở hữu của tài khoản này để gọi phê duyệt chức năng. Chức năng của chức năng giấy phép là A ký trước đối tượng ủy quyền trong chuỗi và thông báo cho B về chữ ký đã thu được và B có thể sử dụng chữ ký này để gọi giấy phép để thực hiện thao tác ủy quyền của A (sử dụng transferFrom để chuyển khoản trợ cấp ) , A có thể chuyển mã thông báo được chỉ định mà không cần gửi giao dịch và cho dù anh ta có phải là chủ sở hữu của tài khoản hay không, anh ta có thể thực hiện giấy phép để cho phép hoạt động. Ngoài ra, Uniswap đã phát hành tiêu chuẩn ủy quyền Token mới Permit2.
Sau đây là so sánh giữa phê duyệt và giấy phép:
chức năng phê duyệt (địa chỉ usr, uint wad) trả về bên ngoài (bool)
{
trợ cấp[msg.sender] [usr] = lội;
…
}
giấy phép chức năng (
người giữ địa chỉ, người sử dụng địa chỉ,
uint256 nonce, uint256 hết hạn, cho phép bool,
uint8 v, byte32 r, byte32 s
) bên ngoài {
…
phụ cấp [holder] [spender] = lội;
…
}
Sau khi hiểu những điều cơ bản và sau đó quay lại chính sự kiện lừa đảo, bạn có thể gửi chức năng cho phép này với 7 tham số:
chủ sở hữu: địa chỉ được ủy quyền
người chi tiêu: Người được ủy quyền
giá trị: số lượng mã thông báo được ủy quyền được cung cấp
deadline: là mốc thời gian, chỉ có giá trị trước thời điểm đã cho
v, r, s: dữ liệu chữ ký
Trong số đó, thời hạn là 1714509304969 và giá trị là 116239404, có nghĩa là ủy quyền có hiệu lực cho đến 00:42 ngày 22 tháng 8 (GMT) lúc 56300, gần như vô thời hạn. Và số lượng mã thông báo được ủy quyền là 116,239404 USDC, bằng với số tiền bị nạn nhân đánh cắp. Các giá trị của v, r và s là dữ liệu chữ ký sau khi người dùng (chủ sở hữu) đăng nhập vào trang web lừa đảo và chức năng giấy phép sẽ xác minh tính hợp lệ của dữ liệu chữ ký. Sau khi xác minh chữ ký được thông qua, mã thông báo của người dùng sẽ được ủy quyền cho tin tặc (người chi tiêu).
Toàn bộ quá trình rất rõ ràng: nạn nhân đã ký chữ ký và gửi nó đến trang web lừa đảo nhưng không tải nó lên chuỗi, sau khi lấy thông tin chữ ký, hacker đã gửi giấy phép trên chuỗi, tức là được gọi là phê duyệt ủy quyền . Việc ký kết được thực hiện ngoài chuỗi mà không tốn bất kỳ khoản xăng nào. Nhưng cần làm rõ, hết gas ở đây không có nghĩa là không tiêu thụ gas mà là người ký (nạn nhân) không cần phải trả gas cho việc ủy quyền, chuyển nhượng.
Không còn nghi ngờ gì nữa, tương tự như phê duyệt lừa đảo được ủy quyền, giấy phép nguy hiểm hơn phê duyệt lừa đảo được ủy quyền, xét cho cùng, miễn là chữ ký bị đánh cắp, thì sẽ có được ủy quyền. Ví dụ: chức năng lệnh chờ trong dex chỉ cần người dùng ký một thông báo nhất định và người dùng có thể ủy thác tài sản cho dex xử lý mà không phải trả gas.Tài sản của người dùng có thể bị mất. Theo như chúng tôi biết, một số ví sẽ giải mã và hiển thị thông tin chữ ký phê duyệt lừa đảo ủy quyền, nhưng ví hầu như không có cảnh báo cho phép lừa đảo chữ ký và người dùng có nguy cơ bị tấn công cao hơn. Đồng thời, chữ ký giấy phép là một hành vi ngoài chuỗi và rất khó để người dùng nhận thấy liệu chữ ký của họ có bị rò rỉ hay không.
Đường mòn sương mù
Hiện địa chỉ hacker đã bị MistTrack đánh dấu là địa chỉ lừa đảo độc hại.
Địa chỉ 1: 0x00002644e79602F056B03235106A9963826d0000
Địa chỉ 2: 0x82563Ba592986Cb277d67B2E7c56ab3BB3FDD6B8
Địa chỉ 3: 0x5A697967F0791d12db8A0f92344Abc6DD07a1C17
Cả USDC của nạn nhân đã được đổi thành ETH.
Sử dụng MistTrack để phân tích các loại tiền tệ ETH, WBTC, USDT, USDC, SHIB, DAI, WETH, DAI, stETH, APE Hiện tại địa chỉ 1 kiếm được lợi nhuận khoảng 120.000 USD, địa chỉ 2 kiếm được lợi nhuận khoảng 200.000 USD và địa chỉ 3 kiếm được lợi nhuận Khoảng 2.000 đô la. Ngoài ra, theo phân tích của Scam Sniffer, một nền tảng chống gian lận Web3, tính đến ngày 9 tháng 5, tổng cộng hơn 300 nạn nhân đã bị đánh cắp tài sản trị giá khoảng 690.000 đô la Mỹ bằng chữ ký độc hại dựa trên Permit2. trên Uniswap đến ngày 9 tháng 5 Cho đến nay, gần 670.000 địa chỉ trên mạng chính Ethereum đã được cấp phép Permit2. Tất nhiên, dữ liệu này chỉ là phần nổi của tảng băng chìm đối với toàn bộ bức tranh về băng nhóm này.
Tóm tắt
Bài viết này chủ yếu bắt đầu với một trường hợp bị đánh cắp thực tế và đưa ra rủi ro về chữ ký giấy phép. Nhóm bảo mật SlowMist nhắc nhở bạn không mở các trang web không rõ nguồn gốc để tự ý hoạt động. Khi tương tác với DApps, hãy chú ý kiểm soát số lượng Token được ủy quyền cho hợp đồng và kiểm tra cẩn thận nội dung chữ ký. Sử dụng các công cụ ủy quyền như RevokeCash theo thời gian theo thời gian (kiểm tra xem có ủy quyền bất thường không và Bạn có thể sử dụng công cụ quản lý ủy quyền cho Uniswap Permit2 (để kiểm tra, nếu có bất kỳ ủy quyền bất thường nào, vui lòng hủy ủy quyền kịp thời.
Link tham khảo:
Xem bản gốc
Nội dung chỉ mang tính chất tham khảo, không phải là lời chào mời hay đề nghị. Không cung cấp tư vấn về đầu tư, thuế hoặc pháp lý. Xem Tuyên bố miễn trừ trách nhiệm để biết thêm thông tin về rủi ro.
Phân tích chữ ký cho phép: Chữ ký ngoài chuỗi cũng có thể bắt được Mã thông báo của bạn không?
Được viết bởi: Lisa
lý lịch
Vào ngày 11 tháng 5, người dùng Twitter "pineapple.eth" đã tweet rằng ví của anh ấy đã bị đánh cắp do nhấp nhầm vào một trang web lừa đảo (syncswap[.]network) và anh ấy đã mất hơn 100 đô la.
(
Số tiền thất thoát tuy không lớn nhưng ẩn chứa trong đó là rủi ro bảo mật rất lớn, nạn nhân thường mất tài sản rất lớn vì chữ ký “kín đáo” có nguy cơ “không nhìn thấy”. Đó là lý do tại sao chúng tôi viết bài này.
Theo mô tả của nạn nhân, các giao dịch bị đánh cắp như sau:
(
Từ hai giao dịch này, người gọi hợp đồng (0x00002…d0000) chuyển 34,87 USDC trên địa chỉ của nạn nhân (0xA4089…82C3) đến (0x8256…D6B8) và chuyển 81,36 USDC đến (0x5A69…1C17). Nếu bạn chỉ nhìn vào chức năng transferFrom, không khó để thấy rằng chức năng của chức năng này là cho phép bên thứ ba bắt đầu giao dịch để chuyển tài sản kỹ thuật số có liên quan từ tài khoản của chủ sở hữu sang tài khoản của người nhận.
Sau đó, phân tích địa chỉ của người gọi hợp đồng (0x00002...d0000) và thấy rằng có một hoạt động cấp phép bổ sung, hoạt động này không có trong hồ sơ giao dịch của nạn nhân. Vai trò của giấy phép là gì?
(
Giấy phép là gì?
Theo phần giới thiệu chính thức, giấy phép đã được đưa vào giao thức ERC20 trong EIP-2612 và người dùng có thể tương tác với hợp đồng ứng dụng bằng cách đính kèm chữ ký ủy quyền (giấy phép) mà không cần ủy quyền trước. Cụ thể, chúng ta đều biết rằng trong giao dịch tiền tệ ERC20, A có thể gọi chức năng phê duyệt để ủy quyền cho B, tức là ủy quyền mã thông báo do A chỉ định cho một tài khoản khác để hoạt động và phải là chủ sở hữu của tài khoản này để gọi phê duyệt chức năng. Chức năng của chức năng giấy phép là A ký trước đối tượng ủy quyền trong chuỗi và thông báo cho B về chữ ký đã thu được và B có thể sử dụng chữ ký này để gọi giấy phép để thực hiện thao tác ủy quyền của A (sử dụng transferFrom để chuyển khoản trợ cấp ) , A có thể chuyển mã thông báo được chỉ định mà không cần gửi giao dịch và cho dù anh ta có phải là chủ sở hữu của tài khoản hay không, anh ta có thể thực hiện giấy phép để cho phép hoạt động. Ngoài ra, Uniswap đã phát hành tiêu chuẩn ủy quyền Token mới Permit2.
Sau đây là so sánh giữa phê duyệt và giấy phép:
chức năng phê duyệt (địa chỉ usr, uint wad) trả về bên ngoài (bool)
{
trợ cấp[msg.sender] [usr] = lội;
…
}
giấy phép chức năng (
người giữ địa chỉ, người sử dụng địa chỉ,
uint256 nonce, uint256 hết hạn, cho phép bool,
uint8 v, byte32 r, byte32 s
) bên ngoài {
…
phụ cấp [holder] [spender] = lội;
…
}
Sau khi hiểu những điều cơ bản và sau đó quay lại chính sự kiện lừa đảo, bạn có thể gửi chức năng cho phép này với 7 tham số:
Trong số đó, thời hạn là 1714509304969 và giá trị là 116239404, có nghĩa là ủy quyền có hiệu lực cho đến 00:42 ngày 22 tháng 8 (GMT) lúc 56300, gần như vô thời hạn. Và số lượng mã thông báo được ủy quyền là 116,239404 USDC, bằng với số tiền bị nạn nhân đánh cắp. Các giá trị của v, r và s là dữ liệu chữ ký sau khi người dùng (chủ sở hữu) đăng nhập vào trang web lừa đảo và chức năng giấy phép sẽ xác minh tính hợp lệ của dữ liệu chữ ký. Sau khi xác minh chữ ký được thông qua, mã thông báo của người dùng sẽ được ủy quyền cho tin tặc (người chi tiêu).
Toàn bộ quá trình rất rõ ràng: nạn nhân đã ký chữ ký và gửi nó đến trang web lừa đảo nhưng không tải nó lên chuỗi, sau khi lấy thông tin chữ ký, hacker đã gửi giấy phép trên chuỗi, tức là được gọi là phê duyệt ủy quyền . Việc ký kết được thực hiện ngoài chuỗi mà không tốn bất kỳ khoản xăng nào. Nhưng cần làm rõ, hết gas ở đây không có nghĩa là không tiêu thụ gas mà là người ký (nạn nhân) không cần phải trả gas cho việc ủy quyền, chuyển nhượng.
Không còn nghi ngờ gì nữa, tương tự như phê duyệt lừa đảo được ủy quyền, giấy phép nguy hiểm hơn phê duyệt lừa đảo được ủy quyền, xét cho cùng, miễn là chữ ký bị đánh cắp, thì sẽ có được ủy quyền. Ví dụ: chức năng lệnh chờ trong dex chỉ cần người dùng ký một thông báo nhất định và người dùng có thể ủy thác tài sản cho dex xử lý mà không phải trả gas.Tài sản của người dùng có thể bị mất. Theo như chúng tôi biết, một số ví sẽ giải mã và hiển thị thông tin chữ ký phê duyệt lừa đảo ủy quyền, nhưng ví hầu như không có cảnh báo cho phép lừa đảo chữ ký và người dùng có nguy cơ bị tấn công cao hơn. Đồng thời, chữ ký giấy phép là một hành vi ngoài chuỗi và rất khó để người dùng nhận thấy liệu chữ ký của họ có bị rò rỉ hay không.
Đường mòn sương mù
Hiện địa chỉ hacker đã bị MistTrack đánh dấu là địa chỉ lừa đảo độc hại.
Địa chỉ 1: 0x00002644e79602F056B03235106A9963826d0000
Địa chỉ 2: 0x82563Ba592986Cb277d67B2E7c56ab3BB3FDD6B8
Địa chỉ 3: 0x5A697967F0791d12db8A0f92344Abc6DD07a1C17
Cả USDC của nạn nhân đã được đổi thành ETH.
Sử dụng MistTrack để phân tích các loại tiền tệ ETH, WBTC, USDT, USDC, SHIB, DAI, WETH, DAI, stETH, APE Hiện tại địa chỉ 1 kiếm được lợi nhuận khoảng 120.000 USD, địa chỉ 2 kiếm được lợi nhuận khoảng 200.000 USD và địa chỉ 3 kiếm được lợi nhuận Khoảng 2.000 đô la. Ngoài ra, theo phân tích của Scam Sniffer, một nền tảng chống gian lận Web3, tính đến ngày 9 tháng 5, tổng cộng hơn 300 nạn nhân đã bị đánh cắp tài sản trị giá khoảng 690.000 đô la Mỹ bằng chữ ký độc hại dựa trên Permit2. trên Uniswap đến ngày 9 tháng 5 Cho đến nay, gần 670.000 địa chỉ trên mạng chính Ethereum đã được cấp phép Permit2. Tất nhiên, dữ liệu này chỉ là phần nổi của tảng băng chìm đối với toàn bộ bức tranh về băng nhóm này.
Tóm tắt
Bài viết này chủ yếu bắt đầu với một trường hợp bị đánh cắp thực tế và đưa ra rủi ro về chữ ký giấy phép. Nhóm bảo mật SlowMist nhắc nhở bạn không mở các trang web không rõ nguồn gốc để tự ý hoạt động. Khi tương tác với DApps, hãy chú ý kiểm soát số lượng Token được ủy quyền cho hợp đồng và kiểm tra cẩn thận nội dung chữ ký. Sử dụng các công cụ ủy quyền như RevokeCash theo thời gian theo thời gian (kiểm tra xem có ủy quyền bất thường không và Bạn có thể sử dụng công cụ quản lý ủy quyền cho Uniswap Permit2 (để kiểm tra, nếu có bất kỳ ủy quyền bất thường nào, vui lòng hủy ủy quyền kịp thời.