Xâm nhập ý định ngầm ẩn

Danh mục OWASP: MASVS-PLATFORM: Tương tác với nền tảng

Tổng quan

Lỗ hổng xâm nhập Ý định ngầm ẩn xảy ra trong trường hợp một ứng dụng không chỉ định gói hoặc tên lớp đủ điều kiện của thành phần khi gọi một ý định. Điều này cho phép ứng dụng độc hại đăng ký một bộ lọc ý định để cản trở ý định thay vì ứng dụng cần nhắm đến.

Tuỳ thuộc vào nội dung ý định, kẻ tấn công có thể đọc thông tin nhạy cảm hoặc tương tác với các đối tượng có khả năng biến đổi, chẳng hạn như PendingIntents hoặc Binders có khả năng biến đổi.

Mức độ tác động

Khi xâm nhập được vào Ý định ngầm ẩn, kẻ tấn công có thể đọc hoặc sửa đổi nội dung ý định, cũng như cản trở ý định thực hiện hành động. Điều này có thể gây ra các hậu quả như rò rỉ thông tin/dữ liệu nhạy cảm hoặc phát tán các thành phần do kẻ tấn công kiểm soát.

Giải pháp giảm thiểu

Làm rõ ý định bằng cách gọi setPackage(), như trong đoạn mã sau:

Kotlin

val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
    addCategory("android.intent.category.OPENABLE")
    setPackage("com.some.packagename")
    setType("*/*")
    putExtra("android.intent.extra.LOCAL_ONLY", true)
    putExtra("android.intent.extra.TITLE", "Some Title")
}

startActivity(intent)

Java

Intent intent = new Intent("android.intent.action.CREATE_DOCUMENT");
intent.addCategory("android.intent.category.OPENABLE");

intent.setPackage("com.some.packagename");

intent.setType("*/*");
intent.putExtra("android.intent.extra.LOCAL_ONLY", true);
intent.putExtra("android.intent.extra.TITLE", "Some Title");
startActivity(intent);

Nếu bạn cần dùng ý định ngầm ẩn, hãy bỏ qua mọi thông tin nhạy cảm hoặc đối tượng có khả năng biến đổi mà bạn không muốn để lộ. Bạn có thể cần sử dụng các ý định ngầm ẩn khi một ứng dụng không biết chính xác ứng dụng nào sẽ giải quyết hành động đó (ví dụ: soạn email, chụp ảnh, v.v.).

Tài nguyên