[인시큐어뱅크] 안드로이드 웹뷰 (Webview) 취약점
- 안드로이드
- 2020. 4. 17. 21:37
안드로이드 웹뷰 (Webview) 취약점
웹뷰는 웹페이지를 보여주는 뷰(view) 기능을 하는 안드로이드 컴포넌트 중 하나로, 자바스크립트를 지원하기 때문에 잘못 구현할 경우 웹의 XSS와 같은 취약점이 발생할 수 있다.
안드로이드 웹뷰 (Webview) 취약점 진단
디컴파일된 jar파일을 JD-GUI로 열어 webView가 사용된 곳을 확인해보자. ViewStatement 클래스의 onCreate 함수에서 webView가 사용되고있다. 이전에 인시큐어뱅크 앱의 Transfer 기능을 사용해보면서 이체 기록이 'View Statement'에 기록이 되는 것을 확인했다.
즉, Transfer 기능에 입력할 수 있는 입력값 중 스크립트 구문을 넣으면 View Statement 확인시 클라이언트 단에서 입력해놓은 스크립트 구문이 동작할 것이다. 참고로 이것이 가능한 이유는 입력값을 받거나 저장할 때 스크립트 구문을 필터링하지 않았고 웹뷰에서 스크립트가 동작할 수 있도록 setJaveScriptEnabled가 true로 설정되었기 때문이다.
1. (클라이언트) Transfer 기능에 스크립트 구문 입력
2. (서버) 입력값을 저장
3. (클라이언트) View Statement 기능 사용
4. (서버) View Statement 기능 수행을 위해 onCreate 함수가 실행됨
5. (서버) onCreate 함수가 저장해놓은 값(스크립트 포함)을 가져와 클라이언트에 내려줌
6. (클라이언트) 스크립트 동작됨
아래와 같이 입력값 중 한곳에 스크립트 구문을 입력해준다.
Transfer 자체는 실패하지만, 입력값은 저장이 됐는지 아래와 같이 View Statement에서 leeforest 경고창이 뜨는 것을 확인할 수 있다.
안드로이드 웹뷰 (Webview) 취약점 진단결과 및 대응방안
- 인시큐어뱅크(InsecureBankv2) 앱은 웹뷰에서 스크립트 동작이 가능하도록 setJavaScriptEnabled 부분이 true로 설정되어 있었고 스크립트 필터링도 수행하지 않아 임의로 스크립트를 실행시키는 것이 가능했음
- setJavaScriptEnabled를 false로 변경해 스크립트 실행이 되지 않도록 막아야 함
'안드로이드' 카테고리의 다른 글
[인시큐어뱅크] 개발자 백도어 (Developer Backdoors) 취약점 (0) | 2020.04.18 |
---|---|
[인시큐어뱅크] HTTP 통신 및 파라미터 조작 취약점 (0) | 2020.04.18 |
[인시큐어뱅크] 컨텐츠 프로바이더 (Content Provider) 취약점 (0) | 2020.04.17 |
안드로이드 취약점 진단도구, drozer 설치 및 사용법 (0) | 2020.04.17 |
[인시큐어뱅크] 안드로이드 액티비티 (Activity) 취약점 (0) | 2020.04.17 |