storevilanh@gmail.com

Ledger vá lỗi bảo mật Ethereum, khắc phục lỗi chữ ký giao dịch

Ledger đã phát hành ứng dụng Ethereum phiên bản 1.22.2 nhằm xử lý lỗ hổng bảo mật nghiêm trọng có thể ảnh hưởng đến quá trình ký giao dịch. Trong một số trường hợp, ứng dụng độc hại có khả năng khiến người dùng xác nhận giao dịch khác với nội dung thực tế được hiển thị. Theo khuyến nghị của Ledger, người dùng nên cập nhật ứng dụng Ethereum thông qua Ledger Live, đồng thời rà soát các phê duyệt token đã cấp trước đây để chủ động đánh giá những rủi ro có thể phát sinh.
Ledger vá lỗi bảo mật Ethereum, khắc phục lỗi chữ ký giao dịch

Ledger đã phát hành ứng dụng Ethereum phiên bản 1.22.2 nhằm xử lý lỗ hổng bảo mật nghiêm trọng có thể ảnh hưởng đến quá trình ký giao dịch. Trong một số trường hợp, ứng dụng độc hại có khả năng khiến người dùng xác nhận giao dịch khác với nội dung thực tế được hiển thị. Theo khuyến nghị của Ledger, người dùng nên cập nhật ứng dụng Ethereum thông qua Ledger Live, đồng thời rà soát các phê duyệt token đã cấp trước đây để chủ động đánh giá những rủi ro có thể phát sinh.

Nếu đang sử dụng Ledger để lưu trữ Ether hoặc quản lý token ERC-20, người dùng nên kiểm tra ngay phiên bản ứng dụng Ethereum trên thiết bị. Phiên bản 1.22.2 là bản đã được cập nhật để Ledger vá lỗi bảo mật Ethereum, trong khi các phiên bản thấp hơn chưa được khắc phục lỗ hổng này.

Điểm đáng chú ý nằm ở chức năng cốt lõi của ví phần cứng giúp người dùng xác nhận chính xác nội dung giao dịch trước khi ký. Khi cơ chế hiển thị và dữ liệu giao dịch có thể bị lợi dụng để tạo ra sự sai lệch, mức độ an toàn của quá trình ký cũng bị ảnh hưởng.

Dù thời điểm công khai lỗ hổng kéo theo tranh luận về nguồn gốc phát hiện và thời điểm Ledger triển khai bản vá, người dùng không cần quá tập trung vào những tranh cãi này. Điều cần ưu tiên là kiểm tra phiên bản ứng dụng Ethereum đang sử dụng và xem xét lại các quyền phê duyệt token đã cấp trước đó. Đây là hai bước quan trọng giúp xác định thiết bị đã được bảo vệ và hạn chế nguy cơ từ các giao dịch hoặc quyền truy cập không mong muốn.

Lỗ hổng trong ứng dụng Ethereum: Cơ chế tấn công diễn ra như thế nào?

Lỗ hổng không xuất phát từ firmware của thiết bị Ledger và cũng không liên quan đến việc lưu trữ hay bảo vệ khóa riêng. Điểm yếu được xác định trong ứng dụng Ethereum, thành phần được cài trên ví để xử lý Ether và token ERC-20, đồng thời chuẩn bị, hiển thị, yêu cầu người dùng xác nhận giao dịch.

Ở phiên bản bị ảnh hưởng, quy trình xử lý yêu cầu ký có thể bị lợi dụng để tạo ra sự không đồng nhất giữa thông tin hiển thị và dữ liệu thực tế được ký. Ứng dụng web độc hại khi đã có quyền tương tác với thiết bị kết nối có thể gửi thêm yêu cầu ký trong lúc giao dịch đầu tiên vẫn đang được hiển thị trên màn hình.

Khi đó, dữ liệu giao dịch trong bộ nhớ có thể bị thay thế, không kích hoạt lại màn hình xác nhận. Người dùng vẫn nhìn thấy nội dung của giao dịch ban đầu và có thể cho rằng mình đang xác nhận chính giao dịch đó. Tuy nhiên, thao tác xác nhận cuối cùng lại được áp dụng cho dữ liệu mới đã được đưa vào bộ nhớ.

Lỗ hổng Ethereum cho phép thay dữ liệu ký không cập nhật màn hình xác nhận
Lỗ hổng Ethereum cho phép thay dữ liệu ký không cập nhật màn hình xác nhận

Clear signing - Vì sao màn hình xác nhận giữ vai trò then chốt?

Clear signing là cơ chế cho phép ví phần cứng hiển thị trực tiếp thông tin giao dịch trên màn hình riêng trước khi người dùng chấp thuận. Tùy loại giao dịch, dữ liệu có thể bao gồm địa chỉ nhận, số lượng tài sản và các thông tin liên quan đến hành động của hợp đồng thông minh.

Mô hình này tạo ra một lớp kiểm tra độc lập với máy tính hoặc trình duyệt. Ngay cả khi máy tính bị nhiễm mã độc, giao diện website bị thay đổi hoặc người dùng truy cập nhầm trang giả mạo, họ vẫn có thể đối chiếu thông tin ngay trên màn hình của ví trước khi xác nhận.

Khóa riêng cũng không cần rời khỏi thiết bị trong quá trình này. Ledger thực hiện việc ký giao dịch ngay trên ví, qua đó tách hoạt động bảo vệ khóa khỏi môi trường máy tính có thể đã bị xâm nhập.

Chính vì vậy, lỗ hổng trong ứng dụng Ethereum đáng chú ý ở chỗ nó nhắm trực tiếp vào mối liên kết giữa dữ liệu hiển thị và dữ liệu được ký. Khóa riêng vẫn được bảo vệ và firmware không bị xâm nhập, nhưng yêu cầu xác nhận mà người dùng nhìn thấy có thể không còn tương ứng với dữ liệu thực tế được ký.

Điều này làm suy giảm giá trị của cơ chế clear signing, màn hình vẫn hiển thị giao dịch có vẻ an toàn, nhưng chữ ký có thể được tạo trên dữ liệu khác. Xét về bản chất, đây là vấn đề nghiêm trọng đối với mô hình bảo mật vốn dựa vào khả năng kiểm tra giao dịch độc lập ngay trên ví phần cứng.

Clear signing bảo vệ người dùng nhờ đối chiếu giao dịch trên màn hình ví
Clear signing bảo vệ người dùng nhờ đối chiếu giao dịch trên màn hình ví

Điều kiện đua và lệnh APDU: điểm yếu nằm ở đâu?

Điều kiện đua (race condition) xảy ra khi kết quả xử lý của hệ thống phụ thuộc vào thứ tự thực thi của hai hoặc nhiều tác vụ diễn ra gần như cùng thời điểm. Đây là dạng lỗi khó phát hiện vì chương trình có thể hoạt động bình thường trong hầu hết tình huống. Chỉ cần tác nhân chủ động tạo ra trình tự xử lý bất thường, lỗi mới có thể bị kích hoạt.

APDU là tập hợp các lệnh được sử dụng để thiết bị phần cứng như thẻ thông minh và ví tiền mã hóa trao đổi dữ liệu với máy tính. Trong quá trình ký giao dịch Ethereum, thiết bị phải tiếp nhận và xử lý nhiều lệnh APDU liên tiếp. Ứng dụng Ethereum đồng thời duy trì trạng thái để xác định giao dịch nào đang được chuẩn bị và chờ người dùng xác nhận.

Vấn đề phát sinh khi trạng thái này có thể bị thay đổi bởi một yêu cầu khác trước khi quy trình xác minh hiện tại hoàn tất. Khi đó, thông tin đang được hiển thị trên màn hình và dữ liệu mà thiết bị thực sự xử lý có nguy cơ không còn tương ứng với nhau. Nói đơn giản, lỗ hổng nằm ở việc hai yêu cầu có thể tác động lên cùng một trạng thái trong khoảng thời gian quá ngắn, tạo điều kiện để dữ liệu ban đầu bị thay thế trước khi người dùng hoàn tất thao tác xác nhận.

WebHID trên trình duyệt: Cầu nối giữa website và ví phần cứng

WebHID là API của trình duyệt cho phép website trao đổi dữ liệu trực tiếp với các thiết bị phần cứng được kết nối qua USB sau khi người dùng cấp quyền. Công nghệ này giúp các ứng dụng phi tập trung tương tác thuận tiện hơn với ví phần cứng mà không cần thông qua quá nhiều lớp trung gian.

Tuy nhiên, chính khả năng kết nối trực tiếp này cũng tạo thêm bề mặt tấn công. Để khai thác kịch bản được mô tả, người dùng phải từng cấp quyền WebHID cho website và thực hiện giao dịch thông qua trang đó. Nếu website bị xâm nhập hoặc chứa mã độc, nó có thể tận dụng quyền đã được cấp để gửi các yêu cầu tới thiết bị.

Điều này đồng nghĩa với việc kẻ tấn công không thể tùy ý kiểm soát một chiếc Ledger đang nằm ngoại tuyến trong ngăn kéo. Thiết bị phải được kết nối với máy tính và đang tương tác với trang web đã được cấp quyền phù hợp. Đây là yếu tố giúp giới hạn phạm vi khai thác thực tế.

Dù vậy, rủi ro vẫn đáng lưu ý đối với những người thường xuyên sử dụng ví Ledger cùng các nền tảng DeFi. Các hoạt động như giao dịch trên sàn phi tập trung, chuyển tài sản qua bridge hoặc tham gia staking yêu cầu ví tương tác trực tiếp với website. Vì thế, quyền truy cập WebHID đã cấp cho các trang web cần được xem xét thận trọng, đặc biệt khi kết hợp với một phiên bản ứng dụng Ethereum chưa được vá.

Phê duyệt token nguy hiểm hơn một giao dịch chuyển tiền như thế nào?

Trong kịch bản tấn công này, rủi ro lớn nhất không nhất thiết nằm ở giao dịch chuyển token ban đầu mà ở yêu cầu khác có thể được đưa vào quá trình ký. Phê duyệt token (token approval) cho phép hợp đồng thông minh thay mặt người dùng truy cập và sử dụng lượng token nhất định. Sau khi quyền này được cấp, hợp đồng có thể thực hiện các giao dịch trong phạm vi được cho phép, không cần người dùng xác nhận lại từng lần.

Để giảm thao tác, nhiều ứng dụng DeFi đề nghị người dùng cấp quyền ở mức không giới hạn. Với dạng phê duyệt này, quyền truy cập không tự động mất hiệu lực theo thời gian, tiếp tục tồn tại cho đến khi người dùng chủ động thu hồi. Nếu hợp đồng hoặc nền tảng được cấp quyền bị khai thác, số token nằm trong phạm vi phê duyệt có thể trở thành mục tiêu.

Chuyển token và cấp quyền: hai mức rủi ro khác nhau

Khi ký giao dịch chuyển tiền thông thường, người dùng xác nhận lượng tài sản cụ thể và khoản thất thoát về nguyên tắc được giới hạn ở giao dịch đó. Ngược lại, approval không giới hạn có thể trao cho hợp đồng quyền sử dụng toàn bộ lượng token tương ứng trong ví, tùy thuộc vào cách hợp đồng vận hành.

Đây chính là lý do việc đánh tráo giao dịch chuyển tiền có giá trị nhỏ thành yêu cầu cấp quyền rộng hơn có thể mang lại lợi ích lớn cho kẻ tấn công. Khi quyền phê duyệt đã được thiết lập, tài sản có thể bị khai thác vào thời điểm khác, người dùng không cần tiếp tục tương tác với thiết bị.

Vì vậy, bên cạnh cập nhật ứng dụng Ethereum, người dùng Ledger cũng nên kiểm tra lại những token approval đã cấp, đặc biệt là các quyền không giới hạn hoặc quyền dành cho những hợp đồng không còn sử dụng.

Rà soát và thu hồi token approval sau khi cập nhật

Bản vá Ethereum 1.22.2 giúp giảm nguy cơ đối với những giao dịch được ký trong tương lai, nhưng không tự động thay đổi các quyền token người dùng đã cấp trước đó. Nếu từng kết nối Ledger với các ứng dụng DeFi, sàn phi tập trung hoặc nền tảng Web3, bạn nên kiểm tra lại những approval vẫn còn hiệu lực trên địa chỉ ví.

Các công cụ quản lý quyền token và blockchain explorer có thể cho biết hợp đồng thông minh nào đang được phép sử dụng từng loại token. Những approval dành cho các dự án hoặc hợp đồng không còn sử dụng có thể được thu hồi để giảm bớt quyền truy cập không cần thiết.

Tuy nhiên, thao tác revoke cũng là giao dịch blockchain và thường yêu cầu trả phí mạng. Vì vậy, nếu có nhiều quyền cần xử lý, người dùng có thể cân nhắc thực hiện vào thời điểm mạng ít tắc nghẽn và chi phí giao dịch thấp hơn.

Một điểm khác cần lưu ý là mỗi lần thu hồi quyền đều tạo ra giao dịch mới và được ghi lại công khai trên blockchain, đồng thời phát sinh phí tương ứng. Việc lưu giữ lịch sử giao dịch đầy đủ sẽ giúp theo dõi dòng tiền dễ dàng hơn, đồng thời hỗ trợ quá trình tổng hợp dữ liệu khi cần kê khai thuế hoặc sử dụng các công cụ quản lý danh mục đầu tư tiền mã hóa.

Cập nhật Ethereum 1.22.2 trên Ledger Live

Ứng dụng Ethereum phiên bản 1.22.2 được phát hành để ngăn chặn chuỗi khai thác nói trên. Bản vá bổ sung các cơ chế kiểm soát trạng thái trong quá trình ký, ứng dụng không tiếp nhận phiên đăng ký mới khi phiên hiện tại vẫn đang được xác minh, đồng thời từ chối yêu cầu xác nhận nếu dữ liệu hiện tại không còn trùng khớp với thông tin đã hiển thị cho người dùng.

Thông tin về bản phát hành được Ledger công bố trong kho mã nguồn ứng dụng Ethereum. Phần ghi chú phát hành xác nhận các vấn đề bảo mật đã được xử lý nhưng không cung cấp mô tả chi tiết về cơ chế của lỗ hổng.

Quá trình cập nhật Ethereum 1.22.2 trên Ledger Live tương đối đơn giản. Người dùng chỉ cần kết nối ví với máy tính, mở Ledger Live, truy cập trình quản lý ứng dụng và cập nhật Ethereum lên phiên bản mới. Việc nâng cấp không làm thay đổi số dư tài sản, bởi khóa riêng được tạo từ cụm từ khôi phục và không phụ thuộc vào ứng dụng Ethereum đang cài đặt trên thiết bị.

Ngay cả trong trường hợp ứng dụng Ethereum bị xóa rồi cài lại, tài sản trên blockchain vẫn được giữ nguyên. Điều quan trọng là người dùng phải bảo quản an toàn cụm từ khôi phục và không cung cấp cụm từ này cho bất kỳ bên nào.

Số phiên bản của ứng dụng Ethereum được hiển thị riêng trong khu vực quản lý ứng dụng của Ledger Live. Nếu thiết bị đang chạy 1.22.2 hoặc mới hơn, ứng dụng đã bao gồm bản vá liên quan. Ngược lại, phiên bản 1.22.1 hoặc thấp hơn vẫn thuộc nhóm cần cập nhật. Do đó, chỉ kiểm tra phiên bản của Ledger Live là chưa đủ. Người dùng cần mở danh sách ứng dụng được cài trực tiếp trên thiết bị và xác nhận chính xác phiên bản Ethereum đang sử dụng.

Cập nhật Ethereum 1.22.2 trên Ledger Live để khắc phục lỗ hổng bảo mật
Cập nhật Ethereum 1.22.2 trên Ledger Live để khắc phục lỗ hổng bảo mật

Vì sao cập nhật firmware không đồng nghĩa với cập nhật ứng dụng Ethereum?

Một trong những điểm dễ gây nhầm lẫn khi xử lý sự cố bảo mật Ledger là firmware và ứng dụng Ethereum không được cập nhật cùng hệ thống. Firmware của thiết bị, phần mềm Ledger Live và từng ứng dụng blockchain được quản lý như những thành phần độc lập.

Điều đó có nghĩa, nâng cấp firmware lên phiên bản mới nhất chưa chắc đã đưa ứng dụng Ethereum trên thiết bị lên bản vá tương ứng. Người dùng có thể hoàn tất cập nhật firmware nhưng vẫn giữ một phiên bản Ethereum cũ và tiếp tục đối mặt với lỗ hổng.

Cách phân chia này cũng giúp lý giải vì sao mỗi sự cố bảo mật trên ví phần cứng cần một phương án xử lý khác nhau. Với trường hợp Coldcard, vấn đề liên quan đến quá trình tạo seed ở tầng nền tảng nên biện pháp khắc phục có thể yêu cầu tạo seed mới. Trong khi đó, các lỗ hổng BitBox từng được xác định ở firmware và cần cập nhật thành phần này.

Trường hợp của Ledger lại nằm ở ứng dụng Ethereum, một thành phần có thể cài đặt và thay thế độc lập trên thiết bị. Vì vậy, người dùng chỉ cần cập nhật ứng dụng lên phiên bản đã được vá thay vì thay đổi firmware hay tạo lại recovery phrase. Cụm từ khôi phục hiện tại vẫn có thể tiếp tục sử dụng nếu không có vấn đề nào khác ảnh hưởng đến nó. Bên cạnh cập nhật ứng dụng, người dùng cũng nên quan tâm đến các quyền truy cập token đã cấp trước đó.

Firmware và ứng dụng Ethereum trên Ledger là hai thành phần độc lập, nên cập nhật firmware chưa chắc đã vá lỗi Ethereum
Firmware và ứng dụng Ethereum trên Ledger là hai thành phần độc lập, nên cập nhật firmware chưa chắc đã vá lỗi Ethereum

Có tài sản nào bị đánh cắp? Mức độ ảnh hưởng hiện tại ra sao?

Theo những thông tin được công bố tính đến thời điểm hiện tại, chưa có trường hợp nào được xác nhận là đã bị khai thác thành công thông qua lỗ hổng này. Cũng chưa ghi nhận báo cáo chính thức về thiệt hại tài sản liên quan trực tiếp đến phương thức tấn công nói trên. Đáng chú ý, lỗ hổng không tạo ra con đường để kẻ tấn công lấy trực tiếp khóa riêng khỏi thiết bị.

Tuy nhiên, chưa có ca tấn công được xác nhận không đồng nghĩa với việc có thể khẳng định rằng chưa từng xảy ra sự cố. Chữ ký được tạo thông qua cơ chế này vẫn có thể xuất hiện trên blockchain giống như giao dịch mà chính chủ ví chủ động phê duyệt.

Nếu tài sản sau đó bị chuyển khỏi ví, người dùng có thể chỉ phát hiện bất thường khi kiểm tra lịch sử giao dịch và dễ nhận định đây là vụ đánh cắp token thông thường. Vì vậy, dữ liệu hiện có chỉ cho thấy chưa ghi nhận trường hợp khai thác được xác minh, thay vì khẳng định lỗ hổng chưa từng bị lợi dụng.

Bài học đối với ví phần cứng và mô hình tự lưu ký

Sự cố này không nên được xem là bằng chứng cho thấy ví phần cứng kém an toàn hoặc không đáng sử dụng. Phương thức khai thác có những điều kiện cụ thể, bao gồm khả năng tương tác với thiết bị đang kết nối và môi trường hoặc ứng dụng web độc hại. Đồng thời, khóa riêng vẫn nằm trong thiết bị và lỗ hổng đã có bản vá.

Bài học quan trọng hơn nằm ở cách người dùng nhìn nhận về bảo mật ví phần cứng. Thiết bị này giúp tách khóa riêng và quá trình ký giao dịch khỏi máy tính, đồng thời cung cấp màn hình độc lập để kiểm tra thông tin. Nhưng bản thân ví vẫn là hệ thống gồm nhiều lớp, từ firmware, ứng dụng blockchain cho đến phần mềm kết nối và giao diện sử dụng.

Vì vậy, bảo mật không phải yếu tố được thiết lập một lần rồi duy trì vĩnh viễn sau khi mua thiết bị. Người dùng cần chủ động duy trì trạng thái an toàn bằng cách cập nhật ứng dụng thường xuyên, kiểm tra và thu hồi những token approval không còn cần thiết, đồng thời thận trọng khi cấp quyền cho các ứng dụng Web3.

Với những người đang quản lý lượng tài sản lớn, việc bổ sung thêm lớp bảo vệ như cơ chế xác thực nhiều bước hoặc mô hình lưu ký yêu cầu nhiều bên cùng phê duyệt cũng có thể giúp giảm rủi ro. Nói cách khác, ví phần cứng là lớp phòng thủ quan trọng, nhưng hiệu quả bảo mật cuối cùng vẫn phụ thuộc vào cách thiết bị được cập nhật, kết nối và sử dụng.

Lưu ý khi kiểm tra ứng dụng Ethereum trên Ledger

Trước khi tiếp tục sử dụng Ledger để ký giao dịch Ethereum, người dùng nên rà soát lại ứng dụng, quyền truy cập token và lịch sử giao dịch. Một vài bước kiểm tra đơn giản có thể giúp thiết bị hoạt động với phiên bản an toàn hơn, đồng thời hạn chế những quyền không cần thiết.

  • Kiểm tra phiên bản và tiến hành cập nhật: Kết nối ví Ledger, mở Ledger Live và truy cập trình quản lý thiết bị để xem phiên bản ứng dụng Ethereum hiện tại. Nếu đang sử dụng phiên bản thấp hơn 1.22.2, hãy cập nhật lên bản mới nhất. Chỉ nâng cấp firmware của thiết bị là chưa đủ, bởi ứng dụng Ethereum cũng cần được cập nhật riêng.
  • Rà soát và thu hồi quyền truy cập token: Kiểm tra địa chỉ ví để xác định những hợp đồng thông minh đang được cấp quyền sử dụng token. Với các quyền không còn nhu cầu, bạn nên cân nhắc thu hồi để giảm bớt phạm vi truy cập không cần thiết. Nếu muốn tách riêng khoản tiền dùng cho giao dịch thường ngày khỏi tài sản lưu trữ dài hạn, có thể cân nhắc sử dụng một địa chỉ hoặc ví riêng.
  • Theo dõi và lưu lại lịch sử giao dịch: Các thao tác thu hồi quyền hoặc chuyển tài sản có thể phát sinh phí mạng và được ghi nhận trên blockchain. Hãy lưu lại thông tin giao dịch ngay sau khi thực hiện để thuận tiện cho việc theo dõi tài sản, đối soát hoặc kê khai thuế về sau.
Kiểm tra ứng dụng Ethereum, thu hồi quyền token và theo dõi lịch sử giao dịch giúp tăng an toàn khi sử dụng Ledger
Kiểm tra ứng dụng Ethereum, thu hồi quyền token và theo dõi lịch sử giao dịch giúp tăng an toàn khi sử dụng Ledger

Bản vá Ethereum 1.22.2 là bước quan trọng giúp Ledger khắc phục lỗ hổng có thể làm sai lệch dữ liệu giữa giao dịch được hiển thị và giao dịch thực tế được ký. Người dùng đang quản lý Ether hoặc token ERC-20 nên kiểm tra phiên bản ứng dụng Ethereum trên Ledger Live và cập nhật lên 1.22.2 hoặc mới hơn. Đồng thời, việc rà soát các token approval đã cấp trước đó cũng giúp loại bỏ những quyền truy cập không còn cần thiết. Chủ động cập nhật và kiểm tra định kỳ là cách thiết thực để duy trì an toàn cho tài sản khi sử dụng ví phần cứng.