Skip to main content

Tại sao việc đánh cắp tiền từ ví Ethereum lại đơn giản, không giống như ví Cardano?

Ngày 29 tháng 02 năm 2024 - Chia sẻ bài viết này trên Twitter | FacebookTelegram

Trong lĩnh vực ứng dụng phi tập trung (DApps), người dùng không may có thể trở thành nạn nhân của những kẻ độc hại. Những kẻ xấu này có thể lừa người dùng ký các giao dịch dẫn đến việc rút hết tài sản khỏi ví của họ. Vấn đề này đặc biệt phổ biến trong hệ sinh thái Ethereum và không chỉ do quy mô lớn hơn của nó. Trong Ethereum, người dùng thường ủy quyền trước cho DApps để chuyển bất kỳ số lượng tài sản nào từ ví của họ trong tương lai. Mặc dù tính năng này có vẻ tiện lợi nhưng nó thường bị các thực thể độc hại khai thác, thường được gọi là 'kẻ rút tiền Ethereum'. Những sự cố như vậy ít phổ biến hơn trong hệ sinh thái Cardano. Trong bài viết, chúng tôi sẽ giải thích tại sao lại như vậy.

Phê duyệt trước việc chuyển nhượng tài sản trong tương lai là nguy hiểm

Lý tưởng nhất là hợp đồng thông minh không nên có chủ sở hữu hoặc bất kỳ cơ chế nào cho phép chủ sở hữu chuyển tài sản từ hợp đồng thông minh sang địa chỉ bên ngoài. Thuộc tính này mang lại cho các hợp đồng thông minh mức độ tin cậy. Người dùng có thể tự tin ủy thác tài sản của mình cho một hợp đồng thông minh (tin tưởng vào mã chứ không phải con người), an tâm khi biết rằng không bên thứ ba nào có thể thao túng những tài sản này. Do đó, người dùng không cần đặt niềm tin vào nhóm triển khai hợp đồng thông minh.

Tuy nhiên, có thể kết hợp chức năng chuyển tiền vào hợp đồng thông minh, cho phép chủ sở hữu hợp đồng thông minh chuyển token từ hợp đồng thông minh sang địa chỉ khác.

Tính năng như vậy thường liên quan đến các hợp đồng thông minh độc hại.

Công cụ rút tiền Ethereum chứa chức năng transferFrom được sử dụng để chuyển tài sản kỹ thuật số từ ví của người dùng sang hợp đồng thông minh. Sau đó, chức năng transfer (chuyển tiền) được sử dụng để chuyển tài sản đến địa chỉ của kẻ tấn công.

Chức năng transferFrom thường được DApps sử dụng và là một phần của tiêu chuẩn token ERC-20. Nó cho phép hợp đồng thông minh chuyển một lượng token nhất định từ địa chỉ này sang địa chỉ khác, với điều kiện là địa chỉ nguồn đã phê duyệt hợp đồng thông minh để làm như vậy. Thông tin thêm về sự chấp thuận sau.

Khi tài sản được hợp đồng thông minh kiểm soát (sở hữu), chức năng transfer có thể được sử dụng để chuyển chúng từ hợp đồng thông minh sang địa chỉ khác.

Chức năng transfer cũng là một phần của tiêu chuẩn token ERC-20. Nó được sử dụng để chuyển token trực tiếp từ địa chỉ của người gọi hàm sang địa chỉ khác.

Trong bối cảnh hợp đồng thông minh, nếu có chức năng chuyển tiền cho phép chủ sở hữu hợp đồng chuyển token từ hợp đồng sang bất kỳ địa chỉ bên ngoài nào, thì đó có thể là dấu hiệu của một hợp đồng độc hại. Địa chỉ có thể bị kiểm soát bởi kẻ tấn công.

Những kẻ rút tiền ví Ethereum lạm dụng chức năng approve (phê duyệt).

Khi tương tác với hợp đồng thông minh trong hệ sinh thái Ethereum, người dùng thường phải phê duyệt hợp đồng để chi tiêu một lượng token nhất định từ ví của họ. Đây được gọi là giao dịch token approval('phê duyệt token').

Thông thường, đối với các trường hợp sử dụng không độc hại, điều này rất hữu ích. Người dùng có thể phê duyệt dApps để mua tài sản ở mức giá mục tiêu mà không cần chuyển tài sản ra khỏi ví trước. Việc chuyển tiền sẽ diễn ra vào thời điểm thích hợp.

Sau khi giao dịch approve được ký, hợp đồng thông minh có thể gọi chức năng transferFrom bất kỳ lúc nào mà không yêu cầu thêm bất kỳ sự phê duyệt hoặc hành động nào từ người dùng. Chức năng transferFrom là một giao dịch trực tuyến và yêu cầu phí GAS, phí này được thanh toán tự động từ ví của người dùng.

Cả giao dịch approvetransferFrom đều yêu cầu phí GAS.

Những kẻ tấn công thường lừa người dùng gọi chức năng phê duyệt của một hợp đồng độc hại, cho phép nó sau này sử dụng transferFrom để rút token khỏi ví của người dùng. Chức năng chuyển tiền có thể được sử dụng tương tự nếu hợp đồng được thiết kế để chấp nhận và giữ token.

Cách lấy tiền từ ví - từng bước

Cuộc tấn công bắt đầu bằng kỹ thuật xã hội. Kẻ tấn công phải tạo một trang web lừa đảo có tính thuyết phục hoặc dApps độc hại. Họ thường trả tiền cho Google để hiển thị cho người dùng trang web lừa đảo của họ dưới dạng liên kết đầu tiên. Có nhiều cách để lừa người dùng và dụ họ vào bẫy.

dApps độc hại có thể là phiên bản giả mạo của dịch vụ DeFi phổ biến (DEX hoặc nền tảng cho vay) hoặc dApps mới hứa hẹn mang lại lợi nhuận cao. Nó cũng có thể hấp dẫn khi đúc một chuỗi NFT, stake token để farming năng suất hoặc tham gia bán token.

Người dùng truy cập trang web độc hại hoặc dApps và quyết định tương tác với nó.

Để tương tác với dApps, người dùng được yêu cầu kết nối ví Ethereum của họ. Sau khi ví được kết nối, dApps sẽ yêu cầu người dùng ký giao dịch approve. Người dùng được yêu cầu phê duyệt việc chi tiêu một lượng lớn token, thường là số tiền tối đa có thể.

Người dùng có thể không thấy nghi ngờ vì họ thường ký các giao dịch approve trong trường hợp dApps không độc hại. Họ có thể không chú ý đến những chi tiết quan trọng.

Một người dùng xác nhận giao dịch trong ví của họ mà không nhận ra rằng anh ấy đã cấp cho hợp đồng thông minh độc hại quyền sử dụng tất cả số token của mình.

Sau khi giao dịch được xác nhận, hợp đồng thông minh độc hại có thể gọi chức năng chuyển (hoặc transferFrom) bất cứ lúc nào để rút tất cả các token được phê duyệt khỏi ví của người dùng.

Có thể thu hồi sự chấp thuận được cấp cho hợp đồng thông minh Ethereum. Quá trình này thường được gọi là thu hồi các khoản trợ cấp token hoặc thu hồi phê duyệt token. Việc thu hồi phê duyệt là một giao dịch trực tuyến. Vì vậy người dùng sẽ phải trả phí GAS. Một số người dùng có thể ngần ngại thu hồi phê duyệt token do các khoản phí liên quan.

Tuy nhiên, trong hầu hết các trường hợp, kẻ tấn công hành động nhanh chóng nên người dùng không có thời gian để nhận ra rằng mình đã mắc sai lầm.

Tại sao không thể lấy tiền từ ví Cardano dễ dàng như vậy?

Trong cả hệ sinh thái Cardano và Ethereum, có nguy cơ kẻ tấn công có thể lừa bạn ký một giao dịch chuyển nhiều tài sản hơn bạn dự định.

Không giống như Ethereum, hợp đồng thông minh của Cardano không có cơ chế phê duyệt tương đương. Điều này có nghĩa là hợp đồng thông minh không thể được cấp quyền truy cập không giới hạn vào ví của người dùng. Do đó, hợp đồng thông minh độc hại không thể lấy tiền từ ví của người dùng nếu người dùng không ký giao dịch rõ ràng cho từng lần chuyển.

Hợp đồng thông minh trong Cardano về cơ bản là các tập lệnh xác thực. Các tập lệnh này được mỗi node Cardano tự động thực thi khi xác thực một giao dịch cố gắng chuyển tiền từ địa chỉ của tập lệnh.

Sự khác biệt giữa mô hình UTxO của Cardano và mô hình dựa trên tài khoản của Ethereum là rất đáng kể khi nói đến khả năng rút cạn ví.

Cardano sử dụng mô hình UTxO trong đó tài sản được lưu trữ ở dạng đầu ra chưa được chi tiêu thay vì dưới dạng số dư trong tài khoản. Trong mô hình này, một giao dịch có đầu đầu ra, trong đó đầu vào là đầu ra chưa được chi tiêu từ các giao dịch trước đó. Mỗi UTxO chỉ có thể được tiêu thụ một lần và toàn bộ chính UTXO đó. Do đó, không có chức năng phê duyệt nào tương đương với Ethereum trong mô hình UTxO của Cardano.

Thông thường, một giao dịch chỉ liên quan đến một số lượng UTxO giới hạn mà người dùng sở hữu trong ví của họ. Bất kỳ UTxO nào không được đưa vào làm đầu vào trong giao dịch vẫn không bị ảnh hưởng bởi chữ ký giao dịch.

Từ quan điểm bảo mật, mô hình này có thể được coi là có thể chống lại các cuộc tấn công ví tốt hơn.

Bạn có thể thấy trong hình rằng Alice phải ký mọi giao dịch chi tiêu UTxO. Hợp đồng thông minh không thể tự ý chuyển UTxO do Alice sở hữu.

Một tài khoản Ethereum, được đại diện bởi một địa chỉ duy nhất, có thể giữ số dư của nhiều loại token khác nhau, bao gồm nhiều token ERC-20 khác nhau. Chức năng phê duyệt thường không cấp phê duyệt chi tiêu cho toàn bộ tài khoản. Thay vào đó, nó cấp cho một hợp đồng thông minh cụ thể sự chấp thuận để chi tiêu một số tiền nhất định của token ERC-20 cụ thể từ tài khoản của người dùng.

Tuy nhiên, các hợp đồng thông minh độc hại có thể vô tình được chấp thuận để sử dụng token từ toàn bộ tài khoản của người dùng. Cơ chế phê duyệt có thể bị khai thác bởi các hợp đồng thông minh độc hại để rút token khỏi ví của người dùng mà không yêu cầu thêm bất kỳ sự phê duyệt hoặc hành động nào từ người dùng.

Trong hình, bạn có thể thấy Alice chỉ ký vào giao dịch approve. Điều này cho phép hợp đồng thông minh độc hại chuyển tất cả token từ tài khoản của cô ấy.

Để ngăn chặn việc mất tất cả tài sản từ tài khoản của mình, người dùng nên đảm bảo rằng họ chỉ cấp phê duyệt chi tiêu cho các hợp đồng thông minh đáng tin cậy và đáng tin cậy.

Lời kết

Chức năng phê duyệt approve của Ethereum cung cấp cho các nhà phát triển một tính năng giống như cho phép bên thứ ba rút định kỳ một số tiền nhất định từ tài khoản ngân hàng của bạn. Mặc dù đây là một chức năng hữu ích nhưng nó yêu cầu người dùng phải tin tưởng bên thứ ba sẽ không vượt quá giới hạn rút tiền của họ. Mặt khác, Cardano không cung cấp tính năng tương tự cho các nhà phát triển. Người dùng được yêu cầu ký rõ ràng từng giao dịch chi tiêu UTxO từ ví của họ.

Cả hai cách tiếp cận đều có giá trị của chúng. Các nhóm phát triển tương ứng phải đạt được sự cân bằng giữa việc đảm bảo bảo mật và cung cấp nhiều tùy chọn cho các nhà phát triển khi tạo hợp đồng thông minh. Mặc dù các tập lệnh của Cardano được thiết kế để xác minh xem các điều kiện chi tiêu UTxO có được đáp ứng hay không, nhưng hợp đồng thông minh của Ethereum có thể giành quyền kiểm soát tài khoản người dùng.

Nguồn bài viết tại đây


Picture

Đọc thêm các bài viết liên quan tại thẻ Tags bên dưới