1 |
1
소프트웨어에 대해 퍼징(fuzzing)을 실행하도록 구성된 퍼징부;상기 소프트웨어에 대해 콘콜릭(concolic)을 실행하도록 구성된 콘콜릭부;상기 퍼징부로부터 상기 소프트웨어의 퍼징 실행 결과에 대한 제1 커버리지 정보 및 상기 콘콜릭부로부터 상기 소프트웨어의 콘콜릭 실행 결과에 대한 제2 커버리지 정보를 수신하는 커버리지 분석부;상기 소프트웨어의 실행에 대한 입력값을 제공하는 입력부; 및상기 퍼징부 또는 상기 콘콜릭부로부터 상기 소프트웨어의 실행에 대한 크래시 정보를 획득하는 크래시 관리부를 포함하고,상기 커버리지 분석부는 상기 제1 커버리지 정보 및 상기 제2 커버리지 정보에 기초하여 머신 러닝을 수행하는 커버리지 학습부를 포함하고,상기 커버리지 분석부는 상기 커버리지 학습부의 결과값에 기초하여 상기 소프트웨어에 대해 퍼징을 실행할지 또는 콘콜릭을 실행할지 여부를 결정하고,상기 결과값은 상기 소프트웨어에 대한 퍼징 점수 및 콘콜릭 점수를 포함하고,상기 제1 커버리지 정보 또는 상기 제2 커버리지 정보는 상기 소프트웨어에 포함된 복수의 파트 및 상기 복수의 파트 각각에 대응되는 복수의 파트값을 포함하고,상기 커버리지 학습부는 상기 복수의 파트값에 기초하여 상기 복수의 파트 각각에 대한 퍼징 점수 및 콘콜릭 점수를 산출하고,상기 커버리지 분석부는, 상기 소프트웨어의 제1 파트에 대한 퍼징 점수가 콘콜릭 점수보다 크거나 같을 경우 상기 제1 파트의 퍼징 실행과 관련된 제1 신호를 상기 퍼징부에 전송하고, 상기 제1 파트에 대한 퍼징 점수가 콘콜릭 점수보다 작은 경우 상기 제1 파트의 콘콜릭 실행과 관련된 제2 신호를 상기 콘콜릭부에 전송하는 자원 할당부를 포함하고,상기 복수의 파트는 상기 소프트웨어의 소스 코드의 함수, 라인, 블록, 결정, 엣지, 분기 및 조건 중 적어도 하나에 의해 구별되고,상기 커버리지 분석부는, 사용자가 인식가능한 문자 데이터를 출력하기 위해 상기 제1 커버리지 정보 또는 상기 제2 커버리지 정보를 처리하는 커버리지 가공부를 포함하고,상기 크래시 관리부는 상기 퍼징부 또는 상기 콘콜릭부로부터 크래시 발생에 대한 신호를 수신한 경우, 크래시 발생에 대응되는 콜스택(call stack), 메모리 정보 및 상기 입력부로부터 제공받은 입력값을 저장하는하이브리드 퍼징 장치
|