[목차]
Insecure Webview implementation (취약한 웹 뷰 구현)
1. 취약점 설명
2. 진단 방법
- 앱 구동 후 웹뷰가 사용되거나
웹뷰와 연관이 있는 기능들 검토
- 웹뷰가 사용되고 있는 코드 검토
- 스크립트 명령어를 웹뷰와 연관 있는
UI 등에 대입 후 반응 확인
3. 대응 방안
[Insecure Webview implementation]
1. 취약점 설명
웹 뷰(안드로이드 앱의 UI 또는 패킷)에서
자바스크립트 코드가 강제로 실행되게 함으로써
다른 사용자의 중요 정보를 탈취하는 취약점
(XSS)
인시큐어뱅크에서는 자바스크립트 코드가
로컬에서만 실행되게 할 수 있는데
만약 다른 사용자에게 자바스크립트 코드를
보낼 수 있다면 타 사용자가 의도하지 않은
코드의 실행 및 특정 중요정보 탈취 등의
행위가 가능한 취약점
2. 진단 방법
(1) 앱 구동 후 웹뷰가 사용되거나
웹뷰와 연관이 있는 기능들 검토
ㄱ. 웹 뷰를 어디서 어떻게 사용하는지 확인
안드로이드 스튜디오 > ctrl + shift + f > WebView 검색
위 창 우측 하단의
Open in Find Window 또는
ctrl + enter 누르면
메인 화면 하단에 검색 결과가 출력됨
Found Occurrences 하단의
Unclassified 메뉴를 살펴보면
두 가지 클래스에서 WebView라는 문자열이 검색되었고
해당 클래스 들을 확인해 보면 어느 메서드에서 사용되었는지
확인 가능
(2) 웹뷰가 사용되고 있는 코드 검토
이 중 살펴볼 것을
View Statiement.java 클래스로
해당 기능은 앱 상에서 이루어진
송금(transfer) 기능의 내역을
확인하는 기능이고
코드를 보면
ViewStatement라고 하는 Activity에서
웹 뷰가 사용되는 것을 확인할 수 있다.
(3) 스크립트 명령어를 웹뷰와 연관 있는
UI 등에 대입 후 반응 확인
: 해당 소스 내 저장된 파일을 load 하는 코드를 확인
스크립트 구문 입력 시도,
송금은 fail 되지만
viewstatment 메뉴에
접근해 보면
저장된 스크립트 구문이
정상 실행된다.
transfer 코드를 살펴보면
DoTransfer 클래스
doInBackground 내 코드를 보면
전송한 viewstatement 정보가
MYFILE 변수, external storage 경로
/Statements + 사용자명.html 로
저장되고 해당 코드는 전송 성공, 실패
모든 경우에 동일하게 들어가 있다.
쉘에 접속해
external storage인
/sdcard 경로를 들어가 보면
Statements_jack.html 파일이 존재하고
내용을 살펴보면
입력했던 스크립트 구문이 함께
저장되어 있다.
결국 ViewStatement는
위 파일을 읽어 웹 뷰 형식으로
사용자에게 보여주는 것
3. 대응 방안
- 스크립트 구문 필터링(특수문자 치환) 코드 추가
- 사용자 입력 값을 점검하여 지정된 데이터 형식 외 사용 금지
-WebView 설정 중 setJavaScriptEnabled 메서드를 false로 설정
'APP 진단 > Android' 카테고리의 다른 글
11. Magisk를 통한 시스템 인증서 설치 - feat. Burp Suite (1) | 2022.12.14 |
---|---|
10. Magisk 버전 업그레이드 / Magisk hide / MirrorTo (3) | 2022.12.13 |
8. 안드로이드 앱 진단 실습 (6) - 항목별 진단 실습 3 : 로컬 암호화 이슈 (1) | 2022.07.02 |
7. 안드로이드 앱 진단 실습 (5) - 항목별 진단 실습 2 : 안드로이드 백업 취약점 (4) | 2022.07.02 |
6. 안드로이드 앱 진단 실습 (4) - 항목별 진단 실습 1 : 취약한 브로드캐스트 리시버 (0) | 2022.06.24 |