Tăng cường bảo mật Android: Ngăn chặn mã độc đánh cắp dữ liệu ứng dụng của bạn
Nếu bạn từng nghĩ bảo mật Android là điều gì đó xa vời và khó tiếp cận… thì tin vui là Google đang dần làm phần phức tạp đó trở nên dễ dàng hơn rất nhiều 😄
Trong bài blog mới, đội ngũ Android chia sẻ cách họ đang giúp các ứng dụng trở nên an toàn hơn, đồng thời giảm bớt nỗi lo cho người dùng — đặc biệt trong bối cảnh các hình thức malware ngày càng tinh vi và khó lường.
Bảo vệ ứng dụng khỏi "những kẻ rình rập" chỉ với 1 dòng code
Thời gian gần đây, các tác nhân xấu thường tìm cách lợi dụng Accessibility API để đọc lén thông tin nhạy cảm (như mật khẩu, dữ liệu tài chính) trực tiếp trên màn hình. Không dừng lại ở đó, chúng còn có thể tự động thực hiện các thao tác chạm (inject touches) để chiếm quyền điều khiển thiết bị.
Để giải quyết vấn đề này, Android 16 đã giới thiệu một cơ chế bảo vệ mới: cờ accessibilityDataSensitive.
Khi bạn đặt thuộc tính này là true (hoặc 1) cho một View hoặc Composable, bạn đang tạo ra một lớp bảo vệ giúp ngăn các ứng dụng độc hại truy cập hoặc tương tác với dữ liệu nhạy cảm. Cơ chế này hoạt động khá chặt chẽ: bất kỳ ứng dụng nào yêu cầu quyền Accessibility nhưng không khai báo rõ ràng là công cụ hỗ trợ tiếp cận hợp pháp (isAccessibilityTool=true) sẽ bị từ chối quyền truy cập vào View đó.
Lưu ý từ Google: nếu một ứng dụng cố tình khai báo sai isAccessibilityTool=true, ứng dụng đó sẽ bị gỡ khỏi Google Play và bị Google Play Protect chặn trên thiết bị người dùng. Điều này giúp ngăn chặn mã độc mà vẫn đảm bảo không ảnh hưởng đến các công cụ hỗ trợ tiếp cận hợp pháp.
Nâng cấp tự động cho setFilterTouchesWhenObscured
Nếu bạn đang sử dụng setFilterTouchesWhenObscured(true) để bảo vệ ứng dụng khỏi kỹ thuật tấn công Tapjacking (che giấu thao tác chạm), thì có một tin khá “dễ chịu” dành cho bạn 😄
Google đã tích hợp sẵn cơ chế accessibilityDataSensitive vào phương thức này. Điều đó có nghĩa là các View của bạn sẽ tự động được xem là chứa dữ liệu nhạy cảm — mà không cần thêm bất kỳ dòng code nào.
Hướng dẫn triển khai
Google khuyến nghị các lập trình viên nên áp dụng setFilterTouchesWhenObscured hoặc cờ accessibilityDataSensitive cho mọi màn hình có chứa thông tin nhạy cảm, chẳng hạn như: đăng nhập, thanh toán, hoặc các view hiển thị thông tin cá nhân.
Dành cho Jetpack Compose
Bật setFilterTouchesWhenObscured:
val composeView = LocalView.current
DisposableEffect(Unit) {
composeView.filterTouchesWhenObscured = true
onDispose {
composeView.filterTouchesWhenObscured = false
}
}
Bật accessibilityDataSensitive:
Sử dụng modifier semantics để áp dụng thuộc tính sensitiveData cho Composable:
BasicText(
text = "Your password",
modifier = Modifier.semantics {
sensitiveData = true
}
)
Dành cho View-based apps
Trong XML Layout:
<TextView android:filterTouchesWhenObscured="true" />
<TextView android:accessibilityDataSensitive="1" />
Bằng Kotlin:
// Dùng setFilterTouchesWhenObscured
myView.filterTouchesWhenObscured = true
// Dùng cờ accessibilityDataSensitive
myView.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
Bằng Java:
// Dùng setFilterTouchesWhenObscured
myView.setFilterTouchesWhenObscured(true);
// Dùng cờ accessibilityDataSensitive
myView.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES);
Lời kết
Việc áp dụng các API này là một bước tiến quan trọng giúp lập trình viên bảo vệ tốt hơn cho người dùng của mình. Như chia sẻ từ anh Vladimir Kozhevnikov – Kỹ sư Android tại Revolut:
"Chúng tôi luôn ưu tiên bảo vệ dữ liệu tài chính của khách hàng, điều đó từng đòi hỏi phải tự xây dựng các lớp phòng thủ riêng chống lại mã độc sử dụng Accessibility. Revolut ủng hộ mạnh mẽ API chính thức mới này của Android, vì nó cho phép chuyển từ các giải pháp tự xây phức tạp sang một cơ chế bảo mật nền tảng vững chắc chỉ với một dòng code."
Hy vọng bạn sẽ sớm tích hợp những tính năng này vào dự án của mình — để cùng góp phần xây dựng một hệ sinh thái Android an toàn và đáng tin cậy hơn 👍
Nguồn tham khảo: https://android-developers.googleblog.com/
All rights reserved