1 |
1
컴퓨팅 장치에 의하여 수행되는 방법에 있어서,바이너리의 런타임(runtime) 시점에, 상기 바이너리의 GOT(Global Offset Table)에 안전 함수 테이블이 패치(patch)되는 단계;상기 바이너리의 인스트럭션에 의하여 기본 라이브러리의 목적 함수가 호출되면, 상기 안전 함수 테이블에 기재된 상기 목적 함수의 주소에 로드 된 중간 함수로 점프하는 단계; 및 상기 중간 함수에 의하여 상기 기본 라이브러리의 함수가 호출되는 단계를 포함하는,바이너리 취약점 보완 방법
|
2 |
2
제1항에 있어서,상기 안전 함수 테이블은,하나 이상의 상기 중간 함수가 로드된 메모리 주소를 포함하되,상기 중간 함수는 상기 기본 라이브러리의 함수들 중 사전 정의된 취약 함수인,바이너리 취약점 보완 방법
|
3 |
3
제2 항에 있어서,상기 사전 정의된 취약 함수는,버퍼 오버플로우 취약 함수, 포맷 스트링 취약 함수, 레이스 컨디션 취약 함수 및 다중 명령 실행 취약 함수를 포함하는,바이너리 취약점 보완 방법
|
4 |
4
제1 항에 있어서,상기 바이너리의 GOT에 안전 함수 테이블이 패치되는 단계는,상기 바이너리의 컨스트럭터 코드의 실행을 통해, 상기 바이너리의 GOT에 안전 함수 테이블이 패치되는 단계를 포함하는,바이너리 취약점 보완 방법
|
5 |
5
제4 항에 있어서,상기 컨스트럭터 코드는, 상기 컨스트럭터 코드에서 동적 라이브러리 로드 API를 탐색하는 인스트럭션;상기 탐색된 동적 라이브러리 로드 API를 이용하여 상기 중간 함수 및 GOT 패치 함수를 포함하는 보안 라이브러리를 로드하는 인스트럭션; 및상기 GOT 패치 함수를 호출하는 인스트럭션을 포함하되,상기 GOT 패치 함수는, 상기 바이너리의 GOT에 상기 안전 함수 테이블을 패치하기 위한 인스트럭션으로 구성된 것이고,상기 안전 함수 테이블은, 상기 기본 라이브러리의 취약 함수 각각에 대응되는 상기 중간 함수의 메모리 주소를 포함하는 것인,바이너리 취약점 보완 방법
|
6 |
6
제5 항에 있어서,상기 보안 라이브러리는 상기 바이너리의 인스톨 패키지에 상기 바이너리와 함께 포함된 공유 라이브러리(shared library)인,바이너리 취약점 보완 방법
|
7 |
7
컴퓨팅 장치에 의하여 수행되는 방법에 있어서,컴파일 장치로부터 소스 바이너리를 수신하는 단계;상기 소스 바이너리의 컨스트럭터 코드(constructor code)에 보안 라이브러리 로드 코드가 패치된 안전 바이너리를 생성하는 단계; 및상기 안전 바이너리를 외부 장치에 송신하는 단계를 포함하되,상기 보안 라이브러리 로드 코드는,상기 컴퓨팅 장치에 설치된 플랫폼의 기본 라이브러리에서 동적 라이브러리 로드 API를 탐색하는 인스트럭션;상기 탐색된 동적 라이브러리 로드 API를 이용하여 보안 라이브러리를 로드하는 인스트럭션; 및상기 보안 라이브러리 내의 GOT 패치 함수를 호출하는 인스트럭션을 포함하되,상기 GOT 패치 함수는, 상기 안전 바이너리의 런타임(runtime) 시점에, 상기 바이너리의 GOT(Global Offset Table)에 안전 함수 테이블을 패치(patch)하기 위한 인스트럭션을 포함하는 것인,바이너리 패치 방법
|
8 |
8
제7 항에 있어서,상기 외부 장치는, 어플리케이션 다운로드 서비스 서버인,바이너리 패치 방법
|
9 |
9
제7 항에 있어서,상기 안전 함수 테이블은, 기본 라이브러리의 취약 함수 각각에 대응되는, 상기 보안 라이브러리의 중간 함수의 메모리 주소를 포함하는 것인,바이너리 패치 방법
|
10 |
10
제7 항에 있어서,상기 안전 바이너리를 생성하는 단계는,상기 보안 라이브러리를 정적 라이브러리(static library)로서 상기 소스 바이너리에 삽입하는 단계를 포함하는,바이너리 패치 방법
|
11 |
11
제7 항에 있어서,상기 컨스트럭터 코드는, 상기 소스 바이너리의 초기화 동작을 수행하는 코드로서, 상기 소스 바이너리가 메모리에 로드 된 후 main() 함수가 실행 되기 전에 실행되는 인스트럭션들을 포함하는 것인,바이너리 패치 방법
|
12 |
12
제11 항에 있어서,상기 소스 바이너리는 ELF 포맷으로 빌드 된 것이고,상기 컨스트럭터 코드는, text 섹션(
|
13 |
13
컴퓨팅 장치와 결합하여,상기 제1 내지 제10 항 중 어느 하나의 방법을 실행시키기 위하여,컴퓨팅 장치로 읽을 수 있는 기록매체에 저장된,컴퓨터 소프트웨어
|
14 |
14
컴퓨팅 장치에 있어서,소스 바이너리를 수신하고, 상기 소스 바이너리에 대한 보안 강화 패치의 결과물인 안전 바이너리를 송신하는 네트워크 인터페이스;프로세서; 상기 프로세서에 의하여 수행되는 복수의 인스트럭션을 저장하는 메모리를 포함하되,상기 복수의 인스트럭션은,상기 소스 바이너리의 컨스트럭터 코드(constructor code)에 보안 라이브러리 로드하는 코드를 패치하는 인스트럭션을 포함하되, 상기 보안 라이브러리를 로드하는 코드는,상기 컴퓨팅 장치에 설치된 플랫폼의 기본 라이브러리에서 동적 라이브러리 로드 API를 탐색하는 인스트럭션;상기 탐색된 동적 라이브러리 로드 API를 이용하여 보안 라이브러리를 로드하는 인스트럭션; 및상기 보안 라이브러리 내의 GOT(Global Offset Table) 패치 함수를 호출하는 인스트럭션을 포함하는,컴퓨팅 장치
|
15 |
15
제14 항에 있어서,상기 GOT 패치 함수는, 상기 안전 바이너리의 런타임(runtime) 시점에, 상기 안전 바이너리의 GOT에 안전 함수 테이블을 패치하기 위한 인스트럭션을 포함하고,상기 안전 함수 테이블은, 기본 라이브러리의 취약 함수 각각에 대응되는, 상기 보안 라이브러리의 중간 함수의 메모리 주소를 포함하는 것인,컴퓨팅 장치
|
16 |
16
제14 항에 있어서,상기 보안 라이브러리의 바이너리를 저장하는 스토리지를 더 포함하고,상기 복수의 인스트럭션은,상기 보안 라이브러리의 바이너리 코드를 상기 소스 바이너리에 정적 라이브러리로서 링크하는 인스트럭션을 더 포함하는,컴퓨팅 장치
|