createPackageContext

Catégorie OWASP : MASVS-CODE : qualité du code

Présentation

public abstract Context createPackageContext (String packageName, int flags)

La méthode createPackageContext est utilisée lorsqu'un développeur souhaite créer un contexte pour une autre application dans sa propre application.

Par exemple, si les développeurs souhaitent obtenir des ressources à partir d'une application tierce ou appeler des méthodes à partir de celle-ci, ils utiliseront createPackageContext.

Toutefois, si une application appelle createPackageContext avec les indicateurs CONTEXT_IGNORE_SECURITY et CONTEXT_INCLUDE_CODE, puis appelle getClassLoader(), cela peut rendre l'application vulnérable à l'exécution de code par une application malveillante. Cela peut se produire, par exemple, lorsqu'un pirate informatique usurpe l'identité d'un nom de package non revendiqué (squattage de paquets) que le développeur s'attendait à trouver sur l'appareil de l'utilisateur.

Pour résumer les critères à remplir pour qu'une application soit vulnérable à ce type d'attaque:

Application vulnérable:

Application malveillante:

  • Peut revendiquer le nom du package que l'application vulnérable transmet à createPackageContext.
  • Exporte android:appComponentFactory.

Impact

Lorsque createPackageContext est utilisé de manière non sécurisée par une application, cela peut permettre à une application malveillante d'exécuter du code arbitraire dans le contexte de l'application vulnérable.

Stratégies d'atténuation

N'appelez pas createPackageContext avec CONTEXT_IGNORE_SECURITY et CONTEXT_INCLUDE_CODE, sauf si cela est absolument nécessaire.

Dans les cas où cela est inévitable, veillez à implémenter un mécanisme permettant de vérifier l'identité du package sur lequel vous exécutez createPackageContext (par exemple, en vérifiant la signature du package).

Ressources