15
실행 파일 대상 Sanitizer 작성 프레임워크 연구 단국대학교 Aegis 심재우 [email protected]

실행 파일 대상 Sanitizer 작성 프레임워크 연구

  • Upload
    dronix

  • View
    498

  • Download
    3

Embed Size (px)

Citation preview

Page 1: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

실행 파일 대상 Sanitizer 작성 프레임워크 연구

단국대학교 Aegis

심재우

[email protected]

Page 2: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

Category

• 서론

• 기존 방어기법 조사

• 실행 파일 대상 Sanitizer 프레임워크

• 결론

Page 3: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

서론

• 보안 취약점(Security Vulnerability) – Zero-Day – Hacking Team; RCS

• 기존 대응책 – 보안 패치 – 패치 관리 시스템(PMS)

– 침입 차단 시스템(IPS) – 강제 접근 제어(MAC)

• 보호 대상 SW에 맞는 제로데이 대응책 필요!

Page 4: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

서론

• Sanitizer – (손) 세정제

– 오염된(tainted) 사용자 입력을

– 세정(sanitize) 및 검사해서 – 문제가 있으면 적절히 대응 – ex: strcpy() 전에 buffer overflow가 발생할 수 있는지 크기 체크

– AddressSanitizer(ASan): Memory corruption detector

– ThreadSanitizer: Mutual exclusion error detector – MemorySanitizer: uninitialized memory read detector

Page 5: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

서론

• 실행 파일 대상 Sanitizer 작성 프레임워크 연구 – 실행 파일을 입력으로 받아 실행 파일에 맞는 Sanitizer를 작성하는

Framework 연구 – ARMv7 Linux, ELF, System-level exploit

• 목적 – 취약점 공격 기법 / 공격자들의 취약점 공격 방식 조사 – 기존의 방어 기법 조사 – ARM 기반 ELF 실행 파일 대상 Sanitizer 프레임워크 구현 및 검증

Page 6: 실행 파일 대상 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

Page 7: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

기존 방어기법 조사

• 시스템 분석 기법 조사 – 정적 분석

– 동적 분석: ptrace, strace, ltrace

Page 8: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

기존 방어기법 조사

• 사용자 정의 메모리 보호 기법 – AddressSanitizer

• clang/LLVM 이용 컴파일 시 Stub 코드를 삽입 (소스 코드 필요)

• Redzone 기법: 보호 대상 메모리 근처에 Red zone을 설정

• Shadow bit: 메모리 사용 방식에 따라 전체 메모리 영역을 추적 8byte 추적을 위해 1byte 사용 기본 12.5% 메모리 오버헤드

– BugSanitizer: 개발자 관점에서 버그 탐지. 안정적 SW 운영이 목표 – MemorySanitizer: C/C++ 초기화되지 않은 메모리 사용 탐지 – ThreadSanitizer: 프로세스/스레드 간 데이터 경쟁 선점을 탐지

Page 9: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

실행 파일 대상 Sanitizer 프레임워크

• Input: ARMv7 dynamically linked Linux ELF

• Process: 정적 분석 – 정책 관리자 – 동적 분석

• Output: Sanitizer (libsan.so) – LD_PRELOAD

Page 10: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

실행 파일 대상 Sanitizer 프레임워크

• 정적 분석 – 실행 파일 대상 입력 정의

버퍼 입력이 발생하는 32개 system call open, execve 등 자주 사용하는 system call 환경 변수(envp), 매개변수(argv)

– glibc 내 취약한 입력 함수 목록 탐지 gets, scanf, strcpy, strcat, …

– checksec.sh를 통한 보호 기능 점검

Page 11: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

실행 파일 대상 Sanitizer 프레임워크

• 동적 분석 – Format String Bug 탐지 및 무력화(% -> $)

– PLT breakpoint로 안전하지 않은 라이브러리 함수 호출 탐지

– ptrace를 통한 악의적인 시스템 콜 호출 탐지 • NoExec: execve() system call 방지

Page 12: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

실행 파일 대상 Sanitizer 프레임워크

• 동적 분석 – mmap 동적 분석으로 NX(Not eXecutable) 메모리 보호 유지

– ROP payload 탐지

Page 13: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

실행 파일 대상 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() 할당 및 해제 알고리즘 변경

Page 14: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

시연 영상

Page 15: 실행 파일 대상 Sanitizer 작성 프레임워크 연구

실행 파일 대상 SANITIZER 작성 프레임워크 연구

단국대학교 Aegis