KR101438979B1 - 소프트웨어 검사 방법 및 시스템 - Google Patents

소프트웨어 검사 방법 및 시스템 Download PDF

Info

Publication number
KR101438979B1
KR101438979B1 KR1020120158397A KR20120158397A KR101438979B1 KR 101438979 B1 KR101438979 B1 KR 101438979B1 KR 1020120158397 A KR1020120158397 A KR 1020120158397A KR 20120158397 A KR20120158397 A KR 20120158397A KR 101438979 B1 KR101438979 B1 KR 101438979B1
Authority
KR
South Korea
Prior art keywords
information
action
storage space
defect
safety service
Prior art date
Application number
KR1020120158397A
Other languages
English (en)
Other versions
KR20140087768A (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 KR1020120158397A priority Critical patent/KR101438979B1/ko
Priority to DE102013214218.8A priority patent/DE102013214218A1/de
Priority to US13/956,639 priority patent/US20140189449A1/en
Priority to CN201310349696.4A priority patent/CN103914653B/zh
Publication of KR20140087768A publication Critical patent/KR20140087768A/ko
Application granted granted Critical
Publication of KR101438979B1 publication Critical patent/KR101438979B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 소프트웨어 검사 방법 및 시스템에 관한 것으로, 본 발명에 따른 시스템은 시스템 부팅 시 실행되어 커널 상에서 각 프로세스에 대응하는 PCB(Process Control Block) 정보를 수집하는 후킹 모듈, 및 상기 수집된 PCB 정보를 토대로 상기 프로세스의 메모리 영역에 삽입되어 상기 프로세스의 결함을 탐지하고 방어하는 세이프티 서비스(Safety Service) 모듈을 포함한다.

Description

소프트웨어 검사 방법 및 시스템{Method and system for checking software}
본 발명은 소프트웨어 검사 방법 및 시스템에 관한 것으로, 프로세서의 특정 메모리 영역을 세이프티 서비스(Safety Service) 모듈로 바꿔치기하여 해당되는 결함 탐지 액션 및 능동 방어 액션이 수행되도록 하는 기술에 관한 것이다.
능동 방어란 공격이 오는 것을 예측하여 해당 공격을 무력화시키는 방안으로 일찍이 국방무기체계시스템에서 시작된 연구이다. IT 분야에서는 웹과 네트워크 도메인에서 악성코드 공격에 대한 시스템 보안 유지 방안으로 능동 방어에 대한 연구가 활발하게 이루어지고 있다. 즉, 네트워크 방화벽처럼 서로 신뢰수준이 다른 네트워크를 지나는 데이터를 검열하여 바이러스나 DDoS 공격과 같이 시스템 보안에 위협이 될 요소를 탐지하고 이를 거부하는 활동이 능동방어의 대표적 사례라 할 수 있다.
대부분의 능동 방어 연구는 서로 기능적으로 독립된 시스템들 사이의 공격과 방어의 문제를 다루고 있다. 즉 시스템 위협 요소는 시스템 외부에 존재한다고 가정하며, 신뢰할 수 없는 외부 시스템으로부터의 공격을 예측하거나 탐지하고, 이를 방어함으로 내부 시스템의 안전을 유지하려 한다.
한편, 시스템 내의 프로그램은 언제든 문제가 있을 수 있고, 변경이 생길 수 있으므로, 이러한 문제를 방지하기 위해 예외 처리 및 안전 코드로 설계하는 것이 필요하다. 그러나, 일반적인 소프트웨어는 철저한 예외 처리가 오히려 시스템 성능에 부담을 줄 수도 있기 때문에, 서로 대립되는 요소 사이의 균형을 고려할 수 밖에 없다. 또한, 시스템 전체의 입장에서도 각각의 어플리케이션이 모든 예외에 대한 처리 코드를 개별적으로 보유하는 방식은 많은 오버헤드가 따른다.
본 발명의 목적은, 프로세서의 특정 메모리 영역을 세이프티 서비스 모듈로 바꿔치기함으로써 후킹과 정보태깅 기술을 활용하여 해당되는 결함 탐지 액션 및 능동 방어 액션을 수행함에 따라 시스템의 기본 행위가 방해되는 것을 최소화하면서 결함 발생을 탐지하도록 하는 소프트웨어 검사 방법 및 시스템을 제공함에 있다.
또한, 본 발명의 다른 목적은, 결함이 탐지되어도 시스템 본연의 기능을 보존하면서 결함을 예방할 수 있도록 결함 유형에 따라 정의된 다양한 능동 방어 액션을 구현하는 소프트웨어 검사 방법 및 시스템을 제공함에 있다.
또한, 본 발명의 또 다른 목적은, 어플리케이션 각각에 대한 개별 수준이 아닌 시스템을 관리하는 커널 레벨에서 런-타임 결함들에 대한 능동 방어 액션를 지원하여 성능적으로 효율적이면서도 방어적 설계가 가능한 소프트웨어 검사 방법 및 시스템을 제공함에 있다.
상기의 목적을 달성하기 위한 본 발명에 따른 소프트웨어 검사 방법은, 커널 상에서 프로세스에 대응하는 PCB(Process Control Block)를 후킹하는 단계, 상기 PCB로부터 상기 프로세스의 주소값에 대한 실행정보를 획득하는 단계, 유효 주소값을 갖는 메모리 영역에 세이프티 서비스(Safety Service) 모듈을 삽입하는 단계, 및 상기 프로세스 실행 중 상기 세이프티 서비스 모듈이 삽입된 메모리 영역이 호출되는 경우에 해당 메모리 영역에 삽입된 세이프티 서비스 모듈에 의해 상기 프로세스의 결함을 탐지하는 단계를 포함하는 것을 특징으로 한다.
상기 PCB는, 커널 내부에서, 상기 프로세스의 이름, ID, 우선순위 및 주소값 중 적어도 하나에 대한 프로세스 정보, 힙, 프로세서, 공유객체, 파일 및 뮤텍스 중 적어도 하나에 대한 런타임 자원 정보를 실시간으로 관리하는 것을 특징으로 한다.
상기 세이프티 서비스를 삽입하는 단계는, 상기 세이프티 서비스 데이터 및 정보태그에 대한 저장 공간을 할당하는 단계 및 상기 정보태그의 저장 공간에 상기 할당된 저장 공간의 크기정보를 저장하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 소프트웨어 검사 방법은, 상기 세이프티 서비스 데이터가 할당된 저장 공간의 주소정보를 실행 어플리케이션에 제공하는 단계를 더 포함하는 것을 특징으로 한다.
상기 프로세스의 결함을 탐지하는 단계는, 상기 할당된 저장 공간에 접근 이벤트 발생 시, 상기 정보태그의 저장 공간을 검사하는 단계, 및 상기 접근 이벤트의 접근 범위가 상기 정보태그에 저장된 상기 저장 공간의 크기정보에 대해 유효한 범위인지 확인하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 소프트웨어 검사 방법은, 상기 유효한 범위인지 확인하는 단계의 확인 결과 유효한 범위가 아닌 경우에 상기 접근 이벤트의 접근을 무시하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 소프트웨어 검사 방법은, 상기 유효한 범위인지 확인하는 단계의 확인 결과 유효한 범위가 아닌 경우에 상기 접근 이벤트의 접근 범위를 유효한 범위로 조절하는 단계를 더 포함하는 것을 특징으로 한다.
상기 프로세스의 결함을 탐지하는 단계는, 상기 할당된 저장 공간에 해제 이벤트 발생 시, 상기 정보태그의 저장 공간을 검사하는 단계, 및 상기 정보태그에 저장된 정보에 근거하여 상기 해제 이벤트가 발생한 저장 공간이 해제 가능한 유효 주소 공간인지 확인하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 소프트웨어 검사 방법은, 상기 유효 주소 공간인지 확인하는 단계의 확인 결과 유효 주소 공간인 경우에 해당 저장 공간에 대한 해제 이벤트를 수행하는 더 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 소프트웨어 검사 방법은, 상기 해제 이벤트를 수행하는 단계 이후에 해당 주소 공간에 할당된 변수를 초기화하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 소프트웨어 검사 방법은, 상기 프로세스의 결함을 탐지하는 단계에서 탐지된 결함에 대응하는 방어 액션을 수행하는 단계를 더 포함하는 것을 특징으로 한다.
상기 방어 액션을 수행하는 단계는, 무시 액션, 지속 액션, 경고 액션, 반복 액션 및 종료 액션 중 상기 탐지된 결함 유형에 대응하는 방어 액션을 수행하는 것을 특징으로 한다.
한편, 상기의 목적을 달성하기 위한 본 발명에 따른 소프트웨어 검사 시스템은, 시스템 부팅 시 실행되어 커널 상에서 각 프로세스에 대응하는 PCB(Process Control Block) 정보를 수집하는 후킹 모듈, 및 상기 수집된 PCB 정보를 토대로 상기 프로세스의 메모리 영역에 삽입되어 상기 프로세스의 결함을 탐지하고 방어하는 세이프티 서비스(Safety Service) 모듈을 포함하는 것을 특징으로 한다.
본 발명에 따르면, 프로세서의 특정 메모리 영역을 세이프티 서비스 모듈로 바꿔치기함으로써 후킹과 정보태깅 기술을 활용하여 해당되는 결함 탐지 액션 및 능동 방어 액션을 수행함에 따라 시스템의 기본 행위가 방해되는 것을 최소화하면서 결함 발생을 탐지할 수 있는 이점이 있다.
또한, 본 발명은, 결함 유형에 따라 다양한 능동 방어 액션을 정의함으로써 결함이 탐지되어도 시스템 본연의 기능을 보존하면서 결함을 예방할 수 있는 이점이 있다.
또한, 본 발명은, 어플리케이션 각각에 대한 개별 수준이 아닌 시스템을 관리하는 커널 레벨에서 런-타임 결함들에 대한 능동 방어 액션를 지원하여 성능적으로 효율적이면서도 방어적 설계가 가능한 이점이 있으며, 이로 인해 시스템 내의 모든 어플리케이션들에게 동등한 레벨의 신뢰도를 지원할 수 있는 이점이 있다.
도 1은 본 발명에 따른 소프트웨어 검사 시스템 구성을 도시한 도이다.
도 2는 본 발명에 따른 소프트웨어 검사 시스템의 개략적인 동작을 나타낸 도이다.
도 3은 본 발명에 따른 소프트웨어 검사 방법에 대한 동작 흐름을 도시한 순서도이다.
도 4는 본 발명에 적용되는 PCB 구조를 도시한 도이다.
도 5는 본 발명에 따른 세이프티 서비스 모듈이 할당된 저장 공간의 구조를 도시한 예시도이다.
도 6은 본 발명에 따른 세이프티 서비스 모듈의 실행 코드를 도시한 예시도이다.
도 7a 내지 도 7d는 본 발명에 적용되는 코드를 도시한 예시도이다.
도 8은 본 발명에 따른 소프트웨어 검사 시스템의 능동 방어 동작을 설명하는데 참조되는 예시도이다.
도 9a 내지 도 9c는 본 발명에 따른 소프트웨어 검사 시스템의 능동 방어 유형별 코드를 도시한 예시도이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 설명하도록 한다.
도 1은 본 발명에 따른 소프트웨어 검사 시스템 구성을 도시한 도이고 도 2는 소프트웨어 검사 시스템의 개략적인 동작을 나타낸 도이다. 도 1 및 도 2를 참조하면, 본 발명에 따른 소프트웨어 검사 시스템은 시스템 부팅 시 실행되어 각 어플리케이션(1~10)의 프로세스에 대응하는 PCB(Process Control Block)(20)에 대한 정보를 수집하는 후킹 모듈(110) 및 수집된 PCB(20)의 정보를 토대로 프로세스의 특정 메모리 영역에 삽입되어 시스템 내에서 프로세스의 결함을 탐지하고 방어하는 세이프티 서비스(Safety Service) 모듈(120)을 포함한다.
여기서, 본 발명에 따른 소프트웨어 검사 시스템의 에이전트(agent)(100), 즉, ROPHE AD 에이전트는 후킹 모듈(110) 및 세이프티 서비스 모듈(120)을 관리한다. 여기서, ROPHE AD는 'RemOte run-time Protection for Highrisk Error - Active Defensor'의 약자로서, 임베디드 리눅스 플랫폼에서 동작하는 자동화 도구이다.
한편, 후킹 모듈(110)은 커널 상에 존재하는 모듈로서, 커널 상에 존재하는 PCB(20)를 후킹하여 프로세스의 메모리 영역에 대한 실행정보를 획득한다. 본 발명에 적용되는 후킹 기법은 실행 경로를 가로채는 대표적인 기술로 시스템의 소프트웨어 실행 상황을 런타임으로 파악하기에 유용한 방식이다. 이에, 본 발명은 후킹 기술을 적용함으로써 시스템 기본 행위가 방해되는 것을 최소화하면서 결함이 발생하는 상황을 감시할 수 있게 된다.
이때, 후킹 모듈(110)은 도 2에서의 (1)과 같이, 획득한 정보를 소프트웨어 검사 시스템의 에이전트(20)로 제공한다.
세이프티 서비스 모듈(120)은 각 어플리케이션(1~10)의 각 프로세스에서 결함이 발생한 만한 메모리 영역에 삽입되어, 프로세스 실행 시 해당 메모리 영역에서 세이프티 서비스 루틴으로 바꿔치기하여 실행하도록 한다.
다시 말해, 에이전트(100)는 도 2에서의 (2)와 같이 후킹 모듈(110)에 의해 후킹된 PCB 정보에 근거하여 세이프티 서비스 모듈(120)을 각 어플리케이션(1~10)에 삽입(injection)하고, 도 2에서의 (3)과 같이 각 어플리케이션(1~10)에 삽입된 세이프티 서비스 모듈(120)을 통해 프로세스에 대한 공격을 가로채기(interception) 하여 능동 방어를 수행하도록 한다.
이때, 각 어플리케이션(1~10)에 삽입되는 세이프티 서비스 모듈(120)은 프로세스의 결함 발생을 예측하는 결함 탐지 루틴 및 결함 유형별로 방어 기능을 수행하는 능동방어 루틴을 포함한다. 여기서, 결함 탐지 루틴은 입력받은 포인터 변수가 유효한 메모리 주소값 인지를 판단하고, 능동방어 루틴은 유효하지 않은 주소값인 경우 안전한 NULL값으로 초기화를 해 준 후 기능을 지속하도록 함으로써 결함이 발생하는 것을 막는다.
따라서, 세이프티 서비스 모듈(120)은 에이전트(100)로부터 제공된 PCB 정보를 활용하여 결함 탐지 루틴을 실행하고, 결함 탐지 루틴의 실행 결과에 따라 능동방어 루틴을 실행하게 된다.
상기와 같이 구성되는 본 발명에 따른 소프트웨어 검사 시스템의 동작 흐름을 보다 상세히 설명하면 다음과 같다.
도 3은 본 발명에 따른 소프트웨어 검사 시스템의 소프트웨어 검사 방법에 대한 동작 흐름을 도시한 순서도이다. 도 3을 참조하면, 본 발명에 따른 소프트웨어 검사 시스템은 후킹 모듈을 이용하여 커널 상에서 프로세스에 대응하는 PCB(Process Control Block)를 후킹하여(S100), PCB로부터 해당 프로세스의 주소 공간에 대한 실행정보를 획득한다(S110). 여기서, PCB는 커널 상에 존재하며, 해당 프로세스의 이름, ID, 우선순위 및 주소값 중 적어도 하나에 대한 프로세스 정보, 힙, 프로세서, 공유객체, 파일 및 뮤텍스 중 적어도 하나에 대한 런타임 자원 정보를 저장하고 실시간으로 관리한다.
한편, 소프트웨어 검사 시스템은 'S110' 과정에서 획득한 정보에 근거하여 프로세스의 유효 주소값을 갖는 메모리 영역에 세이프티 서비스 모듈을 삽입한다. 이때, 삽입되는 세이프티 서비스 모듈은 프로세스의 결함 발생을 예측하는 결함 탐지 루틴 및 결함 유형별로 방어 기능을 수행하는 능동방어 루틴을 포함한다.
따라서, 프로세스의 유효 주소값을 갖는 메모리 영역에 삽입된 세이프티 서비스 모듈은 프로세스 실행 시 해당 메모리 영역이 호출되면 결함 탐지 루틴을 실행하여 프로세스의 결함을 탐지하고(S130), 결함이 탐지되는 경우에는 능동방어 루틴을 실행하여 프로세스의 결함에 대한 능동 방어를 수행하도록 한다(S140).
여기서, 세이프티 서비스 모듈의 결함 탐지 루틴 및 능동방어 루틴은 도 6 내지 도 9c를 참조하여 보다 상세히 설명하도록 한다.
도 4는 본 발명에 적용되는 PCB 구조를 도시한 도이다. 도 4에 도시된 바와 같이, 본 발명에 적용되는 PCB는 프로세스 정보 및 런타임 자원 정보가 저장된다.
일 예로서, PCB는 대응되는 프로세스와 관련하여, Process ID, Process Handle, Memory Pointer, Base Pointer of EXE Load, Process Name, Program Counter (PC), Export Rable Position, Import Table Position, Resource Table Position,Virtual Base Address of Module, Maximum Stack Size, Nunber of Memory Objects, 및 Priority State 등의 정보를 저장하고, 프로세스의 상태에 따라 저장된 정보를 실시간으로 관리한다.
도 5는 본 발명에 따른 세이프티 서비스 모듈이 할당된 메모리 영역의 구조를 도시한 예시도이다. 본 발명에 따른 소프트웨어 검사 시스템의 에이전트가 세이프티 서비스 모듈을 프로세스의 메모리 영역에 삽입하는 경우, 해당 어플리케이션은 유효 주소값의 메모리 영역에서 세이프티 서비스 모듈에 대한 저장 공간(520)을 할당한다. 이때, 세이프티 서비스 모듈 외에 런타임 실행 정보를 함께 저장하기 위한 정보태그의 저장 공간(510)을 추가로 할당한다.
정보태그 및 세이프티 서비스 모듈에 대해 할당된 저장 공간(510, 520)은 도 5에 도시된 바와 같다. 이때, 정보태그의 저장 공간(510)에는 세이프티 서비스 모듈에 대해 할당된 저장 공간(520)의 크기 정보가 저장된다. 이때, 세이프티 서비스 모듈의 결함 탐지 루틴은 정보태그에 저장된 저장 공간(520)의 크기 정보를 이용하여 해당 메모리 영역의 주소값이 유효한 주소 영역에 포함되는지를 판단함으로써 해당 메모리 영역의 결함을 탐지하게 된다. 물론, 정보태그의 저장 공간(510)은 결함 유형에 따라 저장 공간을 확장하여 다양한 정보를 저장할 수 있도록 한다.
다만, 정보태그 및 세이프티 서비스 모듈이 할당된 저장 공간(510, 520)에 대한 시작 주소값은 세이프티 모듈이 할당된 저장 공간(520)의 시작 주소값을 해당 어플리케이션에 제공하는 것으로 하며, 정보태그의 저장 공간(510)에 대한 정보는 커널 수준에서만 인식할 수 있는 히든 공간인 것으로 한다.
도 6은 본 발명에 따른 세이프티 서비스 모듈의 실행 코드를 도시한 예시도이다. 도 6을 참조하면, 각 어플리케이션에 삽입되는 세이프티 서비스 모듈은 프로세스의 결함 발생을 예측하는 결함 탐지 루틴 및 결함 유형별로 방어 기능을 수행하는 능동방어 루틴을 포함한다. 이때, 세이프티 서비스 모듈은 도 6에 도시된 3)의 오리지날 서비스(Original service)의 주소값을 세이프티 서비스의 주소값으로 바꿔치기함으로써, 해당 메모리 영역의 오리지날 서비스 실행이 요청되면 세이프티 서비스가 실행되게 된다.
세이프티 서비스가 실행되면, 우선 1)의 결함 감지 액션(Fault detection action)에 대한 실행 코드가 동작하게 되고, 결함 감지 루틴에 의해 결함이 감지되면, 2)의 능동 방어 액션(Active defedse action)에 대한 실행코드가 동작하여 발생된 결함에 대한 방어를 수행한다.
만일, 결함 감지 루틴에 의해 결함이 감지되지 않은 경우에는 3)의 오리지날 서비스가 실행되게 된다.
일 예로서, 접근 이벤트에 의해 세이프티 서비스 모듈이 할당된 저장 공간을 포함하는 메모리 영역이 호출되는 경우 결함 탐지 루틴이 실행되게 되고, 결함 탐지 루틴은 세이프티 서비스 모듈이 할당된 저장 공간에 대한 크기 정보가 저장된 정보태그의 저장 공간을 먼저 호출하여 우선 검사하는 것으로 한다. 이 경우, 결함 탐지 루틴은 정보태그의 저장 공간에 저장된 저장 공간의 크기 정보를 토대로 접근 이벤트에 의한 접근 범위가 유효한 범위인지를 검사할 수 있다.
물론, 접근 이벤트에 의한 접근 범위가 유효한 범위가 아니라면, 능동방어 루틴은 상황에 따라 해당 메모리 영역으로의 접근을 무시하거나 범위를 유효범위로 조정하여 실행을 이어갈 수 있다.
다른 예로서, 해제 이벤트에 의해 세이프티 서비스 모듈이 할당된 저장 공간을 포함하는 메모리 영역이 호출되는 경우, 결함 탐지 루틴은 정보태그의 저장 공간을 호출하여 해당 메모리 영역의 주소값이 유효 주소값 인지를 확인할 수 있다. 만일, 해당 메모리 영역의 유효 주소값인 경우, 능동방어 루틴은 정보태그를 포함한 메모리 영역에 대한 해제 이벤트를 수행하며, 해당 변수를 NULL 값으로 초기화 해줌으로써 해제한 메모리 영역의 주소값에 접근하는 오류를 줄일 수 있도록 한다.
한편, 해당 메모리 영역의 주소값이 유효 주소값이 아닌 경우, 예를 들어, 이미 해제된 주소값인 경우에, 능동방어 루틴은 중복 해제로 인해 시스템이 다운되지 않도록 해제 이벤트를 무시할 수 있다.
도 7a 내지 도 7d는 본 발명에 적용되는 코드를 도시한 예시도이다.
먼저, 도 7a는 포인터 변수가 NULL값으로 초기화되어, 포인터에 메모리가 아직 할당되기 전임을 판단할 수 있는 경우를 나타낸 것이다. 도 7b는 포인터 변수를 초기화하지 않아 쓰레기 값(garbage value)을 지니고 있는 경우를 나타낸 것이다.
한편, 도 7c는 메모리 결함 발생을 막기 위해 입력 값을 검사하는 코드를 지닌 메모리 해지 코드의 일 실시예를 나타낸 것이다. 도 7c의 메모리 해지 코드가 실행되는 경우, 도 7a에 도시된 실시예는 포인터 변수가 NULL값으로 초기화되어 있어, 초기화된 포인터 변수가 입력이 될 때는 해당 포인터의 주소값이 유효한 번지로 잘못 오해되어 결함을 만들 가능성이 없다. 한편, 도 7b에 도시된 실시예는 도 7c의 메모리 해지 코드가 실행되는 경우, 포인터에 메모리가 할당되어 유효한 값을 갖고있는 지를 판단하기 어렵기 때문에 메모리 결함이 발생할 가능성이 매우 높다.
따라서, 도 7d에 도시된 세이프티 서비스의 경우에는, 결함 탐지 루틴이 입력받은 포인터 변수가 유효한 메모리 주소인지를 판단하고, 유효하지 않은 주소인 경우 능동 방어 루틴이 포인터 변수를 안전한 NULL값으로 초기화를 해 준 후 해당 기능을 지속하기 때문에, 도 7c의 메모리 해지 코드가 실행되는 경우에 결함이 발생하는 것을 막을 수 있게 된다.
도 8 내지 도 9c는 본 발명에 따른 소프트웨어 검사 시스템의 능동 방어 동작을 설명하는데 참조되는 예시도이다.
도 8에 도시된 바와 같이, 능동 방어 루틴은 결함 탐지 루틴에 의해 탐지된 결함 유형에 따라 무시(ignore), 지속(continue), 경고(warning), 반복(repeat), 및 종료 (terminate)와 같은 다섯 개의 방어 유형으로 방어 동작을 수행할 수 있다.
시스템에 결함이 발생하는 경우는 크게 입력 데이터가 유효 데이터가 아닌 경우와 시스템 상태가 불안정한 경우를 들 수 있다. 따라서, 능동 방어 루틴은 입력 데이터가 유효 데이터인지 여부 및 실행 결과가 성공인지 혹은 실패인지 여부 등에 따라 대응하는 방어 유형으로 방어를 수행할 수 있다.
일 예로서, 능동 방어 루틴은 입력값이 유효 범위내이고, 실행결과가 성공이면 결함이 탐지되지 않은 것으로 판단하여 다음 기능이 수행되도록 한다.
한편, 능동 방어 루틴은 입력값이 유효 범위이지만, 실행결과가 성공이 아니면 그 실패원인을 확인한다. 만일, 실패원인이 일시적인 현상으로 인한 것이면, 도 9a와 같은 반복에 해당하는 방어 액션을 수행하도록 한다.
여기서, 반복에 해당하는 방어 액션은 프로그램의 입력 값은 유효 범위지만, 시스템의 상태에 따라 오류가 일시적으로 발생한 경우에 수행되는 액션이다. 반복 액션은 시스템의 상태가 정상으로 복귀될 때까지 동일 이벤트를 반복적으로 수행하며, 일정 횟수이상 지속적으로 실패할 경우에는 해당 어플이케이션에 '실패(fail)'를 반환한다.
특히, 도 9a는 시스템의 일시적 메모리 부족 현상으로 인해 메모리 할당에 실패한 경우를 나타낸 것이다. 이 경우, 프로그램 입력은 '12345'로 정상이나, 일시적인 시스템 상태로 인해 문제가 발생한 것으로, 반복 액션에 의해 약속된 횟수만큼 해당 기능을 반복적으로 시도하게 된다. 즉, 시스템 상태가 일시적인 현상이었다면, 몇 번의 반복 실행으로 인해 시스템이 안정적인 동작을 보장하게 되며, 그로 인해 '12345'가 그대로 출력되게 된다.
반면, 실패원인이 일시적인 현상이 아니면 종료에 해당하는 방어 액션을 수행하도록 한다. 종료 액션은 프로그램의 입력 값은 유효 범위지만, 시스템의 상태에 따라 오류가 발생하여 지속적으로 유지되는 경우에 수행되는 액션으로, 이벤트의 실행 결과가 시스템에 미치는 영향이 치명적인 경우 해당하는 프로세스를 종료시킨다.
또한, 능동 방어 루틴은 입력값이 유효 범위가 아니고, 실패 원인을 예측할 수 없으면 경고에 해당하는 방어 액션을 수행하도록 한다. 경고 액션은 프로그램 입력 값이 유효한 값은 아니지만, 실패 원인을 정확히 유추할 수 없는 경우에 수행되는 액션으로, 사용자에게 해당 이벤트 실행에 문제가 있음을 보고하기 위해 해당 이벤트의 수행은 계속하면서 경고 메시지를 전달한다.
반면, 입력값이 유효 범위가 아니고, 실패 원인을 예측할 수 있으면 입력값을 교정하는 것으로 안전한 실행을 보정할 수 있는지 여부를 판별하여 안전한 실행을 보장할 수 있으면 도 9b와 같이 지속 액션을 수행하여 다음 기능을 계속 진행하도록 한다. 여기서, 지속 액션은 해당 이벤트를 실행하지 않고도 프로그램 입력 값만으로도 실패 원인을 판단할 수 있으며 적절한 입력 데이터 값의 교정에 의해 정상적인 실행을 보장할 수 있는 경우에 수행되는 액션이다.
특히, 도 9b는 문자열을 복사하는 함수에서 유효한 할당 범위를 넘어서는 복사를 수행하는 경우를 나타낸 것이다. 이 경우, 정보태그를 통해 데이터의 유효 접근 범위를 알 수 있기 때문에 유효 할당 범위만큼만 복사가 되도록 입력 값을 안전한 범위로 조정하여 실행을 지속할 수 있다.
한편, 입력값이 유효 범위가 아니고, 실패 원인을 예측할 수 있는 상태에서 입력값을 교정하는 것으로 안전한 실행을 보정할 수 없는 경우에는, 도 9c와 같이 무시에 해당하는 방어 액션을 수행하도록 한다. 여기서, 무시 액션은 해당 이벤트의 실행이 문제를 일으킬 수 있으며, 다음 실행에 영향을 주지 않음을 프로그램 입력 값만으로도 판단할 수 있는 경우에 수행되는 액션으로, 해당하는 이벤트를 무시하고 바로 해당 어플리케이션에 '실패(fail)'를 반환한다.
특히, 도 9c는 동적 할당된 포인터 변수가 두 번에 걸쳐 해제 동작이 수행된 경우를 나타낸 것으로, 두 번째 해제 동작에 대해 무시 액션을 취함으로써 정상적인 실행을 보장하게 된다.
이상과 같이 본 발명에 의한 소프트웨어 검사 방법 및 시스템은 예시된 도면을 참조로 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않고, 기술사상이 보호되는 범위 이내에서 응용될 수 있다.
1~10 : 어플리케이션
20: PCB(Process Control Block)
100: 에이전트
110: 후킹 모듈
120: 세이프티 서비스 모듈

Claims (17)

  1. 커널 상에서 프로세스에 대응하는 PCB(Process Control Block)를 후킹하는 단계;
    상기 PCB로부터 상기 프로세스의 주소값에 대한 실행정보를 획득하는 단계;
    유효 주소값을 갖는 메모리 영역에 세이프티 서비스(Safety Service) 모듈을 삽입하는 단계; 및
    상기 프로세스 실행 중 상기 세이프티 서비스 모듈이 삽입된 메모리 영역이 호출되는 경우에 해당 메모리 영역에 삽입된 세이프티 서비스 모듈에 의해 상기 프로세스의 결함을 탐지하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  2. 청구항 1에 있어서,
    상기 PCB는,
    커널 내부에서, 상기 프로세스의 이름, ID, 우선순위 및 주소값 중 적어도 하나에 대한 프로세스 정보, 힙, 프로세서, 공유객체, 파일 및 뮤텍스 중 적어도 하나에 대한 런타임 자원 정보를 실시간으로 관리하는 것을 특징으로 하는 소프트웨어 검사 방법.
  3. 청구항 1에 있어서,
    상기 세이프티 서비스를 삽입하는 단계는,
    상기 세이프티 서비스 데이터 및 정보태그에 대한 저장 공간을 할당하는 단계; 및
    상기 정보태그의 저장 공간에 상기 할당된 저장 공간의 크기정보를 저장하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  4. 청구항 3에 있어서,
    상기 세이프티 서비스 데이터가 할당된 저장 공간의 주소정보를 실행 어플리케이션에 제공하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  5. 청구항 3에 있어서,
    상기 프로세스의 결함을 탐지하는 단계는,
    상기 할당된 저장 공간에 접근 이벤트 발생 시, 상기 정보태그의 저장 공간을 검사하는 단계; 및
    상기 접근 이벤트의 접근 범위가 상기 정보태그에 저장된 상기 저장 공간의 크기정보에 대해 유효한 범위인지 확인하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  6. 청구항 5에 있어서,
    상기 유효한 범위인지 확인하는 단계의 확인 결과 유효한 범위가 아닌 경우에 상기 접근 이벤트의 접근을 무시하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  7. 청구항 5에 있어서,
    상기 유효한 범위인지 확인하는 단계의 확인 결과 유효한 범위가 아닌 경우에 상기 접근 이벤트의 접근 범위를 유효한 범위로 조절하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  8. 청구항 3에 있어서,
    상기 프로세스의 결함을 탐지하는 단계는,
    상기 할당된 저장 공간에 해제 이벤트 발생 시, 상기 정보태그의 저장 공간을 검사하는 단계; 및
    상기 정보태그에 저장된 정보에 근거하여 상기 해제 이벤트가 발생한 저장 공간이 해제 가능한 유효 주소 공간인지 확인하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  9. 청구항 8에 있어서,
    상기 유효 주소 공간인지 확인하는 단계의 확인 결과 유효 주소 공간인 경우에 해당 저장 공간에 대한 해제 이벤트를 수행하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  10. 청구항 9에 있어서,
    상기 해제 이벤트를 수행하는 단계 이후에 해당 주소 공간에 할당된 변수를 초기화하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  11. 청구항 1에 있어서,
    상기 프로세스의 결함을 탐지하는 단계에서 탐지된 결함에 대응하는 방어 액션을 수행하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 검사 방법.
  12. 청구항 11에 있어서,
    상기 방어 액션을 수행하는 단계는,
    무시 액션, 지속 액션, 경고 액션, 반복 액션 및 종료 액션 중 상기 탐지된 결함 유형에 대응하는 방어 액션을 수행하는 것을 특징으로 하는 소프트웨어 검사 방법.
  13. 시스템 부팅 시 실행되어 커널 상에서 각 프로세스에 대응하는 PCB(Process Control Block) 정보를 수집하는 후킹 모듈; 및
    상기 수집된 PCB 정보를 토대로 상기 프로세스의 메모리 영역에 삽입되어 상기 프로세스의 결함을 탐지하는 결함 탐지 루틴 및 결함을 방어하는 능동 방어 루틴이 구비된 세이프티 서비스(Safety Service) 모듈을 포함하는 것을 특징으로 하는 소프트웨어 검사 시스템.
  14. 청구항 13에 있어서,
    상기 PCB는,
    커널 내부에서, 상기 프로세스의 이름, ID, 우선순위 및 주소값 중 적어도 하나에 대한 프로세스 정보, 힙, 프로세서, 공유객체, 파일 및 뮤텍스 중 적어도 하나에 대한 런타임 자원 정보를 실시간으로 관리하는 것을 특징으로 하는 소프트웨어 검사 시스템.
  15. 삭제
  16. 청구항 13에 있어서,
    상기 결함 탐지 루틴은,
    상기 메모리 영역에 할당된 정보태그를 이용하여 유효 범위 또는 유효 주소값을 확인하고, 확인 결과에 따라 입력 이벤트에 대한 상기 프로세스의 결함을 탐지하는 것을 특징으로 하는 소프트웨어 검사 시스템.
  17. 청구항 13에 있어서,
    상기 능동 방어 루틴은,
    무시 액션, 지속 액션, 경고 액션, 반복 액션 및 종료 액션 중 적어도 하나에 대한 방어 액션을 정의하고, 상기 정의된 방어 액션 중 상기 결함 탐지 루틴에 의해 탐지된 결함 유형에 대응하는 방어 액션을 수행하는 것을 특징으로 하는 소프트웨어 검사 시스템.
KR1020120158397A 2012-12-31 2012-12-31 소프트웨어 검사 방법 및 시스템 KR101438979B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120158397A KR101438979B1 (ko) 2012-12-31 2012-12-31 소프트웨어 검사 방법 및 시스템
DE102013214218.8A DE102013214218A1 (de) 2012-12-31 2013-07-19 Verfahren und system zum überprüfen von software
US13/956,639 US20140189449A1 (en) 2012-12-31 2013-08-01 Method and system for checking software
CN201310349696.4A CN103914653B (zh) 2012-12-31 2013-08-12 用于检查软件的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120158397A KR101438979B1 (ko) 2012-12-31 2012-12-31 소프트웨어 검사 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20140087768A KR20140087768A (ko) 2014-07-09
KR101438979B1 true KR101438979B1 (ko) 2014-09-11

Family

ID=50928659

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120158397A KR101438979B1 (ko) 2012-12-31 2012-12-31 소프트웨어 검사 방법 및 시스템

Country Status (4)

Country Link
US (1) US20140189449A1 (ko)
KR (1) KR101438979B1 (ko)
CN (1) CN103914653B (ko)
DE (1) DE102013214218A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975391B (zh) * 2016-04-29 2019-05-03 厦门美图移动科技有限公司 一种重启测试方法、设备和移动终端
US10489258B2 (en) 2017-07-18 2019-11-26 Vmware, Inc. Negative path testing in a bootloader environment
US11042633B2 (en) * 2017-09-27 2021-06-22 Carbon Black, Inc. Methods for protecting software hooks, and related computer security systems and apparatus
CN113282937A (zh) * 2021-05-25 2021-08-20 中国科学院青海盐湖研究所 一种自适应盐湖科技产业综合数据存储平台

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060059759A (ko) * 2004-11-29 2006-06-02 주식회사 안철수연구소 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법
KR20070076935A (ko) * 2006-01-20 2007-07-25 엔에이치엔(주) 은닉 프로세스 모니터링 방법 및 모니터링 시스템
KR20110034825A (ko) * 2009-09-29 2011-04-06 현대자동차주식회사 온라인 시스템 테스트 방법

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4455654B1 (en) * 1981-06-05 1991-04-30 Test apparatus for electronic assemblies employing a microprocessor
EP0470322B1 (en) * 1990-08-07 1996-04-03 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Message-based debugging method
US5758061A (en) * 1995-12-15 1998-05-26 Plum; Thomas S. Computer software testing method and apparatus
US5911059A (en) * 1996-12-18 1999-06-08 Applied Microsystems, Inc. Method and apparatus for testing software
US6311327B1 (en) * 1998-03-02 2001-10-30 Applied Microsystems Corp. Method and apparatus for analyzing software in a language-independent manner
US6216237B1 (en) * 1998-06-19 2001-04-10 Lucent Technologies Inc. Distributed indirect software instrumentation
US6230312B1 (en) * 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US6701460B1 (en) * 1999-10-21 2004-03-02 Sun Microsystems, Inc. Method and apparatus for testing a computer system through software fault injection
US7058928B2 (en) * 1999-12-23 2006-06-06 Identify Software Ltd. System and method for conditional tracing of computer programs
US7028225B2 (en) * 2001-09-25 2006-04-11 Path Communications, Inc. Application manager for monitoring and recovery of software based application processes
GB0206761D0 (en) * 2002-03-22 2002-05-01 Object Media Ltd Software testing
US6988226B2 (en) * 2002-10-17 2006-01-17 Wind River Systems, Inc. Health monitoring system for a partitioned architecture
WO2004042998A1 (en) * 2002-11-08 2004-05-21 Nokia Corporation Software integrity test in a mobile telephone
US7124402B2 (en) * 2002-12-30 2006-10-17 International Business Machines Corporation Testing software module responsiveness to string input tokens having lengths which span a range of integral values
CA2426619A1 (en) * 2003-04-25 2004-10-25 Ibm Canada Limited - Ibm Canada Limitee Defensive heap memory management
US7810080B2 (en) * 2003-09-15 2010-10-05 Thomas Plum Automated safe secure techniques for eliminating undefined behavior in computer software
WO2005029241A2 (en) * 2003-09-15 2005-03-31 Plum Thomas S Automated safe secure techniques for eliminating
US20070028218A1 (en) * 2005-08-01 2007-02-01 Masser Joel L Apparatus, system, and method for a software test coverage analyzer using embedded hardware
US8381198B2 (en) * 2005-08-15 2013-02-19 Sony Ericsson Mobile Communications Ab Systems, methods and computer program products for safety checking executable application programs in a module
US20070074175A1 (en) * 2005-09-23 2007-03-29 Telefonaktiebolaget L M Ericsson (Publ) Method and system for dynamic probes for injection and extraction of data for test and monitoring of software
US7395407B2 (en) * 2005-10-14 2008-07-01 International Business Machines Corporation Mechanisms and methods for using data access patterns
US7950004B2 (en) * 2005-10-21 2011-05-24 Siemens Corporation Devices systems and methods for testing software
JP4143661B2 (ja) * 2006-09-11 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション テスト用リソース・ファイル及びテスト用フォントを用いた国際化ソフトウェアのテスト方法、装置及びプログラム
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US7827531B2 (en) * 2007-01-05 2010-11-02 Microsoft Corporation Software testing techniques for stack-based environments
US8392896B2 (en) * 2009-03-06 2013-03-05 Microsoft Corporation Software test bed generation
KR101269549B1 (ko) * 2009-05-08 2013-06-04 한국전자통신연구원 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
JP2013533553A (ja) * 2010-09-07 2013-08-22 ヒョンダイ モーター カンパニー システムテスト方法
CA2801312C (en) * 2011-03-15 2016-06-07 Byoung-Ju Choi Communication test apparatus and method
US8621481B2 (en) * 2011-06-13 2013-12-31 Oracle International Corporation Apparatus and method for performing a rebalance of resources for one or more devices at boot time
WO2013024485A2 (en) * 2011-08-17 2013-02-21 Scaleio Inc. Methods and systems of managing a distributed replica based storage
US9239776B2 (en) * 2012-02-09 2016-01-19 Vmware, Inc. Systems and methods to simulate storage
RU2012127578A (ru) * 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Анализатор применимости программного модуля для разработки и тестирования программного обеспечения для многопроцессорных сред
KR101695015B1 (ko) * 2012-07-05 2017-01-11 한국전자통신연구원 오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템
US10235278B2 (en) * 2013-03-07 2019-03-19 International Business Machines Corporation Software testing using statistical error injection
US9202591B2 (en) * 2013-05-10 2015-12-01 Omnivision Technologies, Inc. On-line memory testing systems and methods
US9529692B2 (en) * 2013-06-07 2016-12-27 Apple Inc. Memory management tools

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060059759A (ko) * 2004-11-29 2006-06-02 주식회사 안철수연구소 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법
KR20070076935A (ko) * 2006-01-20 2007-07-25 엔에이치엔(주) 은닉 프로세스 모니터링 방법 및 모니터링 시스템
KR20110034825A (ko) * 2009-09-29 2011-04-06 현대자동차주식회사 온라인 시스템 테스트 방법

Also Published As

Publication number Publication date
DE102013214218A1 (de) 2014-07-03
US20140189449A1 (en) 2014-07-03
KR20140087768A (ko) 2014-07-09
CN103914653B (zh) 2018-10-02
CN103914653A (zh) 2014-07-09

Similar Documents

Publication Publication Date Title
Lee et al. Enlisting hardware architecture to thwart malicious code injection
McGregor et al. A processor architecture defense against buffer overflow attacks
JP4629332B2 (ja) 状態参照モニタ
EP3039608B1 (en) Hardware and software execution profiling
CN106991324B (zh) 一种基于内存保护类型监控的恶意代码跟踪识别方法
US8272059B2 (en) System and method for identification and blocking of malicious code for web browser script engines
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
US10229268B2 (en) System and method for emulation-based detection of malicious code with unmet operating system or architecture dependencies
US10310992B1 (en) Mitigation of cyber attacks by pointer obfuscation
Chen et al. Safestack: Automatically patching stack-based buffer overflow vulnerabilities
US20130152200A1 (en) Predictive Heap Overflow Protection
CN101529385A (zh) 用于修复应用程序的方法和系统
KR101438979B1 (ko) 소프트웨어 검사 방법 및 시스템
JP2009031859A (ja) 情報収集システムおよび情報収集方法
Kollenda et al. Towards automated discovery of crash-resistant primitives in binary executables
Wichmann et al. Using infection markers as a vaccine against malware attacks
CN110717181A (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
CN113779578A (zh) 移动端应用的智能混淆方法和系统
US9881155B2 (en) System and method for automatic use-after-free exploit detection
US20230208862A1 (en) Detecting malware infection path in a cloud computing environment utilizing a security graph
KR102545488B1 (ko) Dll 인젝션을 탐지하는 산업제어시스템의 보안 관리 방법
Aggarwal et al. Monitoring the security health of software systems
CN110008001B (zh) 虚拟机监控器的安全加固方法、系统及硬件安全监控卡
EP2720170B1 (en) Automated protection against computer exploits
US20160196368A1 (en) System and Method for Emulation of Unprivileged Code in a Simulated Environment

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
FPAY Annual fee payment

Payment date: 20180829

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190827

Year of fee payment: 6