1 |
1
코드 재사용 공격 방어 장치에 의해 수행되는 코드 재사용 공격 방어 방법에 있어서, 멀티 코어 시스템의 유휴 상태 코어 중에서 모니터링 코어를 선택하는 단계, 상기 모니터링 코어에 CFI 감시부를 로딩하고, 상기 CFI 감시부로 제어 데이터를 전송하는 단계, 상기 CFI 감시부가 상기 제어 데이터를 이용하여, 감시 대상 프로그램이 실행되는 감시 대상 코어의 CPU 인스트럭션을 추출하는 단계, 상기 CFI 감시부가 상기 감시 대상 프로그램의 실행파일, 메모리 및 CPU 인스트럭션 중 적어도 어느 하나로부터 상기 감시 대상 프로그램에 상응하는 기 설정된 정상 실행 플로우를 추출하는 단계, 상기 CFI 감시부가 추출된 감시 대상 코어의 CPU 인스트럭션과 상기 정상 실행 플로우를 비교하여, 상기 감시 대상 코어의 CPU 인스트럭션이 상기 정상 실행 플로우를 위배하는지 여부를 판단하는 단계, 그리고 상기 CFI 감시부가 상기 위배 여부를 기반으로, 상기 감시 대상 코어의 실행을 제어하여, 코드 재사용 공격을 방어하는 단계를 포함하는 코드 재사용 공격 방어 방법
|
2 |
2
제1항에 있어서, 상기 감시 대상 코어의 CPU 인스트럭션을 추출하는 단계는, 상기 감시 대상 코어의 트레이스 하드웨어로 상기 제어 데이터를 전송하는 단계, 그리고 메모리로부터 상기 트레이스 하드웨어가 저장한 상기 CPU 인스트럭션을 추출하는 단계를 포함하는 코드 재사용 공격 방어 방법
|
3 |
3
제2항에 있어서, 상기 메모리에 저장된 상기 CPU 인스트럭션을 추출하는 단계는, 상기 CPU 인스트럭션이 저장된 메모리 주소를 폴링하거나, 상기 트레이스 하드웨어로부터 인터럽트 이벤트를 수신한 후, 상기 메모리 주소에 저장된 상기 CPU 인스트럭션을 추출하는 코드 재사용 공격 방어 방법
|
4 |
4
제1항에 있어서, 상기 정상 실행 플로우를 추출하는 단계는, 상기 감시 대상 프로그램의 실행 전에 상기 감시 대상 프로그램의 상기 실행파일로부터 오프라인 정상 실행 플로우를 추출하는 단계, 그리고 상기 감시 대상 프로그램의 실행 중에 상기 감시 대상 프로그램이 로딩된 상기 메모리 및 상기 감시 대상 프로그램에서 실행된 상기 CPU 인스트럭션 중 적어도 어느 하나를 분석하여 온라인 정상 실행 플로우를 추출하는 단계를 포함하는 코드 재사용 공격 방어 방법
|
5 |
5
삭제
|
6 |
6
제1항에 있어서, 상기 코드 재사용 공격을 방어하는 단계는, 상기 감시 대상 프로그램이 커널 영역 프로그램인 경우, 온 칩 디버그 하드웨어를 이용하여 제어 흐름 정책을 위배한 상기 감시 대상 코어를 정지하는 코드 재사용 공격 방어 방법
|
7 |
7
제6항에 있어서, 상기 코드 재사용 공격을 방어하는 단계는, 상기 감시 대상 코어를 정지한 후, 상기 제어 흐름 정책을 위배한 상기 감시 대상 프로그램을 상기 감시 대상 코어에서 언로드하는 코드 재사용 공격 방어 방법
|
8 |
8
제1항에 있어서, 상기 코드 재사용 공격을 방어하는 단계는, 상기 감시 대상 프로그램이 사용자 영역 프로그램인 경우, 온 칩 디버그 하드웨어 및 커널의 프로그램 제어 기능 중 적어도 어느 하나를 이용하여 제어 흐름 정책을 위배한 상기 감시 대상 코어를 정지하는 코드 재사용 공격 방어 방법
|
9 |
9
제1항에 있어서, 상기 유휴 상태 코어는, 파워다운 상태이거나, 어플리케이션을 실행하지 않고 커널의 유휴 루프(idle loop)만 실행하는 코어인 코드 재사용 공격 방어 방법
|
10 |
10
제1항에 있어서, 상기 모니터링 코어를 선택하는 단계는, 계산된 CFI 감시 처리 속도를 기반으로 상기 모니터링 코어를 결정하는 코드 재사용 공격 방어 방법
|
11 |
11
멀티 코어 시스템에서 유휴 상태 코어를 탐지하는 코어 관리부, 상기 유휴 상태 코어의 정보를 기반으로, 상기 유휴 상태 코어 중에서 모니터링 코어를 선택하는 CFI 스케줄러, 그리고 상기 모니터링 코어에 로딩되어, 감시 대상 프로그램을 실행하는 감시 대상 코어에 대한 CFI 감시를 수행하는 CFI 감시부를 포함하고, 상기 CFI 감시부는, 상기 CFI 스케줄러로부터 수신한 제어 데이터를 이용하여, 상기 감시 대상 프로그램이 실행되는 상기 감시 대상 코어의 CPU 인스트럭션을 추출하는 인스트럭션 추출부, 상기 감시 대상 프로그램의 실행파일, 메모리 및 CPU 인스트럭션 중 적어도 어느 하나로부터 상기 감시 대상 프로그램에 상응하는 기 설정된 정상 실행 플로우를 추출하는 정상 실행 흐름 추출부, 추출된 감시 대상 코어의 CPU 인스트럭션과 상기 정상 실행 플로우를 비교하여, 상기 감시 대상 코어의 CPU 인스트럭션이 상기 정상 실행 플로우를 위배하는지 여부를 판단하는 CFI 검사부, 그리고 상기 위배 여부를 기반으로, 상기 감시 대상 코어의 실행을 제어하여, 코드 재사용 공격을 방어하는 코어 제어부를 포함하는 코드 재사용 공격 방어 장치
|
12 |
12
제11항에 있어서, 상기 인스트럭션 추출부는, 상기 감시 대상 코어의 트레이스 하드웨어로 상기 제어 데이터를 전송하고, 메모리로부터 상기 트레이스 하드웨어가 저장한 상기 CPU 인스트럭션을 추출하는 코드 재사용 공격 방어 장치
|
13 |
13
제12항에 있어서, 상기 인스트럭션 추출부는, 상기 CPU 인스트럭션이 저장된 메모리 주소를 폴링하거나, 상기 트레이스 하드웨어로부터 인터럽트 이벤트를 수신한 후, 상기 메모리 주소에 저장된 상기 CPU 인스트럭션을 추출하는 코드 재사용 공격 방어 장치
|
14 |
14
제11항에 있어서, 상기 정상 실행 흐름 추출부는, 상기 감시 대상 프로그램의 실행 전에 상기 감시 대상 프로그램의 상기 실행파일로부터 오프라인 정상 실행 플로우를 추출하고, 상기 감시 대상 프로그램의 실행 중에 상기 감시 대상 프로그램이 로딩된 상기 메모리 및 상기 감시 대상 프로그램에서 실행된 상기 CPU 인스트럭션 중 적어도 어느 하나를 분석하여 온라인 정상 실행 플로우를 추출하는 코드 재사용 공격 방어 장치
|
15 |
15
삭제
|
16 |
16
제11항에 있어서, 상기 코어 제어부는, 상기 감시 대상 프로그램이 커널 영역 프로그램인 경우, 온 칩 디버그 하드웨어를 이용하여 제어 흐름 정책을 위배한 상기 감시 대상 코어를 정지하는 코드 재사용 공격 방어 장치
|
17 |
17
제16항에 있어서, 상기 코어 제어부는, 상기 감시 대상 코어를 정지한 후, 상기 제어 흐름 정책을 위배한 상기 감시 대상 프로그램을 상기 감시 대상 코어에서 언로드하는 코드 재사용 공격 방어 장치
|
18 |
18
제11항에 있어서, 상기 코어 제어부는, 상기 감시 대상 프로그램이 사용자 영역 프로그램인 경우, 온 칩 디버그 하드웨어 및 커널의 프로그램 제어 기능 중 적어도 어느 하나를 이용하여 제어 흐름 정책을 위배한 상기 감시 대상 코어를 정지하는 코드 재사용 공격 방어 장치
|
19 |
19
제11항에 있어서, 상기 코어 관리부는, 상기 멀티 코어 시스템에 포함된 코어의 상태 변경을 감지하고, 상기 유휴 상태 코어의 개수 및 상태가 변경된 경우 상기 CFI 스케줄러로 상기 유휴 상태 코어의 정보를 전송하는 코드 재사용 공격 방어 장치
|
20 |
20
제19항에 있어서, 상기 CFI 스케줄러는, 상기 유휴 상태 코어의 상태가 활성 상태로 변경된 경우, 상기 유휴 상태 코어에서 실행 중인 상기 CFI 감시부를 다른 유휴 상태 코어에 로드하거나, 상기 CFI 감시부의 동작을 중지하는 코드 재사용 공격 방어 장치
|