Self-Improvement

브로드캐스트 리시버 취약점 본문

AOS

브로드캐스트 리시버 취약점

JoGeun 2018. 10. 22. 22:20

브로드캐스트 리시버 취약점

안드로이드 시스템의 중요한 요소 중 하나로 안드로이드 디바이스에서 이벤트가 발생하면 브로드캐스트 신호를 보내게 되는데 이 신호를 받아 처리하는 역할을 수행한다. 브로드캐스트 리시버를 호출할 때 발생하는 브로드캐스트가 정상이면 부팅 완료, 문자 메시지 송/수신, 배터리 상태 등을 나타내는 시스템 이벤트이지만 악의적인 목적을 갖고 수행하는 경우에는 사용자가 받는 알림 등을 중간에서 가로채는 행위를 할 수 있으며 특정한 상황에서만 발생하는 작업을 우회하여 수행하도록 조작할 수 있다.

 

drozer 도구로 InsecureBankv2 애플리케이션의 브로드캐스트 리시버의 취약점이 존재하는지 확인한다.

dz> run app.package.attacksurface <취약점 진단할 애플리케이션>


확인해보니 1개의 브로드캐스트 리시버가 외부에서 접근할 수 있다는 것을 알 수 있으며 더 자세하게 브로드 캐스트 리시버에 대한 정보를 확인 해본다.

dz> run app.broadcast.info a <자세한 정보를 확인할 애플리케이션>


MyBroadCastReceiver의 이름을 가진 브로드캐스트 리시버가 존재한다는 것을 알 수 있으며 Permission도 따로 설정이 되어있지 않다.

MyBroadCastReceiver 메서드는 Broadcast Receiver객체를 상속 받았으며입력된 전화번호에 문자 메시지를 전송하도록 정의되어있다. 전화번호가 입력되지 않는다면 “Phone numver in null”을 출력한다.


drozer을 이용하여 인자값 없이 전송하게되면 MyBroadCastReceiver 메서드에서 볼 수 있듯이 “Phone number is null“이라는 메시지가 logcat에 출력이 되어지며 악용되어질 가능성이 높다.





대응방안

브로드캐스트 리시버의 오남용을 방지하기 위해서는 첫 번째로는 AndroidManifest.xml의 리시버 항목에 위치하는 “android:exported=true”false로 설정하는 것이다.


drozer로 다시한번 브로드캐스트 리시버에 대한 정보를 확인해보면 외부에서 접근할 수 있는 브로드캐스트 리시버가 존재하지 않는다.




'AOS' 카테고리의 다른 글

로컬 암호화 취약점  (0) 2018.10.22
액티비티 컴포넌트 취약점  (0) 2018.10.22
모바일 2016년 OWASP TOP10  (0) 2018.10.20
Drozer  (0) 2018.10.20
Kali Linux에 안드로이드 앱 취약점 환경 구축하기  (0) 2018.10.20