1 |
1
하나 이상의 프로세서들, 및상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치로서, 대상 파일에 출력 API를 호출하는 함수-상기 출력 API를 호출하는 함수는, 상기 대상 파일이 실행되는 컴퓨팅 장치에서 해당 함수의 명령에 대응하는 결과를 디스플레이에 출력하기 위한 함수임-가 있는지 여부를 확인하고, 상기 출력 API를 호출하는 함수가 있는 경우, 상기 함수를 후킹하는 후킹 모듈; 및상기 후킹한 함수의 인자에 사용자로부터 입력되는 값을 입력으로 하는 버퍼가 존재하고, 상기 버퍼가 상기 후킹한 함수의 첫 번째 인자인 경우, 상기 대상 파일에 포맷 스트링 취약점이 있는지 여부를 판단하는 취약점 판단 모듈을 포함하는, 포맷 스트링 검출 장치
|
2 |
2
청구항 1에 있어서, 상기 취약점 판단 모듈은, 상기 첫 번째 인자가 상기 버퍼인 경우, 상기 버퍼에 설정된 메모리를 로딩하고, 상기 메모리에서 상기 버퍼의 입력 길이를 확인하는, 포맷 스트링 검출 장치
|
3 |
3
삭제
|
4 |
4
청구항 2에 있어서, 상기 취약점 판단 모듈은, 상기 첫 번째 인자가 상기 버퍼인 경우, 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값을 생성하는, 포맷 스트링 검출 장치
|
5 |
5
청구항 4에 있어서, 상기 취약점 판단 모듈은, 상기 버퍼의 입력 길이와 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값의 길이를 비교하여 상기 대상 파일에 포맷 스트링 취약점이 있는지 여부를 판단하는, 포맷 스트링 검출 장치
|
6 |
6
청구항 5에 있어서, 상기 취약점 판단 모듈은, 상기 버퍼의 입력 길이가 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값의 길이 이상인 경우 상기 대상 파일에 포맷 스트링 취약점이 있는 것으로 판단하고, 상기 버퍼의 입력 길이가 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값의 길이 미만인 경우 상기 대상 파일에 포맷 스트링 취약점이 없는 것으로 판단하는, 포맷 스트링 검출 장치
|
7 |
7
청구항 5에 있어서, 상기 포맷 스트링 검출 장치는, 공격 코드를 생성하고, 상기 공격 코드를 상기 포맷 스트링 취약점이 있는 것으로 판단된 대상 파일에 대해 적용하여 포맷 스트링 취약점 검증을 수행하는 검증 모듈을 더 포함하는, 포맷 스트링 검출 장치
|
8 |
8
청구항 7에 있어서, 상기 검증 모듈은, 상기 대상 파일의 입력 유형, 상기 대상 파일에 적용된 보호 기법, 상기 대상 파일 내 취약한 함수 부분의 주소, 및 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값의 길이 중 하나 이상을 기반으로 상기 공격 코드를 생성하는, 포맷 스트링 검출 장치
|
9 |
9
청구항 8에 있어서, 상기 검증 모듈은, 상기 공격 코드를 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값과 동일한 길이로 생성하는, 포맷 스트링 검출 장치
|
10 |
10
하나 이상의 프로세서들, 및상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 대상 파일에 출력 API를 호출하는 함수-상기 출력 API를 호출하는 함수는, 상기 대상 파일이 실행되는 컴퓨팅 장치에서 해당 함수의 명령에 대응하는 결과를 디스플레이에 출력하기 위한 함수임-가 있는지 여부를 확인하는 동작;상기 출력 API를 호출하는 함수가 있는 경우, 상기 함수를 후킹하는 동작; 및상기 후킹한 함수의 인자에 사용자로부터 입력되는 값을 입력으로 하는 버퍼가 존재하고, 상기 버퍼가 상기 후킹한 함수의 첫 번째 인자인 경우, 상기 대상 파일에 포맷 스트링 취약점이 있는지 여부를 판단하는 동작을 포함하는, 포맷 스트링 검출 방법
|
11 |
11
청구항 10에 있어서, 상기 포맷 스트링 취약점이 있는지 여부를 판단하는 동작은, 상기 첫 번째 인자가 상기 버퍼인 경우, 상기 버퍼에 설정된 메모리를 로딩하는 동작; 및상기 메모리에서 상기 버퍼의 입력 길이를 확인하는 동작을 포함하는, 포맷 스트링 검출 방법
|
12 |
12
삭제
|
13 |
13
청구항 11에 있어서, 상기 포맷 스트링 취약점이 있는지 여부를 판단하는 동작은, 상기 첫 번째 인자가 상기 버퍼인 경우, 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값을 생성하는 동작을 더 포함하는, 포맷 스트링 검출 방법
|
14 |
14
청구항 13에 있어서, 상기 포맷 스트링 취약점이 있는지 여부를 판단하는 동작은, 상기 버퍼의 입력 길이와 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값의 길이를 비교하여 상기 대상 파일에 포맷 스트링 취약점이 있는지 여부를 판단하는 동작을 더 포함하는, 포맷 스트링 검출 방법
|
15 |
15
청구항 14에 있어서, 상기 포맷 스트링 취약점이 있는지 여부를 판단하는 동작은, 상기 버퍼의 입력 길이가 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값의 길이 이상인 경우 상기 대상 파일에 포맷 스트링 취약점이 있는 것으로 판단하는 동작; 및상기 버퍼의 입력 길이가 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값의 길이 미만인 경우 상기 대상 파일에 포맷 스트링 취약점이 없는 것으로 판단하는 동작을 포함하는, 포맷 스트링 검출 방법
|
16 |
16
청구항 14에 있어서, 상기 포맷 스트링 검출 방법은, 공격 코드를 생성하고, 상기 공격 코드를 상기 포맷 스트링 취약점이 있는 것으로 판단된 대상 파일에 대해 적용하여 포맷 스트링 취약점 검증을 수행하는 동작을 더 포함하는, 포맷 스트링 검출 방법
|
17 |
17
청구항 16에 있어서, 상기 검증을 수행하는 동작은, 상기 대상 파일의 입력 유형, 상기 대상 파일에 적용된 보호 기법, 상기 대상 파일 내 취약한 함수 부분의 주소, 및 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값의 길이 중 하나 이상을 기반으로 상기 공격 코드를 생성하는, 포맷 스트링 검출 방법
|
18 |
18
청구항 17에 있어서, 상기 검증을 수행하는 동작은, 상기 공격 코드를 상기 대상 파일의 프로그램 흐름을 변조할 수 있는 입력 값과 동일한 길이로 생성하는, 포맷 스트링 검출 방법
|
19 |
19
하나 이상의 프로세서들;메모리; 및하나 이상의 프로그램들을 포함하고,상기 하나 이상의 프로그램들은 상기 메모리에 저장되고, 상기 하나 이상의 프로세서들에 의해 실행되도록 구성되며, 상기 하나 이상의 프로그램들은, 대상 파일에 출력 API를 호출하는 함수-상기 출력 API를 호출하는 함수는, 상기 대상 파일이 실행되는 컴퓨팅 장치에서 해당 함수의 명령에 대응하는 결과를 디스플레이에 출력하기 위한 함수임-가 있는지 여부를 확인하기 위한 명령;상기 출력 API를 호출하는 함수가 있는 경우, 상기 함수를 후킹하기 위한 명령; 및상기 후킹한 함수의 인자에 사용자로부터 입력되는 값을 입력으로 하는 버퍼가 존재하고, 상기 버퍼가 상기 후킹한 함수의 첫 번째 인자인 경우, 상기 대상 파일에 포맷 스트링 취약점이 있는지 여부를 판단하기 위한 명령을 포함하는, 컴퓨팅 장치
|
20 |
20
비일시적 컴퓨터 판독 가능한 저장 매체(non-transitory computer readable storage medium)에 저장된 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은 하나 이상의 명령어들을 포함하고, 상기 명령어들은 하나 이상의 프로세서들을 갖는 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치로 하여금, 대상 파일에 출력 API를 호출하는 함수-상기 출력 API를 호출하는 함수는, 상기 대상 파일이 실행되는 컴퓨팅 장치에서 해당 함수의 명령에 대응하는 결과를 디스플레이에 출력하기 위한 함수임-가 있는지 여부를 확인하도록 하고,상기 출력 API를 호출하는 함수가 있는 경우, 상기 함수를 후킹하도록 하고, 그리고상기 후킹한 함수의 인자에 사용자로부터 입력되는 값을 입력으로 하는 버퍼가 존재하고, 상기 버퍼가 상기 후킹한 함수의 첫 번째 인자인 경우, 상기 대상 파일에 포맷 스트링 취약점이 있는지 여부를 판단하도록 하는, 컴퓨터 프로그램
|