1 |
1
컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은 하나 이상의 프로세서에서 실행되는 경우, 상기 하나 이상의 프로세서로 하여금 소프트웨어의 바이너리 코드에 기반하여 취약점을 판별하기 위한 이하의 동작들을 수행하도록 하며, 상기 동작들은,소프트웨어의 취약점 정보에 대한 전처리를 수행하여 취약점 시그니처(Vulnerability Signature)를 생성하는 동작; 타겟 바이너리 코드에 대한 전처리를 수행하여 타겟 함수 지문(Target Function Fingerprint)을 생성하는 동작; 및상기 취약점 시그니처 및 상기 타겟 함수 지문 간의 유사도 비교를 통해 타겟 소프트웨어에 취약점이 존재하는지 여부를 판별하는 동작; 을 포함하는,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
2 |
2
제 1 항에 있어서,상기 취약점 정보는,소스 코드 형태의 취약점 패치 정보, 취약점에 관련한 바이너리 코드 및 취약점이 패치된 바이너리 코드를 포함하는,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
3 |
3
제 1 항에 있어서,상기 소프트웨어의 취약점 정보에 대한 전처리를 수행하여 취약점 시그니처를 생성하는 동작은,상기 취약점 정보에 기초하여 변경에 관련한 바이너리 코드를 식별하는 동작;상기 식별된 변경에 관련한 바이너리 코드에 기초하여 취약 함수 지문(Vulnerability Function Fingerprint) 및 패치 함수 지문(Patched Function Fingerprint)을 생성하는 동작; 및상기 취약 함수 지문 및 상기 패치 함수 지문을 포함하는 취약점 시그니처를 생성하는 동작;을 포함하는,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
4 |
4
제 3 항에 있어서,상기 식별된 변경에 관련한 바이너리 코드에 기초하여 취약 함수 지문 및 패치 함수 지문을 생성하는 동작은,상기 식별된 변경에 관련한 바이너리 코드를 기초하여 실행 가능한 함수 및 바이너리 코드의 속성 정보를 획득하는 동작;상기 실행 가능한 함수에 기초하여 함수의 속성 정보를 획득하는 동작;상기 함수 내의 독립적인 코드의 흐름에 기초하여 상기 함수를 하나 이상의 스트랜드(Strand)로 분할하는 동작; 및 상기 하나 이상의 스트랜드 각각에 상기 함수의 속성 정보 및 상기 바이너리의 속성 정보를 맵핑하여 상기 취약 함수 지문 및 상기 패치 함수 지문을 생성하는 동작; 을 포함하는,컴퓨터 판독가능 저장 매체에 저장되는 컴퓨터 프로그램
|
5 |
5
제 4 항에 있어서,상기 스트랜드는,하나의 변수의 값을 산출하기 위해 필요한 명령어들의 집합으로, 상기 유사도 비교에 기준이 되는 단위인,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
6 |
6
제 1 항에 있어서,상기 타겟 바이너리 코드에 대한 전처리를 수행하여 타겟 함수 지문을 생성하는 동작은,상기 타겟 바이너리 코드를 기초하여 실행 가능한 타겟 함수 및 상기 타겟 바이너리 코드의 속성 정보를 획득하는 동작;상기 타겟 함수에 기초하여 타겟 함수의 속성 정보를 획득하는 동작; 상기 타겟 함수 내의 독립적인 코드의 흐름에 기초하여 상기 타겟 함수를 하나 이상의 스트랜드로 분할하는 동작; 및상기 하나 이상의 스트랜드 각각에 상기 타겟 함수의 속성 정보 및 상기 타겟 바이너리의 속성 정보를 맵핑하여 상기 타겟 함수 지문을 생성하는 동작; 을 포함하는,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
7 |
7
제 1 항에 있어서,상기 취약점 시그니처 및 상기 타겟 함수 지문 간의 유사도 비교는,상기 취약점 시그니처에 대응하는 함수 지문 및 상기 타겟 함수 지문 각각을 사전 결정된 단위로 분할하고, 그리고 분할된 모든 단위 중 얼마나 많은 단위가 유사한지 여부에 대한 비교를 수행하는 N-Gram 유사도 비교인,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
8 |
8
제 1 항에 있어서,상기 취약점 시그니처 및 상기 타겟 함수 지문 간의 유사도 비교를 통해 타겟 소프트웨어에 취약점이 존재하는지 여부를 판별하는 동작은, 상기 취약점 시그니처에 포함된 취약 함수 지문과 상기 타겟 함수 지문 각각에 포함된 함수 간의 제 1 유사도를 산출하는 동작;상기 취약점 시그니처에 포함된 패치 함수 지문과 상기 타겟 함수 지문 각각에 포함된 함수 간의 제 2 유사도를 산출하는 동작; 및 상기 제 1 유사도 및 상기 제 2 유사도의 차이에 기초하여 상기 타겟 소프트웨어에 취약점이 존재하는지 여부를 판별하는 동작; 을 포함하는, 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
9 |
9
제 8 항에 있어서, 상기 제 1 유사도는 상기 소프트웨어에서 취약점이 판별될 확률과 양의 상관 관계를 가지며, 상기 제 2 유사도는 상기 소프트웨어에서 취약점이 판별될 확률과 음의 상관 관계를 가지는,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
10 |
10
제 8 항에 있어서, 상기 제 1 유사도 및 상기 제 2 유사도의 차이에 기초하여 상기 타겟 소프트웨어에 취약점이 존재하는지 여부를 판별하는 동작은,상기 제 1 유사도와 제 2 유사도의 차이가 사전 결정된 기준을 초과하는 경우, 상기 타겟 소프트웨어에 취약점이 존재하는 것으로 판별하는 동작;을 포함하는,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
11 |
11
제 1 항에 있어서, 상기 취약점 시그니처 및 상기 타겟 함수 지문 간의 유사도 비교를 통해 타겟 소프트웨어에 취약점이 존재하는지 여부를 판별하는 동작은,상기 취약점 시그니처 및 상기 타겟 함수 지문에 대한 1차 필터링을 수행하여 후보 취약점 시그니처 및 후보 타겟 함수 지문을 선별하는 동작; 을 포함하고, 그리고상기 1차 필터링은,상기 취약점 시그니처 및 상기 타겟 함수 지문 각각에서 취약점에 관련한 코드를 식별하기 위한 필터링인,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
12 |
12
제 11 항에 있어서, 상기 취약점 시그니처 및 상기 타겟 함수 지문 간의 유사도 비교를 통해 타겟 소프트웨어에 취약점이 존재하는지 여부를 판별하는 동작은,상기 후보 취약점 시그니처 및 후보 타겟 함수 지문에 대한 2차 필터링을 수행하여 유사 스트랜드를 식별하는 동작; 을 포함하는,컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램
|
13 |
13
컴퓨팅 장치의 프로세서에서 수행되는 소프트웨어의 타겟 바이너리 코드에 기반하여 취약점을 판별하기 위한 방법에 있어서,컴퓨팅 장치에 포함된 프로세서가 소프트웨어의 취약점 정보에 대한 전처리를 수행하여 취약점 시그니처를 생성하는 단계; 상기 프로세서가 타겟 바이너리 코드에 대한 전처리를 수행하여 타겟 함수 지문을 생성하는 단계; 및상기 프로세서가 상기 취약점 시그니처 및 상기 타겟 함수 지문 간의 유사도 비교를 통해 타겟 소프트웨어에 취약점이 존재하는지 여부를 판별하는 단계; 를 포함하는,컴퓨팅 장치의 프로세서에서 수행되는 소프트웨어의 바이너리 코드에 기반하여 취약점을 판별하기 위한 방법
|
14 |
14
소프트웨어의 바이너리 코드에 기반하여 취약점을 판별하기 위한 컴퓨팅 장치로,하나 이상의 코어를 포함하는 프로세서;상기 프로세서에서 실행가능한 프로그램 코드들은 포함하는 메모리; 및클라이언트와 데이터를 송수신하는 네트워크부;를 포함하고, 그리고상기 프로세서는,소프트웨어의 취약점 정보에 대한 전처리를 수행하여 취약점 시그니처를 생성하고, 타겟 바이너리 코드에 대한 전처리를 수행하여 타겟 함수 지문을 생성하고, 그리고상기 취약점 시그니처 및 상기 타겟 함수 지문 간의 유사도 비교를 통해 타겟 소프트웨어에 취약점이 존재하는지 여부를 판별하는,소프트웨어의 바이너리 코드에 기반하여 취약점을 판별하기 위한 컴퓨팅 장치
|