[목차]
1. IPC Issues 란?
2. URL Schemes 종류
3. URL Schemes 실습
4. 대응 방안
1. IPC Issues 란?
IPC(Inter Process Communication)는
프로세스들 사이에 서로 데이터를 주고받는 행위
또는 방법이나 경로
앱이 신뢰할 수 없는 출처의 URL Schemes를 통해
요청을 수신하는 데 이를 제대로 검증하지 않을 때
발생할 수 있는 문제
다른 앱에서 들어오는 요청을 제대로 처리하지 못하면
보안 취약점으로 이어질 수 있음
URL Schemes는 URL을 통해 정의한 프로토콜로
다른 앱과 통신할 수 있도록 해주는 통로
예) http:// https:// ftp:// telnet:// ssh:// 등의 형태를 가짐
iOS는 샌드박스 정책에 의해 다른 앱들과
정보를 주고 받기 힘들기 때문에
URL Schemes를 이용
> scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
2. URL Schemes 종류
2-1) Built-in URL Schemes
애플은 시스템 앱과 함께 통신할 수 있는 URL Schemes를 제공
예)
사파리에서 sms 스키마를 사용해
임의의 번호를 입력하는 경우
메시지 앱으로 연결이 가능!
2-2) Custom URL Schemes
- 사용자 앱에서 URL Schemes를 구현하여 처리하도록 생성
- URL Schema를 사용하도록 구현해 놓은 경우
"Info.plist" 파일 "CFBundleUrlSchemes" 안에
해당 키값 확인이 가능
- 해당 키값을 수신하여 처리하는 부분은
"AppDelegate.swift" 파일에 지정되어 있는데
실제 업무에서는 대부분 소스코드 제공을
받지 않지만 받는 경우를 가정하여
기드라에서 바이너리를 분석해 본다.
3. IPC Issues 실습
(AppDelegate.swift 바이너리 분석)
DVIA-v2 [IPC Issues > START CHALLENGE > Call] 항목
: Custom URL Schemes를 다른 앱에서 호출하면
Success 알림 창이 출력되면서 성공
3-1) URL Schema 설정 확인
경로 : /var/containers/Bundle/Application/UUID/DVIA-v2.app/info.plist
2개의 스키마 값이 사용 중!
3-2) 해당 스키마 테스트
Safari에서 dvia 스키마 사용 시
DVIA-v2에서 열 것인지 물어보고
열기를 누르면 DVIA 앱이 잠깐
실행됐다 튕긴다.
3-3) 기드라를 통한 바이너리 동작 원리 확인
- Symbol Tree에서 appdelegate 단어 필터링
- functions를 위에서부터 하나씩 살펴보면서
어떻게 수신하고 처리하는지 우측 Decompile 창에서
확인한다.
/phone/call_number/
3-4) 사파리에서 dvia 스키마 호출
위에서 찾은 경로를 스키마에 추가해 호출하면
외부 스키마를 통한 호출에 성공!
위 경우는 사용자 동의나 허락 없이
전화를 걸 수 있기에 취약하나
외부에서 호출이 가능하다 하여
항상 취약한 것은 아니고
이용자 인증을 받은 후 사용할 수 있는
기능이라든지 로그인 후에만 접근 가능한
곳을 호출할 수 있다든지의 경우만 해당됨!
예) 권한 없는 기능, 관리자 페이지 등
URL 스키마를 통한 접근이 가능한 경우
취약!
4. 대응 방안
: Custom URL Schemes를 사용할 때
사용자가 한번 더 확인할 수 있는 로직 추가
: 중요한 기능/뷰에 대한 접근을 사용한다면
사용자 인증 정보 확인이 필요한 로직 추가
[도움 출처]
: 보안프로젝트 김태영 팀장 iOS 모바일 앱 모의해킹(기초) 강의
'APP 진단 > iOS' 카테고리의 다른 글
20. Network Layer Security (feat. 버프 프록시 설정) (1) | 2022.11.25 |
---|---|
19. WebView Issues (0) | 2022.11.24 |
17. Side Channel Data Leakage (0) | 2022.11.22 |
16. Runtime Manipulation - 인증 우회 실습 3 (Brute Force) (0) | 2022.11.21 |
15. Runtime Manipulation - 인증 우회 실습 2 (0) | 2022.11.20 |