KR102392642B1 - Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법 - Google Patents

Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법 Download PDF

Info

Publication number
KR102392642B1
KR102392642B1 KR1020170148140A KR20170148140A KR102392642B1 KR 102392642 B1 KR102392642 B1 KR 102392642B1 KR 1020170148140 A KR1020170148140 A KR 1020170148140A KR 20170148140 A KR20170148140 A KR 20170148140A KR 102392642 B1 KR102392642 B1 KR 102392642B1
Authority
KR
South Korea
Prior art keywords
pattern
module
cfg
modules
change operation
Prior art date
Application number
KR1020170148140A
Other languages
English (en)
Other versions
KR20190052447A (ko
Inventor
김영준
최승환
오윤선
Original Assignee
한국전력공사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전력공사 filed Critical 한국전력공사
Priority to KR1020170148140A priority Critical patent/KR102392642B1/ko
Publication of KR20190052447A publication Critical patent/KR20190052447A/ko
Application granted granted Critical
Publication of KR102392642B1 publication Critical patent/KR102392642B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

본 발명은 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법에 관한 것으로, 본 발명의 일실시예에 따른 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치는, 소프트웨어의 소스코드에 대한 CFG(Control Flow Graph)에서 중요 모듈이 연속되는 선후 관계에 따라 각 모듈을 구분하기 위한 논리적 모듈 흐름 선정부; 상기 구분된 각 모듈에 대한 퍼징 테스트의 퍼징 확률과 각 모듈의 전이 확률 분포에 따른 추상화를 통해 시퀀스(sequence) 패턴, 깊이(depth) 패턴, 범위-위치(range-position) 패턴을 생성 및 추출하기 위한 CFG 패턴 추출부; 및 상기 시퀀스 패턴, 상기 깊이 패턴 및 상기 범위-위치 패턴을 이용하여 상기 소프트웨어의 소스코드의 절차변경에 따른 비정상도를 측정 또는 탐지하기 위한 동적 추적부;를 포함한다.

Description

CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법{APPARATUS AND METHOD FOR DETECTING SOFTWARE PROCEDURE CHANGE OPERATION BASED ON PATTERN USING CONTROL FLOW GRAPH}
본 발명은 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법에 관한 것으로서, 보다 상세하게는, 소프트웨어의 소스코드로부터 추출된 CFG에 대해 퍼징 기법 및 트라이그램을 통해 추상화한 후 패턴을 학습시켜 소스코드의 비정상도를 측정함으로써, 소프트웨어에 대한 불법행위와 이상동작을 탐지하기 위한, CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법에 관한 것이다.
기업내 정보 보안은 정보를 여러가지 위협으로부터 보호하는 것을 의미한다. 즉, 정보 보안은 정보의 수집, 가공, 저장, 검색, 송신, 수신 도중에 정보의 훼손, 변조, 유출 등을 방지하기 위한 관리적, 기술적 방법을 의미한다.
이러한 정보 보안은 정보를 제공하는 공급자 측면과 사용자 측면에서 이해할 수 있다. 공급자 측면은 내외부의 위협요인들로부터 네트워크, 시스템 등의 하드웨어, 데이터베이스, 통신 및 전산시설 등 정보자산을 안전하게 보호 및 운영하기 위한 일련의 행위를 나타내며, 사용자 측면은 개인 정보 유출, 남용을 방지하기 위한 일련의 행위를 나타낸다.
최근에는 기업 외부에 있는 불특정 해커들에 의한 해킹범죄 뿐만 아니라, 기업 내부에 있는 내부자들(즉, 내부 프로그래머, 위탁/하청 업체 프로그래머 포함)에 대한 해킹범죄까지 정보보안을 위한 감시범위를 확대하고 있다.
이와 관련된 연구에는 소스코드의 악의적 수정과 프로그램의 이상동작을 감시하는 내용과 관련된 연구가 진행중에 있다.
소프트웨어 개발 및 운영/유지 보수 과정에서 내부 인력에 의해 발생될 수 있는 소프트웨어의 위험은 크게 3가지일 수 있다. 첫째로, 소스코드 어딘가에 해킹코드(예를 들어, 백도어)를 남기는 위험, 둘째로, 소스코드 변경없이 시스템 설정값을 바꾸어 특정 시점에 다르게 동작하게 하는 위험, 셋째로, 원본 소스코드를 조작하여 핵심 로직의 흐름을 변화시키게 하는 위험일 수 있다.
단지 소스코드의 구문(syntax) 혹은 서명(signature)을 기반으로 하여 소스코드를 변경하는 경우에는, 이상 검출(anomaly detection)을 수행하기 위해 구문을 기반으로 하기 때문에 추출 가능 정보가 한정적이다. 그런데, 이상 검출을 수행하기 위해서는 하나의 CFG(Control Flow Graph) 즉, 그래프 형태로 변경하면 그래프 이론(graph theory)를 통해 여러 정보를 추출 할 수 있게 된다.
따라서, 내부 인력에 의해 발생될 수 있는 소프트웨어의 위험을 검출하기 위해서는 CFG를 활용한 패턴 기반의 소프트웨어 절차변경을 검출하는 방안이 필요한 실정이다.
대한민국 등록특허공보 제10-1541603호 (2015.07.28 등록) 대한민국 등록특허공보 제10-1421136호 (2014.07.14 등록)
본 발명의 목적은 소프트웨어의 소스코드로부터 추출된 CFG에 대해 퍼징 기법 및 트라이그램을 통해 추상화한 후 패턴을 학습시켜 소스코드의 비정상도를 측정함으로써, 소프트웨어에 대한 불법행위와 이상동작을 탐지하기 위한, CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법을 제공하는데 있다.
본 발명의 일실시예에 따른 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치는, 소프트웨어의 소스코드에 대한 CFG(Control Flow Graph)에서 중요 모듈이 연속되는 선후 관계에 따라 각 모듈을 구분하기 위한 논리적 모듈 흐름 선정부; 상기 구분된 각 모듈에 대한 퍼징 테스트의 퍼징 확률과 각 모듈의 전이 확률 분포에 따른 추상화를 통해 시퀀스(sequence) 패턴, 깊이(depth) 패턴, 범위-위치(range-position) 패턴을 생성 및 추출하기 위한 CFG 패턴 추출부; 및 상기 시퀀스 패턴, 상기 깊이 패턴 및 상기 범위-위치 패턴을 이용하여 상기 소프트웨어의 소스코드의 절차변경에 따른 비정상도를 측정 또는 탐지하기 위한 동적 추적부;를 포함할 수 있다.
상기 논리적 모듈 흐름 선정부는, 상기 중요 모듈이 연속되는 선후 관계에 따라 논리적 기능 단위로서 퍼스트 모듈과 세컨드 모듈을 구분할 수 있다.
상기 CFG 패턴 추출부는, 상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 모듈들에 대한 퍼징 테스트 수행 결과에 대해 모듈별 전이 확률 분포를 계산함에 따라, 분기 모듈에서 확률이 높은 경로의 모듈을 선택하고, 높은 확률로 같이 실행되는 모듈을 하나로 합치고, 분기 모듈 중 예외처리 및 종료코드가 구현된 모듈을 생략할 수 있다.
상기 CFG 패턴 추출부는, 상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 모듈들에 대한 트라이그램(trigram)으로 소정의 노드를 하나의 묶음으로 생성하는 군집화 과정을 수행하고, 모든 트라이그램에 대한 이산 확률 분포를 계산하여 상기 시퀀스 패턴을 생성할 수 있다.
상기 CFG 패턴 추출부는, 여러 소스코드 파일 상에서 상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 CFG상 노드의 수를 나타내는 연결 깊이를 파악하여 상기 깊이 패턴을 생성할 수 있다.
상기 CFG 패턴 추출부는, 상기 퍼스트 모듈과 상기 세컨드 모듈에서 공통으로 사용되는 입/출력 파라미터에 대한 변경위치와 변경범위에 대한 학습을 수행하여 상기 범위-위치 패턴을 생성할 수 있다.
상기 파라미터는, 배열, 변수, 메모리일 수 있다.
상기 동적 추적부는, 상기 시퀀스 패턴의 비정상도를 수정된 CFG 트라이그램의 이산 확률 분포를 따르는 정도를 측정하여 검출할 수 있다.
상기 동적 추적부는, 상기 깊이 패턴의 비정상도를 수정된 CFG의 모듈 간 깊이가 이산 확률 분포를 따르는 정도를 측정하여 검출할 수 있다.
상기 동적 추적부는, 상기 퍼스트 모듈과 상기 세컨드 모듈에서 공통으로 사용되는 입/출력 파라미터에 대해 입/출력 파라미터들에 대한 유효값을 확인하여 변경위치와 변경범위에 대한 조작을 탐지할 수 있다.
본 발명의 일실시예에 따른 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법은, 소프트웨어의 소스코드에 대한 CFG(Control Flow Graph)에서 중요 모듈이 연속되는 선후 관계에 따라 각 모듈을 컴퓨터가 구분하는 단계; 상기 구분된 각 모듈에 대한 퍼징 테스트의 퍼징 확률과 각 모듈의 전이 확률 분포에 따른 추상화를 통해 시퀀스(sequence) 패턴, 깊이(depth) 패턴, 범위-위치(range-position) 패턴을 컴퓨터가 생성 및 추출하는 단계; 및 상기 소프트웨어의 소스코드에 대한 수정을 확인함에 따라, 상기 시퀀스 패턴, 상기 깊이 패턴 및 상기 범위-위치 패턴을 이용하여 상기 소프트웨어의 소스코드의 절차변경에 따른 비정상도를 컴퓨터가 측정 또는 탐지하는 단계;를 포함할 수 있다.
상기 구분 단계는, 상기 중요 모듈이 연속되는 선후 관계에 따라 논리적 기능 단위로서 퍼스트 모듈과 세컨드 모듈을 구분할 수 있다.
상기 생성 및 추출 단계는, 상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 모듈들에 대한 퍼징 테스트 수행 결과에 대해 모듈별 전이 확률 분포를 계산함에 따라, 분기 모듈에서 확률이 높은 경로의 모듈을 선택하고, 높은 확률로 같이 실행되는 모듈을 하나로 합치고, 분기 모듈 중 예외처리 및 종료코드가 구현된 모듈을 생략할 수 있다.
상기 생성 및 추출 단계는, 상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 모듈들에 대한 트라이그램 방식으로 소정의 노드를 하나의 묶음으로 생성하는 군집화 과정을 수행하고, 모든 트라이그램에 대한 이산 확률 분포를 계산하여 상기 시퀀스 패턴을 생성할 수 있다.
상기 생성 및 추출 단계는, 여러 소스코드 파일 상에서 상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 CFG상 노드의 수를 나타내는 연결 깊이를 파악하여 상기 깊이 패턴을 생성할 수 있다.
상기 생성 및 추출 단계는, 상기 퍼스트 모듈과 상기 세컨드 모듈에서 공통으로 사용되는 입/출력 파라미터에 대한 변경위치와 변경범위에 대한 학습을 수행하여 상기 범위-위치 패턴을 생성할 수 있다.
상기 측정 또는 탐지 단계는, 상기 시퀀스 패턴의 비정상도를 수정된 CFG 트라이그램의 이산 확률 분포를 따르는 정도를 측정하여 검출할 수 있다.
상기 측정 또는 탐지 단계는, 상기 깊이 패턴의 비정상도를 수정된 CFG의 모듈 간 깊이가 이산 확률 분포를 따르는 정도를 측정하여 검출할 수 있다.
상기 측정 또는 탐지 단계는, 상기 퍼스트 모듈과 상기 세컨드 모듈에서 공통으로 사용되는 입/출력 파라미터에 대해 입/출력 파라미터들에 대한 유효값을 확인하여 변경위치와 변경범위에 대한 조작을 탐지할 수 있다.
본 발명은 소프트웨어의 소스코드로부터 추출된 CFG에 대해 퍼징 기법 및 트라이그램을 통해 추상화한 후 패턴을 학습시켜 소스코드의 비정상도를 측정함으로써, 소프트웨어에 대한 불법행위와 이상동작을 탐지할 수 있다.
또한, 본 발명은 소프트웨어의 소스코드를 대상으로 프로그래머(위탁/용역직원)의 불법행위를 탐지함으로써, 보안감시에서 제외된 영역까지 감시범위를 확대할 수 있다.
또한, 본 발명은 잘 드러나지 않게 불법의도를 숨기는 행위(예를 들어, 1,000개의 이벤트 중 1개만 불법으로 실행) 또는 일시적으로 소스코드 수정 후 원복(예를 들어, 개찰 1분전에 우회코드 삽입 후 개출 후 바로 코드 원복)을 놓치지 않고 검출 할 수 있기 때문에, 다양한 소스코드 우회방식이나 예외조건을 이용한 악의적 목적 코드를 탐지할 수 있다.
또한, 본 발명은 패턴을 학습시킬 때, 실제로 운영할 때가가 아닌 테스트 환경(퍼징 기법)에서 학습함으므로써 운영시스템의 부하와 부담(검증되지 않은 코드로 인한 안정성 문제 등)을 최소화 할 수 있다.
또한, 본 발명은 서로 다른 목적의 기술을 상호 보완적으로 적용함으로써 견고하게 불법행위를 감시할 수 있다.
도 1은 CFG 유형 예시를 나타낸 도면,
도 2는 소스코드에서 추출된 CFG를 설명하는 도면,
도 3은 본 발명의 일실시예에 따른 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치에 대한 도면,
도 4a 및 도 4b는 퍼징 테스트를 통한 퍼징 확률을 추출하는 과정을 설명하는 도면,
도 4c는 전이 확률 계산에 따른 추상화 예시를 나타낸 도면,
도 5는 실제 코드의 CFG 일부를 나타낸 도면,
도 6은 CFG에서 추출된 트라이그램의 이산 확률 분포를 설명하는 도면,
도 7은 CFG에서 중요 모듈 사이의 깊이를 추출하는 과정을 설명하는 도면,
도 8은 입/출력 파라미터의 변경위치와 변경범위를 학습하는 과정을 설명하는 도면,
도 9는 입/출력 파라미터의 변화지점과 변화범위를 학습하는 과정 결과를 나타낸 도면,
도 10은 소프트웨어의 논리적 오류 모니터링 예시를 나타낸 도면이다.
이하 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.
이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다.
따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.
첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 또는 개략적으로 도시되었으며, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 본 발명은 첨부한 도면에 그려진 상대적인 크기나 간격에 의해 제한되어지지 않는다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 "부"는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부"는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 발명의 바람직한 실시예를 설명하기에 앞서, CFG(Control Flow Graph)에 대해 설명하기로 한다.
CFG라 함은, 프로그램이 실행 중에 횡단할 수 있는 모든 경로를 그래프 표기법을 통해 노드(node)와 에지(edge)로 나타내는 것을 의미한다. 노드는 원 모양으로, 에지는 선으로 나타낼 수 있다. 이러한 CFG는 자바 언어 또는 C 언어 등 여러 코드에서 생성해낼 수 있는 고유 정보 중 하나로서, 컴파일러 최적화 분야에서 활용된다.
도 1은 CFG 유형 예시를 나타낸 도면이다.
도 1을 참조하면, (a)는 if-then-else를 CFG로 표현한 경우를 나타내고, (b)는 while loop을 CFG로 표현한 경우를 나타내며, (c)는 자연적인 루프 2개를 CFG로 표현한 경우(예, while문 안에 if-break)를 나태내고, (d)는 엔트리 포인트 2개를 가진 루프를 CFG로 표현한 경우(예, goto문 안에 while/for문)를 나타낸다.
도 2는 소스코드에서 추출된 CFG를 설명하는 도면이다. 도 2를 참조하면, 소스코드(1)는 각 행라인(column line)에 노드번호(2)가 부여된다. CFG(3)는 소스코드(1)에서 노드를 추출하여 노드 간의 연결관계를 에지로 표현하여 나타낼 수 있다. 여기서, CFG(3)는 소스코드(1)에서 코드 실행시 어디까지 도달할 수 있는지를 알려준다.
도 2의 CFG(3)는 비교적 간단하게 표현된 경우를 나타내지만, 노드의 개수와 노드 간 연결관계를 나타낸 에지의 개수가 많아질수록 방대하고 복잡하다. CFG(3)는 자체적으로 노드의 연결정보(예, 선언문, 분기문, 산술문 등)만을 나타낼 뿐이며, 소스코드 절차변경에 대한 분석 관점에서 의미가 없다.
이에 따라, 본 발명에서는 추출된 CFG에 대한 퍼징(fuzzing) 기법을 적용하여 다양한 입력변수 생성을 통해 프로그램에서 가능한 모든 전이(transition) 확률을 구하고, 트라이그램(trigram) 기반 CFG 패턴 생성 기법, 시퀀스(sequence) 패턴 기반의 비정상도 탐지 기법, 깊이(depth) 패턴 기반의 비정상도 탐지 기법, 범위-위치(range-position) 기반의 비정상도 탐지 기법을 이용하여 소스코드 절차변경을 검출한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명한다.
도 3은 본 발명의 일실시예에 따른 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치에 대한 도면이다.
도 3에 도시된 바와 같이, 본 발명의 일실시예에 따른 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치(이하 'SW 절차변경 동작 감시 장치'라 함, 100)는, 소프트웨어(software, SW)의 소스코드(sourcecode)에 대한 CFG(Control Flow Graph)를 추출한 후, 추출된 CFG에 대해 퍼징 기법 및 트라이그램에 의한 추상화를 통해 패턴을 생성 및 학습함으로써 소프트웨어의 불법적인 절차변경에 따른 소스코드 비정상도를 측정한다.
이를 위해, SW 절차변경 동작 감시 장치(100)는 논리적 모듈 흐름 선정부(110), CFG 패턴 추출부(120), 동적 추적부(130)를 포함한다.
논리적 모듈 흐름 선정부(110)는 소프트웨어의 소스코드에서 중요 모듈을 선정한 후, 각 중요 모듈들이 연속되는 선/후 관계에 따라 퍼스트 모듈(first module)과 세컨드 모듈(second module)을 구분하여 선정한다.
여기서, '모듈'이라 함은, 여러가지 코드와 함수들로 구성되는 논리적 기능 단위를 말한다. '중요 모듈'은 소스코드의 주요 기능을 구성하는 모듈을 의미한다. 이때, '퍼스트 모듈'은 중요 모듈 중 먼저 실행되는 모듈을 의미하고, '세컨드 모듈'은 중요 모듈 중 퍼스트 모듈 다음에 실행되는 모듈을 의미한다. 따라서, 퍼스트 모듈을 수행한 이후에는 예외없이 세컨드 모듈을 실행하게 된다.
그런데, '퍼스트 모듈'과 '세컨드 모듈'은 상대적 개념이다. 예를 들어, 중요 모듈1(입찰)→중요 모듈2(투찰)→중요 모듈3(개찰)→중요 모듈4(예가)에서, 중요 모듈3(개찰)을 퍼스트 모듈로 선정하면, 중요 모듈4(예가)이 세컨드 모듈이 된다. 다시 말해, 첫번째 모듈인 중요 모듈1(입찰)이 퍼스트 모듈이고, 두번째 모듈인 중요 모듈2(투찰)가 세컨드 모듈이 되는 경우와 같이, 퍼스트 모듈과 세컨드 모듈은 절대적 개념이 아니다.
CFG 패턴 추출부(120)는 소스코드로부터 CFG를 추출한 후, 추출된 CFG의 추상화를 통한 패턴 생성을 통해 시퀀스(sequence), 깊이(depth), 범위-위치(range-position) 패턴을 추출한다. 이 경우, CFG 패턴 추출부(120)는 소스코드에 대한 모델 학습을 수행한다.
우선, 소스코드로부터 추출된 CFG에 대한 추상화에 대해 설명하기로 한다.
CFG 패턴 추출부(120)는 퍼징(fuzzing) 테스트를 수행하여 퍼징 확률을 추출한 후, 모듈별 전이 확률 분포에 따라 추상화를 수행한다. 여기서, 퍼징 테스트는 퍼스트 모듈(10)에 입력값을 랜덤하게 생성하여 결과값의 패턴을 추출하는 과정이다.
도 4a 및 도 4b는 퍼징 테스트를 통한 퍼징 확률을 추출하는 과정을 설명하는 도면이고, 도 4c는 전이 확률 계산에 따른 추상화 예시를 나타낸 도면이다.
도 4a를 참조하면, CFG 패턴 추출부(120)는 CFG의 퍼스트 모듈(10)과 세컨드 모듈(20) 사이의 모듈들에 대해 퍼징 테스트를 수행한다. 즉, CFG 패턴 추출부(120)는 퍼스트 모듈(10)에 랜덤 입력값(random input)을 대입하여 결과값의 패턴을 생성한다.
도 4b를 참조하면, CFG 패턴 추출부(120)는 CFG의 퍼스트 모듈(10)과 세컨드 모듈(20) 사이의 모듈들에 대한 퍼징 테스트 수행결과에 대해 모듈별 전이(transition) 확률 분포를 계산한다. 이는 퍼스트 모듈(10)에서 세컨드 모듈(20)까지의 확률 학습에 해당된다.
도 4c를 참조하면, CFG 패턴 추출부(120)는 CFG의 퍼스트 모듈(10)과 세컨드 모듈(20) 사이의 모듈들에 대한 시퀀스(sequence)를 추상화하고 요약하기 위해, 전이 확률 분포 계산 결과를 이용하여 분기 모듈에서 확률이 높은 경로의 모듈이 선택되고, 높은 확률로 같이 실행되는 모듈을 하나로 합쳐지며, 분기 모듈 중 예외처리 및 종료코드가 구현된 모듈을 생략하는 과정을 수행한다.
'추상화 예시 1'을 살펴보면, 분기 모듈에서 확률이 높은 경로의 모듈은 'A→C→E→D→G→M'으로 나타나고, 분기 모듈 E의 경우에 양방향으로 전이 확률이 동일하여 'E→I'로 나타나며, 종료 모듈 M의 경우에 이전에 연결된 모듈이 표시되어 'D→H→M'으로 나타낸다.
'추상화 예시 2'를 살펴보면, 분기 모듈 중 높은 확률로 같이 실행되는 모듈 C와 E는 하나로 합쳐지는 경우를 나타낸다.
이처럼, CFG 기반의 추상화 과정을 거치는 이유는 도 5와 같이 실제 소스코드의 CFG에서 퍼스트 모듈과 세컨드 모듈 사이에 수 많은 노드들이 존재하여 상당히 복잡한 구조를 가지기 때문에, CFG의 정상 경로와 이상 경로를 추적하기 곤란할 뿐만 아니라 CFG 자체 해석이 곤란하다. 도 5는 실제 코드의 CFG 일부를 나타낸 도면이다. 이에 따라, CFG 패턴 추출부(120)는 패턴 추출 이전에 추상화 과정을 거친 후 패턴 추출 과정을 수행하는 것이 바람직하다.
이하, 시퀀스 패턴, 깊이 패턴 및 범위-위치 패턴에 대한 생성 및 추출 과정(또는, 학습 과정)에 대하여 설명하기로 한다.
먼저, CFG 패턴 추출부(120)는 시퀀스 패턴을 생성 및 추출할 수 있다.
구체적으로, CFG 패턴 추출부(120)는 추상화된 CFG의 모듈을 트라이그램 방식으로 3개의 노드를 하나의 묶음으로 생성하는 군집화 과정을 수행한다. 이때, CFG 패턴 추출부(120)는 도 6과 같이 군집화 과정을 통해 생성된 트라이그램의 빈도를 측정하고, 이를 이용하여 모든 트라이그램에 대한 이산(discrete) 확률 분포를 계산한다. 도 6은 CFG에서 추출된 트라이그램의 이산 확률 분포를 설명하는 도면이다.
여기서, 추상화된 CFG의 모듈에 대해 트라이그램을 사용하는 이유는 현시점에서 '출발지-중간지점-목적지'의 3가지 방향 정보를 패턴에 포함시키기 위함이다.
이와 같이, CFG 패턴 추출부(120)는 중요 모듈이 실행되는 과정(퍼스트 모듈→세컨드 모듈)에서 실행되는 여러 모듈을 트라이그램으로 묶어 트라이그램의 종류, 순서, 빈도, 파라미터의 변화를 파악하여 중요 모듈을 실행하는데 불필요한 행위(모듈)를 구분짓는 패턴을 생성 및 추출한다.
이를 통해, CFG 패턴 추출부(120)는 퍼스트 모듈과 세컨드 모듈 사이에서 여러 에지를 파악하여 모듈 사이의 시퀀스를 계산하여 모듈 간의 순서 특성을 파악 가능한 시퀀스 패턴을 추출한다.
한편, 시퀀스 패턴 기반 비정상도는 하기 수학식 1과 같이 수정된 CFG의 모듈 간 트라이그램에서 이산 확률 분포를 따르는 정도에 따라 구해진다.
Figure 112017110893396-pat00001
여기서, '(T1,…, TN)'은 수정된 CFG의 트라이그램을 의미하고, 'P(X)'는 사전에 생성된 이산 확률 분포 함수를 나타낸다.
이처럼, 시퀀스 패턴에 대한 비정상도를 측정하는 것은 다음과 같은 의미가 있다.
즉, 시퀀스 패턴은 중요 모듈이 실행되는 과정에서 시행되는 모듈의 종류를 파악 가능하게 함으로써 중요 모듈을 시행하는데 필요하지 않는 행위를 구분할 수 있게 한다.
또한, 시퀀스 패턴은 트라이그램을 이용하여 3개의 모듈을 하나로 묶음으로써 모듈 간의 순서 특성을 패턴화할 수 있다.
정상적인 노드라 할지라도 모듈 간의 연결 과정에서는, 다른 조작된 입/출력이 포함될 수 있는데, 이런 경우에 규칙 기반(rule-based) 기법을 통해 탐지하기 곤란하지만, 시퀀스 패턴을 통해 비정상도를 탐지할 수 있다.
다음으로, CFG 패턴 추출부(120)는 여러 소스코드 파일 상에서 두 중요 모듈 간의 CFG상 노드의 수를 나타내는 깊이 패턴을 추출할 수 있다. 여기서, 깊이(depth)는 퍼스트 모듈과 세컨드 모듈 사이의 연결 깊이를 의미한다.
이를 위해, CFG 패턴 추출부(120)는 여러 소스코드 파일 상에서 두 중요 모듈을 거치는 노드의 수를 파악하여 중요 모듈 사이의 깊이를 계산한다. 이때, CFG 패턴 추출부(120)는 중요 모듈 사이의 깊이를 테이블로 구성한다.
예를 들어, 도 7을 참조하면, B 파일의 퍼스트 모듈(10)과 세컨드 모듈(20)의 깊이가 '5'인 경우는 '퍼스트 모듈→A→B→C→D→세컨드 모듈'로서 1개이고, B 파일의 퍼스트 모듈(10)과 세컨드 모듈(20)의 깊이가 '4'인 경우는 '퍼스트 모듈→A→B→C→세컨드 모듈'과 '퍼스트 모듈→A→B→A→세컨드 모듈'로서 2개이다. 도 7은 CFG에서 중요 모듈 사이의 깊이를 추출하는 과정을 설명하는 도면이다.
마찬가지로, A 파일의 퍼스트 모듈(10)과 세컨드 모듈(20)의 깊이가 '4'인 경우만 4개이고, C 파일의 퍼스트 모듈(10)과 세컨드 모듈(20)의 깊이가 '4'인 경우가 2개이고, 깊이가 '5'인 경우가 2개이다.
한편, 깊이 패턴 기반 비정상도는 하기 수학식 2와 같이 수정된 CFG의 모듈 간 깊이가 이산 확률 분포를 따르는 정도에 따라 구해진다.
Figure 112017110893396-pat00002
여기서, 'D'는 수정된 CFG의 모듈 간 깊이를 의미하고, 'P(X)'는 사전에 생성된 이산 확률 분포 함수를 나타낸다.
이처럼, 깊이 패턴에 대해 비정상도를 측정하는 것은 다음과 같은 의미가 있다.
즉, CFG상에서 깊이의 길이가 변화했다는 것은 if문과 같은 분기문의 변화가 있었다는 것을 의미한다. 이는 보안절차 우회 등의 문제가 발생할 수 있다는 것을 나타낸다. 이러한 분기문의 변화는 전술한 시퀀스 패턴의 비정상도를 탐지하여 파악될 수 없다.
따라서, 깊이 패턴 기반으로 하여 비정상도를 측정하는 것은 여러 우회 기법에 대한 규칙을 전부 학습시킬 필요 없이 깊이의 패턴 자체를 학습시킴으로써 정의되지 않은 이상행위 역시 탐지하도록 할 수 있다.
이상에서 살펴본 바와 같이, 시퀀스 패턴과 깊이 패턴 기반의 비정상도를 측정하는 것은 이산 확률 분포를 이용하여 절차 변경을 탐지하는 확률 기반의 비정상도 탐지 기법에 해당된다.
아울러, CFG 패턴 추출부(120)는 입/출력 파라미터(배열, 변수, 메모리 등)의 변경범위(range)와 변경위치(position)를 학습하고 시스템 운영 단계(Release 단계)에서 중요 모듈의 시작과 종료의 파라미터 패턴 변화를 나타내는 범위-위치 패턴을 추출한다.
CFG 패턴 추출부(120)는 퍼스트 모듈과 세컨드 모듈에서 공통으로 사용되는 파라미터(배열, 변수, 메모리)에 대해 어느 모듈에서 변경하는지와 변경된 모듈의 변화범위가 어떠한지에 대한 학습을 수행한다. 도 8은 입/출력 파라미터의 변경위치와 변경범위를 학습하는 과정을 설명하는 도면이고, 도 9는 입/출력 파라미터의 변화지점과 변화범위를 학습하는 과정 결과를 나타낸 도면이다.
구체적으로, 도 8을 참조하면, CFG 패턴 추출부(120)는 입/출력 파라미터에 대한 학습을 시작하면(S11), 퍼스트 모듈과 세컨드 모듈의 공통 파라미터(예를 들어, 전역 변수[global variable] 등)를 선정한다(S12).
이후, CFG 패턴 추출부(120)는 퍼스트 모듈에 대한 퍼징 입력을 수행한 후(S13), 다음 모듈을 실행함에 따라 파라미터 변경위치와 변경범위를 파악한다(S14, S15, S17). 이때, 파라미터 변경위치가 확인되면(S15), CFG 패턴 추출부(120)는 해당 모듈을 테이블에 저장하여 패턴화한다(S16).
또한, 파라미터 변경위치가 확인되지 않고(S15), 파라미터 변경범위가 확인되면(S17), CFG 패턴 추출부(120)는 파라미터 변경범위를 조정하여 패턴화한다(S18).
이후, CFG 패턴 추출부(120)는 세컨드 모듈에 도착하는지를 확인함에 따라 S13 단계 또는 S14 단계를 다시 수행한다(S19).
도 9는 퍼스트 모듈(10)과 세컨드 모듈(20)에서 공통으로 사용되는 파라미터(배열, 변수, 메모리)에 대해 어느 모듈에서 변경하는지와 변경된 모듈의 변화범위가 어떠한지에 대한 학습을 수행하는 경우에 대한 결과를 나타낸다. 여기서, 메모리는 B 모듈과 E 모듈에서 변경되고, 배열은 C 모듈에서 변경되며, 변수는 A 모듈과 B 모듈에서 변경된다. 이는 배열 또는 메모리 참조위치가 엉뚱한 모듈(내부자나 악성코드에 의해 실행)에서 조작되는지를 모니터링한다.
이처럼, 범위-위치 패턴에 대한 비정상도를 탐지하는 것은 다음과 같은 의미가 있다.
알고리즘을 변경하지 않고 입력 파라미터를 적절히 조작하는 경우에는 예상치 못한 결과가 나올 수 있다.
따라서, 소프트웨어의 절차 변경을 모니터링하기 위해서는 파라미터에 대한 관리가 필요하다. 이는 실시간 모니터링할 때 파라미터의 변경위치와 변경범위가 학습된 바와 다른 경우에 내부자(혹은 악성코드)에 의한 조작 가능성이 있다고 판단하기 위함이다.
다시 말해, 범위-위치 패턴에 대한 비정상도를 탐지하는 것은 알고리즘 자체에 변화가 없더라도 파라미터의 불법적인 조작을 탐지 및 모니터링하는 의미가 있다.
전술한 바와 같이, CFG 패턴 추출부(120)는 시퀀스 패턴과 깊이 패턴을 추출하여 비정상도를 측정할 수 있을 뿐만 아니라, 범위-위치 패턴에 대한 비정상도를 탐지할 수 있는데, 이들 기법들을 상호 보완적으로 적용할 수 있다.
다시 도 3으로 돌아와서, 동적 추적부(130)는 소프트웨어의 소스코드에 대해 시퀀스 패턴 또는 깊이 패턴을 기반으로 하여 비정상도를 측정하거나, 소프트웨어의 소스코드에 대해 범위-위치 패턴을 기반으로 하여 비정상도를 탐지함으로써, 소프트웨어 절차변경을 동적으로 검출할 수 있다.
동적 추적부(130)는 수정된 CFG 트라이그램의 이산 확률 분포를 따르는 정도에 따라 비정상도를 측정하여 시퀀스 패턴의 비정상도를 검출한다.
또한, 동적 추적부(130)는 수정된 CFG의 모듈 간 깊이가 이산 확률 분포를 따르는 정도에 따라 비정상도를 측정하여 깊이 패턴의 비정상도를 검출한다. 이때, 동적 추적부(130)는 분기문에 의한 알고리즘 구조 변경을 검출하는 깊이 패턴의 비정상도를 검출한다.
또한, 동적 추적부(130)는 중요 모듈에서 공통으로 사용되는 파라미터(배열, 변수, 메모리)에 대해 입/출력 파라미터들에 대한 유효값을 확인하여 변경위치와 변경범위에 대한 조작을 탐지한다.
도 10은 소프트웨어의 논리적 오류 모니터링 예시를 나타낸 도면이다.
SW 절차변경 동작 감시 장치(100)는 복잡한 소스코드를 단순하게 추상화가 가능하기 때문에, 다양한 소프트웨어의 커버리지 검사뿐만 아니라 논리적 오류검출을 위한 안전성 검사 용도로 사용 가능하다. 여기서, 커버리지 검사는 소프트웨어 품질을 검사하는 기법 중 하나로서, 코드의 문법 오류나 사용하지 않은 코드를 발견하는 용도로 활용된다.
도 10을 참조하면, SW 절차변경 동작 감시 장치(100)는 퍼스트 모듈(10)과 세컨드 모듈(20) 사이의 다양한 케이스에 대하여 논리적 오류를 모니터링하여 정적 및 동적 분석 결과를 나타낼 수 있다.
도 11은 본 발명의 일실시예에 따른 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법에 대한 도면이다.
SW 절차변경 동작 감시 장치(100)는 소프트웨어의 소스코드상에서 중요 모듈(즉, 퍼스트 모듈 및 세컨드 모듈)을 선택한다(S101). 이때, SW 절차변경 동작 감시 장치(100)는 중요 모듈 상에서 중요 모듈들이 연속되는 선/후 관계에 따라 퍼스트 모듈과 세컨드 모듈을 설정한다(S102).
이후, SW 절차변경 동작 감시 장치(100)는 소프트웨어의 소스코드로부터 CFG를 추출한 다음에, 추출된 CFG의 추상화를 통해 시퀀스 패턴, 깊이 패턴 및 범위-위치 패턴을 생성 및 추출한다(S103). 이때, SW 절차변경 동작 감시 장치(100)는 소스코드의 수정이 있는지를 확인 한 후(S104), 시퀀스 패턴의 비정상도를 검출하고(S105), 깊이 패턴의 비정상도를 검출하거나(S106), 입/출력 파라미터의 변경위치와 변경범위에 대한 조작을 탐지한다(S107).
일부 실시 예에 의한 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CDROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
비록 상기 설명이 다양한 실시예들에 적용되는 본 발명의 신규한 특징들에 초점을 맞추어 설명되었지만, 본 기술 분야에 숙달된 기술을 가진 사람은 본 발명의 범위를 벗어나지 않으면서도 상기 설명된 장치 및 방법의 형태 및 세부 사항에서 다양한 삭제, 대체, 및 변경이 가능함을 이해할 것이다. 따라서, 본 발명의 범위는 상기 설명에서보다는 첨부된 특허청구범위에 의해 정의된다. 특허청구범위의 균등 범위 안의 모든 변형은 본 발명의 범위에 포섭된다.
110 : 논리적 모듈 흐름 선정부
120 : CFG 패턴 추출부
130 : 동적 추적부

Claims (19)

  1. 소프트웨어의 소스코드에 대한 CFG(Control Flow Graph)에서 중요 모듈이 연속되는 선후 관계에 따라 각 모듈을 구분하기 위한 논리적 모듈 흐름 선정부;
    상기 구분된 각 모듈에 대한 퍼징 테스트의 퍼징 확률과 각 모듈의 전이 확률 분포에 따른 추상화를 통해 시퀀스(sequence) 패턴, 깊이(depth) 패턴, 범위-위치(range-position) 패턴을 생성 및 추출하기 위한 CFG 패턴 추출부; 및
    상기 시퀀스 패턴, 상기 깊이 패턴 및 상기 범위-위치 패턴을 이용하여 상기 소프트웨어의 소스코드의 절차변경에 따른 비정상도를 측정 또는 탐지하기 위한 동적 추적부;
    를 포함하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  2. 제 1 항에 있어서,
    상기 논리적 모듈 흐름 선정부는,
    상기 중요 모듈이 연속되는 선후 관계에 따라 논리적 기능 단위로서 퍼스트 모듈과 세컨드 모듈을 구분하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  3. 제 2 항에 있어서,
    상기 CFG 패턴 추출부는,
    상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 모듈들에 대한 퍼징 테스트 수행 결과에 대해 모듈별 전이 확률 분포를 계산함에 따라, 분기 모듈에서 확률이 높은 경로의 모듈을 선택하고, 높은 확률로 같이 실행되는 모듈을 하나로 합치고, 분기 모듈 중 예외처리 및 종료코드가 구현된 모듈을 생략하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  4. 제 2 항에 있어서,
    상기 CFG 패턴 추출부는,
    상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 모듈들에 대한 트라이그램(trigram)으로 소정의 노드를 하나의 묶음으로 생성하는 군집화 과정을 수행하고, 모든 트라이그램에 대한 이산 확률 분포를 계산하여 상기 시퀀스 패턴을 생성하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  5. 제 2 항에 있어서,
    상기 CFG 패턴 추출부는,
    여러 소스코드 파일 상에서 상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 CFG상 노드의 수를 나타내는 연결 깊이를 파악하여 상기 깊이 패턴을 생성하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  6. 제 2 항에 있어서,
    상기 CFG 패턴 추출부는,
    상기 퍼스트 모듈과 상기 세컨드 모듈에서 공통으로 사용되는 입/출력 파라미터에 대한 변경위치와 변경범위에 대한 학습을 수행하여 상기 범위-위치 패턴을 생성하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  7. 제 6 항에 있어서,
    상기 파라미터는, 배열, 변수, 메모리인 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  8. 제 4 항에 있어서,
    상기 동적 추적부는,
    상기 시퀀스 패턴의 비정상도를 수정된 CFG 트라이그램의 이산 확률 분포를 따르는 정도를 측정하여 검출하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  9. 제 5 항에 있어서,
    상기 동적 추적부는,
    상기 깊이 패턴의 비정상도를 수정된 CFG의 모듈 간 깊이가 이산 확률 분포를 따르는 정도를 측정하여 검출하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  10. 제 6 항에 있어서,
    상기 동적 추적부는,
    상기 퍼스트 모듈과 상기 세컨드 모듈에서 공통으로 사용되는 입/출력 파라미터에 대해 입/출력 파라미터들에 대한 유효값을 확인하여 변경위치와 변경범위에 대한 조작을 탐지하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치.
  11. 소프트웨어의 소스코드에 대한 CFG(Control Flow Graph)에서 중요 모듈이 연속되는 선후 관계에 따라 각 모듈을 컴퓨터가 구분하는 단계;
    상기 구분된 각 모듈에 대한 퍼징 테스트의 퍼징 확률과 각 모듈의 전이 확률 분포에 따른 추상화를 통해 시퀀스(sequence) 패턴, 깊이(depth) 패턴, 범위-위치(range-position) 패턴을 상기 컴퓨터가 생성 및 추출하는 단계; 및
    상기 소프트웨어의 소스코드에 대한 수정을 확인함에 따라, 상기 시퀀스 패턴, 상기 깊이 패턴 및 상기 범위-위치 패턴을 이용하여 상기 소프트웨어의 소스코드의 절차변경에 따른 비정상도를 상기 컴퓨터가 측정 또는 탐지하는 단계;
    를 포함하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
  12. 제 11 항에 있어서,
    상기 구분 단계는,
    상기 중요 모듈이 연속되는 선후 관계에 따라 논리적 기능 단위로서 퍼스트 모듈과 세컨드 모듈을 구분하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
  13. 제 12 항에 있어서,
    상기 생성 및 추출 단계는,
    상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 모듈들에 대한 퍼징 테스트 수행 결과에 대해 모듈별 전이 확률 분포를 계산함에 따라, 분기 모듈에서 확률이 높은 경로의 모듈을 선택하고, 높은 확률로 같이 실행되는 모듈을 하나로 합치고, 분기 모듈 중 예외처리 및 종료코드가 구현된 모듈을 생략하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
  14. 제 12 항에 있어서,
    상기 생성 및 추출 단계는,
    상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 모듈들에 대한 트라이그램 방식으로 소정의 노드를 하나의 묶음으로 생성하는 군집화 과정을 수행하고, 모든 트라이그램에 대한 이산 확률 분포를 계산하여 상기 시퀀스 패턴을 생성하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
  15. 제 12 항에 있어서,
    상기 생성 및 추출 단계는,
    여러 소스코드 파일 상에서 상기 퍼스트 모듈과 상기 세컨드 모듈 사이의 CFG상 노드의 수를 나타내는 연결 깊이를 파악하여 상기 깊이 패턴을 생성하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
  16. 제 12 항에 있어서,
    상기 생성 및 추출 단계는,
    상기 퍼스트 모듈과 상기 세컨드 모듈에서 공통으로 사용되는 입/출력 파라미터에 대한 변경위치와 변경범위에 대한 학습을 수행하여 상기 범위-위치 패턴을 생성하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
  17. 제 14 항에 있어서,
    상기 측정 또는 탐지 단계는,
    상기 시퀀스 패턴의 비정상도를 수정된 CFG 트라이그램의 이산 확률 분포를 따르는 정도를 측정하여 검출하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
  18. 제 15 항에 있어서,
    상기 측정 또는 탐지 단계는,
    상기 깊이 패턴의 비정상도를 수정된 CFG의 모듈 간 깊이가 이산 확률 분포를 따르는 정도를 측정하여 검출하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
  19. 제 16 항에 있어서,
    상기 측정 또는 탐지 단계는,
    상기 퍼스트 모듈과 상기 세컨드 모듈에서 공통으로 사용되는 입/출력 파라미터에 대해 입/출력 파라미터들에 대한 유효값을 확인하여 변경위치와 변경범위에 대한 조작을 탐지하는 CFG를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 방법.
KR1020170148140A 2017-11-08 2017-11-08 Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법 KR102392642B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170148140A KR102392642B1 (ko) 2017-11-08 2017-11-08 Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170148140A KR102392642B1 (ko) 2017-11-08 2017-11-08 Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20190052447A KR20190052447A (ko) 2019-05-16
KR102392642B1 true KR102392642B1 (ko) 2022-04-29

Family

ID=66672289

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170148140A KR102392642B1 (ko) 2017-11-08 2017-11-08 Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102392642B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006127521A (ja) 2004-10-27 2006-05-18 Lucent Technol Inc 時限式実行可能エージェントを使用したソフトウェア保全性保護のための方法および装置
JP2010507165A (ja) 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出
US7873947B1 (en) 2005-03-17 2011-01-18 Arun Lakhotia Phylogeny generation
JP4727984B2 (ja) 2002-06-04 2011-07-20 インフィニオン テクノロジーズ アーゲー 漏洩防止性を有するプログラム分割システム、プログラム分割方法、プログラム分割コンピュータプログラムプロダクト

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101421136B1 (ko) 2007-07-10 2014-07-21 더 리젠츠 오브 더 유니버시티 오브 미시건 악성 프로그램을 검사하기 위하여 컴퓨터 프로그램의행동을 모델링하는 방법 및 장치
WO2010144608A1 (en) * 2009-06-10 2010-12-16 Ab Initio Technology Llc Generating test data
KR101541603B1 (ko) 2013-10-24 2015-08-03 한양대학교 산학협력단 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4727984B2 (ja) 2002-06-04 2011-07-20 インフィニオン テクノロジーズ アーゲー 漏洩防止性を有するプログラム分割システム、プログラム分割方法、プログラム分割コンピュータプログラムプロダクト
JP2006127521A (ja) 2004-10-27 2006-05-18 Lucent Technol Inc 時限式実行可能エージェントを使用したソフトウェア保全性保護のための方法および装置
US7873947B1 (en) 2005-03-17 2011-01-18 Arun Lakhotia Phylogeny generation
JP2010507165A (ja) 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出

Also Published As

Publication number Publication date
KR20190052447A (ko) 2019-05-16

Similar Documents

Publication Publication Date Title
Cheng et al. Orpheus: Enforcing cyber-physical execution semantics to defend against data-oriented attacks
Tann et al. Towards safer smart contracts: A sequence learning approach to detecting security threats
US11036866B2 (en) Systems and methods for optimizing control flow graphs for functional safety using fault tree analysis
US20190370473A1 (en) Detecting vulnerabilities to fault injection in computer code using machine learning
KR102450834B1 (ko) 다중 특징벡터를 이용하는 행위기반 악성코드 탐지 장치 및 방법
Wang et al. In-memory fuzzing for binary code similarity analysis
CN105229612B (zh) 使用基于硬件的微体系结构数据的异常程序执行的检测
Eshghie et al. Dynamic vulnerability detection on smart contracts using machine learning
CN110287693B (zh) 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN101779210A (zh) 用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备
Ding et al. VELVET: a noVel Ensemble Learning approach to automatically locate VulnErable sTatements
KR101640479B1 (ko) 소스코드기반 소프트웨어 취약점 공격행위 분석시스템
Yue et al. RepDroid: an automated tool for Android application repackaging detection
CN110048997A (zh) 处理故障注入攻击的安全系统和方法
WO2018127794A1 (en) Management of security vulnerabilities
CN109684833A (zh) 使程序危险行为模式适应用户计算机系统的系统和方法
KR101645019B1 (ko) 소프트웨어 보안취약점 검출을 위한 규칙명세언어
Murtaza et al. Total ads: Automated software anomaly detection system
Sun et al. Dexbert: effective, task-agnostic and fine-grained representation learning of Android bytecode
Alsabbagh et al. Security of Programmable Logic Controllers and Related Systems: Today and Tomorrow
LAZIĆ Benefit from Ai in cybersecurity
Dahl et al. Stack-based buffer overflow detection using recurrent neural networks
KR102392642B1 (ko) Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법
JP7235126B2 (ja) バックドア検査装置、バックドア検査方法、及びプログラム
CN117081818A (zh) 基于智能合约防火墙的攻击交易识别与拦截方法及系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant