소프트웨어보안을위한 바이너리분석기법동향 동국대학교손윤식
4 차산업혁명시대 : 소프트웨어중심사회
4 차산업혁명시대의위협 : 소프트웨어버그 / 에러 / 오류 ( 일반적인 ) 버그 : 정상적작동중설계 / 코딩등의잘못으로발생하는버그 SW 품질, 안전성, 신뢰성등저하 취약점 : 정상적작동중공격자의의도로발생하는보안약점 사이버공격에사용
소프트웨어안전성 (Safety) 탄생 SW 공학에 Safety 개념도입 SW 신뢰성 SW 안전성 IEC 61508 제정 Functional safety of electrical/electronic/prog rammable electronic safety-related systems Therac-25 사고 AECL 방사선암치료기 1982 년 SW 제어서비스시작 1985 년 ~ 1987 년 : 6 번의사고 3 명사망 치사량을초과하는 X 선에환자가노출 SW 오류로인명이살상된첫사례 제어프로그램의오류 소프트웨어의안전성에대한충분한분석이없이하드웨어안전장치제거
소프트웨어안전성 소프트웨어안전성정의 시스템이재앙 ( 인명의손상, 시스템의파괴등 ) 과같은실패없이동작하는능력 The ability of the system to operate without catastrophic failure. Software Engineering 10 th edition, Sommerville, 2016 Safety-critical ( 안전필수, 고안전, 안전중심 ) 정의 A term applied to a condition, process or item of whose proper recognition, control performance, or tolerance is essential to safe operation or use; e.q., safety, critical function,, safety critical path.. Air Force System Safety Handbook, 2000
산업분야별기능안전표준 표준 DO-178C (12) IEC 62304 (06) ISO 26262 (11) IEC 61508 (98) EN50128(01) 개정일자 2012 2006 2011 1998 2001 분야 항공 의료기기 자동차 전기 / 전자 / 임베 디드시스템 특징 -안전수준 5등급 -class 3등급 -ASIL 4등급 -IEC 61508 기반 테스팅 정형기법 - 정적분석 - 동적분석 - 정형기법권고 Level A 필수 - 정적분석 - 동적분석 - 정적분석 - 동적분석 -SIL 4 등급 - 다른 SIL 사용표준의모태 - 정적분석 - 동적분석 -정적분석 -정적분석 -정형기법권고 SIL 4 필수 철도 -SIL 5 등급 -IEC 61508 기반 - 정적분석 - 동적분석 - 정형기법권고 SIL 4 권고
SW 보안 (Security) 탄생, 사이버사고 (1): DDoS
SW 보안 (Security) 탄생, 사이버사고 (2): 해킹
SW 보안 (Security) 탄생, 사이버사고 (3): 사이버전쟁
소프트웨어보안성 (Security) 실수또는고의의외부침입으로부터시스템을보호할수있는능력 The ability of the system to protect itself against accidental or deliberate intrusion. Software Engineering 10 th edition, Sommerville, 2016. 소프트웨어보안 (Software Security) 의다른정의 소프트웨어가포함하고있는취약점 ( 보안약점 ) 의밀도
소프트웨어보안의어려운점 프로그래밍언어의의미론이명확하지않아, 모르는보안약점이존재함. 제로데이취약점을줄여야함. 취약점의원인이되는보안약점을줄여야함. 명세에정의된영역의입력이아닌정의가안된범위의입력을사용 예 ) SQL 삽입공격, 버퍼오버플로공격등 즉, 일반적인테스트방법과다른방법이활용
소프트웨어보안의어려운점 공격자는새로운보안약점을지속적으로찾아내고, 이를활용하여제로데이취약점 ( 사이버무기 ) 를개발하고있음. Automatic Exploit Patch-based Exploit
소프트웨어중심사회소프트웨어특징 (1) 신뢰성 / 안전성 / 보안성한속성만중요한것이아니다. 신뢰성 ( 정확성 ) 과안전성도함께중요하고, 또는신뢰성 ( 정확성 ), 안전성, 보안성도중요하다. 미국토안보부 : Secure Software 속성 : Dependable ( 기능신뢰성 ) Trustworthy ( 보안신뢰성 ) Resilient/Survivality ( 생존성, 지속성 ) 소프트웨어및소프트웨어공급망보증 (Software and Supply Chain Assurance, SSCA) 강화 Build Security in 포탈을통한자료공개, Secure Coding 및 S-SDLC, BSIMM 지속적발전
소프트웨어중심사회소프트웨어특징 (2) 미국방부에서 2011 년 US RQ-170 사건이후 SW 개념의변경 High-Assurance Software Correctness ( 기능정확성 ) Security ( 보안성 ) Safety ( 안전성 ) 2014년 5월미국방성에서 Hack-Proof Drone 기술발표및실용화 수학적으로증명 / 보증된커널소프트웨어개발 18개월의성공적테스팅 실전배치준비중
소프트웨어중심사회소프트웨어특징 (3) High Confidence Software and Systems 미 NTRND complex and networked, distributed computing systems and CPS life-, safety-, and mission-critical applications. 시스템의설계및구현에있어규모나구성에관계없이그속성을평가할수있는시스템디자인혁신등이시도 NSA, NASA, 의료등다양한분야에서연구되고있음.
소프트웨어중심사회도래 소프트웨어로인한많은사고발생 문제가뭐지?? 무엇이필요하지?? 소프트웨어보안을위한공감대형성, 프로세스, 분석방법론개발 소프트웨어를잘만들자!!
그러나현실은 SW 개발사역량, 개발비용 제도적인문제 개발자와해커의관점이다름 SW 의복잡도증가
미국도로교통안전국, 일본다카타에어백결함 리콜명령
You can't trust code that you did not totally create yourself. No amount of source-level verification or scrutiny will protect you from using untrusted code. Ken Thompson Reflections on Trusting Trust CACM 1984
SW 보안의어려움 소스코드분석기술만으로프로그램의보안성을보장할수없음 SW 는수많은라이브러리 ( 바이너리 ) 와의결합으로구현됨 특히내가직접개발하지않은 40% 의임베디드소프트웨어는 3rd-party library 를사용중 2015 VDC Report: Software Quality and Security Challenges from Rapid Rise of Third-Party Code
소프트웨어보안분석기법의다변화필요 특정 SW 의보안성수준 = 해당 SW 의가장약한컴포넌트의보안성수준 SW 는다양한라이브러리, COTS 와의결합으로구성 소스코드가존재하지않는경우도매우빈번
우리가보는소스코드가실행되는것이아님 #include <stdio.h> int main (void) { } printf( hello world!\n ); 0101010101011111010 1010101010101010001 0010010001111111010 1111101001010100010 0010110100010110100 0101001001010010111 1110101010000001010 1011000001000001011
바이너리분석에서의고려사항 바이너리파일획득방법 ISP, jtag, UART, Flash Memory, 하드웨어 : Intel x86/x64, ARM, MIPS 등 운영체제 : Windows, VxWorks, Linux 등 실행파일포맷 : PE 32/64, COFF, ELF 등 파일타입 : 실행파일, 라이브러리 프로그래밍언어 : C/C++, Ada, Java 등 컴파일러 : MS C/C++ 컴파일러, GCC 등 최적화유무 바이너리분석파일분석이슈
기존바이너리분석기법 전통적인역공학기법 파일구조분석 디스어셈블러 제어흐름생성 패턴매칭 동적테스팅 Manual approach
바이너리분석기법 퍼징 보안취약점유발입력데이터자동생성기술 API 퍼징 bestorm, peach, AxMan, COMRaider, Hamachi, MangleMe Machine learning 기법과결합추세 모델링자동화, 탐색공간축소
바이너리분석기법 사후디버깅 메모리덤프분석 + 결함위치추정 결함위치추정 AI, Model traversing, Fault propagation 커버리지, 모델, 프로그램상태, 프로그램스펙트럼, 기계학습기반방법론
바이너리분석기법 Exploit 자동추출기술 취약점을식별, 제한적인조건하에서 exploit을자동으로생성 APEG(Automatic Patch-based Exploit Generation) Proof of Vulnerability, Shell 을실행시키지않음 AEG(Automatic Exploit Generation) Symbolic Execution, Fuzzing -> 코드커버리지확대 사후디버깅 -> 취약점식별 Exploit 공식 -> Exploit 자동추출 Buffer Overflow, Format String Bug
최근연구동향및이슈 바이너리 중간언어변환 Program abstraction 정보재구성정밀화 ( 타입, 자료구조, 객체 ) 소스코드정적분석기법과의결합 인공지능기법과의결합 바이너리분석자동화 Automatic Exploit Generation Static Analysis Symbolic Execution SMT solver
바이너리보안약점분석자동화기술목표 바이너리파일에존재하는보안약점을자동으로검출 검출된보안약점이실제로공격가능한지확인 검출된보안약점의패치자동화
Cyber Grand Challenge 2016 The World's First All-Machine Hacking Tournament
전세계적인관심증폭 싱가폴 NUS 에서는 70 억규모의대형프로젝트가진행중 MS 에서도바이너리분석툴을상용화하려고계획중 바이너리보안약점분석자동화기술의방향 SW보안, 자동화된해킹-보호기법의핵심 정적분석기법을통한취약점자동탐지 기호실행을통한공격코드생성 취약점보호를위한패치자동생성 인공지능기술과결합 하나이상의취약점의연계, 다양한취약점공격에대한자동화 취약점탐지의효율향상을위한탐색전략개발
Question?