VnReview
Hà Nội

Vì sao một số tính năng không hoạt động khi thiết bị Android đã root?

Root thiết bị Android mang lại nhiều lợi ích nhưng nó cũng gây ra một số phiền toái khi sử dụng nếu không chú ý.

Theo trang công nghệ How-To Geek, việc root một thiết bị Android cho phép bạn cài đặt thêm nhiều ứng dụng tinh chỉnh hệ thống, cũng như truy cập sâu hơn vào thiết bị của mình. Song, một số tính năng có sẵn trong vài trường hợp sẽ không hoạt động nếu thiết bị đã được root, chẳng hạn như dịch vụ thanh toán di động Android Pay.

Vậy, tại sao Google lại biết được một thiết bị Android đã được root hay chưa?

Về cơ bản, Google sử dụng một hàm API gọi là SafetyNET để kiểm tra. Một khi thiết bị của bạn đã được root, thông tin sẽ được gửi về Google và họ có thể khóa một số tính năng trên thiết bị, không cho bạn sử dụng. Không chỉ Google, một số ứng dụng từ bên thứ 2 hoặc thứ 3 cũng không thể hoạt động, dù có thể họ sử dụng một phương thức khác để kiểm tra tình trạng root trên một chiếc Android.

SafetyNET là gì? SafetyNET là một phần của dịch vụ Google Play (Google Play Services) được cài đặt trên những thiết bị Android được Google phê chuẩn (có kho ứng dụng Play Store từ ban đầu). Theo Google, hàm API này "cung cấp quyền truy cập vào các dịch vụ của Google giúp đánh giá tình trạng an toàn trên một thiết bị Android". Một lập trình viên có thể gọi hàm API này từ ứng dụng của họ để xem thiết bị đang chạy đã bị can thiệp hay chưa. SafetyNET được thiết kế để kiểm tra sự can thiệp vào thiết bị từ bất kỳ nguyên nhân nào: người dùng, ROM tùy chỉnh hoặc từ các phần mềm độc hại.

Thế nào gọi là "thiết bị Android được phê chuẩn"? Những thiết bị có Play Store và các ứng dụng khác của Google đều phải vượt qua một bài kiểm tra ban đầu gọi là "Compatibility Test Suite" (CTS – tức các hàm API, hiệu năng phải đảm bảo quy chuẩn của Google). Root hoặc cài một bản ROM tùy chỉnh trên thiết bị đều ngăn chặn cái gọi là "CTS Compatible" (tương thích CTS). Vì vậy SafetyNET có thể biết được bạn đã root thiết bị hay chưa nếu kiểm tra tính tương thích của CTS. Tương tự, các thiết bị Android không có Play Store, không có các dịch vụ của Google đều là những thiết bị không vượt qua bài kiểm tra CTS (tính tương thích CTS không có), dù bạn có root thiết bị đó hay không.

Nokia X trước đây không hề có Play Store hay các dịch vụ của Google

Để nhận được thông tin này, Google Play Services tải về thiết bị một chương trình có tên SNET và chạy nó trên điện thoại của bạn. Nó thường xuyên thu thập dữ liệu từ thiết bị và gửi về Google. Hãng không nói rõ các dữ liệu mà SNET thu thập là gì, nhưng có 2 thông tin chúng ta chắc chắn chương trình sẽ lấy đó là: xác định phần mềm của thiết bị có bị can thiệp hay không, và kiểm tra phân vùng trên thiết bị có bị chỉnh sửa hay không (từ trạng thái "nhà máy" – factory).

Bạn có thể kiểm tra tình trạng SafetyNET trên thiết bị bằng ứng dụng SafetyNET Helper Sample;hoặc SafetyNET Playground. Ứng dụng sẽ yêu cầu gửi dữ liệu về tình trạng SafetyNET trên thiết bị từ máy chủ Google và hiển thị thông tin trên màn hình.

SafetyNET trong ứng dụng

Một lập trình viên có thể lựa chọn có sử dụng SafetyNET cho ứng dụng của họ hay không. Đối với ứng dụng, SafetyNET chỉ đơn giản ngăn không cho ứng dụng đó hoạt động trên một thiết bị Android bị phát hiện đã root.

Tin vui đó là hầu hết các ứng dụng hiện nay đều không sử dụng SafetyNET. Ngay cả khi ứng dụng ban đầu không có SafetyNET, mà trong quá trình thử nghiệm nó vẫn hoạt động bình thường trên một thiết bị được phát hiện đã bị can thiệp, lập trình viên vẫn có thể làm cho ứng dụng đó không hoạt động được trên một thiết bị đã được root.

Hãy lấy Android Pay làm ví dụ

Dịch vụ thanh toán di động Android Pay của Google sẽ không hoạt động trên một chiếc Android đã được root. Bạn sẽ thấy thông báo sau:

Không chỉ root, một bản ROM tùy chỉnh cũng sẽ bị như thế. SafetyNET API sẽ cho rằng đây là một thiết bị Android "không tương thích" nếu bạn cài một bản ROM không phải ROM cài sẵn theo máy. Mặt khác, nếu hệ thống bị nhiễm các phần mềm độc hại mà có thể làm ảnh hưởng đến Android Pay và một số ứng dụng khác, SafetyNET cũng sẽ kiểm tra và ngăn ứng dụng đó hoạt động.

Root được xem là hành động phá vỡ bức tường bảo mật của Android. Trong khi Android Pay cần lưu trữ nhiều thông tin quan trọng của người dùng, Google sử dụng tính năng gọi là sandbox để bảo vệ chúng, nhưng trên một thiết bị đã root, sandbox có thể không hoạt động. Google không thể biết được một thiết bị sử dụng Android Pay có được an toàn nếu nó đã được root hoặc cài ROM tùy chỉnh hay không, vì vậy cách tốt nhất là … chặn luôn.

Nếu quan tâm, bạn đọc có thể xem bài giải thích của một kỹ sư phát triển Android Pay trên trang XDA tại đây.

Phương pháp khác để phát hiện tình trạng root trên thiết bị Android

Không chỉ SafetyNET, các ứng dụng khác có thể sử dụng những phương pháp khác để kiểm tra tình trạng root trên một thiết bị. Điện thoại Samsung đều được trang bị hệ thống bảo mật KNOX, và KNOX sẽ phát hiện ngay khi thiết bị của bạn đã được root. Samsung dùng cách này cũng để ngăn chặn Samsung Pay (dịch vụ thanh toán di động của Samsng) hoạt động.

Tương tự, một số ứng dụng từ bên thứ 3 cũng sẽ không hoạt động trên một thiết bị đã root, nhưng không phải tất cả chúng đều dùng SafetyNET. Phương pháp đơn giản chỉ là kiểm tra chương trình và các tiến trình có liên quan đến root đang chạy trên thiết bị mà thôi.

Không dễ để tìm cũng như lập danh sách các ứng dụng sẽ không hoạt động trên những chiếc Android đã root. Bạn có thể xem danh sách của RootCloak tại đây, dù nó có thể không được cập nhật. Ứng dụng có liên quan đến ngân hàng và thanh toán trên di động hầu hết đều không hoạt động trên những thiết bị đã root để đảm bảo tài khoản ngân hàng và thông tin cá nhân của người dùng được an toàn. Một số dịch vụ cung cấp nội dung trả tiền khác cũng thế.

Nhưng chúng cũng có thể bị lừa

Google dường như đang chơi trò "mèo đuổi chuột" với SafetyNET, liên tục cập nhật ứng dụng để đối phó với các phương pháp can thiệp mới, có thể đánh lừa SafetyNET bất cứ lúc nào. Trước đây, một lập trình viên có tên Chainfire đã "chế" ra một phương pháp root mới mà không cần sửa đổi các phân vùng hệ thống, phương pháp này gọi là "root systemless". SafetyNET ban đầu không phát hiện ra được với phương pháp này, Android Pay vẫn hoạt động, nhưng ngay sau đó Google đã cập nhật SafetyNET và cuối cùng … mèo vẫn hoàn mèo.

Tùy thuộc vào phương pháp kiểm tra, một số ứng dụng có thể bị đánh lừa một cách dễ dàng. Các báo cáo gần đây nói rằng đã có phương pháp để root các máy Samsung mà không làm ảnh hưởng đến KNOX, từ đó Samsung Pay vẫn hoạt động như thường.

Trường hợp ứng dụng chỉ dùng phương pháp kiểm tra các tiến trình đang chạy để nhận biết, một module trên Xposed mang tên RootCloak có thể giúp bạn đánh lừa chúng một cách dễ dàng. Một số trường hợp cho biết các ứng dụng như DirecTV GenieGo, Best Buy CinemaNow, Movies by Flixster, … đều bị đánh lừa bởi RootCloak. Tuy nhiên, nếu chúng được cập nhật để sử dụng SafetyNET của Google thì RootCloak hoàn toàn mất tác dụng.

Hầu hết các ứng dụng phổ biến vẫn sẽ hoạt động khi thiết bị của bạn đã root, trừ các ứng dụng liên quan đến thanh toán, ngân hàng hoặc các dịch vụ cung cấp video trả tiền có thể không cho bạn xem video của họ. Trong trường hợp khẩn cấp, ứng dụng mà bạn cần không hoạt động trên thiết bị đã root, thì bạn vẫn có thể unroot để sử dụng ứng dụng một cách bình thường, hoặc … chuyển sang dùng một ứng dụng khác với các tính năng tương tự.

Ảnh: Android Pit

Phúc Thịnh

Chủ đề khác