ANDROID.LIFECYCLE.SV.GETEXTRA

来自外部应用程序的数据未经验证即被使用

此为提升权限违规。如果可以在应用程序之外访问广播接收器,则用户必须对存储在多余数据字段中的所有输入进行消毒。

漏洞与风险

如果未提供 android:exported 标志或该标志为 false,则操作系统将不允许外部应用程序访问接收器,除非这些应用程序通过同一密钥进行签名。如果该标志为 true,则外部用户可以发送至广播接收器(以及服务或活动)。

缓解与预防

请确保对 get*Extra() 的任何调用在使用返回值前对其进行某些完好性检查。

示例

复制
 BroadcastReceiver m_batteryReceiver = new BroadcastReceiver() {
   public void onReceive(Context arg0, Intent intent) {
     String s = intent.getStringExtra("url");
     Intent i = new Intent(Intent.ACTION_VIEW);
     i.setData(Uri.parse(s));
     startActivity(i);
   }
 };

针对第 18 行报告 ANDROID.LIFECYCLE.SV.GETEXTRA:意图来自应用程序外部。之后,将使用额外的信息以启动活动。