createPackageContext

OWASP 类别:MASVS-CODE:代码质量

概览

public abstract Context createPackageContext (String packageName, int flags)

当开发者想要在自己的应用中为其他应用创建上下文时,可以使用方法 createPackageContext

例如,如果开发者想要从第三方应用获取资源或调用其中的方法,则需要使用 createPackageContext

不过,如果应用使用 CONTEXT_IGNORE_SECURITYCONTEXT_INCLUDE_CODE 标志调用 createPackageContext,然后调用 getClassLoader(),则可能会导致应用容易受到恶意应用执行代码的影响。例如,当攻击者冒充开发者预计在用户设备上存在的未声明软件包名称(软件包占用)时,就可能会发生这种情况。

总而言之,应用必须满足以下条件,才能受到此类攻击:

易受攻击的应用:

恶意应用:

  • 能够声明易受攻击的应用传递给 createPackageContext 的软件包名称。
  • 导出 android:appComponentFactory。

影响

如果应用以不安全的方式使用 createPackageContext,可能会导致恶意应用能够在易受攻击的应用环境中执行任意代码。

缓解措施

除非绝对必要,否则请勿使用 CONTEXT_IGNORE_SECURITYCONTEXT_INCLUDE_CODE 调用 createPackageContext

如果无法避免这种情况,请务必实现一种机制来验证您要针对哪个软件包执行 createPackageContext(例如,通过验证软件包的签名)。

资源