
Sau EIP-3074, chữ ký độc hại có thể khiến tài khoản Ethereum bị cạn kiệt tiền không?
Tuyển chọn TechFlowTuyển chọn TechFlow

Sau EIP-3074, chữ ký độc hại có thể khiến tài khoản Ethereum bị cạn kiệt tiền không?
Trường người gọi trong chữ ký EIP-3074 rất quan trọng, một người gọi xấu có thể đánh cắp tiền của bạn.
Tác giả: lightclients
Dịch: MetaCat

Sau EIP-3074, một chữ ký sai có thể làm cạn kiệt toàn bộ số dư trên tài khoản Ethereum của bạn.
Đúng vậy, điều này là thật.
Tác giả đồng sáng lập EIP-3074 đây! Trước khi mọi chuyện trở nên mất kiểm soát hơn, hãy để tôi tạm thời xoa dịu nỗi lo này.
Trước tiên: Tôi chưa từng nghe nói về bất kỳ ví nào hiện tại hỗ trợ việc ký dữ liệu không có tiền tố. Điều này có nghĩa là hiện tại không có ví nào hỗ trợ EIP-3074. Dù bạn lướt qua bao nhiêu bảng điều khiển hay bật bao nhiêu tính năng nâng cao đi nữa thì bạn vẫn không thể ký tin nhắn theo chuẩn EIP-3074 vào lúc này.
Các tin nhắn bạn ký để "đăng nhập" vào dapp sử dụng một tiêu chuẩn hoàn toàn khác với EIP-3074, dựa trên EIP-191. Tiêu chuẩn này sẽ thêm các dữ liệu sau vào tin nhắn mà bạn ký:
0x19 <0x45 (E)> <thereum Signed Message:\n" + len(message)> <dữ liệu cần ký>
Đây là lý do tại sao không thể lừa một người đang đăng nhập vào dapp ký một giao dịch Ethereum hợp lệ thực sự.
Các giao dịch được bắt đầu bằng một byte giá trị tiền tố:
0x01 - giao dịch 2930
0x02 - giao dịch 1559
0x03 - giao dịch 4844
Xem thêm tại: https://github.com/ethereum/execution-specs/tree/master/lists/signature-types
EIP-3074 dự kiến sẽ sử dụng tiền tố 0x04. Điều này sẽ loại bỏ sự mơ hồ giữa nó và tất cả các loại dữ liệu có thể ký khác trong Ethereum. Các ví phải chủ động chọn cho phép người dùng ký các tin nhắn này.
Tùy thuộc vào cách cụ thể mà ví tích hợp EIP-3074, có thể tạo ra tình huống khiến người dùng dễ bị lợi dụng hơn. Để hiểu rõ điểm này, chúng ta cần đảm bảo mình hiểu cách thức hoạt động của chữ ký EIP-3074.
Tin nhắn xác thực dùng để xây dựng chữ ký có các trường như sau. Quan trọng nhất, nó bao gồm một địa chỉ người gọi (caller address). Đây là địa chỉ duy nhất mà AUTH coi là hợp lệ cho chữ ký.

Để một tài khoản bị rút sạch số dư, phải thỏa mãn đồng thời cả hai điều kiện sau:
1) Ví cần cho phép người dùng ký tới bất kỳ địa chỉ người gọi (invoker address) nào,
2) Người dùng không xác minh xem người gọi (invoker) có đáng tin cậy hay không.
Điều đó có nghĩa là, nếu người dùng thực hiện bất kỳ thao tác nào trong số này đều sẽ không có vấn đề gì.
Chúng tôi mong muốn phần mềm ví hiểu rằng: người gọi (invoker) trong EIP-3074 giống như một phần mở rộng mã phần mềm ví hơn là một hợp đồng. Ví không cho phép người dùng tự do chạy mã tùy ý và truy cập khóa riêng (pk) của họ; tương tự như vậy, họ cũng không nên cho phép người dùng ủy quyền (delegate) tài khoản Ethereum của họ một cách tùy tiện.
Do đó, nếu phần mềm ví tích hợp EIP-3074 một cách không an toàn, và người dùng không xác minh người gọi họ đang tương tác, thì có thể vô tình ủy quyền cho một người gọi độc hại. Tuy nhiên, việc này vẫn có thể được hủy bỏ bằng cách gửi một giao dịch đơn từ EOA. Hành động này sẽ thu hồi tất cả các chữ ký AUTH "đang diễn ra".
Ít nhất, phần mềm ví nên biến việc ký tin nhắn EIP-3074 thành một hành động nghiêm trọng, ở mức độ quan trọng như việc xuất khóa riêng của bạn.
Ngay cả khi ví tích hợp 3074 một cách an toàn, tài khoản vẫn có khả năng bị đánh cắp. Đây là đặc tính cơ bản của giao dịch theo lô (batch transaction). Nó cho phép bạn dễ dàng gửi nhiều thao tác, cũng giống như việc cho phép kẻ tấn công lừa bạn gửi một loạt tài sản đến địa chỉ do chúng kiểm soát.
Phần mềm ví phải hiển thị rõ ràng từng thao tác mà bạn đang ký. Như vậy, sẽ rất dễ nhận ra "Tôi chỉ định thực hiện một giao dịch, nhưng yêu cầu ký này lại khiến tôi thực hiện thêm hàng chục giao dịch khác". Nếu xử lý theo lô thông qua ký mù (blind signing), thì không thể phát hiện được điều này.
Vâng, EIP-3074 rất tin tưởng vào ví. Nhưng chúng ta đã tin tưởng họ một cách an toàn với khóa riêng của mình rồi! Không có mức độ tin tưởng nào cao hơn thế.
EIP-3074 có thể được tích hợp và sử dụng một cách an toàn. Nếu bất kỳ ví nào có câu hỏi về cách thực hiện điều này, hãy liên hệ với chúng tôi bất cứ lúc nào. Với tư cách là tác giả EIP-3074, hiện chúng tôi đang cân nhắc làm thế nào để tốt nhất hỗ trợ cho giai đoạn phát triển tiếp theo của tiêu chuẩn này.
Trong vài năm qua, chúng tôi đã dành rất nhiều thời gian để phát triển các kịch bản giả định về cách sử dụng và lạm dụng nó. Chúng tôi rất vui khi những ý tưởng này bắt đầu được đưa vào sản xuất. Nhưng chúng tôi cũng nhận ra đây là phần khó khăn nhất.
Tóm lại mối lo ngại rằng sau EIP-3074, một chữ ký sai duy nhất có thể làm cạn kiệt toàn bộ số dư tài khoản Ethereum của bạn:
-
Hiện tại, các ví không hỗ trợ loại chữ ký EIP-3074, loại chữ ký tuân theo định dạng mới.
-
Trường người gọi (invoker) trong chữ ký EIP-3074 rất quan trọng. Một người gọi xấu có thể đánh cắp tiền của bạn.
-
Ví cần đảm bảo địa chỉ người gọi là đáng tin cậy. Điều này tương tự như cách ví hiện tại ngăn chặn việc thực thi mã tùy ý.
-
Giao dịch theo lô trong EIP-3074 vẫn mở ra khả năng kẻ xấu có thể lừa bạn ký các giao dịch chuyển tài sản. Ví cần hiển thị rõ ràng những gì sẽ xảy ra khi ký tin nhắn EIP-3074.
-
Vâng, chúng tôi đặt niềm tin rất lớn vào ví, nhưng người dùng đã trao khóa riêng cho chúng rồi, đó là mức độ tin tưởng cao nhất.

EIP-3074 và EIP-4337
EIP-3074 là một điều tuyệt vời đối với các nhà cung cấp Trừu tượng Tài khoản (Account Abstraction), vì nó mang lại lợi ích rất lớn cho khách hàng của chúng tôi.
-
ERC-4337 là cách tốt nhất để giới thiệu người dùng mới vào lĩnh vực tiền mã hóa.
-
EIP-3074 là cách tốt nhất để đưa người dùng hiện tại chuyển sang tài khoản thông minh.
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











