배포되는 다수의 프로그램들이 개발단계에서 프로그램 내에 존재할 수도 있는 보안 취약점을 탐지하거나 차단하기 위한 처리가 적용되지 않은 채 만들어지고 있다. 비록 기계어 프로그램에...

http://chineseinput.net/에서 pinyin(병음)방식으로 중국어를 변환할 수 있습니다.
변환된 중국어를 복사하여 사용하시면 됩니다.
https://www.riss.kr/link?id=T10710931
광주 : 전남대학교 대학원, 2006
2006
한국어
004 판사항(20)
광주
(A) Runtime Defense of Binary Programs Against Format String Attacks by Rewriting the Calling Code to printf() Function Family
xii, 168 p. : 삽도 ; 26 cm.
지도교수:김병기
참고문헌: p.159-166
0
상세조회0
다운로드배포되는 다수의 프로그램들이 개발단계에서 프로그램 내에 존재할 수도 있는 보안 취약점을 탐지하거나 차단하기 위한 처리가 적용되지 않은 채 만들어지고 있다. 비록 기계어 프로그램에...
배포되는 다수의 프로그램들이 개발단계에서 프로그램 내에 존재할 수도 있는 보안 취약점을 탐지하거나 차단하기 위한 처리가 적용되지 않은 채 만들어지고 있다. 비록 기계어 프로그램에 대한 분석이 윈시 프로그램에 비해 어렵지만, 프로그램의 보안취약점을 제거하기 위하여 사용자가 프로그램의 원시 코드를 구해 직접 수정할 수 없는 경우, 개발자로부터 보안 취약점이 수정된 실행 프로그램을 제 시간에 제공받을 수 없는 경우, 그리고 악의적인 개발자에 의해 고의로 만들어진 실행 프로그램내 보안 취약점을 사용자가 직접 수정해야하는 경우에 기계어 실행 프로그램 단계에서 적용할 수 있는 보안 취약점 탐지 및 차단 기법은 매우 유용하다.
본 논문은 원시 코드 정보를 구할 수 없는 기계어 실행 프로그램을 포맷 스트링 공격으로부터 보호하는 방법을 제시하였다.
본 논문은 기계어 실행 프로그램을 수정하여 프로그램 실행시간에 포맷 스트링 공격을 방어하는 시스템 도구 Kimchi를 제안하였다. 제안한 방법은 실행 프로그램에 존재하는 printf() 계열 함수들에 대한 호출 코드를 수정하여 포맷 스트링 공격을 탐지하는 기능을 갖도록 작성된 안전한 safe printf() 계열 함수들을 호출하도록 한다. 안전한 safe printf() 계열 함수들은 주어진 매개변수 영역을 넘어서거나 자신을 호출한 부모 함수의 스택 프레임을 넘어서는 매개변수 접근을 차단하여 포맷 스트링 공격 가능성을 완화시킨다. 제안한 함수의 스택 사용에 대한 프로그램 정적분석과 기계어 실행 프로그램 수정 방법은 프레임 포인터 레지스터를 사용하지 않도록 컴파일되거나 printf() 코드가 정적으로 연결된 이진 실행 프로그램에도 적용될 수 있다. 제안한 방법은 printf(buf) 형태와 같은 추가 포맷 매개변수를 갖지 않는 printf() 호출 코드를 printf("%s", buf) 형태와 같이 포맷 스트링 공격에 취약하지 않는 코드로 수정하고, 읽기 전용 기억장소 영역에 있어 포맷 스트링 공격에 취약하지 않는 포맷 스트링을 매개변수로 갖는 printf() 계열 함수 호출은 수정하지 않음으로써 safe printf() 계열 함수의 안전성 검사로 인한 프로그램 속도 저하를 줄인다. 그리고 정적분석을 통해 분석하기 어려운 printf() 계열 함수에 대한 함수 포인터를 이용한 간접 호출을 포맷 스트링 공격으로부터의 보호 방법을 제시하였으며, 사용자 정의형 printf() 계열 함수를 정적분석을 통해 탐지하여 포맷 스트링 공격으로부터 이 함수들을 보호하는 방법을 제시하였다.
본 논문의 제안 방법은 기계어 실행 프로그램 수준에서 포맷 스트링 공격 방어를 다룬 기존 방법들에 비해 더 다양한 기계어 코드 구성 유형의 기계어 프로그램들을 포맷 스트링 공격으로부터 보호할 수 있으며 공격 차단 능력도 더 강화시키므로 해커 또는 웜 등의 소프트웨어의 보안 취약점에 대한 공격으로부터 시스템을 더욱 안전하게 보호하는데 기여할 것으로 기대된다. 본 논문은 프로그램의 포맷 스트링 보안 취약점을 방어하기 위하여 기존에 시도되지 않은 새로운 접근 방법인 기계어 프로그램을 직접 수정하는 프로그램 변환 기법을 적용하였다. 본 논문의 접근 방법은 Prasad가 제안한 버퍼 오버플로우 취약점을 보호하기 위한 기계어 프로그램 수정 기법과 함께 소프트웨어 보안 취약점 수정을 위한 기계어 프로그램 수정 기법의 가능성과 유용성의 확인에 기여하였다.
다국어 초록 (Multilingual Abstract)
A majority of distributed binary programs are still built without any security protection mechanism. Although the static analysis of binary programs is more difficult compared with source programs, the security protection of a binary program without s...
A majority of distributed binary programs are still built without any security protection mechanism. Although the static analysis of binary programs is more difficult compared with source programs, the security protection of a binary program without source code information is expedient when we can neither rebuild it from the patched source code nor obtain the patched binary program from the vendor in a timely manner; or when a malicious developer might introduce security holes deliberately in the binary program.
This thesis focuses on the protection of a binary program--whose source code is not available--from format string attacks.
Format string vulnerability occurs when a format string argument of the printf() family function in the standard C library includes a user input string which can be manipulated by an attacker; the attacker can execute arbitrary malicious code by modifying the program's critical memory using this vulnerability.
This thesis proposes a binary rewriting system called Kimchi that modifies binary programs to protect them from format string attacks in runtime. Kimchi replaces the machine code calling conventional printf() family with code calling the corresponding safer version of printf() family, safe printf() family, that prevents its format string from accessing arguments exceeding the given parameter range or the stack frame of the parent function. With the proposed static analysis and binary rewriting method, it can protect binary programs even if they do not use the frame pointer register or link printf() family statically. Kimchi replaces the calls to printf() family without extra format arguments like printf(buf) with the safe code printf("%s", buf), which are not vulnerable, and reduces the performance overhead of the patched program by not modifying the calls to printf() family with the format string argument located in the read-only memory segment, which are not vulnerable to the format string attack. Kimchi can protect the indirect calls to printf() family via function pointers using the pre-calculated hash table of function-call parameters in binary rewriting stage. In addition, Kimchi detects user defined printf() family functions by static analysis of binary code pattern and protects the calls to the user defined printf() family by the same protection method to printf() family.
목차 (Table of Contents)