Android 安全 —— 本地拒绝服务漏洞

概述

Activity / Service / BroadcastReceiver / ContentProvider 的 export 设置为 true 时,攻击者可以向这些组件发送畸形 Intent 。

危害

攻击者可以轻易地向Activity等发送自己的 Intent ,如果 Intent 携带空数据,或则畸形数据等,如果 Activity 内部处理接收到的 Intent 没有进行格式格式校验或者异常捕获,造成程序崩溃。

class DemoActivity extends BaseActivity {
	 @Override
  	 protected void onCreate(@Nullable Bundle savedInstanceState) {
		Intent  data =	getIntent();
		String name = data.getStringExtra("name");// 攻击者发送 data == null 时,会造成程序 NullPointer
		
	 }
}

防范

  • 仅仅程序内部使用的 Activity 等设置 export 为 false
  • 处理 Intent 数据时,进行 try-catch 防止数据格式异常
class BaseReceiver extends BroadcastReceiver{
	public final void onReceive(Context context, Intent intent){
		if( context != null && intent != null) {
			try {
				String action = intent.getAction();
				if("com.demo.test".equlals(action)){
					String name = intent.getStringExtra("name");
					//...
				}
			}catch(Throwable t){
				t.printStackTrace();
				return;
			}
		}
	}
}
  • 如果export为true,添加permission安全字段

你可能感兴趣的:(Android)