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:意图来自应用程序外部。之后,将使用额外的信息以启动活动。