Android/InsecureBankv2

인시큐어뱅크 앱 취약점 - 취약한 웹 뷰 구현

박연준 2023. 7. 3. 21:11

인시큐어뱅크 앱 취약점 - 취약한 웹 뷰 구현

취약점 소개

웹 뷰(안드로이드 앱의 UI 또는 패킷)에서 자바스크립트 코드가 강제로 실행되게 함으로써 다른 사용자의 중요 정보를 탈취하는 취약점(XSS)이다.

인시큐어 뱅크에서는 자바스크립트 코드가 로컬에서만 실행되게 할 수 있는데 만약 다른 사용자에게 자바스크립트 코드를 보낼 수 있다면 타 사용자가 의도하지 않은 코드의 실행 및 특정 중요정보 탈취 등의 행위가 가능한 취약점이다.

취약점 진단

웹 뷰를 어디서 어떻게 사용하는지 확인하기 위해서

안드로이드 스튜디오 → ctrl + shift + f → WebView 검색

 

위의 화면에서 ctrl + enter를 누르면 메인화면 하단에 검색 결과가 출력된다.

 

Found Occurrences 하단의 Unclassfied 메뉴를 살펴보면 두 가지의 클래스에서 WebView 문자열이 검색되었고 어느 메서드에서 사용되었는지 확인 가능하다.

 

이 중 살펴볼 것은 View.Statement.java 클래스로 해당 기능은 웹 상에서이루어진 송금 기능의 내역을 확인하는 기능이다.

 

코드를 보면 ViewStatement라고 하는 Activity에서 웹 뷰가 사용되는 것을 확인할 수 있다.

 

아래와 같이 XSS 공격을 테스트해보기 위한 스크립트 구문을 넣어서 전송해본다.

 

failed라고 나오면서 송금은 fail 됐지만 ViewStatement에서 확인해보면 XSS알림창이 잘 뜨는 것을 확인할 수 있다.

 

 

대응 방안

  1. 스크립트 구문 필터링(특수문자 치환) 코드 추가
  2. 사용자 입력 값을 점검하여 지정된 데이터 형식 외 사용 금지
  3. WebView 설정 중 setJavaScriptEnabled 메서드를 false로 설정