📌💜🤍
안드로이드 프로젝트 구글 플레이 스토어에 출시 중 경고가 있었다.
암시적인 내부 인텐트
앱에 암시적인 내부 인텐트 취약성이 있습니다.
Intent 객체에는 Android 시스템이 어느 구성 요소를 시작할지 판별하는 데 사용하는 정보가 담겨 있다.
(예를 들어 정확한 구성 요소 이름 또는 인텐트를 수신해야 하는 구성 요소 카테고리 등).
또한 수신자 구성 요소가 작업을 적절히 수행하기 위해 사용할 정보(예: 수행할 작업 및 조치를 취할 데이터 위치 등)도 이 안에 담겨 있다.
인텐트는 명시적과 암시적으로 나뉘는데 자세한건 이전 포스팅 참고.
액티비티 컴포넌트 - 인텐트 포스팅 링크
프로젝트에서 푸시 알림을 받아 브로드 캐스트를 구현하는 코드에서 암시적인 인텐트를 사용하였다.
구글 경고에 권장사항을 읽어보니
암시적 인텐트는 그 내용이 공개적(public)이고, 그에 따른 인텐트 필터를 정의하면 어느 어플리케이션이나 인텐트를 수신할 수 있다는 점에서 공격에 이용될 수 있는 취약성을 가진다.
그에 따른 인텐트 필터를 정의하면 어느 어플리케이션이나 인텐트를 수신할 수 있다는 점에서 공격에 이용될 수 있는 취약성을 가진다.
private void sendPushBroadcast(Map<String, String> data){
Intent intent = new Intent(Define.BROAD_CAST);
intent.putExtra("data", data);
sendBroadcast(intent);
}
private void sendPushBroadcast(Map<String, String> data){
Intent intent = new Intent(Define.BROAD_CAST);
intent.setPackage(getPackageName());
intent.putExtra("data", data);
sendBroadcast(intent);
}
참고 : https://developer.android.com/guide/components/intents-filters?hl=ko