실행 파일 대상 sanitizer 작성 프레임워크 연구
Post on 15-Apr-2017
498 Views
Preview:
TRANSCRIPT
실행 파일 대상 Sanitizer 작성 프레임워크 연구
단국대학교 Aegis
심재우
tlawodn94@naver.com
Category
• 서론
• 기존 방어기법 조사
• 실행 파일 대상 Sanitizer 프레임워크
• 결론
서론
• 보안 취약점(Security Vulnerability) – Zero-Day – Hacking Team; RCS
• 기존 대응책 – 보안 패치 – 패치 관리 시스템(PMS)
– 침입 차단 시스템(IPS) – 강제 접근 제어(MAC)
• 보호 대상 SW에 맞는 제로데이 대응책 필요!
서론
• Sanitizer – (손) 세정제
– 오염된(tainted) 사용자 입력을
– 세정(sanitize) 및 검사해서 – 문제가 있으면 적절히 대응 – ex: strcpy() 전에 buffer overflow가 발생할 수 있는지 크기 체크
– AddressSanitizer(ASan): Memory corruption detector
– ThreadSanitizer: Mutual exclusion error detector – MemorySanitizer: uninitialized memory read detector
서론
• 실행 파일 대상 Sanitizer 작성 프레임워크 연구 – 실행 파일을 입력으로 받아 실행 파일에 맞는 Sanitizer를 작성하는
Framework 연구 – ARMv7 Linux, ELF, System-level exploit
• 목적 – 취약점 공격 기법 / 공격자들의 취약점 공격 방식 조사 – 기존의 방어 기법 조사 – ARM 기반 ELF 실행 파일 대상 Sanitizer 프레임워크 구현 및 검증
기존 방어기법 조사
• 취약점 공격 기법 – Buffer overflow; Return to Libc, Return Oriented Programming
– Format String bug – Use after free
– Path injection
• 시스템 메모리 보호 기법 – NX (Not eXecutable) – ASLR (Address Space Location Randomization) – PIE (Position Independent Executable)
– RELRO (RELocation Read Only) – RUNPATH / RPATH
기존 방어기법 조사
• 시스템 분석 기법 조사 – 정적 분석
– 동적 분석: ptrace, strace, ltrace
기존 방어기법 조사
• 사용자 정의 메모리 보호 기법 – AddressSanitizer
• clang/LLVM 이용 컴파일 시 Stub 코드를 삽입 (소스 코드 필요)
• Redzone 기법: 보호 대상 메모리 근처에 Red zone을 설정
• Shadow bit: 메모리 사용 방식에 따라 전체 메모리 영역을 추적 8byte 추적을 위해 1byte 사용 기본 12.5% 메모리 오버헤드
– BugSanitizer: 개발자 관점에서 버그 탐지. 안정적 SW 운영이 목표 – MemorySanitizer: C/C++ 초기화되지 않은 메모리 사용 탐지 – ThreadSanitizer: 프로세스/스레드 간 데이터 경쟁 선점을 탐지
실행 파일 대상 Sanitizer 프레임워크
• Input: ARMv7 dynamically linked Linux ELF
• Process: 정적 분석 – 정책 관리자 – 동적 분석
• Output: Sanitizer (libsan.so) – LD_PRELOAD
실행 파일 대상 Sanitizer 프레임워크
• 정적 분석 – 실행 파일 대상 입력 정의
버퍼 입력이 발생하는 32개 system call open, execve 등 자주 사용하는 system call 환경 변수(envp), 매개변수(argv)
– glibc 내 취약한 입력 함수 목록 탐지 gets, scanf, strcpy, strcat, …
– checksec.sh를 통한 보호 기능 점검
실행 파일 대상 Sanitizer 프레임워크
• 동적 분석 – Format String Bug 탐지 및 무력화(% -> $)
– PLT breakpoint로 안전하지 않은 라이브러리 함수 호출 탐지
– ptrace를 통한 악의적인 시스템 콜 호출 탐지 • NoExec: execve() system call 방지
실행 파일 대상 Sanitizer 프레임워크
• 동적 분석 – mmap 동적 분석으로 NX(Not eXecutable) 메모리 보호 유지
– ROP payload 탐지
실행 파일 대상 Sanitizer 프레임워크
• 동적 분석 – Redzone을 통한 Heap buffer overflow 방지
• dlmalloc: Doug Lea's memory allocator
• Memory chunk는 heap BOF의 주 공격 대상
• Red zone 설정 – Head redzone/Tail redzone 을 통해
chunk header 변조 방지
– Random data
– malloc() 대신 sanitizer_malloc()로 설정
– free() 호출 시 변조 여부 검증
– Use-After-Free 방어 • malloc(), free() 할당 및 해제 알고리즘 변경
시연 영상
실행 파일 대상 SANITIZER 작성 프레임워크 연구
단국대학교 Aegis
top related