1 |
1
컴퓨팅 장치에 의하여 수행되는 방법에 있어서,오류 유발 케이스의 입력 데이터가 테인트된 제1 피연산자 레지스터에 대하여 제1 테인트 정보를 추가하는 단계; 상기 제1 피연산자 레지스터의 데이터에 의해 테인트된 제2 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 이용하여 제2 테인트 정보를 생성하는 단계; 및오류 발생 지점으로부터 각각의 피연산자의 레지스터가 가진 테인트 정보를 이용한 역추적을 수행하여, 상기 오류 유발 케이스의 입력 데이터 중 오류 원인이 된 입력 데이터를 추적하는 단계를 포함하는, 바이너리 취약점 원인 위치 추적 방법
|
2 |
2
제1 항에 있어서,상기 오류 유발 케이스의 입력 데이터가 테인트된 제1 피연산자 레지스터에 대하여 제1 테인트 정보를 추가하는 단계는,상기 제1 피연산자 레지스터가 소스(source) 피연산자인 경우, 상기 소스 피연산자의 레지스터에 대하여 제1 테인트 정보를 추가하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
3 |
3
제2 항에 있어서,상기 제1 피연산자 레지스터가 소스 피연산자인 경우, 상기 소스 피연산자의 레지스터에 대하여 제1 테인트 정보를 추가하는 단계는,상기 제1 피연산자 레지스터가 메인 함수에서 입력된 상기 오류 유발 케이스의 입력 데이터에 의해 처음으로 테인트 된 경우에 한하여, 제1 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 추가하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
4 |
4
제3 항에 있어서,상기 제1 피연산자 레지스터가 메인 함수에서 입력된 상기 오류 유발 케이스의 입력 데이터에 의해 처음으로 테인트 된 경우에 한하여, 상기 제1 테인트 정보를 추가하는 단계는,상기 제1 피연산자 레지스터의 연산자가 메인 함수에 포함되고, 상기 연산자의 소스 피연산자가 ebp를 베이스(base)로 하는 상대 주소 지정 방식의 주소값인 경우 상기 주소값을 가리키는 상기 제1 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 추가하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
5 |
5
제2 항에 있어서,상기 제1 피연산자 레지스터가 소스 피연산자인 경우, 상기 소스 피연산자의 레지스터에 대하여 제1 테인트 정보를 추가하는 단계는,상기 제1 피연산자 레지스터가 상기 오류 유발 케이스의 입력 데이터를 반환(return)하는 함수에 의해 처음으로 테인트 된 경우에 한하여, 제1 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 추가하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
6 |
6
제5 항에 있어서,상기 제1 피연산자 레지스터가 상기 오류 유발 케이스의 입력 데이터를 반환하는 함수에 의해 처음으로 테인트 된 경우에 한하여, 제1 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 추가하는 단계는,상기 제1 피연산자 레지스터가 eax이고, 상기 제1 피연산자 레지스터의 연산자의 직전 연산자가 상기 오류 유발 케이스의 입력 데이터를 반환하는 함수를 호출하는 연산자인 경우, 상기 제1 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 추가하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
7 |
7
제6 항에 있어서,상기 제1 피연산자 레지스터가 상기 오류 유발 케이스의 입력 데이터를 반환하는 함수에 의해 처음으로 테인트 된 경우에 한하여, 제1 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 추가하는 단계는,취약점 원인 위치 추적 대상 바이너리의 헤더에 저장된 심볼테이블(symbol table)을 분석하여 상기 오류 유발 케이스의 입력 데이터를 반환하는 함수를 추출하는 단계; 및상기 제1 피연산자 레지스터의 연산자의 직전 연산자가 호출하는 함수와 상기 바이너리의 헤더 에 저장된 심볼테이블을 분석하여 추출된 함수가 동일한 경우, 상기 제1 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 추가하는 단계를 더 포함하는,바이너리 취약점 원인 위치 추적 방법
|
8 |
8
제1 항에 있어서,상기 제1 피연산자 레지스터의 데이터에 의해 테인트된 제2 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 이용하여 제2 테인트 정보를 생성하는 단계는,상기 제2 피연산자 레지스터가 소스 피연산자이고 상기 제2 피연산자 레지스터가 상기 제2 피연산자 레지스터의 재1 연산자 전에 존재하는 제2 연산자에도 사용된 경우,상기 제2 연산자의 상기 제2 피연산자 레지스터에 대하여 생성된 상기 제1 테인트 정보를 이용하여 상기 제2 테인트 정보를 갱신하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
9 |
9
제1 항에 있어서,상기 제1 피연산자 레지스터의 데이터에 의해 테인트된 제2 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 이용하여 제2 테인트 정보를 생성하는 단계는,상기 제2 피연산자 레지스터가 소스 피연산자이고 상기 제2 피연산자 레지스터의 제1 연산자 전에 존재하는 제2 연산자에서 사용되지 않은 경우, 상기 제2 테인트 정보를 생성하지 않는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
10 |
10
제1 항에 있어서,상기 제1 피연산자 레지스터의 데이터에 의해 테인트된 제2 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 이용하여 제2 테인트 정보를 생성하는 단계는,상기 제2 피연산자 레지스터가 목적지 피연산자인 경우, 상기 제2 피연산자 레지스터에 대한 소스 피연산자의 상기 제1 테인트 정보를 이용하여 상기 제2 테인트 정보를 생성하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
11 |
11
제10 항에 있어서,상기 제2 피연산자 레지스터가 목적지 피연산자인 경우, 상기 제2 피연산자 레지스터에 대한 소스 피연산자의 상기 제1 테인트 정보를 이용하여 상기 제2 테인트 정보를 생성하는 단계는,상기 소스 피연산자가 상수값인 경우, 상기 제2 테인트 정보를 생성하지 않는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
12 |
12
제10 항에 있어서,상기 제2 피연산자 레지스터가 목적지 피연산자인 경우, 상기 제2 피연산자 레지스터에 대한 소스 피연산자의 상기 제1 테인트 정보를 이용하여 상기 제2 테인트 정보를 생성하는 단계는,상기 소스 피연산자가 상수값이 아니고 상기 제2 피연산자 레지스터의 연산자가 치환류 연산자인 경우 제1 테인트 정보를 이용하여 제2 테인트 정보를 갱신하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
13 |
13
제10 항에 있어서,상기 제2 피연산자 레지스터가 목적지 피연산자인 경우, 상기 제2 피연산자 레지스터에 대한 소스 피연산자의 상기 제1 테인트 정보를 이용하여 상기 제2 테인트 정보를 생성하는 단계는,상기 소스 피연산자가 상수값이 아니고 상기 제2 피연산자 레지스터의 연산자가 치환류 연산자가 아닌 경우 제1 테인트 정보를 이용하여 제2 테인트 정보를 추가하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
14 |
14
제1 항에 있어서,상기 오류 발생 지점으로부터 각각의 피연산자의 레지스터가 가진 테인트 정보를 이용한 역추적을 수행하여, 오류 유발 케이스의 입력 데이터 중 오류 원인이 된 입력 데이터를 추적하는 단계는,상기 오류의 종류에 따라, 상기 오류가 발생한 지점의 인스트럭션에 존재하는 상기 피연산자 레지스터의 테인트 정보를 이용하여 상기 오류 원인이 된 입력 데이터를 추적하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
15 |
15
제 14 항에 있어서,상기 발생한 오류의 종류에 따라, 상기 오류가 발생한 지점의 인스트럭션에 존재하는 상기 피연산자 레지스터의 테인트 정보를 이용하여 상기 오류 원인이 된 입력 데이터를 추적하는 단계는,상기 발생한 오류가 쓰기(write) 동작에 의해 발생한 오류인 경우 상기 인스트럭션의 목적지 피연산자의 테인트 정보를 이용하여 상기 오류 원인이 된 입력 데이터를 추적하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
16 |
16
제14 항에 있어서,상기 발생한 오류의 종류에 따라, 상기 오류가 발생한 지점의 인스트럭션에 존재하는 상기 피연산자 레지스터의 테인트 정보를 이용하여 상기 오류 원인이 된 입력 데이터를 추적하는 단계는,상기 발생한 오류가 읽기(read) 동작에 의해 발생한 오류인 경우 상기 인스트럭션의 소스 피연산자의 테인트 정보를 이용하여 상기 오류 원인이 된 입력 데이터를 추적하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
17 |
17
제14 항에 있어서,상기 발생한 오류의 종류에 따라, 상기 오류가 발생한 지점의 인스트럭션에 존재하는 상기 피연산자 레지스터의 테인트 정보를 이용하여 상기 오류 원인이 된 입력 데이터를 추적하는 단계는,상기 발생한 오류가 함수 실행 동작에 의해 발생한 오류인 경우 상기 함수의 베이스(base) 인덱스(index)를 가리키는 레지스터의 테인트 정보를 이용하여 상기 오류 원인이 된 입력 데이터를 추적하는 단계를 포함하는,바이너리 취약점 원인 위치 추적 방법
|
18 |
18
바이너리 분석 프로그램이 로드 되는 메모리; 및상기 메모리에 로드된 바이너리 분석 프로그램을 실행하는 프로세서를 포함하되,상기 바이너리 분석 프로그램은,오류 유발 케이스의 입력 데이터가 테인트된 제1 피연산자 레지스터에 대하여 제1 테인트 정보를 추가하는 인스트럭션(instruction);상기 제1 피연산자 레지스터의 데이터에 의해 테인트된 제2 피연산자 레지스터에 대하여 상기 제1 테인트 정보를 이용하여 제2 테인트 정보를 생성하는 인스트럭션; 및오류 발생 지점으로부터 각각의 피연산자의 레지스터가 가진 테인트 정보를 이용한 역추적을 수행하여, 오류 유발 케이스의 입력 데이터 중 오류 원인이 된 입력 데이터를 선정하는 인스트럭션을 포함하는, 컴퓨팅 장치
|