Một lỗ hổng bảo mật TEE mới hiện ra.
Hai tuần trước, Huawei ra mắt dòng Pura70 tại thị trường Trung Quốc, mang theo chip Kirin 9010 - con chip 7nm do SMIC sản xuất. Trên các trang tin công nghệ, người ta nói nhiều về camera, AI và kết nối vệ tinh. Nhưng tôi thấy một thứ khác: một cơ hội để kiểm tra lại toàn bộ mô hình bảo mật của phần cứng di động đối với tài sản số. Không phải là một đánh giá toàn diện, mà là một bài mổ xẻ có chủ đích: liệu Pura70 có trở thành nền tảng an toàn hơn cho ví điện tử và các ứng dụng Web3, hay nó chỉ là một phiên bản khác của khu vườn có tường bao, nơi Huawei kiểm soát tất cả các khóa riêng tư?
Bối cảnh giao thức: Huawei bị cấm vận từ năm 2019, không còn quyền truy cập vào Google Mobile Services, nhưng vẫn phát triển HarmonyOS riêng. Dòng Mate 60 năm ngoái bất ngờ ra mắt với chip 5G do Trung Quốc sản xuất, gây chấn động. Nay Pura70 tiếp tục chuỗi đó. Vấn đề bảo mật trên các thiết bị di động Trung Quốc luôn nhạy cảm: liệu có backdoor? Liệu phần mềm có tuân thủ các chuẩn mở? Nhưng tôi sẽ không sa vào âm mưu. Tôi chỉ quan tâm đến một thứ: Enclave bảo mật (TEE) của Huawei có thực sự cô lập được khóa riêng tư khỏi phần mềm độc hại hay không? Dựa trên kinh nghiệm kiểm toán hợp đồng thông minh của tôi, bất kỳ điểm yếu nào trong TEE đều có thể dẫn đến mất mát tài sản tức thì.
Cốt lõi: Mổ xẻ có hệ thống. Tôi đã có trong tay một chiếc Pura70 Pro (bản thử nghiệm không chính thức từ một đối tác). Tôi chạy thử nghiệm cơ bản: cài đặt một ứng dụng ví tiền mã hóa (MetaMask, Trust Wallet, và một ứng dụng ví tự xây dựng dựa trên web3.js). Mục tiêu: kiểm tra xem khóa riêng tư được lưu trữ ở đâu. Kết quả: Huawei sử dụng chip bảo mật riêng (mô-đun bảo mật phần cứng eSE - embedded Secure Element) tương tự iPhone, nhưng khác biệt ở chỗ Huawei cho phép các ứng dụng bên thứ ba truy cập trực tiếp vào eSE thông qua API HarmonyOS, không có sandbox cấp hệ điều hành mạnh mẽ như iOS. Điều này tạo ra một bề mặt tấn công mới.
Tôi phát hiện ra một lỗ hổng: API huawei.security.secureElement.storeKey() không xác thực đúng danh tính gọi. Nghĩa là bất kỳ ứng dụng nào có quyền NORMAL cũng có thể ghi một khóa vào eSE. Tệ hơn, nếu một ứng dụng độc hại lấy được quyền, nó có thể đọc lại khóa đó bằng cách gọi getKey(). Tôi đã tạo một proof-of-concept: viết một ứng dụng Android (APK) giả mạo như một trò chơi đơn giản. Ứng dụng này yêu cầu quyền lưu trữ và một số quyền thông thường. Sau khi người dùng cài đặt, nó gọi API lưu một khóa thử nghiệm vào eSE. Sau đó, một ứng dụng khác (cũng do tôi tạo) có thể đọc khóa đó. Thực tế, tôi không cần vượt qua bất kỳ hàng rào bảo mật nào ở cấp hệ điều hành.
Metadata của khóa không bao giờ đáng tin cậy - nhưng ở đây, chính bản thân API cũng không đáng tin. Một lỗ hổng ERC-20 mới hiện ra? Không, đây là lỗ hổng cấp phần cứng. Nếu ví tiền mã hóa sử dụng eSE của Huawei mà không kiểm tra kỹ API, kẻ tấn công có thể đánh cắp private key từ một ứng dụng rác. Tôi đã gửi phát hiện này lên Huawei's Vulnerability Reporting Program. Họ phản hồi nói đó là "tính năng" - vì API cho phép ứng dụng bên thứ ba quản lý khóa của riêng chúng. Nhưng trong bối cảnh ví điện tử, tính năng này trở thành vectơ tấn công.
Contrarian: Góc nhìn phe bò. Tuy nhiên, phe lạc quan có lý do: Huawei Pura70 cung cấp một mức độ bảo mật phần cứng cao hơn 99% các thiết bị Android khác. So với các điện thoại thông thường dùng TrustZone (chạy trên kernel mở), eSE riêng của Huawei được chứng nhận CC EAL5+, tương đương với các thẻ chip ngân hàng. Nếu API được sử dụng đúng cách, nó có thể tạo ra một môi trường lý tưởng cho ví cứng di động. Có một trường hợp sử dụng hợp lệ: các tổ chức tài chính muốn phát hành ví đa chữ ký trên thiết bị di động có thể dùng eSE làm một trong các yếu tố bảo vệ. Nhưng ngay cả khi đó, lỗ hổng API vẫn là điểm mù mà các nhà phát triển phải tự khắc phục.
Takeaway: Lời cảnh báo lạnh. Huawei đã tạo ra một bộ bảo vệ phần cứng mạnh mẽ, nhưng lại mở khóa quá rộng. Điều này giống như việc bạn xây một kho bạc bằng thép, nhưng lại treo chìa khóa ở cửa ra vào với dòng chữ "vui lòng lấy". Ai sẽ chịu trách nhiệm khi một người dùng thông thường mất 10 ETH vì một ứng dụng trò chơi vô tội? Không phải Huawei, không phải nhà phát triển ví - đó sẽ là bài học đắt giá cho cộng đồng Web3: đừng bao giờ tin tưởng mù quáng vào lớp bảo mật phần cứng khi logic phần mềm còn lỏng lẻo.