создатьPackageContext

Категория OWASP: MASVS-CODE: Качество кода

Обзор

public abstract Context createPackageContext (String packageName, int flags)

Метод createPackageContext используется, когда разработчик хочет создать контекст для другого приложения в своем собственном приложении.

Например, если разработчики хотят получить ресурсы из стороннего приложения или вызвать из него методы, они будут использовать createPackageContext .

Однако если приложение вызывает createPackageContext с флагами CONTEXT_IGNORE_SECURITY и CONTEXT_INCLUDE_CODE , а затем вызывает getClassLoader() , это может привести к тому, что приложение станет уязвимым для выполнения кода вредоносным приложением. Это может произойти, например, когда злоумышленник выдает себя за невостребованное имя пакета (сквоттинг пакета), которое, как ожидал разработчик, будет присутствовать на устройстве пользователя.

Подведем итог критериям, которым необходимо соответствовать, чтобы сделать приложение уязвимым для такого рода атак:

Уязвимое приложение:

Вредоносное приложение:

  • Может заявить имя пакета, которое уязвимое приложение передает в createPackageContext .
  • Экспортирует android:appComponentFactory.

Влияние

Когда приложение createPackageContext используется небезопасным способом, это может привести к тому, что вредоносное приложение сможет выполнить произвольный код в контексте уязвимого приложения.

Смягчения

Не вызывайте createPackageContext с CONTEXT_IGNORE_SECURITY и CONTEXT_INCLUDE_CODE без крайней необходимости.

В тех случаях, когда это неизбежно, обязательно реализуйте механизм проверки подлинности пакета, в котором вы выполняете createPackageContext (например, путем проверки подписи пакета).

Ресурсы

,

Категория OWASP: MASVS-CODE: Качество кода

Обзор

public abstract Context createPackageContext (String packageName, int flags)

Метод createPackageContext используется, когда разработчик хочет создать контекст для другого приложения в своем собственном приложении.

Например, если разработчики хотят получить ресурсы из стороннего приложения или вызвать из него методы, они будут использовать createPackageContext .

Однако если приложение вызывает createPackageContext с флагами CONTEXT_IGNORE_SECURITY и CONTEXT_INCLUDE_CODE , а затем вызывает getClassLoader() , это может привести к тому, что приложение станет уязвимым для выполнения кода вредоносным приложением. Это может произойти, например, когда злоумышленник выдает себя за невостребованное имя пакета (сквоттинг пакета), которое, как ожидал разработчик, будет присутствовать на устройстве пользователя.

Подведем итог критериям, которым необходимо соответствовать, чтобы сделать приложение уязвимым для такого рода атак:

Уязвимое приложение:

Вредоносное приложение:

  • Может заявить имя пакета, которое уязвимое приложение передает в createPackageContext .
  • Экспортирует android:appComponentFactory.

Влияние

Когда приложение createPackageContext используется небезопасным способом, это может привести к тому, что вредоносное приложение сможет выполнить произвольный код в контексте уязвимого приложения.

Смягчения

Не вызывайте createPackageContext с CONTEXT_IGNORE_SECURITY и CONTEXT_INCLUDE_CODE без крайней необходимости.

В тех случаях, когда это неизбежно, обязательно реализуйте механизм проверки подлинности пакета, в котором вы выполняете createPackageContext (например, путем проверки подписи пакета).

Ресурсы