Computer & Communication Security Laboratory, Korea University
/ 37
빠르고 확장성 있는
바이너리 취약 코드 클론 탐지기
Quick and Scalable Binary Vulnerable Code Clone Detection
IoTcube Conference 2021
양경석
Korea University CCS Lab
1
Computer & Communication Security Laboratory, Korea University
/ 37
2
“빠르고” “확장성” 있는
“바이너리” “취약 코드 클론” 탐지기?
Computer & Communication Security Laboratory, Korea University
/ 37
3
“빠르고” “확장성” 있는
“바이너리” “취약 코드 클론” 탐지기
Computer & Communication Security Laboratory, Korea University
/ 37
취약 코드 클론
1. 모든 사람은 죽는다.
2. 소크라테스는 사람이다.
3. 그러므로 소크라테스는 죽는다.
4
1. 프로그램 B는 취약코드 C를 내포하고 있다.
2. 프로그램 A는 B 의 코드를 내포하고 있다.
3. 프로그램 A는 취약코드 C를 내포하고 있다.
➢ 정의
- 오픈소스 사용 등 코드 복제로 인한 취약 코드의 전파
- 복제 후 약간 수정된 코드도 포함
- 오픈소스 등 SW를 가져다 사용하지만, 최신버전 오픈소스 취약점에 대해 보안 위협을 고려하지 않아 발생
➢ 예시
- 오픈소스를 기반으로 개발한 경우
- 이전에 개발한 소스코드를 재활용 하는 경우
- 리눅스 커널을 기반으로 만든 운영체제의 경우
B
A
C
Computer & Communication Security Laboratory, Korea University
/ 37
취약 코드 클론
➢ 예시) 취약 코드의 전파
- 리눅스 커널 코드는 안드로이드, 데비안, 우분투 등 많은 배포판에서 복제하여 사용하고 있음
- 이러한 배포판 코드들은 스마트폰, IoT 기기, 자동차 등 실생활에서 널리 사용되고 있음
코드 클론
5
Computer & Communication Security Laboratory, Korea University
/ 37
취약 코드 클론
➢ 예시) 취약 코드의 전파
1. 리눅스 커널 취약점 발생
6
코드 클론
Computer & Communication Security Laboratory, Korea University
/ 37
취약 코드 클론
7
코드 클론
➢ 예시) 취약 코드의 전파
1. 리눅스 커널 취약점 발생
2. 리눅스 커널을 기반으로 개발된 프로그램에 취약점 전파
Computer & Communication Security Laboratory, Korea University
/ 37
취약 코드 클론
8
코드 클론
➢ 예시) 취약 코드의 전파
1. 리눅스 커널 취약점 발생
2. 리눅스 커널을 기반으로 개발된 프로그램에 취약점 전파
3. 관련된 실제 기기들에 취약점 발생
Computer & Communication Security Laboratory, Korea University
/ 37
취약 코드 클론
9
코드 클론
➢ 예시) 취약 코드의 전파
- 원본 프로젝트에서 취약점이 패치되더라도 그대로 남아 있음
- 이를 관리할 방법이 필요
패치
Computer & Communication Security Laboratory, Korea University
/ 37
취약 코드 클론
10
➢ 취약 코드 클론을 탐지하는 효율적인 방법
- 클론한 레포지토리의 취약 패치는 대부분 공개 취약점 목록(CVE 등)에 등록되어 있음
- CVE 취약점들의 존재 여부를 확인한다면 코드클론 취약점을 탐지할 수 있음
- 이를 위한 효율적인 연구가 필요함
A
B
CVE
...
B
A
C
Computer & Communication Security Laboratory, Korea University
/ 37
11
“빠르고” “확장성” 있는
“바이너리” “취약 코드 클론” 탐지기
Computer & Communication Security Laboratory, Korea University
/ 37
소스코드 기반 취약 코드 클론 탐지
12
* Kim, Seulbae, et al. "Vuddy: A scalable approach for vulnerable code clone discovery." 2017 IEEE Symposium on Security and Privacy (SP). IEEE, 2017.
함수 해쉬화 취약 함수 해쉬 데이터베이스
➢ 소스코드 클론의 경우 이러한 문제를 효과적으로 해결한 연구가 존재 (VUDDY, S&P’17*)
- 분석 대상 함수/취약 함수를 해쉬화
- 취약 함수 해쉬는 데이터베이스에 저장
Computer & Communication Security Laboratory, Korea University
/ 37
소스코드 기반 취약 코드 클론 탐지
13
분석 대상 소프트웨어
사용되는 함수 목록 해쉬화
함수 목록 추출
취약 함수 해쉬
DB
해쉬화
해시 기반
매칭 Report
매칭 결과 반환
VUDDY 동작 구조
- 100% 정밀도 달성
- 최신 기술 대비 실질적으로
1000배 이상 빠른 속도
- 1000만줄의 코드 분석 시
1초 소요
성능
취약 함수 목록 (CVE 등)
Hmark
Hmark 파일
➢ VUDDY 시스템의 동작 구조 및 성능
- 해쉬화 된 분석 대상 함수와 취약 함수를 비교
- 기존 기술 대비 실질적으로 1000배 이상 빠른 속도 달성
Computer & Communication Security Laboratory, Korea University
/ 37
소스코드 기반 분석의 한계점
14
• 소스코드 정보가 부족한 경우
• 많은 상용 프로그램 및 펌웨어는 바이너리 형태로만 배포됨
• 소스코드에서만 취약점이 존재하는 경우
• 소스코드는 컴파일러를 통해 바이너리로 빌드된 이후 CPU를 통해 실행됨
• 컴파일러의 동작에 의해 소스코드 상으로는 존재하지만, 바이너리에는 존재하지 않는
취약점 발생 가능
• 따라서, 소스코드 분석만으로는 실제로 프로그램이 실행될 때 취약점이 존재하는지
검증하지 못함
따라서, 바이너리를 대상으로 한 취약 코드클론 분석 기술이 필요
Source Code
Binary
CPU
Build
Execute
신뢰경계 문제
Computer & Communication Security Laboratory, Korea University
/ 37
15
“빠르고” “확장성” 있는
“바이너리” “취약 코드 클론” 탐지기
Computer & Communication Security Laboratory, Korea University
/ 37
바이너리 취약 코드 클론의 난제
16
➢ 바이너리 취약 코드 클론은 아래 세 가지 문제를 해결해야 함
오탐, 강건성, 성능 (속도, 확장성)
➢ 바이너리 취약 코드 클론 기존 연구
바이너리 유사도 분석 기반
- 두 바이너리 사이의 유사도를 정량화 하는 연구
- 취약 코드 클론 탐지뿐만 아니라 멀웨어 탐지, 소프트웨어 도난 방지, 프로그램 버전 탐지 등 목적
- 취약 코드 클론 탐지 목적에서는 위 문제점들을 가지고 있음
바이너리 취약 코드 탐지 기반
- 바이너리 내에 취약 코드가 존재하는지 분석하는 연구
- 머신러닝 및 시간 소모가 큰 알고리즘을 사용하여 성능 문제를 가지고 있음
Computer & Communication Security Laboratory, Korea University
/ 37
바이너리 취약 코드 클론의 난제 : 오탐
➢ 오탐 문제
▪ 보안 패치는 대개 코드의 작은 부분만을 변경함
▪ 기존 유사도 분석 접근 방식은 취약한 바이너리와 패치된 바이너리를 구분하지 못함 (오탐)
▪ 이 두 바이너리를 구분하는 알고리즘 개발이 필요함
취약한
바이너리
패치된
바이너리
타겟 바이너리
(취약함)
Openssl 취약 패치
17
매우 적은 차이를 가짐
Computer & Communication Security Laboratory, Korea University
/ 37
바이너리 취약 코드 클론의 난제 : 강건성
➢ 강건성
▪ 하나의 소스코드에서 무수히 많은 바이너리가 나올 수 있음
▪ 컴파일러, 컴파일러 버전, 아키텍처, 컴파일 옵션 등에 따라
▪ 일반적인 옵션만 고려하더라도, 72개의 서로 다른 바이너리 발생
▪ 이러한 특성을 고려한 비교 알고리즘 개발이 필요함
18
CVE-2021-XXXX
바이너리
GCC, ARM, O1
GCC, x64, O2
...
ICC, x86, O3
ICC, ARM, O0
타겟 바이너리
빌드 비교
x64
x86
ARM
MIPS
GCC
ICC
TCC
O0
O1
O2
O3
Og
Os
컴파일 옵션
컴파일러
아키텍처
X X
=
72개의
서로 다른 바이너리
Computer & Communication Security Laboratory, Korea University
/ 37
바이너리 취약 코드 클론의 난제 : 성능 (속도, 확장성)
➢ 성능(속도, 확장성)
▪ 기존 유사도 분석 접근 방식은 오직 비교 한 번이 요구됨
▪ 취약 코드 클론 분석은 취약 데이터베이스에 있는 모든 후보 바이너리와 타겟
바이너리를 비교해야 함
▪ 따라서, 속도 및 확장성이 필수적으로 고려되어야 함
바이너리 A 바이너리 B
Target Binary A
CVE-2015-XXXX
CVE-2015-XXXX
...
CVE-2021-XXXX
CVE-2021-XXXX
유사도 분석
O(1)
O(n)
취약 코드 클론 분석
19
Computer & Communication Security Laboratory, Korea University
/ 37
20
“빠르고” “확장성” 있는
“바이너리” “취약 코드 클론” 탐지기
Computer & Communication Security Laboratory, Korea University
/ 37
21
QuickBcc
Computer & Communication Security Laboratory, Korea University
/ 37
연구 목표
앞서 언급한 문제점들을 해결하는 바이너리 취약 코드 클론 탐지기 개발
- 오탐 문제 해결을 위해 명확한 취약점 패치 여부 판별 알고리즘 제안
- 강건성 문제 해결을 위해 바이너리 코드 정규화 알고리즘 제안
- 성능 문제 해결을 위해 가벼운 비교 알고리즘 제안
22
Computer & Communication Security Laboratory, Korea University
/ 37
QuickBcc
23
분석 대상 소프트웨어
핑거프린팅
바이너리 전처리
취약 코드클론
DB
핑거프린팅
필터링
리포트
QuickBcc 동작 구조
취약 바이너리
타겟 Fingerprint
패치 바이너리
함수 매칭
취약 함수 전처리 취약 시그니처 데이터베이스
* H. Jang, K. Yang, G. Lee, Y. Na, J. D. Seideman, S. Luo, H. Lee, and S. Dietrich, “Quickbcc: Quick and scalable binary vulnerable code clone detection”, IFIP SEC 2021
➢ QuickBcc 기술의 동작 구조
Computer & Communication Security Laboratory, Korea University
/ 37
QuickBcc - 오탐 문제 접근
취약 함수 패치 함수
두 함수간의 관계
24
➢ 패치/취약 함수의 고유성에 집중
▪ 오른쪽 그림에서, 보라색 영역은 오탐 문제를 유발
▪ 보라색 영역을 제외한 부분을 시그니처로 만들어 오탐 문제 해결
▪ 빨간색 영역은 취약한 부분, 파란색 부분은 패치된 부분
> 취약 시그니처 = {빨간색 영역, 파란색 영역}
제거된 코드
Patch 파일
취약 시그니처
패치 시그니처
Computer & Communication Security Laboratory, Korea University
/ 37
QuickBcc - 오탐 문제 접근
타겟 함수
취약 함수
패치 함수
시나리오 #1
시나리오 #2
25
취약 함수 패치 함수
타겟 함수
➢ 타겟 함수와 취약 시그니처 비교
▪ 앞서 제작한 취약 시그니처와 타겟 함수와 비교
▪ 빨간색 영역의 부분이 많을수록 취약할 가능성이 높음
▪ 파란색 영역의 부분이 많을수록 패치되었을 가능성이 높음
> 취약 스코어 = Sim(타겟, 빨간색 영역)-Sim(타겟, 파란색 영역)
➢ 시나리오 #1 : 타겟 함수에 취약점이 있을 경우
▪ Sim(타겟, 빨간색 영역)-Sim(타겟, 파란색 영역) = 높음
➢ 시나리오 #2 : 타겟 함수의 취약점이 패치되었을 경우
▪ Sim(타겟, 빨간색 영역)-Sim(타겟, 파란색 영역) = 낮음
Computer & Communication Security Laboratory, Korea University
/ 37
QuickBcc - 강건성 문제 접근
소스코드
...
유사한 중간언어
빌드된 바이너리 코드들
(아키텍쳐 차이로 인해 유사도 비교 불가)
컴파일러
중간언어 Rifter
26
➢ 여러 아키텍처를 동일한 표현으로, IR Rifting
▪ 아키텍처 별 사용하는 명령어 세트가 다르기 때문에 서로 비교가 힘듬
▪ 이들을 동일한 표현인 IR로 변환후 비교하여 문법적인 문제 해결 가능
▪ 바이너리 기능적인 문제는 해결이 불가능
> IR Lifter를 통해 문법적인 문제 해결 가능
Computer & Communication Security Laboratory, Korea University
/ 37
QuickBcc - 강건성 문제 접근
[1] Yaniv David, Nimrod Partush, Eran Yahav, Statistical Similarity of Binaries, PLDI'16
27
➢ 바이너리 기능의 가장 작은 단위, Strand
▪ Strand[1]는 하나의 변수를 계산하는 데 필요한 명령어 세트
▪ 최적화 옵션이 적용되어도, 기능적인 부분은 변경되지 않음
▪ 동일한 기능은 유사한 Strand를 지님
▪ 기능을 의미하는 가장 작은 단위로 컴파일 옵션 등에 유연한 성능을 보임
> strand간의 비교를 통해 기능 간 유사성 점수를 계산할 수 있음
VEX IR 중간언어 VEX IR에 대응하는 Strands
분석 대상 (바이너리)
중간 언어로 변환
Computer & Communication Security Laboratory, Korea University
/ 37
QuickBcc - 성능 문제 접근
28
➢ 불필요한 바이너리 필터링
▪ 함수에 내포된 Strand 수 등 컴파일 환경에 크게 영향을 받지 않는 속성으로 필터링 수행
▪ 속성이 너무 다르다고 판단되는 경우, 비교를 건너뜀
▪ 이를 통해 효과적으로 성능을 개선할 수 있음
> 불필요한 바이너리는 분석하지 않음으로써 성능 향상
# of Function Call # of Strands
Jumpkind ...
해당 연구에서 안정적인 속성이라고 간주된 항목들
Computer & Communication Security Laboratory, Korea University
/ 37
QuickBcc - 접근 방식 요약
성능
강건성 오탐
QuickBcc의 목표
필터링
패치 시그니처
중간언어
[1] Yaniv David, Nimrod Partush, Eran Yahav, Statistical Similarity of Binaries, PLDI''16
29
➢ IR + Strand를 사용하여 함수 시그니처 생성
- 보다 가벼운 분석 방식
- 코드 클론 탐지기의 강건성과 성능을 향상시킴
➢ 새로운 취약 시그니처 생성 방안 고안
- FP 문제 방지
- 취약 시그니처 생성을 사용하지 않는 방식보다 높은 정확도를 가짐
➢ 분석 대상 필터링 방안 고안
- 성능 향상
- 바이너리의 안정적인 속성이 필터 역할 수행
Computer & Communication Security Laboratory, Korea University
/ 37
30
성능 평가
Computer & Communication Security Laboratory, Korea University
/ 37
성능 평가
➢ 데이터 집합
타겟 데이터
- [9.0.0-10.8.0] 데비안 라이브 이미지 amd64 (/bin, /sbin, /usr)
- 3.5년간의 공식 iso 이미지 대상 (총 21개)
- 선정 기준은 유명도와 바이너리 수집의 용이성
- 총 143,018개의 바이너리와 and 51,654,380개의 함수 대상
시그니처 데이터베이스
- 데비안 이미지에 내장된 바이너리 CVE를 선별하여 시그니처화
CVE-2018-0734, CVE-2019-1547, CVE-2019-1563, CVE-2018-19841, CVE-2017-12678, CVE-2018-6543
➢ Threshold
- “Sim(타겟, 빨간색 영역)-Sim(타겟, 파란색 영역)” 해당 계산의 결과가 어느 값 이상이어야 취약 함수인가?
- F1 스코어가 가장 높은 케이스를 취약 여부를 판별하는 threshold로 사용
- t = 0.84
31
Computer & Communication Security Laboratory, Korea University
/ 37
성능 평가
4) 속도와 확장성
▪ 데비안 9.0.0, 5,439개의 바이너리를 대상으로 6개의
시그니처를 실험한 결과
▪ 4분 소요 (2번째 수행부터)
3) 최신 기술과의 성능 비교
▪ 최신 연구 중 QuickBcc와 시스템이 유사하게 설계된 Esh[1]와
성능 비교 수행
▪ QuickBcc가 평균 22배 빠른 성능을 보임
32
[1] David, Yaniv, Nimrod Partush, and Eran Yahav. "Statistical similarity of binaries." ACM SIGPLAN 16’
2) 정밀도
▪ 21개 데비안 이미지 대상 실험 (143,018개의 바이너리)
▪ 100% 정밀도와 73% 재현율을 보임
1) 필터링 성능
▪ 타겟 함수의 94.9%를 비교 대상에서 제외하였음
타겟 취약점 Esh QuickBcc
Heartbleed 672 ms 0.192 ms
Shellshock 820 ms 32.677 ms
Average 757 ms 32.08 ms
Computer & Communication Security Laboratory, Korea University
/ 37
한계점
➢ 다중 컴파일 환경에 의한 강건성 문제
▪ 모든 다중 컴파일 환경에 적용되는지 검증이 충분히 이루어지지 못하였음
▪ 컴파일 환경에 덜 민감하지만, 문제를 완벽히 해결하진 못하였음
➢ 취약 시그니처 생성 방식의 한계
▪ 현재 수동으로 시그니처를 제작해야 함
33
Computer & Communication Security Laboratory, Korea University
/ 37
34
결론
Computer & Communication Security Laboratory, Korea University
/ 37
기술 활용 방안 예시
35
➢ 활용 예시 #1
- 소스코드가 공개되어 있지 않은 상용 프로그램에 활용
ex) 라이브러리, 윈도우 상용 프로그램 등
➢ 활용 예시 #2
- 소스코드가 공개되어 있지 않은 펌웨어 분석에 활용
ex) 자동차, IoT 기기의 펌웨어 등
➢ 활용 예시 #3
- 소프트웨어 공급망의 검수 단계에서 치명적인 취약점 탐지
ex) 개발 내용 배포 전, 취약점 존재 여부 검수
Computer & Communication Security Laboratory, Korea University
/ 37
추후 계획
➢ 한계점 해결
▪ 다중 컴파일 환경에 의한 강건성 문제
▪ 최소한의 서명으로 가능한 많은 컴파일 옵션을 커버하도록 알고리즘 개편 예정
▪ 현재 다양한 환경의 프로젝트에서 해당 기술을 활용하며 검증 및 개편 진행중
▪ 취약 시그니처 생성 방식의 한계
▪ 시그니처 생성 자동화 개발 진행중
➢ IoTcube 통합
▪ 위 문제들을 해결한 이후 내년 중순 경 IoTcube 플랫폼 통합 예정
36
Computer & Communication Security Laboratory, Korea University
/ 37
37
감사합니다.

More Related Content

PPT
1.2 formation radioprotection des travailleurs exposés radiologues essai
PDF
Biochip seminar ppt 2014
PPTX
Radioproteção.
PDF
Pengadaan Barang dan Jasa melalui LPSE KemenLHK (E-Procurement)
PPT
64 bit computing
PPTX
Migration illégale par voie maritime à partir des côtes sénégalaises : défis ...
DOCX
PETROL BUNK AUTOMATION WITH PREPAID CARDS & GSM COMMUNICATION
PDF
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
1.2 formation radioprotection des travailleurs exposés radiologues essai
Biochip seminar ppt 2014
Radioproteção.
Pengadaan Barang dan Jasa melalui LPSE KemenLHK (E-Procurement)
64 bit computing
Migration illégale par voie maritime à partir des côtes sénégalaises : défis ...
PETROL BUNK AUTOMATION WITH PREPAID CARDS & GSM COMMUNICATION
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다

Similar to Quick bcc (20)

PDF
Luniverse Partners Day - Smart Contract Assessment(Sooho)
PDF
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
PDF
보안 위협과 악성코드 분석 기법
PDF
악성코드 개념 및 대응 기술 (사이버 게놈 기술)
PDF
보안 위협 형태와 악성코드 분석 기법
PDF
보안 위협과 악성코드 분석 기법
PDF
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
PDF
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
PPTX
2024 인천 블록체인 칼리지 전문가과정 강의자료 - EVM 이론, 솔리디티 기본 문법
PPTX
호서대학교 - 다양한 오픈소스 활용법 (Colab을 이용하여)
PDF
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
PDF
llvm 소개
PPTX
Tr#3 5) 임성현 책임
PDF
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
PDF
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
PDF
1. klaytn intro
PDF
[NDC17] 왓 스튜디오 서비스파트
PDF
Rust 기반의 사내 DB 암호화 솔루션 개발기
PDF
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
PPTX
단위테스트자동화지원도구 임성현 최종
Luniverse Partners Day - Smart Contract Assessment(Sooho)
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
보안 위협과 악성코드 분석 기법
악성코드 개념 및 대응 기술 (사이버 게놈 기술)
보안 위협 형태와 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
2024 인천 블록체인 칼리지 전문가과정 강의자료 - EVM 이론, 솔리디티 기본 문법
호서대학교 - 다양한 오픈소스 활용법 (Colab을 이용하여)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
llvm 소개
Tr#3 5) 임성현 책임
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
1. klaytn intro
[NDC17] 왓 스튜디오 서비스파트
Rust 기반의 사내 DB 암호화 솔루션 개발기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
단위테스트자동화지원도구 임성현 최종
Ad

Quick bcc

  • 1. Computer & Communication Security Laboratory, Korea University / 37 빠르고 확장성 있는 바이너리 취약 코드 클론 탐지기 Quick and Scalable Binary Vulnerable Code Clone Detection IoTcube Conference 2021 양경석 Korea University CCS Lab 1
  • 2. Computer & Communication Security Laboratory, Korea University / 37 2 “빠르고” “확장성” 있는 “바이너리” “취약 코드 클론” 탐지기?
  • 3. Computer & Communication Security Laboratory, Korea University / 37 3 “빠르고” “확장성” 있는 “바이너리” “취약 코드 클론” 탐지기
  • 4. Computer & Communication Security Laboratory, Korea University / 37 취약 코드 클론 1. 모든 사람은 죽는다. 2. 소크라테스는 사람이다. 3. 그러므로 소크라테스는 죽는다. 4 1. 프로그램 B는 취약코드 C를 내포하고 있다. 2. 프로그램 A는 B 의 코드를 내포하고 있다. 3. 프로그램 A는 취약코드 C를 내포하고 있다. ➢ 정의 - 오픈소스 사용 등 코드 복제로 인한 취약 코드의 전파 - 복제 후 약간 수정된 코드도 포함 - 오픈소스 등 SW를 가져다 사용하지만, 최신버전 오픈소스 취약점에 대해 보안 위협을 고려하지 않아 발생 ➢ 예시 - 오픈소스를 기반으로 개발한 경우 - 이전에 개발한 소스코드를 재활용 하는 경우 - 리눅스 커널을 기반으로 만든 운영체제의 경우 B A C
  • 5. Computer & Communication Security Laboratory, Korea University / 37 취약 코드 클론 ➢ 예시) 취약 코드의 전파 - 리눅스 커널 코드는 안드로이드, 데비안, 우분투 등 많은 배포판에서 복제하여 사용하고 있음 - 이러한 배포판 코드들은 스마트폰, IoT 기기, 자동차 등 실생활에서 널리 사용되고 있음 코드 클론 5
  • 6. Computer & Communication Security Laboratory, Korea University / 37 취약 코드 클론 ➢ 예시) 취약 코드의 전파 1. 리눅스 커널 취약점 발생 6 코드 클론
  • 7. Computer & Communication Security Laboratory, Korea University / 37 취약 코드 클론 7 코드 클론 ➢ 예시) 취약 코드의 전파 1. 리눅스 커널 취약점 발생 2. 리눅스 커널을 기반으로 개발된 프로그램에 취약점 전파
  • 8. Computer & Communication Security Laboratory, Korea University / 37 취약 코드 클론 8 코드 클론 ➢ 예시) 취약 코드의 전파 1. 리눅스 커널 취약점 발생 2. 리눅스 커널을 기반으로 개발된 프로그램에 취약점 전파 3. 관련된 실제 기기들에 취약점 발생
  • 9. Computer & Communication Security Laboratory, Korea University / 37 취약 코드 클론 9 코드 클론 ➢ 예시) 취약 코드의 전파 - 원본 프로젝트에서 취약점이 패치되더라도 그대로 남아 있음 - 이를 관리할 방법이 필요 패치
  • 10. Computer & Communication Security Laboratory, Korea University / 37 취약 코드 클론 10 ➢ 취약 코드 클론을 탐지하는 효율적인 방법 - 클론한 레포지토리의 취약 패치는 대부분 공개 취약점 목록(CVE 등)에 등록되어 있음 - CVE 취약점들의 존재 여부를 확인한다면 코드클론 취약점을 탐지할 수 있음 - 이를 위한 효율적인 연구가 필요함 A B CVE ... B A C
  • 11. Computer & Communication Security Laboratory, Korea University / 37 11 “빠르고” “확장성” 있는 “바이너리” “취약 코드 클론” 탐지기
  • 12. Computer & Communication Security Laboratory, Korea University / 37 소스코드 기반 취약 코드 클론 탐지 12 * Kim, Seulbae, et al. "Vuddy: A scalable approach for vulnerable code clone discovery." 2017 IEEE Symposium on Security and Privacy (SP). IEEE, 2017. 함수 해쉬화 취약 함수 해쉬 데이터베이스 ➢ 소스코드 클론의 경우 이러한 문제를 효과적으로 해결한 연구가 존재 (VUDDY, S&P’17*) - 분석 대상 함수/취약 함수를 해쉬화 - 취약 함수 해쉬는 데이터베이스에 저장
  • 13. Computer & Communication Security Laboratory, Korea University / 37 소스코드 기반 취약 코드 클론 탐지 13 분석 대상 소프트웨어 사용되는 함수 목록 해쉬화 함수 목록 추출 취약 함수 해쉬 DB 해쉬화 해시 기반 매칭 Report 매칭 결과 반환 VUDDY 동작 구조 - 100% 정밀도 달성 - 최신 기술 대비 실질적으로 1000배 이상 빠른 속도 - 1000만줄의 코드 분석 시 1초 소요 성능 취약 함수 목록 (CVE 등) Hmark Hmark 파일 ➢ VUDDY 시스템의 동작 구조 및 성능 - 해쉬화 된 분석 대상 함수와 취약 함수를 비교 - 기존 기술 대비 실질적으로 1000배 이상 빠른 속도 달성
  • 14. Computer & Communication Security Laboratory, Korea University / 37 소스코드 기반 분석의 한계점 14 • 소스코드 정보가 부족한 경우 • 많은 상용 프로그램 및 펌웨어는 바이너리 형태로만 배포됨 • 소스코드에서만 취약점이 존재하는 경우 • 소스코드는 컴파일러를 통해 바이너리로 빌드된 이후 CPU를 통해 실행됨 • 컴파일러의 동작에 의해 소스코드 상으로는 존재하지만, 바이너리에는 존재하지 않는 취약점 발생 가능 • 따라서, 소스코드 분석만으로는 실제로 프로그램이 실행될 때 취약점이 존재하는지 검증하지 못함 따라서, 바이너리를 대상으로 한 취약 코드클론 분석 기술이 필요 Source Code Binary CPU Build Execute 신뢰경계 문제
  • 15. Computer & Communication Security Laboratory, Korea University / 37 15 “빠르고” “확장성” 있는 “바이너리” “취약 코드 클론” 탐지기
  • 16. Computer & Communication Security Laboratory, Korea University / 37 바이너리 취약 코드 클론의 난제 16 ➢ 바이너리 취약 코드 클론은 아래 세 가지 문제를 해결해야 함 오탐, 강건성, 성능 (속도, 확장성) ➢ 바이너리 취약 코드 클론 기존 연구 바이너리 유사도 분석 기반 - 두 바이너리 사이의 유사도를 정량화 하는 연구 - 취약 코드 클론 탐지뿐만 아니라 멀웨어 탐지, 소프트웨어 도난 방지, 프로그램 버전 탐지 등 목적 - 취약 코드 클론 탐지 목적에서는 위 문제점들을 가지고 있음 바이너리 취약 코드 탐지 기반 - 바이너리 내에 취약 코드가 존재하는지 분석하는 연구 - 머신러닝 및 시간 소모가 큰 알고리즘을 사용하여 성능 문제를 가지고 있음
  • 17. Computer & Communication Security Laboratory, Korea University / 37 바이너리 취약 코드 클론의 난제 : 오탐 ➢ 오탐 문제 ▪ 보안 패치는 대개 코드의 작은 부분만을 변경함 ▪ 기존 유사도 분석 접근 방식은 취약한 바이너리와 패치된 바이너리를 구분하지 못함 (오탐) ▪ 이 두 바이너리를 구분하는 알고리즘 개발이 필요함 취약한 바이너리 패치된 바이너리 타겟 바이너리 (취약함) Openssl 취약 패치 17 매우 적은 차이를 가짐
  • 18. Computer & Communication Security Laboratory, Korea University / 37 바이너리 취약 코드 클론의 난제 : 강건성 ➢ 강건성 ▪ 하나의 소스코드에서 무수히 많은 바이너리가 나올 수 있음 ▪ 컴파일러, 컴파일러 버전, 아키텍처, 컴파일 옵션 등에 따라 ▪ 일반적인 옵션만 고려하더라도, 72개의 서로 다른 바이너리 발생 ▪ 이러한 특성을 고려한 비교 알고리즘 개발이 필요함 18 CVE-2021-XXXX 바이너리 GCC, ARM, O1 GCC, x64, O2 ... ICC, x86, O3 ICC, ARM, O0 타겟 바이너리 빌드 비교 x64 x86 ARM MIPS GCC ICC TCC O0 O1 O2 O3 Og Os 컴파일 옵션 컴파일러 아키텍처 X X = 72개의 서로 다른 바이너리
  • 19. Computer & Communication Security Laboratory, Korea University / 37 바이너리 취약 코드 클론의 난제 : 성능 (속도, 확장성) ➢ 성능(속도, 확장성) ▪ 기존 유사도 분석 접근 방식은 오직 비교 한 번이 요구됨 ▪ 취약 코드 클론 분석은 취약 데이터베이스에 있는 모든 후보 바이너리와 타겟 바이너리를 비교해야 함 ▪ 따라서, 속도 및 확장성이 필수적으로 고려되어야 함 바이너리 A 바이너리 B Target Binary A CVE-2015-XXXX CVE-2015-XXXX ... CVE-2021-XXXX CVE-2021-XXXX 유사도 분석 O(1) O(n) 취약 코드 클론 분석 19
  • 20. Computer & Communication Security Laboratory, Korea University / 37 20 “빠르고” “확장성” 있는 “바이너리” “취약 코드 클론” 탐지기
  • 21. Computer & Communication Security Laboratory, Korea University / 37 21 QuickBcc
  • 22. Computer & Communication Security Laboratory, Korea University / 37 연구 목표 앞서 언급한 문제점들을 해결하는 바이너리 취약 코드 클론 탐지기 개발 - 오탐 문제 해결을 위해 명확한 취약점 패치 여부 판별 알고리즘 제안 - 강건성 문제 해결을 위해 바이너리 코드 정규화 알고리즘 제안 - 성능 문제 해결을 위해 가벼운 비교 알고리즘 제안 22
  • 23. Computer & Communication Security Laboratory, Korea University / 37 QuickBcc 23 분석 대상 소프트웨어 핑거프린팅 바이너리 전처리 취약 코드클론 DB 핑거프린팅 필터링 리포트 QuickBcc 동작 구조 취약 바이너리 타겟 Fingerprint 패치 바이너리 함수 매칭 취약 함수 전처리 취약 시그니처 데이터베이스 * H. Jang, K. Yang, G. Lee, Y. Na, J. D. Seideman, S. Luo, H. Lee, and S. Dietrich, “Quickbcc: Quick and scalable binary vulnerable code clone detection”, IFIP SEC 2021 ➢ QuickBcc 기술의 동작 구조
  • 24. Computer & Communication Security Laboratory, Korea University / 37 QuickBcc - 오탐 문제 접근 취약 함수 패치 함수 두 함수간의 관계 24 ➢ 패치/취약 함수의 고유성에 집중 ▪ 오른쪽 그림에서, 보라색 영역은 오탐 문제를 유발 ▪ 보라색 영역을 제외한 부분을 시그니처로 만들어 오탐 문제 해결 ▪ 빨간색 영역은 취약한 부분, 파란색 부분은 패치된 부분 > 취약 시그니처 = {빨간색 영역, 파란색 영역} 제거된 코드 Patch 파일 취약 시그니처 패치 시그니처
  • 25. Computer & Communication Security Laboratory, Korea University / 37 QuickBcc - 오탐 문제 접근 타겟 함수 취약 함수 패치 함수 시나리오 #1 시나리오 #2 25 취약 함수 패치 함수 타겟 함수 ➢ 타겟 함수와 취약 시그니처 비교 ▪ 앞서 제작한 취약 시그니처와 타겟 함수와 비교 ▪ 빨간색 영역의 부분이 많을수록 취약할 가능성이 높음 ▪ 파란색 영역의 부분이 많을수록 패치되었을 가능성이 높음 > 취약 스코어 = Sim(타겟, 빨간색 영역)-Sim(타겟, 파란색 영역) ➢ 시나리오 #1 : 타겟 함수에 취약점이 있을 경우 ▪ Sim(타겟, 빨간색 영역)-Sim(타겟, 파란색 영역) = 높음 ➢ 시나리오 #2 : 타겟 함수의 취약점이 패치되었을 경우 ▪ Sim(타겟, 빨간색 영역)-Sim(타겟, 파란색 영역) = 낮음
  • 26. Computer & Communication Security Laboratory, Korea University / 37 QuickBcc - 강건성 문제 접근 소스코드 ... 유사한 중간언어 빌드된 바이너리 코드들 (아키텍쳐 차이로 인해 유사도 비교 불가) 컴파일러 중간언어 Rifter 26 ➢ 여러 아키텍처를 동일한 표현으로, IR Rifting ▪ 아키텍처 별 사용하는 명령어 세트가 다르기 때문에 서로 비교가 힘듬 ▪ 이들을 동일한 표현인 IR로 변환후 비교하여 문법적인 문제 해결 가능 ▪ 바이너리 기능적인 문제는 해결이 불가능 > IR Lifter를 통해 문법적인 문제 해결 가능
  • 27. Computer & Communication Security Laboratory, Korea University / 37 QuickBcc - 강건성 문제 접근 [1] Yaniv David, Nimrod Partush, Eran Yahav, Statistical Similarity of Binaries, PLDI'16 27 ➢ 바이너리 기능의 가장 작은 단위, Strand ▪ Strand[1]는 하나의 변수를 계산하는 데 필요한 명령어 세트 ▪ 최적화 옵션이 적용되어도, 기능적인 부분은 변경되지 않음 ▪ 동일한 기능은 유사한 Strand를 지님 ▪ 기능을 의미하는 가장 작은 단위로 컴파일 옵션 등에 유연한 성능을 보임 > strand간의 비교를 통해 기능 간 유사성 점수를 계산할 수 있음 VEX IR 중간언어 VEX IR에 대응하는 Strands 분석 대상 (바이너리) 중간 언어로 변환
  • 28. Computer & Communication Security Laboratory, Korea University / 37 QuickBcc - 성능 문제 접근 28 ➢ 불필요한 바이너리 필터링 ▪ 함수에 내포된 Strand 수 등 컴파일 환경에 크게 영향을 받지 않는 속성으로 필터링 수행 ▪ 속성이 너무 다르다고 판단되는 경우, 비교를 건너뜀 ▪ 이를 통해 효과적으로 성능을 개선할 수 있음 > 불필요한 바이너리는 분석하지 않음으로써 성능 향상 # of Function Call # of Strands Jumpkind ... 해당 연구에서 안정적인 속성이라고 간주된 항목들
  • 29. Computer & Communication Security Laboratory, Korea University / 37 QuickBcc - 접근 방식 요약 성능 강건성 오탐 QuickBcc의 목표 필터링 패치 시그니처 중간언어 [1] Yaniv David, Nimrod Partush, Eran Yahav, Statistical Similarity of Binaries, PLDI''16 29 ➢ IR + Strand를 사용하여 함수 시그니처 생성 - 보다 가벼운 분석 방식 - 코드 클론 탐지기의 강건성과 성능을 향상시킴 ➢ 새로운 취약 시그니처 생성 방안 고안 - FP 문제 방지 - 취약 시그니처 생성을 사용하지 않는 방식보다 높은 정확도를 가짐 ➢ 분석 대상 필터링 방안 고안 - 성능 향상 - 바이너리의 안정적인 속성이 필터 역할 수행
  • 30. Computer & Communication Security Laboratory, Korea University / 37 30 성능 평가
  • 31. Computer & Communication Security Laboratory, Korea University / 37 성능 평가 ➢ 데이터 집합 타겟 데이터 - [9.0.0-10.8.0] 데비안 라이브 이미지 amd64 (/bin, /sbin, /usr) - 3.5년간의 공식 iso 이미지 대상 (총 21개) - 선정 기준은 유명도와 바이너리 수집의 용이성 - 총 143,018개의 바이너리와 and 51,654,380개의 함수 대상 시그니처 데이터베이스 - 데비안 이미지에 내장된 바이너리 CVE를 선별하여 시그니처화 CVE-2018-0734, CVE-2019-1547, CVE-2019-1563, CVE-2018-19841, CVE-2017-12678, CVE-2018-6543 ➢ Threshold - “Sim(타겟, 빨간색 영역)-Sim(타겟, 파란색 영역)” 해당 계산의 결과가 어느 값 이상이어야 취약 함수인가? - F1 스코어가 가장 높은 케이스를 취약 여부를 판별하는 threshold로 사용 - t = 0.84 31
  • 32. Computer & Communication Security Laboratory, Korea University / 37 성능 평가 4) 속도와 확장성 ▪ 데비안 9.0.0, 5,439개의 바이너리를 대상으로 6개의 시그니처를 실험한 결과 ▪ 4분 소요 (2번째 수행부터) 3) 최신 기술과의 성능 비교 ▪ 최신 연구 중 QuickBcc와 시스템이 유사하게 설계된 Esh[1]와 성능 비교 수행 ▪ QuickBcc가 평균 22배 빠른 성능을 보임 32 [1] David, Yaniv, Nimrod Partush, and Eran Yahav. "Statistical similarity of binaries." ACM SIGPLAN 16’ 2) 정밀도 ▪ 21개 데비안 이미지 대상 실험 (143,018개의 바이너리) ▪ 100% 정밀도와 73% 재현율을 보임 1) 필터링 성능 ▪ 타겟 함수의 94.9%를 비교 대상에서 제외하였음 타겟 취약점 Esh QuickBcc Heartbleed 672 ms 0.192 ms Shellshock 820 ms 32.677 ms Average 757 ms 32.08 ms
  • 33. Computer & Communication Security Laboratory, Korea University / 37 한계점 ➢ 다중 컴파일 환경에 의한 강건성 문제 ▪ 모든 다중 컴파일 환경에 적용되는지 검증이 충분히 이루어지지 못하였음 ▪ 컴파일 환경에 덜 민감하지만, 문제를 완벽히 해결하진 못하였음 ➢ 취약 시그니처 생성 방식의 한계 ▪ 현재 수동으로 시그니처를 제작해야 함 33
  • 34. Computer & Communication Security Laboratory, Korea University / 37 34 결론
  • 35. Computer & Communication Security Laboratory, Korea University / 37 기술 활용 방안 예시 35 ➢ 활용 예시 #1 - 소스코드가 공개되어 있지 않은 상용 프로그램에 활용 ex) 라이브러리, 윈도우 상용 프로그램 등 ➢ 활용 예시 #2 - 소스코드가 공개되어 있지 않은 펌웨어 분석에 활용 ex) 자동차, IoT 기기의 펌웨어 등 ➢ 활용 예시 #3 - 소프트웨어 공급망의 검수 단계에서 치명적인 취약점 탐지 ex) 개발 내용 배포 전, 취약점 존재 여부 검수
  • 36. Computer & Communication Security Laboratory, Korea University / 37 추후 계획 ➢ 한계점 해결 ▪ 다중 컴파일 환경에 의한 강건성 문제 ▪ 최소한의 서명으로 가능한 많은 컴파일 옵션을 커버하도록 알고리즘 개편 예정 ▪ 현재 다양한 환경의 프로젝트에서 해당 기술을 활용하며 검증 및 개편 진행중 ▪ 취약 시그니처 생성 방식의 한계 ▪ 시그니처 생성 자동화 개발 진행중 ➢ IoTcube 통합 ▪ 위 문제들을 해결한 이후 내년 중순 경 IoTcube 플랫폼 통합 예정 36
  • 37. Computer & Communication Security Laboratory, Korea University / 37 37 감사합니다.