2. 2
Content
Code Clone 기법
- 개념
- 특징
- 구현
- 취약점 분석
모바일 브라우저 취약점 분석
- 대상 정의
- Code Clone 매치
- 취약점 검증
- 취약점 분석
- 분석 환경 구축
- 분석 과정
- 분석 결과
E-COPS
3. 3
Content
Code Clone 기법
- 개념
- 특징
- 구현
- 분석 절차
모바일 브라우저 취약점 분석
- 대상 정의
- Code Clone 매치
- 취약점 검증
- 취약점 분석
- 분석 환경 구축
- 분석 과정
- 분석 결과
E-COPS
4. 4
Code Clone 기법 – 개념
정의
- 복제된 코드 (Ctrl + C, Ctrl + V)
- 어떤 프로그램의 취약한 코드가 다른 프로그램에서 재사용된 것을 찾는
취약점 탐지 기법
Example
- 오픈 소스 라이브러리를 사용한 프로그램
- 오픈 소스 커널을 사용한 운영체제
- 이전에 개발한 소스를 재활용한 경우
E-COPS
5. 5
Code Clone 기법 – 개념
논리
- 어떤 프로그램 ‘A’에서 취약한 코드 ‘C’가 존재한다.
- 다른 프로그램 ‘B’에서 똑같은 ‘C’ 코드가 발견된다면,
- 프로그램 ‘B’는 취약한 코드를 가지고 있는 것이고, 따라서 프로그램 ‘B’도 취약하다
고 판단
E-COPS
프로그램 ‘A’
취약한 코드 ‘C’
프로그램 ‘B’
Code Clone 기법
??? : 프로그램
‘B’는 취약해
취약한 코드 ‘C’와 같은 코드
6. 6
Code Clone 기법 – 개념
맹점 1
프로그램 ‘A’와 프로그램 ‘B’는 다르므로,
- 실행되는 아키텍처
- 실행되는 머신의 물리적 성능
- 실행 옵션
E-COPS
프로그램 ‘A’ 프로그램 ‘B’
프로그램 ‘A’의 취약한 코드 ‘C’가 프로그램 ‘B’에 존재한다고 해서,
똑같이 취약하다는 보장을 할 수 없다.
7. 7
Code Clone 기법 – 개념
맹점 2
- 프로그램 ‘B’의 취약한 코드 ‘C’가 프로세스 ‘B’에는
존재하지 않을 수 있다.
- 취약한 코드 ‘C’가 컴파일 되지 않는 경우
- 취약한 코드 ‘C’가 컴파일은 되었으나 프로세스 ‘B’에 로드되지 않는 경우
E-COPS
8. 8
Code Clone 기법 – 개념
맹점 3
- 프로그램 ‘B’의 취약한 코드 ‘C’까지 도달하지 못할 수 있다.
- 프로그램 ‘A’와 프로그램 ‘B’에서 취약한 코드까지의 코드 플로우가 다르다.
- 프로그램 ‘B’에서 사용하지 않는 기능일 수 있다.
E-COPS
프로그램 ‘B’프로그램 ‘A’
9. 9
Code Clone 기법 – 개념
맹점 4
- 프로그램에 존재하는 취약한 코드의 취약점이 발현되려면,
공격 페이로드가 동작 해야 하는데 그렇지 않은 경우가 존재한다.
- 미티게이션
- 취약한 코드 앞,뒤에서 보완
- DEP/NX
E-COPS
프로그램 ‘A’ 프로그램 ‘B’
10. 10
Code Clone 기법 – 특징
코드클론의 필요성
- Code Clone 수가 갈수록 많아짐
- 비용 절감과 개발 시간 단축 등의 이유로, 오픈 소스 사용량이 갈수록 증가함
- 오픈 소스의 확산성에 의해 파급력이 증가
E-COPS
라이브러리
소규모 소프트웨어
운영체제
대규모 소프트웨어
코드클론
11. 11
Code Clone 기법 – 특징
E-COPS
장점
- 대용량의 소스 코드에서 알려진 취약점을 찾는데 유리
- 해당 소프트웨어가 포함하고 있는 부분에 대해서도 점검 가능
단점
- 오탐이 많다.
12. 12
Code Clone 기법 – 구현
구현 구조도
E-COPS
Vulnerability
Database
func foo(){
bar;
}
CVE Patches Vulnerable Code
(function)
Repository
Matched
A
Program
Extract
function
List of normalized,
abstracted functions
List of functions
Abstract
& Normalize
Vulnerable Code Clone
13. 13
Code Clone 기법 – 구현
구현
- 취약한 코드 근거(커밋 로그)
- 알려진 취약한 코드 CVE
- 안 알려진 취약한 코드 커밋 로그
- 취약한 코드인지에 대한 판단이 어려움 (커밋 로그 작성 스타일이 작성자마다 다름)
- 취약한 코드 수집
- 각종 오픈 소스 소프트웨어
2017-08-
28
E-COPS
14. 14
Code Clone 기법 – 구현
구현 (Code Clone 도구들의 차이점이 발생하는 부분)
- 매치를 위한 전처리
- 화이트 스페이스 제거
- 공백
- 개행
- 주석
- 취약한 코드의 단위 설정
- 함수
- 코드 블록
- 라인
- 추상화 여부
- 심볼 (함수명, 변수명)
- 자료형 (데이터 타입)
- 의미 (while ↔ for)
- 취약한 코드 매치
- 문자열 매칭
- 해쉬 매칭
2017-08-
28
E-COPS
15. 15
Code Clone 기법 – 분석 절차
E-COPS
Code Clone
매치
매치된
Code Clone
취약점 정리
취약점 검증 취약점 분석
- CVE, CWE, CVSS
- 공격 형태
(DoS, EoP, RCE
/ Local, Remote)
- 컴파일 여부
- 로드 여부
- 패치 여부
- 트리거 여부
- PoC 조사 및 작성
- Exploit 시도 및 보고서
분석 절차
16. 16
Content
Code Clone 기법
- 개념
- 특징
- 구현
- 분석 절차
모바일 브라우저 취약점 분석
- 대상 정의
- Code Clone 매치
- 취약점 검증
- 취약점 분석
- 분석 환경 구축
- 분석 과정
- 분석 결과
E-COPS
17. 17
모바일 브라우저 취약점 분석 – 대상 정의
대상
- Name : Samsung Browser
- Version : 5.4
- Platform : Android 7.0
- Device : Samsung Galaxy S7 (SM-G930K)
- Base : Chrome 51.0.2704.106
E-COPS
18. 18
모바일 브라우저 취약점 분석 – 대상 정의
대상
- Samsung Galaxy S8에서도 환경이 동일함
취약점 유사 확률이 높음
E-COPS
Samsung Galaxy S7 Samsung Galaxy S8
19. 19
모바일 브라우저 취약점 분석 – Code Clone 매치
Code Clone 도구 : http://iotcube.net(고려대학교 컴퓨터보안연구실 제작)
E-COPS
20. 20
모바일 브라우저 취약점 분석 – Code Clone 매치
Code Clone 분석 대상 지정
- SBrowser v5 Source Code Download
- http://opensource.samsung.com/reception/receptionSub.do?method=sub&sub=F&sear
chValue=sbrowser
E-COPS
Samsung Open Source Download Site
21. 21
모바일 브라우저 취약점 분석 – Code Clone 매치
Code Clone 매치를 위한 전처리 작업
E-COPS
22. 22
모바일 브라우저 취약점 분석 – Code Clone 매치
Code Clone 매치 결과 분석
E-COPS
23. 23
모바일 브라우저 취약점 분석 – Code Clone 매치
Code Clone 매치 결과 분석
E-COPS
24. 24
모바일 브라우저 취약점 분석 – Code Clone 매치
Code Clone 매치 결과 분석
E-COPS
Code vulnerability CVE
UTF8.cpp Encoding-Based SQL Injection CVE-2006-2313
vorbis.c DoS(out-of-bounds read) CVE-2011-3893
brw_fs.cpp DoS CVE-2013-1872
jdmarker.c
Information Leak CVE-2013-6629
fpdfapi_jdmarker.c
window.c
RCE (RCE X 단순 Buffer Read Overflow) CVE-2014-8962
format.c
stream_encoder.c
bitreader.c
stream_decoder.c
cpu.c
bitwriter.c
md5.c
lpc.c
memory.c
stream_encoder_framing.c
parser.cc obtain sensitive information CVE-2016-5172
50. 50
모바일 브라우저 취약점 분석 – 취약점 분석
분석 환경 구축 - 정적 분석 준비물
1. 좋은 IDA
2. 소스 코드
3. 컴파일 환경
E-COPS
51. 51
모바일 브라우저 취약점 분석 – 취약점 분석
분석 환경 구축 - 정적 분석
- 소스 편집기 도구 이용
E-COPS
52. 52
모바일 브라우저 취약점 분석 – 취약점 분석
분석 환경 구축 - 정적 분석
- 소스 코드를 직접 컴파일 하여 디버깅 심볼을 만든다.
- IDA에 로드 한다.
E-COPS
53. 53
모바일 브라우저 취약점 분석 – 취약점 분석
분석 환경 구축 - 동적 분석 준비물
1. 좋은 디버거
2. Strace, ltrace, Systemtap 등의 분석 도구
3. 디버깅 심볼
4. 좋은 리모트 디버깅 환경
E-COPS
54. 54
모바일 브라우저 취약점 분석 – 취약점 분석
분석 환경 구축 - 동적 분석 (GDB를 이용한 android remote debug)
1. 대상 기기에 adb를 이용해 gdbserver와 분석 도구를 올림
2. 어플 실행에 필요한 라이브러리들과 app_process를 PC로 이동
3. PC의 GDB에서 라이브러리 경로 지정
4. 대상 기기의 프로세스를 gdbserver를 이용해 attach
5. GDB로 gdbserver에 연결하여 리모트 디버깅
E-COPS
55. 55
모바일 브라우저 취약점 분석 – 취약점 분석
분석 과정 - 메뉴얼
- PoC 있음
- PoC 동작 함
- PoC와 취약한 코드를 매칭하며 분석
- PoC 동작 과정 추적
- PoC를 환경에 맞게 수정
- 미티게이션 우회 시도
- 성공 제보
- 실패 오탐
- PoC 동작 안함
- PoC 동작 과정을 추적하여 취약한 코드가 실행되는지 확인
- PoC를 수정하여 취약한 코드까지 트리거 시도
- 트리거 성공 미티게이션 우회 시도
- 성공 제보
- 실패 오탐
- 트리거 실패 오탐
E-COPS
56. 56
모바일 브라우저 취약점 분석 – 취약점 분석
분석 과정 - 메뉴얼
- PoC 없음
- 패치 Diff를 보며, 취약한 이유 분석
- PoC 제작
- 취약한 코드로 트리거 되는 Input 값 생성
- Symbolic
- Concolic (Concreate Execution + Symbolic)
- Solver
- Hand
- 취약점을 발현시키는 값 생성
- 미티게이션 우회 시도
- 성공 제보
- 실패 오탐
E-COPS
57. 57
모바일 브라우저 취약점 분석 – 취약점 분석
분석 과정 - CVE-2016-5172
E-COPS
Process ID 확인
Attach gdbserver
63. 63
모바일 브라우저 취약점 분석 – 취약점 분석
분석 결과
- 16개의 CVE를 탐지함
- CVE-2016-5161 성공
- CVE-2016-5172 성공
결론
- Code Clone을 통해, 최신 디바이스의 모바일 브라우저에서 동작하는
취약점을 찾음
E-COPS