Ngày 2 tháng 5 năm 2020, một nhà nghiên cứu bảo mật đã báo cáo về một lỗ hổng trong các ứng dụng phái sinh của Bitcoin (chẳng hạn như Litecoin, Dogecoin, v.v.), cho phép kẻ tấn công đánh lừa người dùng ký một giao dịch thuộc loại coin khác với coin mà họ nghĩ rằng đang ký.
Ví dụ: một ví độc hại có thể giả mạo là đang thực hiện giao dịch Dogecoin, trong khi thực tế người dùng đang ký một giao dịch Bitcoin.
Tình hình hiện tại là gì?
Phiên bản 1.4.6 của ứng dụng Bitcoin đã khắc phục lỗ hổng này trong các ứng dụng phái sinh của Bitcoin và được phát hành vào ngày 5 tháng 8 năm 2020. Với bản cập nhật này, bất cứ khi nào người dùng yêu cầu địa chỉ hoặc ký giao dịch trên một đường dẫn dẫn xuất (derivation path) không thuộc loại coin tương ứng với ứng dụng đang mở trên thiết bị Ledger, một cảnh báo sẽ được hiển thị trên màn hình thiết bị.
Cách bảo vệ thiết bị của bạn
Hãy cập nhật ứng dụng Bitcoin lên phiên bản 1.4.6 trong mục My Ledger trên Ledger Wallet. Việc này sẽ tự động cập nhật toàn bộ các ứng dụng phái sinh Bitcoin (như Litecoin, Dogecoin, v.v.). Vì lỗ hổng chỉ ảnh hưởng đến các ứng dụng phái sinh của Bitcoin, bạn vẫn có thể tiếp tục sử dụng các ứng dụng khác bình thường.
Chương trình thưởng phát hiện lỗi
Ledger có chương trình thưởng lỗi bảo mật (Bug Bounty Program) nhằm khuyến khích các nhà nghiên cứu bảo mật bên ngoài báo cáo lỗ hổng trong sản phẩm của Ledger. Nhà nghiên cứu gửi báo cáo lỗ hổng tiềm ẩn đến địa chỉ email bounty@ledger.fr. Nhóm bảo mật Ledger xác nhận đã nhận báo cáo và thiết lập thời hạn 90 ngày để xử lý. Lỗ hổng được điều tra, và nếu được xác nhận, đội ngũ kỹ thuật sẽ:
-
- Cố gắng khắc phục trong vòng 90 ngày, tuân theo chuẩn của Google Project Zero.
- Sau thời hạn 90 ngày, nhà nghiên cứu có quyền công bố phát hiện của mình.
- Nếu lỗi được khắc phục sớm hơn và hai bên đồng ý, việc công bố có thể diễn ra trước thời hạn 90 ngày.
Trong thời gian này, đội bảo mật phối hợp với các bộ phận kỹ thuật và kiểm thử để phát triển và rà soát bản vá (patch). Đồng thời, Ledger Security Bulletin sẽ được soạn thảo nhằm chia sẻ chi tiết kỹ thuật và theo dõi công khai các vấn đề được báo cáo.
Khi phiên bản ứng dụng hoặc firmware mới được phát hành, phần thưởng sẽ được trao cho nhà nghiên cứu, bản tin bảo mật được công bố, và nhà nghiên cứu có thể công bố kết quả phát hiện của mình.
Điều gì đã xảy ra với lỗ hổng này?
Trong trường hợp này, chúng tôi rất tiếc vì đã không tuân thủ thời hạn công bố lỗ hổng bảo mật, dẫn đến việc nhà nghiên cứu bảo mật đã đăng tải bài viết trên blog cá nhân của mình trước khi bản vá được phát hành cho người dùng.
Bên cạnh các vấn đề khác đang được xử lý song song, quá trình thảo luận nội bộ để tìm giải pháp khắc phục phù hợp và phối hợp với các nhóm kỹ sư khác đã mất nhiều thời gian hơn dự kiến. Điều này khiến phiên bản mới của ứng dụng Bitcoin được phát hành sau thời hạn dự kiến (vốn được đặt ra là 90 ngày kể từ khi nhận báo cáo lỗ hổng).
Ngoài ra, sự thiếu thông tin liên lạc nhất quán cũng khiến vấn đề không được giải quyết sớm hơn. Nhà nghiên cứu đã gửi tin nhắn qua X (Twitter DM) nhưng phần lớn các kỹ sư bảo mật không nhận được. Thực tế, địa chỉ email bounty@ledger.fr là kênh duy nhất để liên hệ trực tiếp với toàn bộ nhóm bảo mật của Ledger.
Chi tiết về lỗ hổng
Ledger Nano S Plus và Ledger Nano X là ví Hierarchical Deterministic (HD) — tức là chúng có thể sinh ra nhiều khóa mật mã khác nhau từ một seed duy nhất, bắt nguồn từ cụm 24 từ khôi phục (recovery phrase) mà người dùng ghi lại. Một phần trong các khóa này được dùng để ký các giao dịch tiền mã hóa.
Thông thường, mỗi ứng dụng coin chỉ được phép sử dụng đường dẫn dẫn xuất (HD path) riêng của mình. Ví dụ, ứng dụng Zcoin được giới hạn trong đường dẫn m/44’/136’/…và không thể truy cập đường dẫn của Dogecoin (m/44’/3’/…). Tuy nhiên, giới hạn này chưa được áp dụng đúng cách cho ứng dụng Bitcoin và các ứng dụng phái sinh của nó, khiến cho một ứng dụng như Litecoin có thể dẫn xuất khóa công khai (public key) hoặc ký giao dịch Bitcoin.
Điều này cho phép kẻ tấn công cài đặt phần mềm độc hại trên máy tính hoặc điện thoại của nạn nhân và lừa họ ký một giao dịch Bitcoin bằng ứng dụng altcoin trên Ledger (như Litecoin hoặc Dogecoin).
Lưu ý rằng lỗ hổng này không cho phép trích xuất khóa riêng (private key) hay vượt qua mã PIN bảo vệ thiết bị, do đó bảo mật vật lý của Ledger vẫn an toàn tuyệt đối.
Thông tin kỹ thuật chi tiết được công bố trong Ledger Security Bulletin 014: “Path derivation too permissive in Bitcoin derivative apps.”
Tại sao Ledger chỉ hiển thị cảnh báo thay vì chặn giao dịch?
Nếu Ledger chặn hoàn toàn các giao dịch dạng này, điều đó sẽ làm khóa hoặc mất quyền truy cập vào tài sản của nhiều người dùng, vì đây là vấn đề phổ biến trong cấu trúc của các fork Bitcoin – nơi giao dịch của các chuỗi fork có thể trông giống hệt nhau với thiết bị ký ngoại tuyến.
Thiết bị Ledger hiển thị cảnh báo “Unusual derivation path” hoặc “Unusual sign path” nghĩa là gì?
Nếu bạn thấy cảnh báo này, điều đó có nghĩa là ứng dụng ví mà bạn đang dùng không sử dụng đúng đường dẫn dẫn xuất tương ứng với loại coin đang mở trên thiết bị.
Hãy kiểm tra lại đường dẫn dẫn xuất trước khi ký giao dịch.
Cập nhật ứng dụng Bitcoin lên phiên bản 1.4.6 sẽ khắc phục hoàn toàn lỗ hổng này cho tất cả ứng dụng phái sinh Bitcoin. Bản cập nhật không thay đổi trải nghiệm hiển thị trong Ledger Wallet.
Khi xuất khóa công khai từ một ứng dụng phái sinh không tuân theo đúng loại coin, thiết bị sẽ hiển thị thông báo: “The derivation path is unusual.” Khi ký giao dịch, nếu đường dẫn không chuẩn, sẽ hiển thị thông báo: “The sign path is unusual. Reject if you’re not sure.”
Tuy nhiên, người dùng các ví bên thứ ba (như Electrum) vẫn có thể thấy cảnh báo này ngay cả khi yêu cầu ký đến từ ví hợp lệ. Nguyên nhân là do một số ví sử dụng đường dẫn dẫn xuất không tiêu chuẩn, dù vẫn hợp lệ với Bitcoin. Ledger khuyến nghị các nhà phát triển ví bên thứ ba nên sử dụng đúng đường dẫn dẫn xuất và ký giao dịch trên đường dẫn chính xác để đảm bảo an toàn cho người dùng.


