반응형
설명
브로드캐스트 리시버는 디바이스에서 발생하는 이벤트 신호를 받아 처리하는 역할을 한다.
대표적으로 배터리 부족, 부팅 완료, 인증코드 입력 메시지 등이 있다.
배터리 부족 메시지는 배터리가 부족하면 모든 앱에 존재하는 브로드캐스트 리시버에게 배터리가 부족하다는 메시지를
전송한다. 그리고 각 앱의 브로드캐스트 리시버는 수신한 메시지를 그대로 사용자에게 전송하여 사용자는 최종적으로
배터리가 부족하다는 알림을 받게 된다. 이때 공격자는 임의의 브로드캐스트 신호를 생성하여 사용자가 받는 알림
(메시지, 전화 등)을 가로 채거나, 특정 상황에서 발생하는 작업을 우회하여 수행할 수 있다.
취약점 진단
비밀번호 업데이트를 알리는 SMS를 보내는 기능을 한다.
adb를 이용해 브로드캐스트를 임의로 생성하고 logcat으로 확인한다.
> nox_adb shell am broadcast -a theBroadcast -n com.android.insecurebankv2/.MyBroadCastReceiver
정상적으로 메시지를 발송한 뒤 로그캣으로 확인한다.
> nox_adb shell am broadcast -a theBroadcast -n com.android.insecurebankv2/.MyBroadCastReceiver -e phonenumber 1234 -e newpass test
로그캣 확인 결과, 기존에 사용하던 비밀번호가 평문으로 노출되는 것을 알 수 있다.
대응방안
①
Androidmanifest.xml 파일에 선언된 브로드캐스트 리시버의 android:exported 항목을 "false"로 설정한다. ②
선언된 각각의 브로드캐스트 리시버에 별도의 권한을 부여한다.<receiver android:name="com.android.insecurebankv2.MyBroadCastReceiver"
android:exported="false">
<intent-filter>
action android:name="theBroadcast"/>
</intent-filter>
</receiver>
android:exported="false">
<intent-filter>
action android:name="theBroadcast"/>
</intent-filter>
</receiver>
반응형
'해킹-보안 > 모바일' 카테고리의 다른 글
DIVA - 안전하지 않은 데이터 저장 (0) | 2020.12.09 |
---|---|
루팅 탐지 우회 (0) | 2020.12.09 |
취약한 콘텐츠 프로바이더 접근 (0) | 2020.12.07 |
액티비티 컴포넌트 취약점 (0) | 2020.12.07 |
취약한 HTTP 통신 및 파라미터 조작 취약점 (0) | 2020.12.07 |