Cách khắc phục lỗ hổng Fragment Injection

Thông tin này dành cho các nhà phát triển có (các) ứng dụng sử dụng cách triển khai không an toàn của lớp PreferenceActivity, khiến chúng dễ bị tấn công bởi Fragment Injection. Cách triển khai như vậy có thể cho phép ứng dụng độc hại bên ngoài tải các Fragment mà nên ở chế độ riêng tư.

Chuyện gì sẽ xảy ra

Kể từ ngày 1 tháng 3 năm 2017, Google Play đã bắt đầu chặn xuất bản mọi ứng dụng hoặc bản cập nhật mới trong đó các lớp PreferenceActivity dễ bị tấn công Fragment Injection. Vui lòng tham khảo thông báo trên Play Console của bạn.Sau thời hạn hiển thị trong Play Console, chúng tôi có thể xóa mọi ứng dụng có lỗ hổng bảo mật chưa được khắc phục khỏi Google Play.

Hành động cần thiết

  1. Đăng nhập vào Play Console và chuyển đến phần Cảnh báo để xem những ứng dụng bị ảnh hưởng và thời hạn giải quyết những vấn đề này.
  2. Cập nhật các ứng dụng bị ảnh hưởng và khắc phục lỗ hổng.
  3. Gửi phiên bản cập nhật của các ứng dụng bị ảnh hưởng.

Sau khi bạn gửi lại, chúng tôi sẽ xem xét lại ứng dụng của bạn. Quá trình này có thể mất vài giờ. Nếu ứng dụng vượt qua quy trình xem xét và được xuất bản thành công thì bạn không cần thực hiện thêm hành động nào. Nếu ứng dụng không vượt qua được quy trình xem xét thì phiên bản ứng dụng mới sẽ không được xuất bản và bạn sẽ nhận được thông báo qua email.

Thông tin chi tiết bổ sung

Khi có thể, hãy đặt exported=false cho PreferenceActivity trong tệp kê khai của bạn. Điều này sẽ ngăn các ứng dụng bên ngoài gửi cơ chế đến lớp này.

Nếu phải xuất lớp PreferenceActivity ra các ứng dụng bên ngoài, hãy xác định lý do vì sao lớp dễ bị tấn công và có hành động thích hợp. Có hai khả năng:

  1. Cách triển khai không phù hợp của isValidFragment:

Kiểm tra xem lớp dễ bị tấn công có chứa hay kế thừa một cách triển khai isValidFragment trong đó trả lại giá trị true trên tất cả đường dẫn mã hay không. Nếu điều này đúng thì hãy cập nhật lớp để kiểm tra danh sách các lớp Fragment được phép. Ví dụ: Nếu PreferenceActivity cho phép lớp MyFragment và không Fragment nào khác thì hãy triển khai phép kiểm tra như sau:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. targetSdkVersion nhỏ hơn 19 và không triển khai isValidFragment:

Nếu hiện ứng dụng đặt targetSdkVersion trong tệp kê khai thành một giá trị nhỏ hơn 19 và lớp dễ bị tấn công không chứa bất kỳ cách triển khai nào của isValidFragment thì lỗ hổng được kế thừa từ PreferenceActivity.

Để sửa lỗi này, nhà phát triển phải cập nhật targetSdkVersion thành 19 hoặc cao hơn. Ngoài ra, nếu không thể cập nhật targetSdkVersion thì nhà phát triển nên triển khai isValidFragment theo cách được mô tả trong 1) để kiểm tra các lớp phân đoạn được phép.

Ứng dụng cũng phải tuân thủ Thỏa thuận phân phối dành cho nhà phát triểnChính sách nội dung

Chúng tôi sẵn sàng trợ giúp

Nếu có câu hỏi kỹ thuật về lỗ hổng bảo mật, bạn có thể đăng lên Stack Overflow và sử dụng thẻ “android-security”. Để biết rõ các bước cần thực hiện nhằm giải quyết vấn đề này, bạn có thể liên hệ với nhóm hỗ trợ nhà phát triển của chúng tôi.

Thông tin này có hữu ích không?

Chúng tôi có thể cải thiện trang này bằng cách nào?
false
Trình đơn chính
1755437686134176017
true
Tìm kiếm trong Trung tâm trợ giúp
true
true
true
true
true
5016068
false
false