createPackageContext

Danh mục OWASP: MASVS-CODE: Chất lượng mã

Tổng quan

public abstract Context createPackageContext (String packageName, int flags)

Phương thức createPackageContext được dùng khi nhà phát triển muốn tạo một ngữ cảnh cho một ứng dụng khác trong ứng dụng của riêng họ.

Ví dụ: nếu nhà phát triển muốn lấy tài nguyên từ một ứng dụng bên thứ ba hoặc gọi các phương thức từ ứng dụng đó, họ sẽ sử dụng createPackageContext.

Tuy nhiên, nếu một ứng dụng gọi createPackageContext bằng cờ CONTEXT_IGNORE_SECURITYCONTEXT_INCLUDE_CODE, sau đó gọi getClassLoader(), thì điều này có thể khiến ứng dụng dễ bị một ứng dụng độc hại thực thi mã. Điều này có thể xảy ra, chẳng hạn như khi kẻ tấn công mạo danh tên gói chưa được xác nhận quyền sở hữu (lấy cắp gói) mà nhà phát triển dự kiến sẽ có trên thiết bị của người dùng.

Tóm tắt các tiêu chí phải đáp ứng để ứng dụng dễ bị loại hình tấn công này:

Ứng dụng dễ bị tấn công:

Ứng dụng độc hại:

  • Có thể xác nhận quyền sở hữu tên gói mà ứng dụng dễ bị tấn công chuyển đến createPackageContext.
  • Xuất android:appComponentFactory.

Tác động

Khi một ứng dụng sử dụng createPackageContext theo cách không an toàn, điều này có thể dẫn đến việc một ứng dụng độc hại có thể thực thi mã tuỳ ý trong ngữ cảnh của ứng dụng dễ bị tấn công.

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

Đừng gọi createPackageContext bằng CONTEXT_IGNORE_SECURITYCONTEXT_INCLUDE_CODE trừ phi thực sự cần thiết.

Trong trường hợp không thể tránh khỏi, hãy nhớ triển khai một cơ chế để xác minh danh tính của gói mà bạn đang thực thi createPackageContext (ví dụ: bằng cách xác minh chữ ký của gói).

Tài nguyên