TỔNG QUAN VỀ ANDROID
Giới thiệu Android
Android là hệ điều hành dựa trên Linux, được thiết kế cho thiết bị di động có màn hình cảm ứng như smartphone và tablet Ban đầu, Android được phát triển bởi Android, Inc với sự hỗ trợ tài chính từ Google, và sau đó Google đã mua lại công ty này vào năm 2005.
Android được ra mắt vào năm 2007, đánh dấu sự thành lập của Liên minh thiết bị cầm tay mở, bao gồm các công ty phần cứng, phần mềm và viễn thông, nhằm thúc đẩy tiêu chuẩn mở cho thiết bị di động Chiếc điện thoại đầu tiên chạy hệ điều hành Android đã được bán ra vào năm 2008.
Android là một hệ điều hành mã nguồn mở, được Google phát hành theo Giấy phép Apache, cho phép các nhà phát triển và lập trình viên tự do điều chỉnh và phân phối Cộng đồng lập trình viên đông đảo đã tạo ra hàng triệu ứng dụng, mở rộng chức năng cho thiết bị Android bằng ngôn ngữ lập trình Java Đến tháng 10 năm 2012, đã có khoảng 700.000 ứng dụng trên Android, với ước tính 25 tỷ lượt tải từ Google Play, cửa hàng ứng dụng chính của nền tảng này.
Android là một hệ điều hành mã nguồn mở, được phát hành bởi Google dưới Giấy phép Apache Sự linh hoạt của mã nguồn mở và giấy phép ít ràng buộc đã tạo điều kiện cho các nhà phát triển thiết bị, mạng di động và lập trình viên tự do điều chỉnh và phân phối Android.
Android hiện chiếm 85% thị phần điện thoại thông minh toàn cầu Hệ điều hành này được ra mắt vào năm 2007, với chiếc điện thoại đầu tiên chạy Android là HTC Dream (hay T-Mobile G1), được phát hành vào ngày 22 tháng 10 năm 2008.
Biểu trưng của hệ điều hành Android mới là một con rôbốt màu xanh lá cây do hãng thiết kế Irina Blok tại California vẽ.
Giao diện người dùng của Android được thiết kế dựa trên nguyên tắc tác động trực tiếp, cho phép người dùng tương tác với màn hình thông qua các cử chỉ cảm ứng như vuốt, chạm, kéo dãn và thu lại, tương tự như các hành động trong cuộc sống thực.
Android ngày càng có nhiều ứng dụng từ bên thứ ba, được cung cấp trên các cửa hàng ứng dụng như Google Play và Amazon Appstore, hoặc qua việc tải và cài đặt tệp APK từ các trang web khác Các ứng dụng này được phát triển bằng ngôn ngữ Java và sử dụng Bộ phát triển phần mềm Android (SDK).
Giao diện Android thân thiện và dễ sử dụng, cho phép người dùng tùy chỉnh linh hoạt mọi thứ ngoại trừ các phân vùng hệ thống Nền tảng này được nhiều thương hiệu điện thoại và thiết bị công nghệ lựa chọn, mang đến sự đa dạng về sản phẩm với mức giá từ bình dân đến cao cấp.
Kho ứng dụng Google Play liên tục cập nhật với đa dạng ứng dụng, mang đến cho người dùng nhiều lựa chọn Với khả năng đa nhiệm cao, người dùng có thể chạy nhiều ứng dụng cùng lúc, trong khi hiệu suất smartphone được tối ưu hóa, đảm bảo trải nghiệm mượt mà và hiệu quả.
Hệ điều hành Android dễ bị nhiễm phần mềm độc hại và mã độc vì cho phép cài đặt ứng dụng từ bên ngoài Google Play Sự phong phú của kho ứng dụng khiến việc kiểm soát chất lượng trở nên khó khăn hơn.
Khi phiên bản hệ điều hành mới được phát hành, không phải tất cả các thiết bị đều nhận được cập nhật tự động Điều này có thể khiến người dùng phải thường xuyên mua sắm thiết bị mới để trải nghiệm những tính năng mới nhất.
Kiến trúc hệ thống Android chứa các thành phần sau:
Hệ điều hành Android được xây dựng trên nhân Linux, cung cấp trình điều khiển cho phần cứng, mạng, quyền truy cập hệ thống tệp tin và quản lý tiến trình Android sử dụng phiên bản hạt nhân Linux với các bổ sung như Low Memory Killer, khóa đánh thức và trình điều khiển IPC Binder, nhằm cải thiện hiệu suất và chức năng cho nền tảng nhúng di động Những bổ sung này chủ yếu phục vụ cho chức năng hệ thống mà không ảnh hưởng đến quá trình phát triển trình điều khiển.
1.1.2.2 Lớp trừu tượng phần cứng (Hardware abstraction layer-HAL)
HAL xác định một giao diện tiêu chuẩn cho phép các nhà cung cấp phần cứng triển khai, giúp Android không cần triển khai trình điều khiển cấp thấp hơn Việc sử dụng HAL cho phép triển khai chức năng mà không làm ảnh hưởng đến hệ thống cấp cao hơn Các triển khai HAL được đóng gói thành mô-đun và được hệ thống Android tải vào thời điểm thích hợp.
1.1.2.3 Dịch vụ hệ thống (System services)
Dịch vụ hệ thống bao gồm các thành phần mô-đun như trình quản lý cửa sổ, dịch vụ tìm kiếm và trình quản lý thông báo, cho phép tương tác với phần cứng thông qua API Trong Android, có hai nhóm dịch vụ chính: dịch vụ hệ thống, bao gồm trình quản lý cửa sổ và trình quản lý thông báo, và dịch vụ phương tiện, liên quan đến phát và ghi âm thanh, video.
Cơ chế Binder Inter-Process Communication (IPC) cho phép khung ứng dụng tương tác với mã dịch vụ hệ thống Android, vượt qua ranh giới quy trình Điều này giúp các API khung cấp cao giao tiếp hiệu quả với các dịch vụ hệ thống, trong khi giao tiếp này được ẩn đi đối với nhà phát triển, khiến mọi thứ dường như "chỉ hoạt động" một cách mượt mà.
1.1.2.5 Khung ứng dụng (Application framework)
BẢO MẬT TRONG ANDROID
Tổng quan về bảo mật trong Android
Android tích hợp các tính năng bảo mật hàng đầu, được phát triển cùng với các nhà phát triển và nhà triển khai thiết bị, nhằm đảm bảo an toàn cho nền tảng và hệ sinh thái của mình Một mô hình bảo mật mạnh mẽ là cần thiết để xây dựng một hệ sinh thái ứng dụng và thiết bị vững mạnh, hỗ trợ bởi các dịch vụ đám mây Do đó, trong suốt vòng đời phát triển, Android luôn tuân thủ một chương trình bảo mật nghiêm ngặt.
2.1.1 Dịch vụ bảo mật của Google
Google cung cấp dịch vụ đám mây cho thiết bị Android tương thích với Dịch vụ Di động của Google Mặc dù không thuộc Dự án nguồn mở Android (AOSP), các dịch vụ này vẫn được tích hợp trên nhiều thiết bị Android Để tìm hiểu thêm về các dịch vụ này, hãy tham khảo báo cáo Android Security năm 2018.
Các dịch vụ bảo mật chính của Google là:
Google Play là nền tảng dịch vụ cho phép người dùng tìm kiếm, cài đặt và mua ứng dụng trên thiết bị Android hoặc qua web Nền tảng này hỗ trợ các nhà phát triển tiếp cận dễ dàng với người dùng và khách hàng tiềm năng Ngoài ra, Google Play còn cung cấp các tính năng như đánh giá từ cộng đồng, xác minh giấy phép ứng dụng, quét bảo mật và nhiều dịch vụ bảo mật khác để đảm bảo an toàn cho người dùng.
Dịch vụ cập nhật Android cung cấp các tính năng mới và bản cập nhật bảo mật cho các thiết bị Android được lựa chọn, bao gồm cả cập nhật qua web và qua mạng (OTA).
Dịch vụ ứng dụng cho phép các ứng dụng Android tận dụng khả năng của đám mây, bao gồm việc sao lưu dữ liệu, cài đặt ứng dụng và gửi tin nhắn từ đám mây đến thiết bị thông qua C2DM để thực hiện nhắn tin đẩy.
Xác minh ứng dụng là một tính năng quan trọng giúp bảo vệ thiết bị của bạn bằng cách tự động chặn hoặc cảnh báo về các ứng dụng có hại Nó liên tục quét các ứng dụng trên thiết bị, phát hiện và xóa những ứng dụng không an toàn, đảm bảo an ninh cho người dùng.
SafetyNet là một hệ thống phát hiện xâm nhập giúp bảo vệ quyền riêng tư, hỗ trợ Google trong việc theo dõi và giảm thiểu các mối đe dọa bảo mật đã biết, đồng thời xác định các mối đe dọa mới.
Chứng nhận SafetyNet là một API của bên thứ ba giúp xác định tính tương thích của thiết bị với CTS Ngoài ra, chứng thực này còn có khả năng xác định ứng dụng Android đang giao tiếp với máy chủ ứng dụng.
• Trình quản lý thiết bị Android: Một web app và Android app để xác định vị trí thiết bị bị mất hoặc bị đánh cắp.
Quyền riêng tư tương đương có dây (WEP) là phương pháp mã hóa Lớp 2 sử dụng mật mã ARC4, bảo vệ thông tin ở các Lớp 3–7 thông qua tải trọng của khung dữ liệu 802.11, gọi là Đơn vị dữ liệu dịch vụ MAC (MSDU) MSDU chứa dữ liệu từ LLC và Lớp 3–7, bao gồm gói IP và một số dữ liệu LLC WEP mã hóa tải trọng MSDU và hỗ trợ cả WEP 64-bit và WEP 128-bit theo tiêu chuẩn 802.11 Mục tiêu chính của WEP là bảo mật, kiểm soát truy cập và tính toàn vẹn dữ liệu, cung cấp quyền riêng tư cho dữ liệu bằng cách mã hóa trước khi truyền WEP cũng thực hiện kiểm soát truy cập, từ chối các trạm khách không có cùng khóa WEP tĩnh Để đảm bảo tính toàn vẹn, giá trị kiểm tra tính toàn vẹn (ICV) được tính toán trên dữ liệu trước khi mã hóa, ngăn ngừa sửa đổi dữ liệu Tiêu chuẩn 802.11-2012 hiện tại vẫn coi WEP là phương pháp mã hóa kế thừa trong bảo mật trước RSNA.
Mặc dù WEP 64-bit và 128-bit được định nghĩa trong tiêu chuẩn IEEE 802.11 vào năm 1997, ban đầu chính phủ Hoa Kỳ chỉ cho phép xuất khẩu công nghệ 64-bit Sau khi nới lỏng các hạn chế xuất khẩu, các nhà sản xuất thẻ vô tuyến bắt đầu phát triển thiết bị hỗ trợ mã hóa WEP 128-bit Tiêu chuẩn 802.11-2012 xác định phiên bản 64-bit là WEP-40.
WEP-104 tương ứng với mã hóa 128 bit, trong khi WEP 64 bit sử dụng khóa tĩnh 40 bit bí mật kết hợp với một số 24 bit do trình điều khiển thiết bị của thẻ chọn, được gọi là vectơ khởi tạo (IV) IV này được gửi dưới dạng văn bản rõ ràng và mỗi khung hình đều tạo ra một IV mới Tuy nhiên, chỉ có 16.777.216 kết hợp IV khác nhau, dẫn đến việc phải tái sử dụng các giá trị IV theo thời gian Tiêu chuẩn không xác định thuật toán tạo IV, nhưng điểm mạnh của việc kết hợp IV với khóa tĩnh 40 bit là mã hóa 64 bit Đối với mã hóa WEP 128 bit, khóa tĩnh bí mật 104 bit cũng được kết hợp với IV 24 bit.
Khóa WEP tĩnh có thể được nhập dưới dạng ký tự hex (0-9 và A-F) hoặc ký tự ASCII, và phải khớp giữa điểm truy cập và thiết bị khách Khóa tĩnh 40 bit bao gồm 10 ký tự hex hoặc 5 ký tự ASCII, trong khi khóa tĩnh 104 bit bao gồm 26 ký tự hex hoặc 13 ký tự ASCII Tuy nhiên, không phải tất cả các trạm khách hoặc điểm truy cập đều hỗ trợ cả hai định dạng này Một số thiết bị cho phép sử dụng tối đa bốn khóa WEP tĩnh riêng biệt, từ đó người dùng có thể chọn một khóa làm khóa truyền mặc định.
Khóa truyền là khóa tĩnh dùng để mã hóa dữ liệu trong hệ thống truyền thông, cho phép máy khách hoặc điểm truy cập sử dụng một khóa để mã hóa và một khóa khác để giải mã lưu lượng Để quá trình mã hóa và giải mã diễn ra bình thường, các khóa phải khớp chính xác giữa hai thiết bị Khi thiết bị tạo khung mã hóa WEP, mã định danh khóa được thêm vào trường IV để chỉ ra khóa nào trong bốn khóa tĩnh được sử dụng cho việc mã hóa và giải mã Nếu thiết bị truyền sử dụng khóa 3 để mã hóa, thiết bị nhận cũng cần sử dụng khóa 3 để giải mã; nếu không có khóa 3 được xác định hoặc không khớp với khóa WEP đã nhập, dữ liệu sẽ không được giải mã.
WEP hoạt động bằng cách thực hiện kiểm tra dự phòng theo chu kỳ (CRC) trên dữ liệu bản rõ trước khi mã hóa, sau đó nối Giá trị kiểm tra tính toàn vẹn (ICV) vào cuối dữ liệu ICV đảm bảo tính toàn vẹn dữ liệu và không nên nhầm lẫn với vectơ khởi tạo (IV), trong khi IV 24-bit được tạo ra và kết hợp với khóa bí mật tĩnh WEP sử dụng khóa tĩnh và IV để tạo ra dòng khóa thông qua một thuật toán ngẫu nhiên giả, tạo ra các bit dữ liệu ngẫu nhiên có độ dài tương ứng với dữ liệu bản rõ Các bit này được kết hợp với dữ liệu bản rõ bằng quy trình Boolean XOR, tạo ra bản mã WEP - dữ liệu được mã hóa Cuối cùng, dữ liệu được mã hóa sẽ được đặt trước bằng văn bản rõ ràng IV và số của bốn khóa đã sử dụng để mã hóa.
Để giải mã một khung, WEP đầu tiên trích xuất IV và mã định danh khóa để xác định khóa sử dụng Sau đó, WEP kết hợp khóa tĩnh và IV để tạo dòng khóa thông qua thuật toán ngẫu nhiên giả Dòng khóa này được sử dụng để kết hợp với bản mã bằng quy trình Boolean XOR, từ đó giải mã bản mã và tạo ra dữ liệu bản rõ Cuối cùng, WEP thực hiện kiểm tra CRC trên dữ liệu bản rõ và so sánh với ICV được giải mã từ bản mã; nếu hai giá trị này giống nhau, khung sẽ được coi là hợp lệ.
Bảo mật Kernel
Nền tảng Android cung cấp tính bảo mật mạnh mẽ nhờ vào nhân Linux và cơ sở giao tiếp giữa các tiến trình (IPC) an toàn, cho phép các ứng dụng giao tiếp an toàn trong các tiến trình khác nhau Các tính năng bảo mật này đảm bảo rằng ngay cả mã gốc cũng bị giới hạn bởi Hộp cát ứng dụng, ngăn chặn ứng dụng giả mạo gây hại cho các ứng dụng khác, hệ thống Android hoặc thiết bị Hệ thống được thiết kế để bảo vệ người dùng khỏi những mối đe dọa từ hành vi ứng dụng không an toàn hoặc khai thác lỗ hổng.
Nền tảng Android được xây dựng trên nhân Linux, một hệ điều hành đã được sử dụng rộng rãi trong nhiều môi trường bảo mật trong nhiều năm Với lịch sử dài đầy nghiên cứu, tấn công và sửa lỗi từ hàng nghìn nhà phát triển, Linux đã trở thành một hạt nhân ổn định và an toàn, được nhiều tập đoàn và chuyên gia bảo mật tin tưởng.
Là cơ sở cho môi trường điện toán di động, nhân Linux cung cấp cho Android một số tính năng bảo mật chính, bao gồm:
Mô hình quyền dựa trên người dùng
Cơ chế mở rộng cho IPC an toàn
Khả năng loại bỏ các phần không cần thiết và có khả năng không an toàn của hạt nhân
Là một hệ điều hành đa người dùng, Linux tập trung vào việc bảo mật thông qua việc cách ly tài nguyên giữa các người dùng Triết lý bảo mật của Linux nhằm bảo vệ tài nguyên của từng người dùng khỏi sự truy cập trái phép từ những người dùng khác.
Ngăn người dùng A đọc tệp của người dùng B
Đảm bảo rằng người dùng A không làm cạn bộ nhớ của người dùng B
Đảm bảo rằng người dùng A không làm cạn kiệt tài
Đảm bảo rằng người dùng A không làm cạn kiệt thiết bị của người dùng B (ví dụ: điện thoại, GPS và Bluetooth)
2.2.2 Hộp cát ứng dụng (The Application Sandbox)
Nền tảng Android sử dụng tính năng bảo vệ dựa trên người dùng của Linux để xác định và cô lập tài nguyên ứng dụng, giúp cách ly các ứng dụng và bảo vệ cả ứng dụng lẫn hệ thống khỏi mối đe dọa từ ứng dụng độc hại Mỗi ứng dụng Android được chỉ định một ID người dùng (UID) duy nhất và hoạt động trong quy trình riêng biệt của nó, đảm bảo an toàn và bảo mật cho người dùng.
Android sử dụng UID để thiết lập Hộp cát ứng dụng, đảm bảo an toàn giữa các ứng dụng và hệ thống thông qua các cơ sở Linux tiêu chuẩn như ID người dùng và nhóm Mặc định, các ứng dụng không thể tương tác và có quyền truy cập hạn chế vào hệ điều hành Nếu ứng dụng A cố gắng thực hiện hành động độc hại, như đọc dữ liệu của ứng dụng B, nó sẽ bị ngăn chặn do không có quyền người dùng thích hợp Hệ thống Hộp cát này dựa trên việc phân tách quy trình và quyền tệp theo kiểu UNIX, tạo ra một môi trường an toàn và có thể kiểm tra được.
Hộp cát ứng dụng, nằm trong hạt nhân, mở rộng bảo mật cho mã gốc và ứng dụng hệ điều hành Tất cả phần mềm trên hạt nhân, bao gồm thư viện hệ điều hành, khuôn khổ ứng dụng và các ứng dụng, đều hoạt động trong Hộp cát Một số nền tảng có thể hạn chế các nhà phát triển trong việc sử dụng khung phát triển, bộ API hoặc ngôn ngữ cụ thể Tuy nhiên, trên Android, không có giới hạn nào về cách viết ứng dụng để thực thi bảo mật; mã gốc và mã được thông dịch đều tương tự trong Hộp cát.
Để thoát khỏi Application Sandbox trên thiết bị được cấu hình đúng, cần phải thỏa hiệp tính bảo mật của nhân Linux Tuy nhiên, các biện pháp bảo vệ trong hộp cát ứng dụng không thể bị xâm phạm một cách riêng lẻ, do đó, việc áp dụng bảo vệ chuyên sâu là rất quan trọng để ngăn chặn các lỗ hổng đơn lẻ có thể dẫn đến việc xâm nhập hệ điều hành hoặc các ứng dụng khác.
Android sử dụng nhiều biện pháp bảo vệ để thực thi hộp cát ứng dụng, với các biện pháp này đã được cải thiện theo thời gian, làm tăng cường đáng kể kiểm soát truy cập tùy ý (DAC) dựa trên UID Các phiên bản Android trước đây đã tích hợp những biện pháp bảo vệ này.
Trong Android 5.0, SELinux đã thiết lập phân tách kiểm soát truy cập (MAC) bắt buộc giữa hệ thống và ứng dụng Mặc dù vậy, tất cả ứng dụng bên thứ ba hoạt động trong cùng một ngữ cảnh SELinux, do đó, tính cách ly giữa các ứng dụng chủ yếu dựa vào UID DAC.
Trong Android 6.0, hộp cát SELinux đã được mở rộng để cô lập các ứng dụng theo ranh giới của từng người dùng thực tế Hệ điều hành cũng đã thiết lập các mặc định an toàn hơn cho dữ liệu ứng dụng; cụ thể, đối với các ứng dụng có targetSdkVersion >= 24, quyền DAC mặc định trên thư mục chính của ứng dụng đã được thay đổi từ 751 thành 700, đảm bảo an toàn hơn cho dữ liệu riêng tư của ứng dụng, mặc dù các ứng dụng vẫn có thể ghi đè các thiết lập này.
Trong Android 8.0, tất cả các ứng dụng được cấu hình để hoạt động với bộ lọc seccomp-bpf, giới hạn các cuộc gọi hệ thống mà ứng dụng có quyền sử dụng, từ đó tăng cường ranh giới giữa ứng dụng và nhân.
Trong Android 9, tất cả các ứng dụng không có đặc quyền targetSdkVersion
Tất cả các ứng dụng phải hoạt động trong các hộp cát SELinux riêng biệt, đảm bảo quản lý quyền truy cập theo từng ứng dụng Tính năng bảo vệ này nâng cao khả năng phân tách ứng dụng, ngăn chặn việc ghi đè các giá trị mặc định an toàn và đặc biệt là bảo vệ dữ liệu của ứng dụng khỏi bị truy cập trái phép.
Trong Android 10, các ứng dụng bị giới hạn quyền truy cập vào hệ thống tệp, không thể truy cập trực tiếp vào các đường dẫn như /sdcard/DCIM Tuy nhiên, chúng vẫn có quyền truy cập đầy đủ vào các đường dẫn riêng biệt của gói ứng dụng, như được cung cấp bởi các phương thức áp dụng.
2.2.2.2 Nguyên tắc chia sẻ tệp Đặt dữ liệu ứng dụng là có thể truy cập được trên toàn thế giới là một phương pháp bảo mật kém Quyền truy cập được cấp cho tất cả mọi người và không thể giới rò rỉ thông tin và làm nhầm lẫn các lỗ hổng bảo mật và là mục tiêu ưa thích của phần mềm độc hại nhắm mục tiêu vào các ứng dụng có dữ liệu nhạy cảm (chẳng hạn như ứng dụng email) Trong Android 9 trở lên, việc chia sẻ tệp theo cách này rõ ràng không được phép đối với các ứng dụng targetSdkVersion>(.
Thay vì làm cho dữ liệu ứng dụng có thể truy cập được trên toàn thế giới, hãy sử dụng các nguyên tắc sau khi chia sẻ tệp:
Nếu ứng dụng của bạn cần chia sẻ tệp với ứng dụng khác, hãy sử dụng nhà cung cấp nội dung để đảm bảo chia sẻ dữ liệu một cách chi tiết và an toàn Nhà cung cấp nội dung giúp giảm thiểu nhược điểm liên quan đến quyền truy cập UNIX, mang lại giải pháp hiệu quả cho việc chia sẻ thông tin.
Bảo mật ứng dụng (Application security)
2.3.1 Mô hình quyền của Android: Truy cập các API được bảo vệ
Tất cả ứng dụng Android hoạt động trong môi trường Sandbox, nơi mà mỗi ứng dụng chỉ có quyền truy cập vào một số tài nguyên hệ thống nhất định Hệ thống quản lý quyền truy cập này rất quan trọng, vì việc sử dụng không đúng cách hoặc hành vi độc hại có thể gây ảnh hưởng tiêu cực đến trải nghiệm người dùng, mạng lưới hoặc dữ liệu trên thiết bị.
Các hạn chế trong việc sử dụng API được thực hiện qua nhiều hình thức khác nhau, bao gồm việc cố ý không cung cấp API cho các chức năng nhạy cảm, như việc thao tác trực tiếp thẻ SIM trên Android Một số biện pháp bảo mật, như phân tách vai trò và cách ly lưu trữ theo từng ứng dụng, được áp dụng để tăng cường an ninh Ngoài ra, các API nhạy cảm thường chỉ được thiết kế cho các ứng dụng đáng tin cậy và được bảo vệ thông qua cơ chế bảo mật gọi là Quyền.
Các API được bảo vệ này bao gồm:
Dữ liệu vị trí (GPS)
Kết nối mạng / dữ liệu
Các tài nguyên trên thiết bị chỉ có thể truy cập thông qua hệ điều hành, và để sử dụng các API bảo vệ, ứng dụng cần xác định khả năng trong tệp kê khai Từ phiên bản Android 6.0 trở lên, hệ thống áp dụng mô hình quyền thời gian chạy, trong đó nếu người dùng yêu cầu tính năng liên quan đến API được bảo vệ, hệ thống sẽ hiển thị hộp thoại để người dùng quyết định cho phép hoặc từ chối quyền.
Sau khi được cấp, các quyền sẽ áp dụng cho ứng dụng miễn là nó được cài đặt, và hệ thống không thông báo lại cho người dùng về các quyền này để tránh nhầm lẫn Các ứng dụng trong hệ điều hành cốt lõi hoặc được OEM đóng gói không yêu cầu quyền từ người dùng Nếu một ứng dụng bị gỡ cài đặt, quyền sẽ bị xóa, dẫn đến việc hiển thị lại các quyền khi cài đặt lại ứng dụng.
Trong phần cài đặt thiết bị, người dùng có thể kiểm tra quyền truy cập của các ứng dụng đã cài đặt Họ cũng có khả năng tắt các chức năng toàn cầu như GPS, radio hoặc Wi-Fi theo ý muốn.
Khi ứng dụng cố gắng truy cập vào tính năng bảo vệ mà chưa được khai báo trong tệp kê khai, lỗi quyền sẽ gây ra ngoại lệ bảo mật Việc kiểm tra quyền API được bảo vệ cần được thực hiện ở mức thấp nhất để ngăn chặn hành vi gian lận.
2.3.2 Cách người dùng hiểu ứng dụng của bên thứ ba
Android giúp người dùng nhận biết khi tương tác với ứng dụng bên thứ ba bằng cách thông báo rõ ràng về các quyền mà ứng dụng yêu cầu trước khi cài đặt Sau khi cài đặt, người dùng sẽ không nhận thêm thông báo xác nhận về các quyền này, giúp đảm bảo sự minh bạch trong việc sử dụng ứng dụng.
Hiển thị quyền ngay lập tức trước khi cài đặt ứng dụng rất quan trọng vì đây là thời điểm người dùng đang tìm hiểu thông tin về ứng dụng, nhà phát triển và chức năng của nó Người dùng cần xác định xem ứng dụng có phù hợp với nhu cầu và mong đợi của họ hay không, và do chưa có cam kết tinh thần hay tài chính, họ có thể dễ dàng so sánh ứng dụng với các lựa chọn thay thế khác.
Một số nền tảng yêu cầu người dùng cấp quyền khi bắt đầu mỗi phiên hoặc trong quá trình sử dụng ứng dụng, trong khi Android hướng tới việc cho phép người dùng chuyển đổi giữa các ứng dụng một cách liền mạch Việc yêu cầu xác nhận quyền sử dụng mỗi lần sẽ làm giảm tốc độ và trải nghiệm người dùng Tuy nhiên, việc cho phép người dùng xem xét quyền truy cập ngay tại thời điểm cài đặt giúp họ có lựa chọn không cài đặt ứng dụng nếu cảm thấy không thoải mái.
Nhiều nghiên cứu về giao diện người dùng cho thấy việc nhắc nhở người dùng quá nhiều khiến họ dễ dàng chấp nhận bất kỳ hộp thoại nào Mục tiêu bảo mật của Android là truyền đạt thông tin bảo mật quan trọng một cách hiệu quả, điều này không thể đạt được nếu sử dụng các hộp thoại mà người dùng đã quen bỏ qua Khi trình bày thông tin quan trọng một cách có chọn lọc và chỉ khi cần thiết, người dùng sẽ có xu hướng suy nghĩ kỹ hơn về những gì họ đồng ý.
Một số nền tảng không cung cấp thông tin về chức năng ứng dụng, khiến người dùng khó hiểu và thảo luận về khả năng của chúng Mặc dù không phải ai cũng có thể đưa ra quyết định thông minh, nhưng mô hình quyền của Android giúp thông tin ứng dụng dễ tiếp cận hơn Chẳng hạn, các yêu cầu cấp quyền không mong muốn có thể làm phức tạp quá trình đặt câu hỏi về chức năng ứng dụng và chia sẻ mối quan tâm tại các địa điểm như Google Play, nơi thông tin được hiển thị cho tất cả người dùng.
2.3.3 Giao tiếp giữa các quy trình
Các quá trình trong hệ thống UNIX có thể giao tiếp thông qua nhiều cơ chế truyền thống như hệ thống tệp, ổ cắm cục bộ và tín hiệu Tuy nhiên, các quyền truy cập của Linux vẫn được duy trì và áp dụng trong các quá trình này.
Android cũng cung cấp các cơ chế IPC mới:
Binder là một cơ chế gọi thủ tục từ xa nhẹ, được thiết kế để tối ưu hóa hiệu suất trong việc thực hiện các cuộc gọi trong và giữa các quá trình Cơ chế này được triển khai thông qua trình điều khiển Linux tùy chỉnh.
Services: Services (đã thảo luận ở trên) có thể cung cấp các giao diện có thể truy cập trực tiếp bằng chất kết dính.
Ý định là một đối tượng thông điệp đơn giản đại diện cho "ý định" thực hiện một hành động nào đó trong ứng dụng Chẳng hạn, khi ứng dụng muốn hiển thị một trang web, nó sẽ tạo một thể hiện Ý định để xem URL và chuyển giao cho hệ thống Hệ thống sau đó sẽ định vị mã liên quan, như Trình duyệt, để xử lý Ý định đó Ngoài ra, Ý định còn có thể được sử dụng để phát các sự kiện thú vị như thông báo trên toàn hệ thống.
ContentProvider là một kho dữ liệu cho phép truy cập vào dữ liệu trên thiết bị Ví dụ điển hình là việc sử dụng ContentProvider để truy cập dữ liệu từ các ứng dụng khác Đồng thời, một ứng dụng cũng có thể tạo ContentProvider riêng để chia sẻ và hiển thị dữ liệu của chính nó.
2.3.4 Cost-Sensitive APIs(API mất phí)
Cập nhật bảo mật và tài nguyên
2.4.1 Báo cáo về các vấn đề bảo mật
Tất cả các nhà phát triển, người dùng Android và nhà nghiên cứu bảo mật đều có thể thông báo cho nhóm bảo mật Android về các vấn đề bảo mật tiềm ẩn thông qua biểu mẫu báo cáo lỗ hổng bảo mật.
Các lỗi bảo mật không hiển thị ra bên ngoài nhưng có thể lộ diện sau khi được đánh giá hoặc giải quyết Nếu bạn dự định gửi bản vá hoặc bản kiểm tra Bộ kiểm tra tương thích (CTS) để xử lý vấn đề bảo mật, hãy đính kèm tài liệu này vào báo cáo lỗi và chờ phản hồi trước khi tải mã lên AOSP.
Nhiệm vụ đầu tiên trong xử lý lỗ hổng bảo mật là xác định mức độ nghiêm trọng và thành phần của Android bị ảnh hưởng Mức độ nghiêm trọng giúp ưu tiên vấn đề, trong khi thành phần xác định ai sẽ sửa lỗi, ai cần được thông báo và cách khắc phục sẽ được triển khai cho người dùng.
Bảng này trình bày các định nghĩa về các loại quy trình, được phân loại theo loại ứng dụng, quy trình hoặc lĩnh vực hoạt động Các quy trình được sắp xếp theo thứ tự từ ít đặc quyền đến nhiều đặc quyền hơn.
Mức độ nghiêm trọng của lỗi thường phản ánh mức độ thiệt hại tiềm ẩn nếu lỗi đó bị khai thác thành công Để xác định mức độ nghiêm trọng, hãy sử dụng các tiêu chí cụ thể sau đây.
2.4.2.3 Công cụ sửa đổi xếp hạng
Mặc dù mức độ nghiêm trọng của các lỗ hổng bảo mật thường dễ xác định, nhưng xếp hạng có thể thay đổi tùy theo trường hợp
Vectơ tấn công từ xa cho thấy rằng lỗi có thể bị khai thác mà không cần cài đặt ứng dụng hoặc truy cập vật lý vào thiết bị, thông qua việc duyệt web, đọc email, nhận tin nhắn SMS hoặc kết nối với mạng thù địch Để đánh giá mức độ nghiêm trọng, nhóm bảo mật Android cũng xem xét các vectơ tấn công "gần" là từ xa, bao gồm những lỗi chỉ có thể bị khai thác bởi kẻ tấn công ở gần thiết bị mục tiêu, như lỗi liên quan đến việc gửi các gói Wi-Fi hoặc Bluetooth không đúng định dạng Ngoài ra, các cuộc tấn công dựa trên NFC cũng được nhóm bảo mật Android phân loại là gần và do đó là từ xa.
Các cuộc tấn công cục bộ yêu cầu nạn nhân phải cài đặt và chạy một ứng dụng hoặc đồng ý chạy ứng dụng tức thì Nhóm bảo mật Android phân loại các vectơ tấn công vật lý cũng là cục bộ, bao gồm những lỗi chỉ có thể bị khai thác khi kẻ tấn công có quyền truy cập vật lý vào thiết bị, chẳng hạn như lỗi trên màn hình khóa hoặc lỗi liên quan đến cáp USB Đáng lưu ý, các cuộc tấn công qua kết nối USB có mức độ nghiêm trọng tương đương, bất kể thiết bị có cần mở khóa hay không, vì việc mở khóa thiết bị khi kết nối USB là rất phổ biến.
Android coi tất cả các mạng là thù địch và có thể đang thực hiện các cuộc tấn công hoặc theo dõi lưu lượng truy cập Mặc dù bảo mật lớp liên kết như mã hóa Wi-Fi giúp bảo vệ giao tiếp giữa thiết bị và điểm truy cập Wi-Fi, nhưng nó không bảo vệ các liên kết khác trong chuỗi giữa thiết bị và máy chủ mà thiết bị giao tiếp.
HTTPS bảo vệ toàn bộ kết nối giao tiếp từ đầu đến cuối bằng cách mã hóa dữ liệu tại nguồn và chỉ giải mã khi đến đích cuối cùng Vì lý do này, các lỗ hổng ảnh hưởng đến bảo mật Wi-Fi được coi là ít nghiêm trọng hơn so với các lỗ hổng trong HTTPS/TLS, vì mã hóa Wi-Fi một mình không đủ cho hầu hết các giao tiếp trên internet.
2.4.2.6 Xác thực sinh trắc học
Xác thực sinh trắc học đối mặt với nhiều thách thức, và ngay cả những hệ thống tiên tiến cũng có thể bị lừa bởi những kết quả tương đồng Các xếp hạng mức độ nghiêm trọng phân loại hai loại tấn công, phản ánh rủi ro thực tế mà người dùng cuối phải đối mặt.
Loại tấn công đầu tiên cho phép bỏ qua xác thực sinh trắc học mà không cần dữ liệu chất lượng cao từ chủ sở hữu Ví dụ, nếu kẻ tấn công đặt một miếng kẹo cao su lên cảm biến vân tay và được cấp quyền truy cập vào thiết bị, đây là một cuộc tấn công đơn giản có thể xảy ra trên nhiều thiết bị nhạy cảm mà không cần kiến thức về chủ sở hữu Do khả năng tác động đến số lượng người dùng lớn, cuộc tấn công này được xếp hạng nghiêm trọng cao, đặc biệt là đối với việc bỏ qua màn hình khóa.
Các cuộc tấn công thường liên quan đến việc sử dụng công cụ tấn công để lừa đảo, chẳng hạn như việc sử dụng hình ảnh hồ sơ trên mạng xã hội để đánh lừa hệ thống xác thực sinh trắc học Nếu kẻ tấn công có thể bỏ qua bước xác thực này, mức độ nghiêm trọng của cuộc tấn công sẽ được đánh giá cao Tuy nhiên, khi cần thu thập dữ liệu sinh trắc học trực tiếp từ người dùng, như quét hồng ngoại khuôn mặt, rào cản này sẽ hạn chế đáng kể số lượng người bị ảnh hưởng bởi cuộc tấn công.
2.4.2.7 Thành phần bị ảnh hưởng
Nhóm phát triển chịu trách nhiệm sửa lỗi tùy thuộc vào thành phần gặp sự cố, có thể là thành phần cốt lõi của nền tảng Android, trình điều khiển nhân do nhà sản xuất thiết bị gốc (OEM) cung cấp, hoặc các ứng dụng được cài sẵn trên thiết bị Pixel.
Nhóm kỹ sư Android đã tiến hành sửa lỗi trong mã AOSP, bao gồm các lỗi mức độ nghiêm trọng thấp và lỗi trong một số thành phần cụ thể Những lỗi đã được biết đến công khai sẽ được sửa trực tiếp trong nhánh chính của AOSP, trong khi các lỗi khác sẽ được khắc phục trong kho lưu trữ nội bộ trước khi được công bố.
Thành phần là yếu tố quan trọng ảnh hưởng đến cách người dùng nhận bản cập nhật Nếu có lỗi trong khuôn khổ hoặc hạt nhân, việc cập nhật chương trình cơ sở qua mạng (OTA) sẽ do các OEM thực hiện Trong khi đó, lỗi trong ứng dụng hoặc thư viện, như Gmail, Dịch vụ của Google Play hoặc WebView, có thể được phát hành dưới dạng bản cập nhật trực tiếp từ Google Play cho người dùng Android.