OWASP 카테고리: MASVS-PLATFORM: 플랫폼 상호작용
개요
암시적 인텐트 도용 취약점은 애플리케이션이 인텐트를 호출할 때 정규화된 구성요소 클래스 이름 또는 패키지를 지정하지 않으면 발생합니다. 이렇게 되면 악성 애플리케이션이 의도된 애플리케이션 대신 인텐트 필터를 등록하여 인텐트를 가로챌 수 있습니다.
인텐트 콘텐츠에 따라 공격자는 민감한 정보를 읽거나 변경 가능한 PendingIntents 또는 바인더와 같은 변경 가능한 객체와 상호작용할 수 있습니다.
영향
암시적 인텐트를 도용하면 공격자가 인텐트의 콘텐츠를 읽거나 수정할 수 있을 뿐만 아니라 인텐트를 가로채 작업을 실행할 수도 있습니다. 이로 인해 민감한 정보/데이터 유출 또는 공격자가 제어하는 구성요소 실행과 같은 결과가 발생할 수 있습니다.
완화 조치
다음 코드 스니펫과 같이 setPackage()
를 호출하여 인텐트를 명시적으로 만듭니다.
Kotlin
val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
addCategory("android.intent.category.OPENABLE")
setPackage("com.some.packagename")
setType("*/*")
putExtra("android.intent.extra.LOCAL_ONLY", true)
putExtra("android.intent.extra.TITLE", "Some Title")
}
startActivity(intent)
Java
Intent intent = new Intent("android.intent.action.CREATE_DOCUMENT");
intent.addCategory("android.intent.category.OPENABLE");
intent.setPackage("com.some.packagename");
intent.setType("*/*");
intent.putExtra("android.intent.extra.LOCAL_ONLY", true);
intent.putExtra("android.intent.extra.TITLE", "Some Title");
startActivity(intent);
암시적 인텐트를 사용해야 하는 경우 노출하지 않으려는 민감한 정보나 변경 가능한 객체를 생략합니다. 앱이 작업(예: 이메일 작성, 사진 촬영 등)을 해결할 앱이 무엇인지 정확하게 알지 못하는 경우 암시적 인텐트를 사용해야 할 수 있습니다.