1 |
1
소프트웨어 바이너리 파일을 역어셈블(disassemble)하여 상기 소프트웨어 바이너리 파일에 대한 어셈블리어 코드를 생성하는 역어셈블러;상기 어셈블리어 코드에 대한 제어 흐름 그래프(control flow graph)를 생성하고, 문자열 검색을 통해 상기 어셈블리어 코드가 사전 정의된 의심 함수 리스트에 포함된 의심 함수들 중 적어도 하나를 포함하고 있는지 여부를 판단하는 정적 분석부; 및상기 어셈블리어 코드에 상기 의심 함수가 포함되어 있는 경우, 상기 제어 흐름 그래프에 기초하여 상기 의심 함수를 실행하기 위한 최적 실행 경로를 결정하고, 상기 소프트웨어 바이너리 파일을 이용하여 상기 최적 실행 경로에 대한 동적 기호 실행(concolic execution)을 수행하는 동적 분석부를 포함하며,상기 동적 분석부는, 상기 제어 흐름 그래프 상에서 엔트리 노드로부터 상기 의심 함수를 포함하는 타겟 노드까지의 최단 실행 경로를 상기 최적 실행 경로로 결정하는 소프트웨어 취약점 분석 장치
|
2 |
2
청구항 1에 있어서,상기 의심 함수 리스트는, 사전에 발견된 취약점과 관련된 함수를 포함하는 소프트웨어 취약점 분석 장치
|
3 |
3
청구항 2에 있어서,상기 의심 함수 리스트는, CVE(Common Vulnerabilities and Exposure) 에 등록된 취약점과 관련된 함수를 포함하는 소프트웨어 취약점 분석 장치
|
4 |
4
삭제
|
5 |
5
청구항 1에 있어서,상기 동적 분석부는, 상기 최단 실행 경로를 제외한 나머지 실행 경로를 프루닝(pruning)하는 소프트웨어 취약점 분석 장치
|
6 |
6
청구항 5에 있어서,상기 동적 분석부는, 상기 나머지 실행 경로 상에 존재하는 각 노드에 대응되는 블록의 시작 메모리 주소를 포함하는 회피 블록 리스트를 생성하고, 상기 회피 블록 리스트에 기초하여 상기 나머지 실행 경로를 프루닝하는 소프트웨어 취약점 분석 장치
|
7 |
7
소프트웨어 바이너리 파일을 역어셈블(disassemble)하여 상기 소프트웨어 바이너리 파일에 대한 어셈블리어 코드를 생성하는 단계;상기 어셈블리어 코드에 대한 제어 흐름 그래프(control flow graph)를 생성하는 단계; 문자열 검색을 통해 상기 어셈블리어 코드가 사전 정의된 의심 함수 리스트에 포함된 의심 함수들 중 적어도 하나를 포함하고 있는지 여부를 판단하는 단계; 상기 어셈블리어 코드에 상기 의심 함수가 포함되어 있는 경우, 상기 제어 흐름 그래프에 기초하여 상기 의심 함수를 실행하기 위한 최적 실행 경로를 결정하는 단계; 및상기 소프트웨어 바이너리 파일을 이용하여 상기 최적 실행 경로에 대한 동적 기호 실행(concolic execution)을 수행하는 단계를 포함하며,상기 최적 실행 경로를 결정하는 단계는, 상기 제어 흐름 그래프 상에서 엔트리 노드로부터 상기 의심 함수를 포함하는 타겟 노드까지의 최단 실행 경로를 상기 최적 실행 경로로 결정하는 소프트웨어 취약점 분석 방법
|
8 |
8
청구항 7에 있어서,상기 의심 함수 리스트는, 사전에 발견된 취약점과 관련된 함수를 포함하는 소프트웨어 취약점 분석 방법
|
9 |
9
청구항 8에 있어서,상기 의심 함수 리스트는, CVE(Common Vulnerabilities and Exposure) 에 등록된 취약점과 관련된 함수를 포함하는 소프트웨어 취약점 분석 방법
|
10 |
10
삭제
|
11 |
11
청구항 7에 있어서,상기 최적 실행 경로를 결정하는 단계는, 상기 최단 실행 경로를 제외한 나머지 실행 경로를 프루닝(pruning)하는 단계를 더 포함하는 소프트웨어 취약점 분석 방법
|
12 |
12
청구항 11에 있어서,상기 프루닝하는 단계는, 상기 나머지 실행 경로 상에 존재하는 각 노드에 대응되는 블록의 시작 메모리 주소를 포함하는 회피 블록 리스트를 생성하고, 상기 회피 블록 리스트에 기초하여 상기 나머지 실행 경로를 프루닝하는 소프트웨어 취약점 분석 방법
|