Android 安全 —— 本地拒絕服務漏洞

概述

Activity / Service / BroadcastReceiver / ContentProvider 的 export 設置爲 true 時,攻擊者可以向這些組件發送畸形 Intent 。

<activity android:name=".demo.DemoActivity"
		  android:export="true"
		  ....

危害

攻擊者可以輕易地向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安全字段
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章