타입 컨퓨전 버그는 C++로 개발된 소프트웨어를 공격하기 위해 사용되는 인기 있는 취약점 클래스 중 하나이다. 이 버그는 프로그램이 오브젝트를 호환되지 않는 클래스 타입으로 형변환(타...
http://chineseinput.net/에서 pinyin(병음)방식으로 중국어를 변환할 수 있습니다.
변환된 중국어를 복사하여 사용하시면 됩니다.
https://www.riss.kr/link?id=T15943842
Seoul : Graduate School of Cybersecurity, Korea University, 2021
학위논문(석사) -- 고려대학교 정보보호대학원 , 정보보호학과 , 2021. 8
2021
영어
서울
C++ 프로그램 바이너리 대상 타입 컨퓨전 버그 탐지
v, 65장 ; 26 cm
부록: Source code of BinTyper
지도교수: 김승주
참고문헌: 장 33-35
I804:11009-000000251677
0
상세조회0
다운로드국문 초록 (Abstract)
타입 컨퓨전 버그는 C++로 개발된 소프트웨어를 공격하기 위해 사용되는 인기 있는 취약점 클래스 중 하나이다. 이 버그는 프로그램이 오브젝트를 호환되지 않는 클래스 타입으로 형변환(타...
타입 컨퓨전 버그는 C++로 개발된 소프트웨어를 공격하기 위해 사용되는 인기 있는 취약점 클래스 중 하나이다. 이 버그는 프로그램이 오브젝트를 호환되지 않는 클래스 타입으로 형변환(타입캐스팅)하여 발생한다. 공격자는 이 취약점(버그)을 악용해 대상 소프트웨어에서 악성 코드를 실행할 수 있다. 유형 혼동 버그를 탐지하기 위한 기존 연구들은 모두 소스 코드 수준에서 제안되었다. 이들은 소스 코드의 컴파일 과정에서 타입캐스팅 연산자에 타입 호환성을 검증하기 위한 추가적인 코드를 삽입하여 런타임에서 타입 컨퓨전 버그를 탐지한다. 그러나 이러한 방법들은 바이너리 수준에서 적용될 수 없다. 컴파일된 바이너리에는 클래스 정보와 타입캐스팅 연산자 등의 고수준 정보가 존재하지 않기 때문이다.
본 논문은 바이너리 수준에서 타입 컨퓨전 버그를 탐지할 수 있는 최초의 도구인 BinTyper를 제안한다. BinTyper는 정적 분석을 통해 클래스 오브젝트를 클래스 상속 구조에 따라 여러 영역으로 나눈다. 이후 동적 분석을 수행해 타입 컨퓨전 버그를 유발하지 않고 프로그램이 실행되기 위해 오브젝트에 필요한 조건들을 추론한다. 마지막으로, 추론된 조건들을 바탕으로 타입 호환성을 검증하여 타입 컨퓨전 버그를 탐지한다. 우리는 제안된 방법을 Google PDFium과 LibSass에 적용해 바이너리 수준에서 타입 컨퓨전 버그를 성공적으로 탐지하였다.
다국어 초록 (Multilingual Abstract)
Type confusion bug is a popular vulnerability class used to attack C++-based software. This bug occurs when a program typecasts an object to an incompatible class type. An attacker can exploit this vulnerability to execute malicious code on the target...
Type confusion bug is a popular vulnerability class used to attack C++-based software. This bug occurs when a program typecasts an object to an incompatible class type. An attacker can exploit this vulnerability to execute malicious code on the target software. Existing researches to detect type confusion bugs have been proposed at the source level. They perform detection at runtime by adding extra code that verifies type compatibility to the typecasting operator. However, this approach is not applicable at the binary level, because high-level information such as class information and the typecasting operator does not exist in the compiled binary.
In this paper, we propose BinTyper, a tool that detects type confusion bugs at the binary level for the first time. BinTyper divides the object into several areas according to the class hierarchy by static analysis. After that, BinTyper performs dynamic analysis to infer the condition of the object for the program to be executed without causing a type confusion bug. Finally, based on the inferred condition, type compatibility is verified to detect a type confusion bug. We actually applied our proposed method to Google PDFium and LibSass, which confirmed that our proposed method successfully detects a type confusion bug at the binary level.
목차 (Table of Contents)