KR102419574B1 - 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법 - Google Patents

컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102419574B1
KR102419574B1 KR1020197001449A KR20197001449A KR102419574B1 KR 102419574 B1 KR102419574 B1 KR 102419574B1 KR 1020197001449 A KR1020197001449 A KR 1020197001449A KR 20197001449 A KR20197001449 A KR 20197001449A KR 102419574 B1 KR102419574 B1 KR 102419574B1
Authority
KR
South Korea
Prior art keywords
computer
computer application
application
code
routine
Prior art date
Application number
KR1020197001449A
Other languages
English (en)
Other versions
KR20190035686A (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 버섹 시스템즈, 인코포레이션
Publication of KR20190035686A publication Critical patent/KR20190035686A/ko
Application granted granted Critical
Publication of KR102419574B1 publication Critical patent/KR102419574B1/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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

예시적인 실시형태에서, 시스템 및 방법은 로딩 시간 동안에 컴퓨터 애플리케이션의 모델을 추출하고 메모리에 모델을 저장한다. 실시형태는 런타임시에 컴퓨터 애플리케이션 내로 명령을 삽입하여 애플리케이션의 런타임 상태를 수집할 수 있고, 수집된 데이터를 저장된 모델에 대해 분석하여 보안 이벤트의 검출을 수행할 수 있다. 또한, 실시형태는 처리되지 않은 메모리 액세스 위반에 기초하여 보안 이벤트를 검출하기 위해 예외 처리기를 계측할 수 있다. 실시형태는, 보안 이벤트의 검출에 기초하여, 예를 들어 컴퓨터 애플리케이션의 활성 프로세스와 연관된 컴퓨터 루틴을 변경함으로써, 동적으로 대응할 수 있다. 변경은 컴퓨터 애플리케이션과 연관된 메모리에서 개별 패치를 설치 또는 검증하는 단계를 포함할 수 있다.

Description

컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법
본 출원은 2016년 6월 16일자로 출원된 미국 가출원번호 제62/350,917호의 이익을 주장한다. 상기 출원의 전체 내용은 그 전체가 본원에 참고로 포함된다.
네트워크 액세스 가능한 애플리케이션은 종종 악성 공격자에 의해 원격으로 트리거되는 메모리 손상 공격에 취약하다. 악성 공격자는 이러한 취약성이 흔히 상승된 권한과 함께 원격 사용자의 컴퓨터 네트워크에 대한 전례 없는 액세스를 이들에게 부여하기 때문에 이러한 취약성을 악용하고자 노력해왔다. 제어권이 장악되면, 마치 원격 사용자가 훼손된 기계를 소유한 것처럼 공격자가 선택한 임의적인 코드가 공격자에 의해 실행될 수 있다. 일반적으로, 악성 공격자의 목적은 사용자로부터 개인 정보 및/또는 기밀 정보를 추출하는 것이지만, 그 목적은 생산성의 손실을 가할 목적으로 사용자의 개인 또는 비즈니스 활동을 방해하는 것을 또한 포함할 수 있다.
예비 공격은 스택 상의 버퍼, 히프(heap) 세그먼트, 및 가져오기, 내보내기, 가상 포인터(VPTR) 및 애플리케이션의 메모리 주소 공간의 시스템 호출/시스템 디스패치(dispatch) 테이블을 포함하는 다른 점프 테이블에 전략적 데이터를 배치함으로써 단계를 설정하도록 도울 수 있다. 이는 악성 해커가 설계한 코드가 기본적으로 애플리케이션의 일부인 코드 대신에 실행되도록 하는 것을 궁극적인 목적으로 하여, 후속적으로 개시된 공격이 실행 흐름을 조작할 수 있게 한다. 가장 지능화된 공격자는 악성 코드를 타겟 애플리케이션의 메모리 공간 내로 직접 삽입할 필요가 없으며, 그 대신 공격자는 합법적으로 로딩된 애플리케이션 코드로부터 선택적으로 선택된(즉, 선별된) 코드 청크(chunk)들을 함께 스티치함으로써 기존 코드를 용도 변경할 수 있다. 런타임시 이러한 진보한 런타임 메모리 손상 공격으로부터 애플리케이션을 보호하는 것이 긴급하게 필요하다.
본 개시물의 실시형태는 하나 이상의 실행 프로세스 내에서 메모리 손상을 통해 가능하게 되는 악성 공격으로부터 보호하기 위한 예시적인 시스템 및 방법에 관한 것이다. 일부 실시형태에서, 시스템은 악성 공격으로부터 보호하기 위한 동작을 수행하기 위한 하나 이상의 계측 엔진 및 하나 이상의 분석 엔진을 포함한다. 하나 이상의 계측 엔진은 하나 이상의 분석 엔진과 동일하거나 상이한 하드웨어 또는 컴퓨터 시스템에 위치될 수 있다. 일부 실시형태에서, 시스템 및 방법은 애플리케이션 코드가 메모리로 먼저 로딩됨에 따라 컴퓨터 애플리케이션의 모델을 추출할 수 있다. 모델은 합법적 소스 및 목적지 메모리 주소들의 생성 쌍, 변환, 기본 블록 경계 정보, 코드 세그먼트 경계, 가져오기 및 내보내기 주소 테이블 경계, 점프 테이블 경계, 또는 당업자에게 공지된 임의의 다른 유형의 컴퓨터-루틴 관련 정보를 포함할 수 있지만, 이에 한정되지 않는다. 일부 실시형태에서, 시스템 및 방법은 컴퓨터 애플리케이션의 모델을 저장할 수 있다.
일부 실시형태에서, 시스템 및 방법은 런타임시에 및/또는 애플리케이션의 실행 상태에서 데이터를 수집하기 위해 컴퓨터 애플리케이션 명령이 메모리에서 실행되기 전에 (선택적으로, 런타임시에) 컴퓨터 애플리케이션 내로 명령을 삽입할 수 있다. 일부 실시형태에서, 시스템 및 방법은 하나 이상의 보안 이벤트의 검출을 수행하기 위해 컴퓨터 애플리케이션의 저장된 모델에 대해 런타임시에 수집된 데이터를 분석할 수 있다. 일부 실시형태에서, 시스템 및 방법은 하나 이상의 보안 이벤트의 검출에 기초하여, 컴퓨터 애플리케이션의 연속 실행을 보존하는 방식으로, 컴퓨터 애플리케이션과 연관된 적어도 하나의 활성 프로세스와 연관된 적어도 하나의 컴퓨터 루틴을 변경(즉, 패치를 삽입)할 수 있다.
일부 실시형태에 따라, 컴퓨터 루틴은 적어도 하나의 프로세스와 관련하여 실행될 수 있다. 일부 실시형태에서, 하나 이상의 검출된 보안 이벤트는 컴퓨터 애플리케이션 내의 상이한(비정상) 코드 경로로의 악성 이동과 연관될 수 있다. 이러한 악성 이동은 악성 점프 루틴, 악성 코드로의 트램펄린(trampoline), 간접 점프 벡터, 또는 당업자에게 공지된 임의의 다른 악성 이동을 포함할 수 있지만, 이에 한정되지 않는다.
사용자에 의한 하나 이상의 집합 패치의 수신에 대응하여, 일부 실시형태는 컴퓨터 애플리케이션과 연관된 하나 이상의 개별 패치를 변경 또는 제거하고, 컴퓨터 애플리케이션과 연관된 적어도 하나의 컴퓨터 루틴을 변경 또는 제거하는 적어도 하나의 동작을 수행할 수 있다. 일부 실시형태에 따라, 변경하는 단계는 컴퓨터 애플리케이션과 연관된 패치 또는 구성(configuration)을 검증하는 단계를 포함할 수 있다. 일부 실시형태에 따라, 시스템 및 방법은 적어도 하나의 컴퓨터 루틴과 연관된 스택을 변경할 수 있다. 일부 실시형태에서, 시스템 및 방법은 적어도 하나의 실행 컴퓨터 루틴과 연관된 하나 이상의 히프를 변경할 수 있다. 일부 다른 실시형태에서, 시스템 및 방법은 하나 이상의 점프 테이블을 변경할 수 있다.
또한, 일부 실시형태에서, 시스템 및 방법은 적어도 하나의 활성 프로세스가 적어도 하나의 컴퓨터 루틴을 실행하는 동안에, 적어도 하나의 프로세스와 연관된 적어도 하나의 컴퓨터 루틴을 변경할 수 있다. 이와 같이, 일부 실시형태는 핫 패칭(또는 라이브 패칭, 또는 동적 소프트웨어 패칭/업데이트)를 사용할 수 있다. 일부 실시형태에 따라, 핫 패치의 결과로서 대체 함수(즉, 상이한 함수)가 호출될 수 있다. 일부 실시형태에서, 시스템 및 방법은 적어도 하나의 컴퓨터 루틴을 변경하기 전에, 적어도 하나의 활성 프로세스(또는 컴퓨터 애플리케이션)의 실행을 일시 정지시킬 수 있다. 일부 실시형태에서, 적어도 하나의 컴퓨터 명령을 변경한 후에, 시스템 및 방법은 적어도 하나의 활성 프로세스의 실행을 재개할 수 있다.
일부 실시형태에서, 시스템 및 방법은 로딩 시간 동안에 컴퓨터 애플리케이션의 모델을 추출할 수 있다. 일부 실시형태에 따라, 시스템 및 방법은 컴퓨터 애플리케이션의 모델을 저장할 수 있다. 일부 실시형태에서, 시스템 및 방법은 런타임시에 데이터를 수집하기 위해 컴퓨터 애플리케이션이 메모리에서 실행되기 전에 컴퓨터 애플리케이션 내로(선택적으로, 메모리에) 명령을 삽입할 수 있다. 일부 실시형태에서, 시스템 및 방법은 하나 이상의 보안 이벤트의 검출을 수행하기 위해 컴퓨터 애플리케이션의 저장된 모델에 대해 런타임시에 수집된 데이터를 분석할 수 있다. 일부 실시형태에서, 시스템 및 방법은 하나 이상의 보안 이벤트의 검출시에, 하나 이상의 리턴 명령을 실행하기 전에 컴퓨터 애플리케이션과 연관된 메모리 손상을 일시적으로 교정(즉, 하나 이상의 포인터를 복원)할 수 있다. 일부 실시형태에서, 시스템 및 방법은 하나 이상의 검출된 보안 이벤트에 기초하여 실행 가능한 정보를 보고(즉, 패치를 생성하도록 공급자에게 정보를 보고)할 수 있다. 실행 가능한 정보는 보안 이벤트가 발생하는 장소/방법, 트램펄린이 발생하는 장소/방법, 및 취약한 함수의 히프 또는 스택의 메모리가 손상되는 장소/방법과 같은 정보를 포함할 수 있지만, 이에 한정되지 않는다.
일부 실시형태에서, 시스템 및 방법은 컴퓨터 애플리케이션의 연속 실행을 보존하는 방식으로, 적어도 하나의 프로세스와 연관된 적어도 하나의 컴퓨터 루틴을 변경할 수 있다. 일부 실시형태에서, 공급자로부터 라이트 패치 또는 전체 패치가 사용자에 의해 수신되는 경우, 애플리케이션 런타임 모니터링 및 분석(ARMAS) 애플리케이션은 디스에이블될 수 있고, 프로세스를 정지시키지 않으면서 프로세스와 연관된 컴퓨터 메모리(즉, 메모리의 상이한 위치)로 새로운 코드가 로딩될 수 있다. 일부 실시형태는 공급자에 의해 릴리스된 그러한 라이트 패치를 공유된 정적 또는 동적 라이브러리로서 전개할 수 있다. 또한, 일부 실시형태에서, 시스템 및 방법은 적어도 하나의 프로세스가 실행되는 동안에, 적어도 하나의 프로세스와 연관된 적어도 하나의 컴퓨터 명령을 변경할 수 있다. 일부 실시형태에서, 시스템 및 방법은 적어도 하나의 컴퓨터 명령을 변경하기 전에, 컴퓨터 애플리케이션과 연관된 적어도 하나의 프로세스의 실행을 일시 정지시킬 수 있다. 일부 실시형태에서, 적어도 하나의 컴퓨터 명령을 변경한 후에, 시스템 및 방법은 적어도 하나의 프로세스의 실행을 재개할 수 있다.
일부 실시형태는 패치가 전개될 때까지 악성 공격을 실시간으로 교정하거나 방지할 수 있다. 일부 실시형태는 소프트웨어 공급자의 개발자에게 실행 가능한 교정 경로를 제공할 수 있다. 일부 실시형태는 히프 기반 코드 및/또는 스택 기반 코드 트램펄린을 실시간으로 검출할 수 있다. 일부 실시형태는 프로세스 종료 없이 라이트 패치를 핫-전개(즉, 핫 패칭을 수행)할 수 있다. 즉, 일부 실시형태는 라이트 패치를 다운로드하여 검증할 수 있고, 프로세스의 모든 스레드를 일시적으로 실행 정지시킬 수 있으며, 바이너리를 핫-패치할 수 있고, 마지막으로 프로세스(및/또는 애플리케이션)의 모든 스레드를 재시작할 수 있다. 일부 실시형태는 어떤 패치가 어떤 페어런트 바이너리(parent binary)의 어떤 루틴에 연결되는지에 대한 상태를 연결(즉, 연관)시켜서 추적할 수 있다. 이러한 상태는 라이트 패치와 연관된 체크섬(checksum), 및 원본 바이너리 자체의 주소를 포함할 수 있지만, 이에 한정되지 않는다. 일부 실시형태는 패치를 전개하기 전에 또는 전개한 후에, 프로세스와 현재 연관되는 상태를 해제(즉, 연관 해제)할 수 있다. 일부 실시형태는 해커로부터 상태 관계를 보호할 수 있다. 하나 이상의 상태를 변경함으로써(또는 패치로부터 하나 이상의 상태를 연관시키거나 연관 해제시킴으로써), 일부 실시형태는 해커로부터 상태 관계를 보호할 수 있다. 일부 실시형태는, (a) 패치와 연관된(또는 패치에 포함된) 체크섬의 검증, (b) 삭제되는 원본 패치의 다른 복사본을 획득, 및/또는 (c) 패치의 컨텐츠를 암호화하여, 중간자(MIM) 공격 및 고의적/우발적 삭제를 방지하는 것을 포함하지만, 이에 한정되지 않는 보호를 포함한다.
예시적인 실시형태에서, 시스템 및 방법은 컴퓨터 애플리케이션의 하나 이상의 코드 취약성에 대해, 각각의 코드 취약성을 메모리의(예를 들어, 보안 정책 데이터베이스의) 테이블의 각각의 시스템 응답에 매핑한다. 일부 예시적인 실시형태에서, 적어도 하나의 코드 취약성, 및 매핑된 시스템 응답은 컴퓨터 애플리케이션의 개발자로부터 제공된다. 일부 예시적인 실시형태에서, 매핑된 시스템 응답 및 코드 취약성 중 적어도 하나는 컴퓨터 애플리케이션의 로딩 시간 또는 런타임시에 코드 분석기에 의해 자동으로 결정된다. 그 다음, 시스템 및 방법은 컴퓨터 애플리케이션의 코드 취약성에 액세스하는 이벤트를 검출한다.
시스템 및 방법은, 이벤트의 검출에 대응하여, 메모리의 테이블의 액세스된 코드 취약성에 매핑된 시스템 응답을 결정한다. 일부 실시형태에서, 취약성 코드에 부적절하게 액세스하는 것과 같은, 애플리케이션에 의한 부적절한 동작에 대응하여 예외가 트리거링된다. 시스템 및 방법은 커널 모드 예외 처리기를 덮어쓰기 위해 예외 처리기를 계측한다. 시스템 및 방법은 트리거된 예외를 인터셉트하고, 계측된 예외 처리기에 의해 코드 취약성을 연관시킨다. 이러한 실시형태에서, 시스템 및 방법은 계측된 예외 처리기에 의해, 테이블에서 연관된 코드 취약성을 질의하는 단계를 포함한다. 질의는 코드 취약성에 매핑된 시스템 콜백 루틴으로서 구성된 시스템 응답을 리턴시킨다. 시스템 및 방법은 이벤트가 액세스된 코드 취약성을 악용하는 것을 방지하기 위해, 결정된 시스템 응답을 실행시킨다. 예를 들어, 시스템 및 방법은 이벤트가 코드 취약성을 악용하는 것을 방지하기 위한 명령을 개시하도록 시스템 콜백 루틴을 실행한다.
시스템 응답(예를 들어, 시스템 콜백 루틴에 의한 개시된 명령)은, 코드 취약성의 액세스를 시스템 로그에서의 에러로서 로깅하는 단계, 액세스된 코드 취약성을 포함하는 애플리케이션 프로세스의 이미지를 덤핑하는 단계, 코드 취약성의 액세스 전에 컴퓨터 애플리케이션의 복사본을 복원하는 단계, 컴퓨터 애플리케이션을 재시작하지 않으면서 코드 취약성을 포함하는 적어도 하나의 컴퓨터 루틴을 변경하기 위해 메모리로부터 하나 이상의 교정 패치를 동적으로 로딩하는 단계, 액세스된 코드 취약성에 기초하여 종료(예를 들어, 중단)될 때까지 컴퓨터 애플리케이션을 계속 실행하는 단계, 및 컴퓨터 애플리케이션을 사전에 종료하는 단계 중 하나 이상을 포함할 수 있다.
전술한 내용은 첨부된 도면에 도시된 바와 같이, 본 발명의 예시적인 실시형태에 대한 이하의 보다 구체적인 설명으로부터 명백해질 것이며, 첨부된 도면에서 동일한 참조 부호는 상이한 도면 전반에 걸쳐서 동일한 부분을 지칭한다. 도면들은 반드시 일정한 비율로 도시된 것은 아니며, 대신에 본 발명의 실시형태를 예시할 때 강조가 이루어진다.
도 1은 본 개시물의 일부 실시형태에 따른 예시적인 애플리케이션 인프라를 도시한다.
도 2는 일부 실시형태에 따른 도 1의 애플리케이션 인프라와의 예시적인 사용자-상호 작용을 도시한다.
도 3a는 클라이언트에 의해 실행되는 로딩 시간 동작의 예시적인 흐름도를 도시한다.
도 3b는 본 개시물의 실시형태에서 메모리 손상을 통해 가능하게 되는 악성 공격으로부터 보호를 위한 예시적인 방법(및 시스템)의 흐름도를 도시한다.
도 3c는 본 개시물의 실시형태에서 코드 취약성을 악용하여 메모리 손상을 유발하는 악성 공격으로부터 보호를 위한 예시적인 방법(및 시스템)의 흐름도를 도시한다.
도 4a는 일부 실시형태에 따른 메모리 기반 공격의 블록도이다.
도 4b는 일부 실시형태에 따라, 바이너리 가상 패칭 애플리케이션/프로브("bvpProbe"로도 공지됨)와 연관된 스택 손상 검출 기능의 제1 단계의 블록도이다.
도 4c는 일부 실시형태에 따라, 바이너리 가상 패칭 애플리케이션/프로브("bvpProbe"로도 공지됨)와 연관된 히프 손상 검출 기능의 제1 단계의 블록도이다.
도 5a는 일부 실시형태에 따라, 정적 또는 동적 링크 라이브러리(DLL) 또는 공유 객체의 개별 패치의 실시간 패칭을 도시한다.
도 5b는 일부 실시형태에 따라, 시작시의 패치 로딩을 도시한다.
도 5c는 일부 실시형태에 따라, 하나 이상의 개별 라이트 패치를 퍼징(또는 제거)하는 것과 연관된 사이클을 도시한다.
도 6은 일부 실시형태에 따른 패칭 타임라인의 블록도이다.
도 7a는 본 개시물의 실시형태에서 애플리케이션 런타임 모니터링 및 분석 솔루션(ARMAS)의 예시적인 블록도를 도시한다.
도 7b는 도 7a의 ARMAS 인프라 내에서 데이터를 전송하는데 사용되는 예시적인 프로토콜 데이터 유닛(PDU)을 도시한다.
도 8은 본 개시물의 실시형태가 구현될 수 있는 컴퓨터 네트워크 또는 이와 유사한 디지털 처리 환경을 도시한다.
도 9는 도 8의 컴퓨터 시스템의 컴퓨터(예를 들어, 클라이언트 프로세서/장치 또는 서버 컴퓨터)의 예시적인 내부 구조의 도면을 도시한다.
본 발명의 예시적인 실시형태에 대한 설명이 후속된다. 도 1에 도시된 것과 같은 기업용 데이터 센터의 애플리케이션 인프라에서, 웹 서버는 사용자로부터(또는 웹 서비스를 통해 다른 기계로부터) 입력되는 웹 요청(예를 들어, HTTP 요청)을 수신한다. 그러나, 도 1에 도시된 실시형태는 웹 애플리케이션 인프라 또는 데이터 센터로 한정되지 않으며, 개인, 기업, 클라우드 기반 및 산업 제어 애플리케이션들을 포함할 수 있지만 이에 한정되지 않는다. 웹 요청에 대응하여, 웹 서버는 웹 서비스를 인증하고, 인증이 성공적인 경우, 추가적인 웹 요청에 대응하여 원격 사용자가 기업 시스템의 정보에 액세스하기 위한 세션을 설정한다(웹 서버, 포털 및 애플리케이션 서버를 통해). 웹 서비스는 계정 서비스, 무역 금융, 재무 회계, 문서 관리, 및 이에 한정됨이 없이 기업 시스템의 컴퓨터에서 실행되는 임의의 다른 애플리케이션과 같은, 다양한 애플리케이션으로부터 정보에 액세스할 수 있다.
웹 서버는 세션에 대한 사용자 및 세션(즉, 상태) 관련 데이터를 내부적으로 유지하지만, 수신되는 요청을 처리를 위해 하나 이상의 애플리케이션 서버로 전달하는 경우 이러한 데이터를 다음 서버로 전달하지 않는다. 즉, 사용자 및 세션 데이터는 비무장 지대의 도 1의 웹 애플리케이션 인프라의 웹 서버에서 종료된다. 그 다음, 애플리케이션 서버가 웹 요청에 대한 응답을 웹 서버에 전송하는 경우, 웹 서버는 사용자 및 세션 데이터를 참조하여 응답을 전송할 사용자(이들의 사용자 이름 또는 IP 주소로 식별됨)를 결정한다. 웹 서버는 이러한 방식으로 수천 개의 웹 세션들을 동시에 관리하기 위해 사용자 및 세션 데이터를 유지할 수 있다. 수천 개의 웹 세션들(사용자 및 세션 데이터) 중 일부는 기업 시스템의 컴퓨터에서 실행되는 다양한 애플리케이션의 코드 취약성을 악용(및 그러한 애플리케이션을 손상)하려고 시도하는 해커의 소유일 수 있다.
멀웨어 공격의 개요
국립 취약성 데이터베이스(NVD)는 2011년에 약 4100건의 애플리케이션 취약성 및 2012년에 약 5300건의 애플리케이션 취약성을 열거했으며, 이들은 23개의 공격 범주들로 분류된다. 공격 범주 중 일부는 과실 또는 잘못된 구성으로 인한 것이지만, 가장 많은 수의 공격 범주는 조직의 실행 프로세스에 악성 컨텐츠를 고의적으로 주입하여 이후에 악성 컨텐츠의 실행을 유발하는 악성 행위자를 포함한다. 이러한 악성 컨텐츠를 주입하는 프로세스는 부적절한 입력 검증을 수행하는 일부 잘못 설계된 코드를 식별하여 악용하는 것을 포함한다. 예를 들어, 사용자 입력 크기 관련 검증에서 코드가 결여된 경우, 코드는 버퍼 에러 공격 범주에 포함된 버퍼 에러 스타일 공격을 허용할 수 있다. 이러한 공격에서, 악성 행위자는 침입하여 가치 있는 컨텐츠를 결정한 다음 그러한 컨텐츠를 탈취하려는 시도로서, 악성 컨텐츠를 주입한다. 또한, 악성 행위자는 이익을 위해 그러한 컨텐츠를 훼손할 수도 있다. 컨텐츠는 신용 카드 데이터, 지적 재산권, 및 사회 보장 번호와 같은 기밀 정보를 포함할 수 있다. 그 다음, 악성 행위자는 이러한 기밀 정보를 최고 입찰자에게 판매함으로써 이러한 기밀 정보를 이용하여 이익을 얻을 수 있다.
공격을 검출하는 예시적인 시스템
도 2는 도 1의 웹 애플리케이션 인프라 내에서 예시적인 상호 작용을 도시한다. 웹 애플리케이션 인프라(도 2에 도시된 바와 같은)에서, 보호된 웹 서버는 (웹 서비스 클라이언트를 통해) 사용자로부터 웹 요청(예를 들어, HTTP 요청)을 수신한다. 웹 요청에 포함된 정보(예를 들어, URL)를 사용하여, 웹 서버는 웹 서비스 사용자를 인증하고, 인증이 성공적인 경우, 웹 서비스 사용자가 웹 애플리케이션 인프라 내에서 데이터에 액세스하기 위한 연결(또는 세션)을 설정한다.
애플리케이션에 연결되는 동안에, 공격자는 트램펄린을 통해 메모리의 코드로의 액세스를 획득할 수 있다. 그러나, 도 2의 애플리케이션 런타임 모니터링 및 분석(ARMAS) 어플라이언스는 애플리케이션과 통신하여 이러한 메모리 손상을 검출한다. 이러한 메모리 손상이 검출되면, ARMAS 어플라이언스는 이의 알려진 손상전 상태로 애플리케이션을 일시적으로 복원하기 위해, 섀도우 스택 또는 함수 포인터 점프 테이블(알려진 손상전 상태를 저장했던)을 사용한다. 그 다음, 승인되지 않은 액세스가 악성 상대방에 의한 보안 공격으로 선언될 수 있으며, 이는 공격 통지 및 시정 교정 조치를 위해 사용자 인터페이스를 통해 관리 서버에 의해 보고될 수 있다. 그 다음, 관리 서버와 통신하는 ARMAS 어플라이언스는 해커로 인해 유발되는 손상을 교정하기 위해, 하나 이상의 패치를 획득하여 영향을 받는 서버로 하나 이상의 패치를 푸시할 수 있다. 다른 실시형태에서, ARMAS 어플라이언스는, 손상된 메모리와 관련하여 에러를 로깅하는 것(코드 명령), 손상된 메모리를 포함하는 애플리케이션 프로세스의 이미지를 덤프하는 것(예를 들어, 코어 덤프), 손상된 애플리케이션이 중단으로 종료될 때까지 계속 실행될 수 있도록 하는 것, 또는 이에 한정됨이 없이 임의의 다른 시스템 응답과 같은, 웹 서비스에서의 다른 응답들을 대신에 동적으로 실행할 수 있다.
도 3a는 본 개시물의 원리에 따라, 본원에서 모니터링 에이전트(일부 실시형태에 따라, "해결 클라이언트"로도 공지됨)로 지칭되는 예시적인 클라이언트가 멀웨어 활동의 검출을 준비하기 위해 로딩 시간에 수행할 수 있는 동작을 도시한다. 일부 실시형태는 PCT 출원번호 US2014/055469(또한 그 전체 내용이 본원에 참고로 포함되는 2014년 9월 12일자로 출원된 PCT 공개번호 WO2015/038944)의 "멀웨어의 자동화된 런타임 검출"에 기재된 바와 같은 하나 이상의 해당 애플리케이션 맵 및/또는 애플리케이션 맵 데이터베이스, 또는 당업계에 공지된 다른 기술들을 포함할 수 있다. 경로 검증 엔진은 멀웨어가 실행되기 시작하는 시점부터 마이크로초 내에서 멀웨어 활동을 신뢰 가능하게 검출할 수 있는 모니터링 에이전트의 일부이다. 모니터링 에이전트는 먼저 무결성을 검증한 다음, 애플리케이션의 모델을 추출하기 위해 애플리케이션의 각 모듈을 분석한다. 애플리케이션의 모델은 이하의 테이블을 포함할 수 있는 애플리케이션 맵 데이터베이스에 저장된다: 코드 테이블, 내보내기 테이블, V 테이블, 기타 테이블, 기본 블록 테이블, 소프트 스폿 테이블, 메모리 피연산자 테이블, 변환 테이블, 디스어셈블리 테이블, 및 중요 OS 함수 테이블. 도 3a의 실시형태에서, 애플리케이션 맵 데이터베이스는 모니터링 에이전트로부터 원격 시스템에 위치된다. 다른 실시형태에서, 애플리케이션 맵 데이터베이스는 애플리케이션이 실행되는 동일한 하드웨어에 저장될 수 있거나, 또는 모니터링 에이전트 및 분석 엔진 모두의 외부 하드웨어에 저장될 수 있다. 모니터링 에이전트는 스트리밍 엔진을 사용하여, 추출된 애플리케이션 모델을 해결 프로토콜 데이터 단위(PDU)로 패키징함으로써 애플리케이션 맵 데이터베이스에 저장될 데이터를 분석 시스템에 디스패치한다.
모니터링 에이전트가 302에서 로딩 시간에 애플리케이션의 개별 실행 가능 구성요소를 처리하기 시작한 후에, 304 및 306에서 컴퓨터 애플리케이션의 각 모듈에 대해 동일한 동작들이 루프로 수행된다. 애플리케이션의 각 모듈이 메모리에 로딩됨에 따라, 모니터링 에이전트는 주어진 모듈의 모든 명령을 검사한다. 애플리케이션 파일의 모듈들은 포터블 실행파일(PE), 실행 및 링크 가능한 포맷(ELF) 또는 공통 객체 파일 포맷(COFF)과 같은 표준 파일 포맷이다. 이러한 포맷에서, 애플리케이션의 모듈들은 코드 섹션, 내보내기 데이터 섹션, v-테이블 섹션, 및 기타 많은 추가 섹션들을 포함하는 섹션들로 체계화된다. 애플리케이션의 각 모듈이 메모리에 로딩됨에 따라, 모니터링 에이전트는 애플리케이션 모델의 일부로서 관련 정보를 추출한다. 모듈의 코드 섹션의 경계 및 액세스 속성은 314에서 코드 테이블로 애플리케이션 맵 데이터베이스에 디스패치 및 저장된다. 이러한 테이블의 각 레코드는 {시작 주소, 종료 주소} 형식이다. 모듈의 코드 섹션의 각각의 기본 블록의 명령들의 경계 및 넘버는 330에서 기본 블록 테이블로 애플리케이션 맵 데이터베이스에 디스패치 및 저장된다. 이러한 테이블의 각 레코드는 {시작 주소, 종료 주소, 및 명령들의 넘버} 형식이다. 모듈의 내보내기 데이터 섹션의 경계 및 액세스 속성은 318에서 내보내기 테이블로 애플리케이션 맵 데이터베이스에 저장된다. 이러한 테이블의 각 레코드는 {시작 주소, 종료 주소} 형식이다. 모듈의 v-테이블 섹션(있는 경우)의 경계 및 액세스 속성은 322에서 V 테이블로 애플리케이션 맵 데이터베이스에 디스패치 및 저장된다. 이러한 테이블의 각 레코드는 {시작 주소, 종료 주소} 형식이다. 모듈의 모든 다른 섹션의 경계 및 액세스 속성은 326에서 기타 테이블로 애플리케이션 맵 데이터베이스에 디스패치 및 저장된다. 이러한 테이블의 각 레코드는 {시작 주소, 종료 주소, 및 보호 속성들} 형식이다.
각각의 모듈이 메모리로 로딩됨에 따라, 모니터링 에이전트는 또한 애플리케이션의 모듈들로부터 다른 메모리 매핑 데이터(336) 및 소프트 스폿 데이터(334)를 추출한다. 메모리 매핑 데이터는 메모리 할당, 메모리 할당 해제, 및 중요 메모리 세그먼트에 대한 메모리 쓰기를 위한 명령들을 포함한다. 소프트 스폿 데이터는 루프를 실행하는 명령(예를 들어, REP 스타일 연산코드(opcode)를 갖는 명령)을 포함하는 대용량 메모리 버퍼들(스폿 스폿들)을 조작하기 위한 명령들을 포함한다. 소프트 스폿 명령의 주소 및 각 메모리 쓰기의 크기는 334에서 소프트 스폿 테이블로 애플리케이션 맵 데이터베이스에 디스패치 및 저장된다. 이러한 테이블의 각 레코드는 {주소, 쓰기 크기} 형식이다. 주소 및 쓰기 크기는 목적지가 메모리 피연산자인 메모리 쓰기 명령들에 대해 저장된다. 이러한 데이터는 340에서 메모리 피연산자 쓰기 테이블로 애플리케이션 맵 데이터베이스에 저장된다. 이러한 테이블의 각 레코드는 {소스 주소, 메모리 쓰기 크기} 형식이다.
애플리케이션의 각 모듈이 메모리로 로딩됨에 따라, 모니터링 에이전트는 또한 모듈로부터 변환 매핑 데이터(분기 이송 또는 변환 데이터)를 추출한다. 변환 매핑 데이터는 타겟 주소에 대한 변환 명령들이 현재 결정될 수 있는 직접적인 변환 매핑을 위한 것일 수 있거나, 또는 타겟 주소에 대한 변환 명령들이 런타임 의존성을 가져서 런타임까지 이러한 명령들이 완전히 결정되는 것을 방지하는 간접적인 메모리 매핑을 위한 것일 수 있다. 간접적인 변환이 수행되는 명령들의 전체 디스어셈블리는 324에서 디스어셈블리 테이블로 애플리케이션 맵 데이터베이스에 디스패치 및 저장된다. 또한, 추출된 모든 변환 매핑은 324 및 332에서 변환 테이블로 애플리케이션 맵 데이터베이스에 디스패치 및 저장된다. 이러한 테이블의 각 레코드는 {소스 주소, 목적지 주소} 형식이다. 또한, 운영자는 320에서 런타임 전에 변환 매핑 데이터를 맵 변환 테이블에 수동으로 부가할 수 있다. 맵 변환 테이블에 레코드를 수동으로 부가하기 위해, 운영자는 멀웨어에 의한 변환 테이블의 가능한 부당 변경을 제거하기 위한 2-요소 인증 프로세스를 사용하여 자신을 인증하도록 요구될 수 있다.
애플리케이션의 각 모듈이 메모리로 로딩됨에 따라, 모니터링 에이전트는 또한 308에서 무결성에 대해 애플리케이션을 검사한다. 일 실시형태에서, 이는 로딩될 때 코드의 MD5 해시와 같은 체크섬을 계산하고, 체크섬 데이터베이스에 저장된 이의 해당하는 알려진 양호한 체크섬과 이를 비교함으로써 달성된다. 대안적으로, 신뢰 체크섬 검증 서비스가 활용될 수도 있다. 이는 현재 로딩되는 모듈의 코드가 멀웨어로 이미 손상되지 않도록 보장한다. 모니터링 에이전트는 310에서 무결성 검사가 실패하는 경우에 경보를 발생시키도록 구성될 수 있다.
로딩 시간에서, 액세스 승인 및 권한에 영향을 주는 특정 OS 함수 및 시스템 호출이 또한 식별되고, 이들의 주소는 312 및 316에서 중요 OS 함수 테이블로 디스패치 및 저장된다. 모니터링 에이전트에 의해 디스패치된 특정 OS 함수 및 시스템 호출은 실행파일의 실행 경로에 광범위한 영향을 준다. 이러한 관리 및 중요 OS 함수 및 시스템 호출은 메모리 세그먼트의 액세스 승인을 변경하거나, 액세스 권한을 높이거나, 비-실행(no-execute) 정책을 변경하거나, 구조화된 예외 처리기 보호를 변경하거나, 주소 공간 레이아웃 무작위화 정책을 정지시키거나, 메모리를 할당 및 할당 해제하거나, 새로운 프로세스를 생성하거나, 새로운 스레드를 생성하거나, 또는 데이터를 암호화 및 복호화하는 것에 관련된다.
애플리케이션의 각 모듈이 메모리로 로딩됨에 따라, 모니터링 에이전트는 런타임시에 데이터를 수집하기 위해 애플리케이션의 모듈 내로 삽입되는 명령을 추가로 계측한다. 계측된 코드는 동적 바이너리 분석 엔진 및/또는 바이트 코드 계측 엔진을 사용하여 애플리케이션의 모듈들 내로 삽입된다. 소프트 스폿 명령은 338에서 런타임시에 이러한 영역들에서의 활동을 추적하도록 데이터를 수집하기 위해, 루프를 실행하는 명령과 같이, 멀웨어가 공격하는 경향이 있는 모듈들 내의 영역들에서 계측된다. 직접 및 간접 변환 매핑 명령은 328에서 런타임시에 변환 매핑을 포함하는 활동을 추적하도록 데이터를 수집하기 위해 모듈들에서 계측된다. 메모리 피연산자 쓰기 명령은 336에서 런타임시에 메모리 쓰기 활동에 대한 데이터를 수집하기 위해 모듈들에서 계측된다. 자체 변경 코드가 있는 경우, 기본 블록들은 런타임시에 변경될 수 있다. 부가적으로, 명령은 312 및 316에서 중요 OS 함수 테이블에 저장된 OS 함수 및 시스템 호출을 포함하는 활동에 대한 데이터를 수집하기 위해 애플리케이션에서 계측된다.
로딩 시간에 삽입된 계측의 결과로서, 런타임시에 중요 정보가 생성되어 분석을 위해 수집된다. 변환 매핑 데이터 관련 계측이 액세스됨에 따라, 해결 클라이언트는 스레드 ID, 현재 명령 주소, 목적지 명령 주소 및 선택적으로 각각의 범용 레지스터에 포함된 데이터를 수집한다. 명령이 실행되기 전에 소프트 스폿 계측이 액세스됨에 따라, 모니터링 에이전트는 적절한 레지스터를 통해 스레드 ID 및 스택의 경계를 포착한다. 소프트 스폿 계측이 완료됨에 따라, 모니터링 에이전트는 이러한 쓰기 동작에 의해 업데이트된 메모리 영역을 추정할 수 있게 하는 일부 범용 레지스터들 및 스레드 ID를 포착한다. 호출이 실행되기 전에 중요 API 또는 OS 호출 계측이 액세스됨에 따라, 모니터링 에이전트는 스레드 ID, API 이름 또는 시스템 호출 넘버 및 입력 파라미터를 포착한다. 호출이 실행된 후에 중요 API 또는 OS 호출 계측이 액세스됨에 따라, 모니터링 에이전트는 스레드 ID, API 이름 또는 시스템 호출 넘버 및 리턴 값을 포착한다. 메모리를 할당하거나 할당 해제하는 OS 함수 또는 시스템 호출의 계측은 애플리케이션이 생성했을 수 있는 다양한 히프에 현재 포함되어 있는 메모리 영역을 추적하는데 도움이 된다. 이러한 메모리 엔벨로프는 멀웨어가 히프의 제어 구조를 오버런하길 원하는지 확인하기 위해 간접 메모리 쓰기 런타임의 타겟을 추적하는데 활용된다. 또한, 캐시를 사용하여 기본 블록의 경계를 추적함으로써, 분석 엔진은 기본 블록이 변경되었는지 여부를 결정할 수 있다. 결정이 긍정적인 경우, 모델 데이터베이스의 기본 블록 테이블이 업데이트될 수 있다.
공격을 방지하는 방법
도 3b는 본 개시물의 실시형태에서 메모리 손상을 통해 가능하게 되는 악성 공격으로부터 보호를 위한 예시적인 방법(및 시스템)(300)의 흐름도를 도시한다. 일부 실시형태에서, 시스템 및 방법은 로딩 시간 동안에 컴퓨터 애플리케이션의 모델을 추출할 수 있다(382). 모델은, 소스 정보(예를 들어, 소스 메모리 주소), 목적지 정보(예를 들어, 목적지 메모리 주소), 변환, 분기 경계 정보, 기본 블록 경계 정보, 코드 세그먼트 경계, 가져오기 및 내보내기 테이블 경계, 점프 테이블 경계, 또는 당업자에게 공지된 임의의 다른 유형의 컴퓨터 루틴 관련 정보를 포함할 수 있지만, 이에 한정되지 않는다. 시스템 및 방법은 컴퓨터 애플리케이션의 모델을 저장할 수 있다(384). 시스템 및 방법은 런타임시에 데이터를 수집하기 위해 컴퓨터 애플리케이션 내로 명령을 삽입할 수 있다(386). 시스템 및 방법은 하나 이상의 보안 이벤트의 검출을 수행하기 위해 컴퓨터 애플리케이션의 저장된 모델에 대해 런타임시에 수집된 데이터를 분석할 수 있다(388). 시스템 및 방법은 하나 이상의 보안 이벤트의 검출에 기초하여, 컴퓨터 애플리케이션과 연관된 적어도 하나의 활성 프로세스와 연관된 적어도 하나의 컴퓨터 루틴을 변경할 수 있다(389)(즉, 패치를 삽입).
방법(및 시스템)(300)의 실시형태는 다양한 유형의 공격에 대해 교정/보호한다. 런타임시에 프로세스 메모리를 타겟으로 하는 그러한 공격은 많은 심각한 기술적 문제 및 동작 문제(일부 실시형태에 의해 교정됨)를 나타낸다. 예를 들어, 대부분의 사이버 보안 솔루션은 공격이 진행 중인지 여부를 결정론적으로 선언하는데 필요한 세밀도(granularity)로 프로세스 메모리의 동작들을 관측할 수 있는 능력을 갖고 있지 않다. 결과적으로, APT(진화된 영구적 위협)와 같은 지능화된 메모리 기반 공격은 수년간 검출되지 않을 수 있었다. 일반적으로, 취약한 코드를 실행하는 프로세스가 재시작될 때까지, 그러한 코드는 취약하지 않은 코드로 교체될 수 없다. 결과적으로, 기업은 2가지 불쾌한 선택 중 하나를 선택하도록 강요된다; 즉, 계속 실행하여 심지어 가장 단순한 공격자의 타겟이 되거나, 또는 재부팅하여 수익 및 운영 중단을 겪는다. 지능화된 메모리 손상을 활용하는 공격은 애플리케이션의 제어 흐름이 악의적으로 변경되면서 시작될 수 있으므로, 그 이후에 애플리케이션 자신의 코드 실행 대신에, 상대방 주도의 코드가 실행되기 시작한다. 애플리케이션 코드 시딩(ceding) 제어의 다른 결과는 다른 공격 시나리오에서, 애플리케이션이 처리되지 않은 예외 및 중단을 겪을 수 있다는 것일 수 있다. 이러한 형태의 공격은 사실상 서비스 거부 공격이다.
도 3c는 본 개시물의 실시형태에서 코드 취약성을 악용하여 메모리 손상을 유발하는 악성 공격으로부터 보호를 위한 예시적인 방법(및 시스템)(390)의 흐름도이다. 방법(390)은 도 2의 웹 서비스 인프라(또는 다른 시스템 인프라)의 메모리에서 보안 정책 데이터베이스를 생성한다(391). 보안 정책 데이터베이스는 컴퓨터 애플리케이션의 코드 취약성을 해당 시스템 응답에 매핑하는 정책 테이블을 포함한다. 코드 취약성 및 매핑된 시스템 응답은 컴퓨터 애플리케이션과 연관된 개발팀(또는 다른 개인들)에 의해 제공될 수 있거나, 코드 분석기 또는 로딩 시간이나 런타임시에 컴퓨터 애플리케이션의 코드를 분석하는 다른 그러한 시스템 툴(예를 들어, ARMAS 어플라이언스의)에 의해 자동으로 또는 정적으로 결정될 수 있다. 방법(390)은 컴퓨터 애플리케이션의 취약한 코드(코드 취약성)에 액세스하는 이벤트를 검출한다(392). 예를 들어, 취약한 코드에 액세스하면, 메모리 액세스 위반이나 다른 메모리 또는 시스템 위반을 유발할 수 있어서, 처리되지 않은 하드웨어 또는 소프트웨어 예외를 트리거하며, 이는 일반적으로 취약한 코드를 실행하는 애플리케이션의 스레드 또는 프로세스가 종료(즉, 중단)되게 한다. 다른 실시형태에서, 방법(390)은 액세스된 코드 취약성으로 인한 메모리 손상을 검출하기 위해 컴퓨터 애플리케이션의 저장된 복사본을 현재 로딩되거나 실행되는 컴퓨터 애플리케이션과 비교할 수 있다. 이러한 실시형태에서, 방법(390)은 하드웨어 또는 소프트웨어 예외를 사전에 트리거할 수 있다. 그 다음, 방법(390)은 트리거된 하드웨어 또는 소프트웨어 예외를 인터셉트(캐치)하고 컴퓨터 애플리케이션의 종료를 유발하는 예외 이전에 코드 취약성을 연관시키는 예외 처리기를 계측함으로써, 코드 취약성의 액세스를 검출한다. 그렇게 하기 위해, 방법(390)은 방법(390)이 커널로부터 컴퓨터 애플리케이션의 제어권을 되찾아서 트리거된 예외에 대한 시스템 응답을 개시할 수 있도록, 커널 모드 예외 처리기를 계측된 예외 처리기로 덮어쓴다. 그렇지 않으면, 커널은 트리거된 예외에 대응하여 컴퓨터 애플리케이션을 중단시킬 것이다.
방법(390)은 예외를 인터셉트하는 것에 대응하여 보안 정책 데이터베이스에서 예외와 연관된 액세스된 코드 취약성을 자동으로 질의하는 하나 이상의 명령을 포함하도록 계측된 예외 처리기를 제공한다. 계측된 예외 처리기의 자동 질의에 의해, 방법(390)은 보안 정책 데이터베이스에 포함된 정책에서 액세스된 코드 취약성에 매핑된 시스템 응답을 결정한다(393). 결정된 시스템 응답은 시스템 콜백 루틴의 형식으로 정책으로부터 검색된다. 계측된 예외 처리기는 액세스된 코드 취약성의 악용을 방지하기 위해 시스템 응답(즉, 시스템 콜백 루틴)을 자동으로 실행한다(394). 시스템 콜백 루틴은, 코드 취약성의 액세스를 시스템 로그에서의 에러로서 로깅하는 단계, 액세스된 코드 취약성을 포함하는 애플리케이션 스레드 또는 프로세스의 이미지를 덤핑하는 단계, 코드 취약성에 액세스하기 전에 컴퓨터 애플리케이션의 저장된 복사본을 복원하는 단계, 코드 취약성을 포함하는 컴퓨터 루틴을 변경하기 위해 웹 서비스 인프라의 메모리로부터 하나 이상의 교정 패치를 동적으로 로딩하는 단계, 메모리 위반으로 인한 종료(즉, 컴퓨터 애플리케이션이 중단)가 발생할 때까지 컴퓨터 애플리케이션을 계속 실행하는 단계, 컴퓨터 애플리케이션을 즉시 종료하는 단계, 또는 코드 취약성과 관련된 임의의 다른 시스템 응답을 포함할 수 있지만, 이에 한정되지 않는다.
ARMAS 프로브
애플리케이션의 악성 상대방 점유 제어의 일 예가 도 4a에 도시된다. 함수 Foo()의 코드(명령들의 블록들)(405)는 공격자에 의해 악용될 수 있는 취약성을 포함할 수 있다. 도 4a에 도시된 바와 같이, 상대방은 취약한 함수 Foo()의 스택 메모리(415)를 플러딩(flood)할 수 있다. 도시된 바와 같이, Foo()의 스택 메모리(415)는 로컬 변수들, 저장된 베이스 포인터, 저장된 리턴 포인터(418), 및 파라미터들을 포함한다. Foo()의 스택 메모리(415)의 저장된 리턴 포인터의 메모리 위치가 결정되고 공격자에 의해 오버런되는 경우, Foo()가 종료(스택으로부터 리턴)될 때, 저장된 리턴 포인터(418)로부터 공격자에 의해 다음 명령의 주소가 검색될 수 있으며, 애플리케이션이 공격받을 수 있다. 공격자는 이러한 기술을 사용하여 애플리케이션 코드로부터 이들 자신의 악성 코드(상대방 트램펄린 코드(410))로의 트램펄린(점프)과 같은, 상이한 코드 경로로의 악성 이동을 형성할 수 있다.
도 4a에서, 공격 타겟은 명령 포인터 레지스터일 수 있다. 또한, 공격자는 임의의 다른 레지스터도 타겟으로 할 수 있다. 많은 함수 포인터들은 애플리케이션 코드에서 선언될 수 있으며, 다양한 레지스터로부터 그 값이 판독되는 간접 메모리 주소를 사용하여 로딩될 수 있다. 타겟 레지스터에 악성 데이터를 삽입함으로써, 공격자는 프로그램 실행 흐름을 변경할 수 있다. 예를 들어, 공격자는 다음과 같이 Foo()의 코드(405)의 명령을 타겟으로 하는 ROP(리턴 지향 프로그래밍) 가젯을 검색함으로써 레지스터 EAX(누산기 레지스터)를 타겟으로 할 수 있다:
move rax, rsp
ret
이는 스택(415)으로부터의 상대방 제어 값을 RAX와 같은 다른 레지스터들로 로딩하는 효과를 가질 수 있다. 그 다음, 상대방은 "call [RAX]"와 같은 명령을 실행함으로써 Foo()의 애플리케이션 코드(405)로부터 그들의 코드(410)로의 트램펄린을 트리거할 수 있다. 어떤 레지스터가 타겟이 되는지와 관계없이, 그 효과는 동일할 수 있다; 상대방의 코드가 실행되기 시작할 수 있다.
대응하여, 실시형태는 런타임 모니터링 및 분석(ARMAS) 프로브/애플리케이션을 포함하는 애플리케이션을 포함한다. 이러한 ARMAS 프로브는 프로세스의 모든 스레드에서 계측된 명령을 인라인 실행하고, 프로브가 런타임시에 직면하는 리턴 함수 호출(예를 들어, 위에 나타낸 rets) 및 함수 호출(예를 들어, 위에 나타낸 move rax, rsp)과 같은, 분기 이송 명령에 대한 소스 및 목적지 정보를 수집한다. 그 다음, 계측된 명령은 스레드의 매우 세분화된 정보를 ARMAS 프로브로 중계하여, 분기 이송이 실제로 상대방의 코드로의 코드 트램펄린인지 여부를 결정할 수 있다. 실시형태는 확인을 위해 지속적으로 ARMAS 어플라이언스에 접근하는 제한사항을 극복하는 바이너리 가상 패칭 애플리케이션/프로브(또는 "bvpProbe")라 불리는 더 스마트한 ARMAS 프로브를 포함한다.
일부 실시형태에 따라, bvpProbe의 동작은 3개의 단계(이하에서 예시된 바와 같이 단계 1 내지 단계 3)로 구분될 수 있다:
단계 1. bvpProbe의 기능
bvpProbe는 스택 기반 및/또는 히프 기반 공격 트램펄린으로부터 보호할 수 있다. 도 4b는 일부 실시형태에 따라, bvpProbe와 연관된 스택 손상 검출 기능의 제1 단계의 블록도이다. 도 4c는 일부 실시형태에 따라, bvpProbe와 연관된 히프 손상 검출 기능의 제1 단계의 블록도이다.
도 4b에 도시된 바와 같이, 스택 기반 트램펄린의 경우, 제1 단계(단계 1)로서, 일부 실시형태는 컴퓨터 루틴의 의도된 타겟 주소를 저장할 수 있다(420). 도 4b에 도시된 바와 같이, 다음 단계(단계 2)에서, 메모리 손상(422)은 하나 이상의 공격자에 의해 발생할 수 있다(예를 들어, 도 4a를 참조로 설명된 바와 같이). 도 4b의 단계 3에 도시된 바와 같이, 일부 실시형태는 메모리 손상을 확인(검출)할 수 있다(424). 도 4b의 단계 4에 도시된 바와 같이, 일부 실시형태는 저장된 타겟의 복사본(426)을 타겟 주소에 적용하고 저장된 타겟을 실행(428)함으로써 메모리 손상을 바이패스할 수 있다. 일부 실시형태는 미국 특허 제8,966,312호의 "메모리 손상의 런타임 검출 및 교정을 위한 시스템 및 방법", 또는 당업계에 공지된 다른 기술들을 포함하지만 이에 한정되지 않는, 당업자에게 알려진 메모리 손상 처리를 위한 하나 이상의 기술을 사용하여 메모리 손상을 처리할 수 있다. 이와 같이, 일부 실시형태는 런타임 동안에 메모리의 적어도 하나의 부분의 메모리 손상(424)을 검출할 수 있고, 메모리의 적어도 하나의 부분을 메모리의 적어도 하나의 부분의 백업 복사본(즉, 저장된 타겟의 복사본(426))으로 대체함으로써 메모리의 적어도 하나의 부분의 메모리 손상을 교정할 수 있다. 이러한 방식으로, 보안 위험을 최소화하면서 메모리 손상이 시기 적절하게 교정될 수 있다.
또한, 도 4b에 도시된 바와 같이, 스택 기반 트램펄린의 경우, 런타임 변환 데이터를 ARMAS 어플라이언스에 간단히 디스패치하는 대신에, bvpProbe는 루틴으로의 진입 포인트에 중요 상태를 저장할 수 있다. 주어진 스레드에 대한 분기 이송 동작이 도 4b의 단계 3에 도시된 바와 같이 악의적으로 변경되었다고 bvpProbe가 결정하는 경우(424), 이는 메모리 손상을 되돌릴 수 있고, 저장된 의도된 타겟(420)을 실행될 다음 명령에 대한 주소가 검색되는 스택으로 다시 복원함으로써 상황별로 적절한 목적지를 복원할 수 있다(426 내지 428).
도 4c는 히프 기반 트램펄린에 대한 손상 검출 및 처리를 도시한다. 도 4c에 도시된 바와 같이, 도 4c의 단계 1에서 애플리케이션이 가동되어 실행됨에 따라, 도 4c의 단계 2에서 ObjA의 인스턴스(인스턴스 1)에 상대방 제어된 입력이 기록된다. 취약한 코드를 포함하는 ObjA의 인스턴스 1은 애플리케이션 메모리의 히프 섹션에서 이전에 선언되었다. 일반적으로, 애플리케이션의 각각의 객체(예를 들어, ObjA 및 ObjM)는 판독 전용 데이터 섹션에서 공통 가상 포인터 테이블(vtable)을 가리키는 함수 포인터 1, 2...N,...,X와 같은 하나 이상의 가상 함수 포인터(vptrs)를 갖는다. 일부 실시형태에 따라, 함수 포인터는 애플리케이션 메모리의 판독 전용 데이터 섹션에서 선언될 수 있다. 상대방 데이터가 (ObjA의 취약한 코드에 해당하는) vptr을 덮어쓰는 경우, vptr로부터 vtable로의 포인터는 도 4c의 단계 2에서 방지될 수 있다. 어떤 이후의 시점에서, 알려진 양호한 코드가 도 4c의 단계 3에서 ObjA에 액세스하는 경우, 알려진 양호한 함수 포인터를 실행하는 대신에, 상대방이 선택한 악성 코드가 도 4c의 단계 4에서와 같이 실행되기 시작한다. bvpProbe는 목적지들(악성 코드)을 알려진 양호한 목적지들과 비교함으로써 도 4c의 단계 4에서 트램펄린을 검출한다.
단계 2. bvpProbe의 기능
bvpProbe는 취약성에 대한 깊은 통찰력을 수집할 수 있고, 매우 실행 가능한 정보를 개발팀에 제공할 수 있다. 개발팀이 취약한 함수의 취약하지 않은 버전을 개발하여 테스트했다면, 해당 함수에 대한 새로운 코드가 라이브러리 내로 패키징될 수 있고 개별 패치("라이트" 패치)로서 릴리스될 수 있다. "라이트" 패치의 검증 가능하고 서명된 버전이 ARMAS 대시보드에서 사용 가능해지면, 이는 bvpProbe가 실행하도록 프로비저닝될 수 있는 하나 이상의 영향을 받는 서버로 푸시될 수 있다. "라이트" 패치는 영향을 받는 서버의 메모리에 저장될 수 있으므로, 필요한 경우 메모리로부터 컴퓨터 애플리케이션으로 "라이트" 패치가 주입될 수 있다(개발자 사이트의 네트워크를 통해 또는 ARMAS 대시보드의 파일로부터 반복적으로 액세스하지 않고).
개별 패치("라이트" 패치)를 수신하면, ARMAS 프로브는 해당하는 개별 패치("라이트" 패치)에 대한 구성 데이터를 저장할 수 있다. 그 다음, 사용자 명령을 통해(또는 자동으로), 또는 에러에 대응하여, 프로세스 스레드가 일시 정지될 수 있다. 도 5a에 도시된 바와 같이, 프로세스 스레드는 버퍼 에러(BE) 취약성 히트에 대응하여 일시 정지될 수 있다.
도 5a에 도시된 바와 같이, 프로세스 스레드를 일시 정지시킬 때, ARMAS 프로브는 애플리케이션의 복잡도에 기초하여 이하의 메커니즘 중 하나 이상을 포함하지만 이에 한정되지 않는 접근법을 사용하여 애플리케이션에서 하나 이상의 스레드를 중단시킬 수 있다. 메커니즘은 애플리케이션을 실행하는 하드웨어에 의해 제공된 내장 함수(intrinsics)를 사용할 수 있다. 예시적인 제1 메커니즘(방법)은 SuspendThread() API를 사용한다. 이러한 방법에서, 프로세스가 실행 중이고(505), 공격자에 의해 분기 실행 취약성이 히트된다(510). 방법은 SuspendThread() API를 사용하여 재귀적으로 프로세스의 모든 스레드를 일시 정지시킨다(515). 그 다음, 방법은 프로세스의 일시 정지된 스레드 내로 라이트 패치 DLL(위에서 설명된 바와 같이)을 주입(520)하여, 취약한 함수를 패치(525)하고 해당 구성 파일을 업데이트(530)한다. 코드가 패치되었다면, 프로브는 ResumeThread() API를 호출하여 프로세스를 재개할 수 있다(535).
이러한 접근법은, 잘려나가는 타임아웃으로 인한 연산 문제들, 순서가 맞지 않게 웨이크 업되는 프로세스들로 인한 레이스 조건들, 및/또는 웨이크 업될 때 세마포(semaphore)를 확보하는 일부 더 낮은 우선순위의 스레드로 인한 교착 상태를 멀티스레드 애플리케이션이 겪게 할 수 있다. 예시적인 제2 메커니즘은 프로세스를 일시 정지시킬 수 있는 커널에서 구현되는 하나 이상의 시스템 호출(예를 들어, NtSuspendProcess())을 사용하는 것이다. 예시적인 제3 메커니즘은 프로세스를 일시적으로 중지시키기 위해, 디버거 인터페이스(DebugActiveProcess()를 사용하여 중단 및 DebugActiveProcessStop()을 사용하여 재개)를 사용하는 것이다.
도 5a에 도시된 바와 같이, 프로세스가 "정지"(즉, 일시 정지(515))되면, 새로운 코드를 주입(520)하고(즉, 취약한 함수에 대해 "라이트" 패치 DLL을 주입하여 "핫" 패치를 수행함) 이전의 취약한 코드로부터 새로운 취약하지 않은 코드로의 트램펄린을 생성하는 것이 안전하다. 이러한 비-악성 트램펄린은 이하의 메커니즘 중 하나를 사용하여 구현될 수 있지만, 이에 한정되지 않는다. 예시적인 제1 메커니즘은 코드 세그먼트의 기능을 직접 편집하여 새로운 "라이트" 기능이 메모리에 로딩되는 곳으로 점프하는 것이다. 예시적인 제2 메커니즘은 영향을 받는 기능이 내보내기 기능인 경우에 유용하다. 예시적인 제2 메커니즘은 가져오기 테이블의 주소를 변경함으로써, 이전의 취약한 코드가 호출되는 대신에, 새로운 취약하지 않은 코드가 호출되도록 한다. 예시적인 제3 메커니즘은 이벤트를 생성하는 코드를 삽입하고 새로운 코드를 이벤트 처리기에 연결한다.
도 5a에 도시된 바와 같이, bvpProbe는 일지 정지된 프로세스를 웨이크 업할 수 있다(즉, 프로세스를 재개할 수 있다(535)). 그러나, 도 5a에도 도시된 바와 같이, 일시 정지된 프로세스를 웨이크 업하기 전에, 구성 정보가 구성 파일에서 업데이트될 수 있다(530).
구성 정보는 다수의 패치(즉, 다수의 "라이트" 패치)에 대한 정보를 포함할 수 있다. 패치에 대한 구성 관련 정보를 저장하는 것이 중요하다. 이러한 구성 정보는 bvpProbe가 하나 이상의 개별("라이트") 패치를 실행 가능한 모듈의 특정 릴리스에 연결(연관)시킬 수 있게 할 수 있다. 그 다음, 구성이 변경될 때까지, bvpProbe는 시작시에 하나 이상의 개별("라이트") 패치를 재로딩할 수 있다. 구성 파일 자체가 악성 상대방을 위한 타겟일 수 있다. 따라서, 구성 파일 컨텐츠는 엔드포인트 특정 "카나리아(canary)"로 암호화될 수 있으며 이의 파일 무결성 체크섬 정보가 퍼블리시될 수 있으므로, bvpProbe가 패치를 재로딩하기 위해 이를 사용하기 시작하기 전에 구성 파일이 검증될 수 있다.
또한, 프로세스가 종료되지 않으면서 위에서 언급된 가상 패칭의 동작(예를 들어, 도 5a에 도시된 바와 같은 "라이트" 패치를 사용하여)이 수행될 수 있는 것이 중요하다. 이는 애플리케이션이 업무에 필수적인 동작들을 기업에 전달하는 시나리오에서, 또는 애플리케이션을 패치하는데 많은 비용이 드는 경우에 매우 중요하다.
그러나, 도 5b에 도시된 바와 같이, 전체 패치(즉, 하나 이상의 개별 또는 "라이트" 패치를 포함할 수 있는 집합 패치)가 전달되기 전에 프로세스가 재시작되는 경우, "라이트" 패치 삽입은 시작시에 수행되는 것이 바람직하다. 도 5b에 도시된 바와 같이, 전원 사이클이 발생하는 경우, bvpProbe 애플리케이션은 프로세스를 개시하고(540), 저장된 구성 정보(패치 정보를 포함하지만 이에 한정되지 않음)를 검색하기 위해 구성 파일을 판독한다(542). 그 다음, 도 5b에 도시된 바와 같이, bvpProbe 애플리케이션은 각 모듈에 대해 잠재적으로 취약한 함수들을 패치(545)하기 위해, 하나 이상의 개별("라이트") 패치를 애플리케이션의 각 모듈로 로딩한다(543). 원하는 "라이트" 패치를 로딩한 후에, bvpProbe는 애플리케이션 프로세스 실행을 시작할 수 있다.
bvpProbe의 단계 3
어떤 후속적인 시간에, 하나 이상의 사용자(예를 들어, 소프트웨어 개발팀)는 다수의 취약성에 대한 수정을 포함하는 전체 패치(즉, 하나 이상의 개별 또는 "라이트" 패치를 포함할 수 있는 집합 패치)를 릴리스할 수 있다. 전체 패치는 하나 이상의 라이트 패치를 포함할 수 있다. 그 때, 도 5c에 도시된 바와 같이, 하나 이상의 메모리 내 "라이트" 패치가 명시적으로 제거될 수 있다. 도 5c는 일부 실시형태에 따라, 하나 이상의 개별 패치를 퍼징(또는 제거)하는 것과 연관된 사이클을 도시한다.
도 5c에 도시된 바와 같이, 하나 이상의 통신 메시지(퍼지 패치 메시지)는 ARMAS bvpProbe로부터 ARMAS 대시보드로/ARMAS 대시보드로부터 ARMAS bvpProbe로 디스패치(570)될 수 있으므로, 라이트 패치 구성 정보가 구성 파일에서 업데이트될 수 있다. bvpProbe는 퍼지 패치 메시지를 등록하고(571), 하나 이상의 모듈에 적용 가능한 가장 최신 버전(들)의 라이트 패치를 반영하기 위해, 다수의 라이트 패치에 대한 정보를 포함할 수 있는 구성 파일을 업데이트한다(572). 이러한 방식으로, 하나 이상의 모듈에 적용할 수 없는 하나 이상의 버전의 라이트 패치가 모듈로 로딩되지 않을 수 있다(즉, "퍼징됨" 또는 로딩되지 않음). 그 다음, 도 5c에 도시된 바와 같이, bvpProbe는 프로세스를 시작하고(573), 각 모듈을 로딩한다(574). 모듈이 로딩되면, bypProbe는 적용 가능한 라이트 패치(적용할 수 없는 라이트 패치는 아님)를 각 모듈로 로딩하고(575), 프로세스를 재개하기 전에 잠재적으로 취약한 해당 함수들을 패치한다(576). 그 다음, bvpProbe는 프로세스의 실행을 재개한다(577). 이러한 방식으로, 일부 실시형태에서 bvpProbe는 전체 패치가 릴리스된 라이트 패치를 퍼지할 수 있다.
가상 패칭 타임라인
도 6은 일부 실시형태에 따라, (본원에서 설명된 바와 같은) bvpProbe 기능의 요약 및 패칭 타임라인의 블록도이다. 도 6의 타임라인에 도시된 바와 같이, 애플리케이션이 전개된 후에, 메모리 기반 공격(또는 제로-데이 공격)은 도 4a의 메모리 기반 공격(또는 악성 트램펄린)에 의해 설명된 바와 같이, 함수 Foo(405)의 스택(415)과 같은 함수의 스택에서 발생할 수 있다. 도 6에 도시된 바와 같이, 일부 실시형태에 따라, bvpProbe(단계 1에서)는 그렇지 않으면 제로-데이 공격을 실행했을 악성 트램펄린(상대방의 트램펄린 코드(410))을 억제시킬 수 있다. 도 6에 도시된 바와 같이, 일부 실시형태에 따라, 단계 2에서, bvpProbe는 "라이트" 패치(580)를 로딩할 수 있고, 단계 3에서 bvpProbe는 재부팅을 요구할 수 있는 전체 릴리스된 업그레이드(582) 대신에, 로딩된 "라이트" 패치(580)를 복귀(또는 제거 또는 퍼지)시킬 수 있다.
예외 처리에 의한 가상 패칭
다른 실시형태에서, ARMAS 어플라이언스는 메모리 손상 이전에 코드 취약성의 액세스를 검출할 수 있는 가상 패칭 애플리케이션을 실행한다. 이러한 실시형태에서, 개발팀(예를 들어, 애플리케이션 공급자)이 ARMAS 애플리케이션의 사용을 통해, 또는 동적 또는 정적 코드 분석의 다른 수단(예를 들어, 코드 분석기)에 의해, 애플리케이션의 코드 취약성을 결정함에 따라, 애플리케이션의 코드 취약성은 정책으로서 구성된다. 각각의 구성된 정책은 결정된 코드 취약성 및 시스템 콜백 루틴으로서 구성된 해당 시스템 응답을 포함한다. 개발팀이 결정된 코드 취약성에 대한 정책을 구성하는 경우, 개발팀은 또한 결정된 코드 취약성에 대한 권장 시스템 응답을 실행하도록 해당 시스템 콜백 루틴을 프로그래밍한다. 권장 시스템 응답(콜백 루틴으로서 프로그래밍됨)은, 코드 취약성의 액세스를 시스템 로그에서의 에러로서 로깅하는 단계, 액세스된 코드 취약성을 포함하는 컴퓨터 애플리케이션 스레드 또는 프로세스의 이미지를 덤핑하는 단계, 컴퓨터 애플리케이션의 스택의 저장된 복사본을 복원하는 단계, 코드 취약성을 포함하는 컴퓨터 루틴을 변경하기 위해 웹 서비스 인프라의 메모리로부터 하나 이상의 교정 패치를 동적으로 로딩하는 단계, 메모리 위반으로 인해 중단될 때까지 컴퓨터 애플리케이션을 계속 실행하는 단계, 컴퓨터 애플리케이션을 즉시 종료하는 단계, 또는 코드 취약성과 관련된 임의의 다른 시스템 응답을 포함하지만, 이에 한정되지 않는다. 또한, 개발팀은 위의 권장 시스템 응답 중 하나를 실행하도록 프로그래밍된 콜백 루틴으로 컴퓨터 애플리케이션에 대한 디폴트 정책을 구성할 수도 있다. 구성된 정책은 ARMAS 어플라이언스에 액세스할 수 있는 네트워크 위치에 저장된 보안 정책 데이터베이스의 테이블에 저장된다.
ARMAS 어플라이언스는 네트워크의 애플리케이션 서버에서 하드웨어 또는 소프트웨어 예외 처리기를 계측한다. 처리되지 않은 메모리 액세스 위반 또는 다른 처리되지 않은 메모리 또는 시스템 위반이 이벤트(예를 들어, 웹 서비스 요청)로 인해 발생하여 취약한 애플리케이션 코드에 액세스하는 경우, 애플리케이션을 실행하는 하드웨어 또는 소프트웨어(예를 들어, 운영 체제)는 예외를 트리거한다. ARMAS 어플라이언스에 의해 계측된 하드웨어 또는 소프트웨어 예외 처리기는 트리거된 예외를 인터셉트하고, 코드 취약성을 연관시키며, 연관된 코드 취약성을 포함하는 정책에 대해 보안 정책 데이터베이스에 질의한다. 그렇게 하기 위해, ARMAS 어플라이언스는 트리거된 예외에 대한 시스템 응답을 개시하기 위해, 커널로부터 애플리케이션의 제어권을 되찾도록 커널 모드 예외 처리기를 계측된 예외 처리로 덮어쓴다. 그렇지 않으면, 커널은 트리거된 예외에 대응하여 애플리케이션을 중단시킬 것이다. 해당 정책이 보안 정책 데이터베이스에 있는 경우, 계측된 예외 처리기는 연관된 코드 취약성의 액세스에 대응하여 정책의 콜백 루틴을 실행한다. 해당 정책이 없는 경우, 계측된 예외 처리기는 보안 정책 데이터베이스의 컴퓨터 애플리케이션에 대한 디폴트 정책으로부터 콜백 루틴을 실행한다.
콜백 루틴은 컴퓨터 애플리케이션의 개발팀에 의해 제공되는 전체 패치가 애플리케이션 서버로 다운로딩되도록 이용 가능해질 때까지, 액세스된 코드의 취약성에 대응하기 위한 가상 패치로서 기능한다. 이하는 예외 처리 코드의 일 실시예이다. 실시예에 나타낸 옵션 5는 도 5a 내지 도 5c를 참조하여 위에서 설명된 바와 같이 메모리에 저장되는 "라이트" 패치를 주입하는 단계를 포함할 수 있다.
캐치 (예외 e)
{
가상 패치 = 처리되지 않은 메모리 위반과 연관된 코드에 대한 보안 정책 데이터베이스 루틴으로부터 프로그래밍 가능한 콜백 검색;
가상 패치 실행;
// 가상 패치를 실행하는 것은 이하의 실시예 중 하나를 포함할 수 있다:
// 옵션 1: 콘솔. 라이트라인(Console. WriteLine)("에러 발생: '{0}'", e);
// 옵션 2: 프로세스 이미지를 디스크에 저장(코어 덤프);
// 옵션 3: 스택 복원 및 계속 진행;
// 옵션 4: 프로세스가 계속 진행되게 하고 중단;
// 옵션 5: 프로세스를 재시작하지 않고 프로세스를 패치
//.
//.
//.
// 옵션 x (이에 한정되지 않음)
}
애플리케이션 런타임 모니터링 및 분석(ARMAS) 인프라
도 7a는 예시적인 애플리케이션 런타임 모니터링 및 분석(ARMAS) 인프라의 상위 레벨 블록도를 도시한다. 이러한 인프라는 스마트폰, 태블릿, 랩톱, 데스크탑에서부터 하이엔드 서버에 이르는 컴퓨팅 장치들을 포함하는 다양한 하드웨어에서 구성될 수 있다. 본 도면에 도시된 바와 같이, 모니터링 에이전트(702)에 의해 수행되는 데이터 수집은 분석 엔진(737)에 의해 수행되는 분석과 분리되어 애플리케이션 성능을 개선할 수 있다. 인프라는 해커가 멀웨어 공격으로부터의 이의 보호를 전복시키는 것을 방지하기 위한 높은 가용성을 제공한다. 모니터링 에이전트(702)는 애플리케이션과 상호 작용하여 로딩 시간 및 런타임 데이터를 수집한다. 애플리케이션(701)의 인프라는 프로세스 메모리(703), 타사 라이브러리(704), 커널 서비스(706), 및 명령 파이프라인(707)을 포함한다. 모니터링 에이전트(702)의 인프라는 계측 & 분석 엔진(계측 엔진)(705), 그래픽 사용자 인터페이스(GUI)(711), 클라이언트 데몬(708), 구성 데이터베이스(709), 및 스트리밍 및 압축 엔진(710), 및 중앙 처리 장치(CPU)(736)를 포함한다. 애플리케이션(701)의 로컬 또는 원격 사용자(750)는 키보드, 마우스 또는 이와 유사한 I/O 장치와 같은 장치를 통해, 또는 파이프, 공유 메모리 또는 소켓에 의해 설정될 수 있는 통신 채널을 통한 네트워크를 통해, 애플리케이션과 상호 작용한다. 대응하여, 애플리케이션 프로세스(703)는 실행을 위한 명령 파이프라인(707) 내로 적절한 명령 세트를 디스패치한다. 또한, 애플리케이션은 libc.so(리눅스) 또는 msvcrtxx.dll(윈도우즈)과 같은 타사 라이브러리(704) 또는 그 자신의 라이브러리를 활용할 수 있다. 이러한 라이브러리로부터 기능이 호출됨에 따라, 이러한 라이브러리로부터의 적절한 명령이 또한 실행을 위한 명령 파이프라인(707) 내로 삽입된다. 또한, 애플리케이션은 커널(706)로부터의 메모리, 파일 I/O 등과 같은 시스템 자원을 활용할 수 있다. 커널, 라이브러리 및 애플리케이션으로부터의 이러한 명령 시퀀스는 시간 순서에 따라 수집되고 주어진 사용자가 원하는 애플리케이션 기능을 전달한다.
애플리케이션의 코드가 메모리로 로딩되기 시작함에 따라, 계측 엔진(705)은 몇 가지 상이한 로딩 시간 동작들을 수행한다. 모든 모듈이 로딩되었다면, 애플리케이션의 계측된 명령은 런타임 데이터를 생성한다. 클라이언트 데몬(708)은 구성 데이터베이스(709)로부터 하나 이상의 구성 파일을 판독함으로써 736의 CPU에서 계측 및 분석 엔진(705), 스트리밍 엔진(710) 및 GUI(711) 프로세스들을 초기화한다. 또한, 이는 계측 엔진, 스트리밍 엔진, GUI, 분석 엔진(737) 및 자신 간의 상호 통신 파이프를 초기화한다. 클라이언트 데몬은 또한 자신을 포함하여 임의의 모니터링 에이전트(702) 프로세스가 응답하지 않거나 중지되는 경우, 재생되도록 보장한다. 이는 모니터링 에이전트(702)가 높은 가용성 엔터프라이즈급 제품임을 보장한다.
계측 및 분석 엔진(737)은 애플리케이션으로부터 수집된 로딩 및 런타임 데이터를 스트리밍 엔진으로 푸시한다. 스트리밍 엔진은 모니터링 에이전트(702)로부터의 미가공 데이터를 PDU로 패키징한다. 그 다음, 이는 높은 대역폭, 낮은 대기시간의 통신 채널(712)을 통해 PDU를 분석 엔진(737)으로 푸시한다. 모니터링 에이전트(702) 및 분석 엔진(737)이 동일한 기계에 위치된 경우, 이러한 채널은 메모리 버스일 수 있다. 이러한 엔티티가 상이한 하드웨어에 위치되지만 동일한 물리적 인접 지역에 있는 경우, 채널은 이더넷 또는 광섬유 기반 전송일 수 있으며, 이는 엔티티들 간에 원격 연결이 설정될 수 있도록 함으로써 로딩 및 런타임 데이터를 인터넷을 통해 전송할 수 있다.
분석 엔진(737)의 인프라는, 네트워크 인터페이스 카드(NIC)(713), 패킷 풀(714), 타임 스탬프 엔진(715), 프로세서 패브릭(716), 해싱 엔진(717), TCAM 엔진(718), 애플리케이션 맵 데이터베이스(719), 및 REGEX 엔진(740)을 구성하는 스레드 콘텍스트 데이터베이스(720)를 포함한다. 분석 엔진(737)의 인프라는, 컨텐츠 분석 엔진(721), 이벤트 및 이벤트 체인(722), 이벤트 관리 엔진(723), 이벤트 로그(724), 애플리케이션 데몬(725), 분석 엔진 구성 데이터베이스(726), 네트워크 인터페이스(727), 대시보드 또는 CMS(728), SMS/SMTP 서버(729), OTP 서버(730), 업그레이드 클라이언트(731), 소프트웨어 업그레이드 서버(732), 소프트웨어 이미지(733), 이벤트 업데이트 클라이언트(734), 및 이벤트 업그레이드 서버(735)를 추가로 포함한다.
프로토콜 헤더와 함께 PDU는 네트워크 인터페이스 카드(713)에서 인터셉트되며 이로부터 PDU가 풀링되어 패킷 풀(714)로 입력된다. PDU의 타임스탬프 필드는 타임 스탬프 엔진(715)에 의해 채워진다. 이는 패킷이 과도하게 오랜 시간 동안 패킷 풀 버퍼에 고착되지 않도록 돕는다.
프로세서 패브릭(716)은 패킷 버퍼로부터 패킷을 풀링하고, 주소 필드는 해싱되어 패킷의 적절한 위치에 대체된다. 이러한 동작은 해싱 엔진(717)에 의해 수행된다. 그 다음, 프로세서 패브릭은 이들이 도착한 순서대로 패킷 버퍼로부터 패킷을 제거하기 시작한다. 로딩 시간 단계의 정보를 갖는 패킷은 관련 데이터가 추출되어 애플리케이션 맵 데이터베이스(719)에 저장되도록 처리된다. 런타임 단계의 정보를 갖는 패킷은 도 5에 따라 처리된다. 분석 엔진(737)의 효율성은 프로세서 패브릭의 프로세서들의 수에 기초하여 증가 또는 감소될 수 있다.
변환 타겟 데이터는 각 스레드를 위한 테이블을 갖는 스레드 콘텍스트 데이터베이스(720)에 저장된다. 또한, 프로세서 패브릭은 TCAM 엔진(718)을 활용하여 변환 및 메모리 영역 검색을 수행한다. 프로세서 패브릭은 해시를 사용하여 조회를 수행하기 때문에, 사용되는 실제 시간은 예측 가능하고 매우 짧다. 패브릭의 프로세서들의 수를 신중하게 선택함으로써, 패킷당 처리량이 적절히 변경될 수 있다.
분석 엔진(737)이 검색을 수행하는 경우, 때때로 무효 변환, 시스템 호출 또는 중요/관리 함수의 무효 동작을 발견하거나, 또는 바람직하지 않은 위치에서의 메모리 쓰기를 발견할 수 있다. 이러한 각각의 경우에, 분석 엔진(737)은 이벤트 및 이벤트 체인 데이터베이스(722)에 저장된 정책에 의해 기술된 바와 같은 프로그래밍된 중대도의 이벤트를 이벤트 관리 엔진(723)에 디스패치한다. 미가공 이벤트 로그는 이벤트 로그 데이터베이스(724)에 저장된다. 또한, 대시보드는 이벤트 로그에 액세스할 수 있고, 애플리케이션 상태를 디스플레이할 수 있다.
또한, 교정 조치는 이벤트 및 이벤트 체인 데이터베이스(722)의 모든 이벤트와 연관된다. 사용자는 하나의 극치에서 이벤트를 무시하는 것에서부터 다른 극치에서 스레드를 종료하는 것에 이르는 다양한 조치들로부터 교정 조치를 설정할 수 있다. 이벤트 업데이트 클라이언트(734) 및 이벤트 업그레이드 서버(735)를 사용하여, 권장 교정 조치가 분석가에게 권장될 수 있다. 앞서 언급된 권장 조치를 변경하기 위해, 분석가는 대시보드(728)를 이에 따라 사용할 수 있다. 대시보드는 각각의 모니터링되는 애플리케이션의 상태를 디스플레이하는 GUI 인터페이스를 제공하며, 보안 분석가가 애플리케이션의 시작 및 중지와 같은 애플리케이션에 대한 특정 제어권을 가질 수 있게 한다. 이벤트가 생성되면, 이벤트 체인은 정상 상태로부터 후속 상태로 진행된다. 새로운 상태와 연관된 교정 조치가 수행될 수 있다. 교정 조치가 무시할 수 없는 조치를 포함하는 경우, SMS 또는 SMTP 서버(729)를 사용하여 보안 분석가에게 통지가 전송된다. 보안 분석가의 SMS/SMTP 주소는 LDAP 또는 다른 디렉토리 프로토콜을 사용하여 결정될 수 있다. 대시보드로부터 애플리케이션을 시작하거나 중지하는 프로세스는 상승된 권한을 요구하므로, 보안 분석가가 OTP 서버(730)를 사용하여 인증해야 한다.
또한, 새로운 이벤트가 생성되어 분석가에게 권장되는 교정 조치 및 중대도와 함께 이벤트 및 이벤트 체인 데이터베이스(722)로 링크될 수 있다. 이는 하나의 설치에서 새로운 공격에 대한 고유한 이벤트 및 이벤트 체인이 다른 설치로 디스패치될 수 있도록 한다. 이러한 목적을 위해, 모든 새로운 이벤트 및 이벤트 체인은 이벤트 업그레이드 서버(735)로 로딩된다. 이벤트 업데이트 클라이언트(734)는 이벤트 업그레이드 서버(735)에 주기적으로 접속 및 인증하여 새로운 이벤트 및 이벤트 체인을 검색한다. 그 다음, 이벤트 업데이트 클라이언트는 이러한 새로운 이벤트 및 이벤트 체인을 이벤트 및 이벤트 체인 데이터베이스(722)로 로딩한다. 컨텐츠 분석 엔진(721)은 새로운 이벤트 체인 내로 캡슐화된 새로운 공격에 대해 애플리케이션 추적을 시작할 수 있다.
클라이언트 데몬과 마찬가지로, 어플라이언스 데몬(725)은 분석 엔진(737)에서 실행되는 다양한 프로세스를 시작하는 역할을 한다. 이러한 목적을 위해, 이는 분석 엔진 구성 데이터베이스(726)로부터 구성 정보를 판독해야 한다. 또한, 데몬은 분석 엔진(737)의 모든 프로세스에 대해 하트비트 폴링(heartbeat poll)을 실행하는 역할을 한다. 이는 분석 엔진(737) 생태계의 모든 장치가 항상 최상의 작동 상태에 있도록 보장한다. 3개의 연속적인 하트비트들의 손실은 타겟 프로세스가 응답하고 있지 않음을 암시한다. 임의의 프로세스가 조기에 종료된 경우, 데몬은 자신을 포함하는 해당 프로세스를 재개한다.
때때로, 소프트웨어는 소프트웨어의 에러 수정과 같은 목적을 위해, 클라이언트의 또는 분석 엔진(737)의 또는 어플라이언스 호스트에서 업그레이드될 수 있다. 이러한 목적을 위해, 업그레이드 클라이언트(731)는 최신 소프트웨어를 이용할 수 있는 소프트웨어 업그레이드 서버(732)를 지속적으로 확인한다. 클라이언트 또는 분석 엔진(737)의 엔티티들이 이전 이미지를 실행 중임을 클라이언트가 발견하는 경우, 분석가가 소프트웨어 업그레이드 서버(732)의 새로운 이미지로 이전 이미지를 업그레이드할 수 있게 한다. 새로운 이미지는 시스템 이미지(733)로서 함께 번들로 제공된다. 이는 테스트된 호환 가능한 이미지와 함께 어플라이언스 또는 호스트를 프로비저닝할 수 있게 한다. 모니터링 에이전트(702) 또는 분석 엔진(737)에서 서브시스템의 이미지들 중 하나가 시스템 이미지의 동일한 구성 요소에 대한 이미지와 일치하지 않는 경우, 모든 이미지들은 이전의 알려진 양호한 시스템 이미지로 돌아갈 것이다.
ARMAS 통신을 위한 PDU
도 7b는 도 7a의 모니터링 에이전트(702)와 분석 엔진(737) 간에 데이터를 전송하는데 사용되는 예시적인 프로토콜 데이터 유닛(PDU)을 도시한다. 모니터링 에이전트(702) 및 분석 엔진(737)이 서로 효과적으로 작용하기 위해, 이들은 PDU를 사용하여 서로 통신한다. 구체적으로, PDU는 애플리케이션의 추출된 모델 및/또는 분석 엔진(737)으로의 전송을 위한 수집된 런타임 데이터를 패키징하기 위해 모니터링 에이전트(702)에 의해 사용될 수 있다. PDU는 모니터링 에이전트(702)와 분석 엔진(737) 간에 전송될 각 유형의 정보를 위한 필드를 포함한다. PDU는 애플리케이션 제공 데이터 섹션, HW/CVE 생성, 및 컨텐츠 분석 엔진 또는 미가공 데이터 섹션들로 구분된다.
애플리케이션 제공 데이터 섹션은 이러한 섹션의 다양한 필드에 배치되는 소스 및 타겟 주소 뿐만 아니라 다양한 레지스터로부터의 데이터를 포함한다. 프로토콜 버전은 PDU의 버전 넘버(752)를 포함한다. 시간이 지남에 따라 프로토콜 버전이 변경되기 때문에, 소스 및 목적지는 서로 계속 통신할 수 있어야 한다. 이러한 8비트 필드는 소스 엔티티에 의해 생성되는 바와 같은 패킷의 버전 넘버를 기술한다. 현재 사용되지 않는 예약 필드(756)가 프로토콜 버전 필드 다음에 후속된다.
애플리케이션 제공 데이터 섹션의 다음 필드는 메시지 소스/목적지 식별자(757, 753 및 754)로서 도 7a에 도시된 바와 같은 분석 엔진 인프라 내에서 트래픽을 교환하는데 사용된다. 때때로, 도 7에 도시된 다양한 엔티티들은 그 자신들 간에 트래픽을 교환한다. 이러한 모든 장치가 IP 주소를 갖거나 IP 주소를 필요로 하지는 않기 때문에, 2개의(하드웨어 및 호스트) 질의 라우터 엔진은 메시지 소스 및 목적지 필드를 사용하여 트래픽을 내부적으로 라우팅한다. 일부 메시지는 네트워크를 통해 분석 엔진(737)의 엔티티들로 이동할 필요가 있다. 이러한 목적을 위해, 이하의 ID들이 엔티티에 할당된다. 주어진 분석 엔진 어플라이언스는 하나 보다 많은 가속기 카드를 가질 수 있다. 각각의 카드는 고유 IP 주소를 가지므로, 다양한 엔티티들이 고유 ID를 갖는다. 또한, 앞서 언급한 인프라는 하나 보다 많은 애플리케이션을 실행할 수 있다. 각각의 애플리케이션 서버는 고유 IP 주소를 갖기 때문에, 해당 모니터링 에이전트측 엔티티도 고유 ID를 갖는다.
모니터링 에이전트측 엔티티들
1. GUI
2. 계측 및 분석 엔진
3. 클라이언트 메시지 라우터
4. 스트리밍 엔진
5. 클라이언트측 데몬
6. CLI 엔진
7. 클라이언트 워치독
8. 클라이언트 압축 블록
9. 클라이언트 iWarp 이더넷 드라이버(100 Mb/1Gb/10Gb)
PCI 카드당 엔티티들 (시작 주소 = 20 + n*20)
20. Securalyzer TOE 블록
21. Securalyzer PCI 브리지
22. 압축 해제 블록
23. 메시지 검증 블록
24. 패킷 해싱 블록
25. 타임-스탬핑 블록
26. 메시지 타임아웃 타이머 블록
27. 통계 카운터 블록
28. Securalyzer 질의 라우터 엔진
29. Securalyzer 어시스트
Securalyzer 호스트 엔티티들
200. Securalyzer PCIe 드라이버
201. 호스트 라우팅 엔진
202. 컨텐츠 분석 엔진
203. 로그 매니저
204. 데몬
205. 웹 엔진
206. 워치독
207. IPC 메시징 버스
208. 구성 데이터베이스
209. 로그 데이터베이스
STEM 커넥터들
220. SIEM 커넥터 1 - Virsec 대시보드
221. SIEM 커넥터 2 - HP ArcSight
222. SIEM 커넥터 3 - IBM QRadar
223. SIEM 커넥터 4 - Alien Vault USM
Securalyzer 인프라 엔티티들
230. Virsec 대시보드
231. SMTP 서버
232. LDAP 서버
233. SMS 서버
234. 자격 서버
235. 데이터베이스 백업 서버
236. OTP 클라이언트
237. OTP 서버
238. 체크섬 서버
239. 티켓팅 서버
240. Virsec 규칙 서버
241. Virsec 업데이트 서버
모든 사용자 애플리케이션들
255. 사용자 애플리케이션들 - 애플리케이션 PID는 질의를 발행하는 애플리케이션을 식별하는데 사용된다.
애플리케이션 제공 데이터 섹션의 다른 필드는 전송되는 데이터의 유형을 나타내는 메시지 유형 필드(755)이다. 최상위 레벨에서, 다양한 로컬 모니터링 에이전트측 엔티티들 간에, 분석 엔진 어플라이언스측 엔티티들 간에 그리고 클라이언트측 및 어플라이언스측 엔티티들 간에 흐르는 3가지 별개의 메시지 유형들이 있다. 더욱이, 네트워크를 통해 이동할 필요가 있는 메시지들은 OSI 모델 및 다른 프로토콜들을 준수해야 한다.
애플리케이션 제공 데이터 섹션의 후속 필드는 패킷에 대한 시퀀스 식별자를 포함하는 패킷 시퀀스 넘버 필드(779)이다. 스트리밍 엔진은 손실 패킷에 대한 에러 복구를 수행한다. 이러한 목적을 위해, 패킷을 고유하게 식별할 필요가 있다. 증분 부호를 가진 64비트 패킷 시퀀스 넘버가 스트리밍 엔진에 의해 삽입되고 간단히 나머지 분석 엔진 인프라를 통과한다. 시퀀스 넘버가 64비트 경계에서 래핑되는 경우, 0에서 재시작할 수 있다. 하트비트 또는 로그 메시지 등과 같은 비-애플리케이션 패킷의 경우, 패킷 시퀀스 넘버는 -1일 수 있다.
또한, 애플리케이션 제공 데이터 섹션은 암호화 목적으로 사용되는 카나리아를 포함하는 카나리아 메시지 필드(761)를 포함한다. 모니터링 에이전트(702) 및 분석 엔진(737)은 애플리케이션 개시 시간, PID, 라이센스 문자열, 및 권한이 부여된 사용자 이름과 같은 새로운 종류의 그러나 일부 공통의 정보로부터 카나리아를 계산하는 방법을 인지하고 있다.
애플리케이션 제공 데이터 섹션은 모든 메시지에 사용되는 범용 필드들을 부가적으로 포함한다. 애플리케이션 소스 명령 주소(780), 애플리케이션 목적지 명령 주소(758), 메모리 시작 주소 포인터(759), 메모리 종료 주소 포인터(760), 애플리케이션 PID(762), 스레드 ID(763), 분석 엔진 도착 타임스탬프(764), 및 분석 엔진 출발 타임스탬프(765) 필드들은 범용 애플리케이션 데이터를 보유한다.
또한, PDU는 HW/CAE 생성 섹션을 포함한다. 분석을 원활하게 하고 고정된 시간 버짓을 유지하기 위해, 분석 엔진(737)은 소스 및 목적지 주소 필드들을 해시하고, 처리 전에 PDU를 업데이트한다. PDU의 HW/CAE 생성 섹션은 이후에 사용하기 위해 해시된 데이터가 배치되는 곳이다. 이러한 섹션은 해시된 애플리케이션 소스 명령 주소(766), 해시 애플리케이션 목적지 명령 주소(767), 해시된 메모리 시작 주소(768), 및 해시된 메모리 종료 주소(769) 필드들을 포함한다. HW/CAE 생성 섹션은, 모든 PDU 패킷들에 존재하는, 하드코딩된 컨텐츠 시작 매직 헤더, API 이름 매직 헤더, 호출 콘텍스트 매직 헤더, 및 호출 미가공 데이터 매직 헤더를 포함하는 카나리아(771)와 관련된 다른 필드들을 부가적으로 포함한다.
또한, HW/CAE 생성 섹션은 결과, 구성 비트, 동작 모드, 에러 코드 및 동작 모드 데이터를 포함하는 다른 구성 및 에러 데이터를 식별하기 위한 필드(770)를 포함한다. 필드의 결과 부분은 변환 플레이북, 코드 레이아웃, 메모리(스택 또는 히프) 오버런, 및 심층 검사 질의들과 같은 상이한 분석 엔진 질의들에 대한 부울 결과들을 리턴하도록 세분화된다. 필드의 구성 비트 부분은 압축 플래그, 데모 플래그, 또는 공동-배치(co-located) 플래그가 설정되는 시기를 나타낸다. 이러한 필드에서 플래그의 존재는 패킷이 압축 모드로 리턴되어야 하는지 여부를 분석 엔진(737)에 나타낸다. 데모 플래그는 시스템에 대한 유효한 라이센스가 없기 때문에 시스템이 데모 모드로 있음을 나타낸다. 이러한 모드에서, 로그 및 이벤트는 그 전체가 이용 가능하지 않을 것이다. 공동-배치 플래그는 애플리케이션이 분석 엔진(737)에서 실행 중이기 때문에, 호스트 질의 라우터 엔진이 애플리케이션으로 리턴될 필요가 있는 패킷들을 전송할 곳을 결정할 수 있음을 나타낸다. 이러한 플래그가 설정되는 경우, 패킷들은 PCI 브리지를 통해 전송되거나, 그렇지 않으면 PCI 카드의 이더넷 인터페이스를 통해 전송된다. 필드의 동작 모드 부분은 시스템이 편집, 모니터링 또는 학습 모드인지 여부를 나타낸다. 이러한 모드에 대해서는 본 섹션의 이후의 부분에서 더 상세히 설명된다. 마지막으로, 필드의 에러 코드 부분은 시스템에서의 에러를 나타낸다. 에러 코드의 처음 8비트는 메시지 소스에 해당한다. 나머지 12비트는 각 서브시스템에 의해 보고된 실제 에러에 해당한다.
또한, PDU는 컨텐츠 분석 엔진 또는 미가공 데이터를 포함한다. 시스템 호출 및 OS 라이브러리 호출의 리턴 값 및 인수들과 같은 모든 변수 데이터는 PDU의 본 섹션에 배치된다. 본 섹션의 데이터는 애플리케이션으로부터 수집된 데이터의 컨텐츠를 포함하며 주로 컨텐츠 분석 엔진(721)을 타겟으로 한다. 본 섹션은 가변 크기 API 이름 또는 넘버(772), 호출 컨텐츠 매직 헤더(777), 가변 크기 호출 컨텐츠(774), 호출 미가공 데이터 매직 헤더(778), 가변 크기 미가공 데이터 컨텐츠(776), 및 2개의 예약(773 및 775) 필드들을 포함한다. 또한, 이러한 필드들은 관리 메시지들을 위해 오버로딩될 수 있다.
디지털 처리 인프라
도 8은 본 개시물의 실시형태가 구현될 수 있는 컴퓨터 네트워크 또는 이와 유사한 디지털 처리 환경을 도시한다.
클라이언트 컴퓨터(들)/장치들(50) 및 서버 컴퓨터(들)(60)는 애플리케이션 프로그램 등을 실행하는 처리, 저장 및 입력/출력 장치들을 제공한다. 또한, 클라이언트 컴퓨터(들)/장치들(50)은 통신 네트워크(70)를 통해 다른 클라이언트 장치들/프로세스들(50) 및 서버 컴퓨터(들)(60)를 포함하는 다른 컴퓨팅 장치들에 접속될 수 있다. 통신 네트워크(70)는 원격 액세스 네트워크, 글로벌 네트워크(예를 들어, 인터넷), 컴퓨터들의 월드와이드 컬렉션, 근거리 통신망 또는 광역 통신망, 및 현재 각각의 프로토콜(TCP/IP, Bluetooth® 등)을 사용하여 서로 통신하는 게이트웨이들의 일부일 수 있다. 다른 전자 장치/컴퓨터 네트워크 아키텍처들이 적합할 수 있다.
클라이언트 컴퓨터/장치(50)는 보안 모니터링 에이전트로서 구성될 수 있다. 서버 컴퓨터(60)는 데이터베이스 주입 공격을 검출하기 위해 클라이언트 장치(즉, 보안 모니터링 에이전트)(50)와 통신하는 분석 엔진으로서 구성될 수 있다. 서버 컴퓨터(60)는 별도의 서버 컴퓨터가 아니라 클라우드 네트워크(70)의 일부일 수 있다. 일부 실시형태에서, 서버 컴퓨터(예를 들어, 분석 엔진)는 컴퓨터 루틴들의 세트를 분석하고, 적용될 하나 이상의 패치를 식별하며, 하나 이상의 패치를 컴퓨터 루틴들에 적용할 수 있다. 클라이언트(보안 모니터링 에이전트)(50)는 서버(분석 엔진)(60)로/로부터 패치 및 패치 요청을 통신할 수 있다. 일부 실시형태에서, 클라이언트(50)는, 요청 및 질의를 포착하기 위해, 그리고 패치를 제공할 뿐만 아니라 패치가 필요한 손상된 메모리를 검출하기 위해, 클라이언트(즉, 보안 모니터링 에이전트)(50)에서 실행되는 클라이언트 애플리케이션 또는 구성 요소(예를 들어, 계측 엔진)를 포함할 수 있으며, 클라이언트(50)는 이러한 정보를 서버(예를 들어, 분석 엔진)(60)로 통신할 수 있다.
도 9는 도 8의 컴퓨터 시스템의 컴퓨터(예를 들어, 클라이언트 프로세서/장치(50) 또는 서버 컴퓨터(60))의 예시적인 내부 구조의 도면이다. 각각의 컴퓨터(50, 60)는 시스템 버스(79)를 포함하며, 버스는 컴퓨터 또는 처리 시스템의 구성 요소들 간의 데이터 전송을 위해 사용되는 하드웨어 라인들의 세트이다. 시스템 버스(79)는 본질적으로 요소들 간에 정보의 전송을 가능하게 하는 컴퓨터 시스템의 상이한 요소들(예를 들어, 프로세서, 디스크 저장 장치, 메모리, 입력/출력 포트, 네트워크 포트 등)을 연결하는 공유관이다. 다양한 입력 및 출력 장치(예를 들어, 키보드, 마우스, 디스플레이, 프린터, 스피커 등)를 컴퓨터(50, 60)에 연결하기 위한 I/O 장치 인터페이스(82)가 시스템 버스(79)에 부착된다. 네트워크 인터페이스(86)는 컴퓨터가 네트워크(예를 들어, 도 8의 네트워크(70))에 부착된 다양한 다른 장치에 연결될 수 있게 한다. 메모리(90)는 본 개시물의 실시형태(예를 들어, 본원에서 설명된 보안 모니터링 에이전트, 계측 엔진, 및 분석 엔진 요소들)를 구현하는데 사용되는 컴퓨터 소프트웨어 명령(92) 및 데이터(94)를 위한 휘발성 저장소를 제공한다. 디스크 저장 장치(95)는 본 개시물의 실시형태를 구현하는데 사용되는 컴퓨터 소프트웨어 명령(92) 및 데이터(94)를 위한 비휘발성 저장소를 제공한다. 또한, 중앙 처리 장치(84)가 시스템 버스(79)에 부착되고 컴퓨터 명령의 실행을 제공한다.
실시형태 또는 이의 양태는 하드웨어 회로, 펌웨어 또는 소프트웨어를 포함하지만 이에 한정되지 않는 하드웨어의 형태로 구현될 수 있다. 소프트웨어로 구현되는 경우, 소프트웨어는 프로세서가 소프트웨어 또는 이의 명령 서브세트들을 로딩할 수 있게 하도록 구성된 임의의 비-일시적 컴퓨터 판독 가능한 매체에 저장될 수 있다. 그 다음, 프로세서는 명령을 실행하고, 본원에서 설명된 바와 같은 방식으로 장치를 동작시키도록 또는 장치가 동작하게 하도록 구성된다.
일부 실시형태는 패치 업데이트를 통해 컴퓨터 루틴들 중 적어도 하나를 비동기식으로 그리고 동적으로 조작함으로써 컴퓨터 루틴들의 세트의 동작 및/또는 데이터를 변형시킬 수 있다. 패치는 하나 이상의 컴퓨터 루틴과 연관된 값, 입력 파라미터, 리턴 값 또는 코드 바디의 변경을 포함함으로써(그러나 이에 한정되지 않음), 컴퓨터 루틴의 동작(및/또는 데이터)을 변형시킬 수 있다.
일부 실시형태는 컴퓨터 애플리케이션 및/또는 컴퓨터 코드의 취약성 및/또는 컴퓨터 루틴의 악성 처리를 검출함으로써, 컴퓨터 애플리케이션, 컴퓨터 프로그램 기능 및/또는 컴퓨터 코드의 품질에 대한 기능적 개선을 제공할 수 있다. 일부 실시형태는 예기치 않은 및/또는 부정확한 동작을 방지하기 위해 부적절하게 실행되는 컴퓨터 루틴을 교정 및/또는 교체하기 위한 하나 이상의 패치를 전개할 수 있다. 이와 같이, 일부 실시형태는 컴퓨터 코드 기능을 검출 및 교정함으로써 상당한 기능적 개선을 제공할 수 있다.
일부 실시형태는 소프트웨어의 기능 및 이의 에러 처리 기능의 강건성을 개선함으로써 기술적인 문제를 해결한다(이에 따라 기술적인 효과를 제공한다). 또한, 일부 실시형태는 기존의 접근법을 사용하여 수행하기 어려울 수 있는 코드 손상을 검출 및 교정하는 기술적인 문제를 해결한다(이에 따라 기술적인 효과를 제공한다).
또한, 하드웨어, 펌웨어, 소프트웨어, 루틴 또는 명령은 데이터 프로세서의 특정 동작 및/또는 기능을 수행하는 것으로서 본원에서 설명될 수 있다. 그러나, 본원에 포함된 이러한 설명은 단지 편의를 위한 것이며, 이러한 동작은 사실상 컴퓨팅 장치, 프로세서, 제어기, 또는 펌웨어, 소프트웨어, 루틴, 명령 등을 실행하는 다른 장치로부터 비롯된다는 것을 인식해야 한다.
흐름도, 블록도 및 네트워크 도면은 더 많거나 더 적은 요소를 포함할 수 있거나, 상이하게 배치될 수 있거나, 또는 상이하게 표현될 수 있음을 이해해야 한다. 그러나, 특정한 구현예들은 블록도 및 네트워크 도면을 상술할 수 있으며, 실시형태들의 실행을 예시하는 다수의 블록도 및 네트워크 도면이 특정한 방식으로 구현될 수 있음을 추가로 이해해야 한다.
따라서, 추가적인 실시형태들은 또한 다양한 컴퓨터 아키텍처들, 물리적, 가상, 클라우드 컴퓨터들, 및/또는 이들의 일부 조합으로 구현될 수 있으므로, 본원에서 설명된 데이터 프로세서는 단지 실시형태들을 예시하는 목적으로만 의도된 것이며 실시형태들의 제한사항으로서 의도되지 않는다.
본 개시물은 특히 이의 예시적인 실시형태를 참조하여 도시되고 설명되었지만, 당업자는 첨부된 청구범위에 의해 포함되는 본 개시물의 범주를 벗어나지 않고 그 안에서 형태 및 세부사항의 다양한 변경이 이루어질 수 있음을 이해할 것이다.

Claims (38)

  1. 컴퓨터-구현되는 방법으로서,
    로딩 시간 동안에 컴퓨터 애플리케이션의 모델을 추출하는 단계로, 상기 추출된 모델은 상기 컴퓨터 애플리케이션의 주소 경계 속성들을 포함하는, 추출 단계;
    상기 컴퓨터 애플리케이션의 모델을 저장하는 단계;
    런타임시에 데이터를 수집하기 위해 상기 컴퓨터 애플리케이션 내로 명령을 삽입하는 단계;
    하나 이상의 보안 이벤트의 검출을 수행하기 위해 상기 컴퓨터 애플리케이션의 주소 경계 속성들을 포함하는 상기 저장된 모델에 대하여 런타임시에 수집된 상기 데이터를 분석하는 단계로서, 상기 하나 이상의 보안 이벤트는 상기 컴퓨터 애플리케이션의 주소 경계 속성들 외부의 악성 동작과 연관되는, 분석 단계; 그리고
    상기 하나 이상의 보안 이벤트의 검출에 기초하여,
    상기 컴퓨터 애플리케이션과 연관된 적어도 하나의 활성 프로세스 또는 스레드의 실행을 일시 정지시키는 단계; 및
    상기 컴퓨터 애플리케이션의 연속 실행을 보존하는 방식으로, 상기 컴퓨터 애플리케이션과 연관된 상기 적어도 하나의 활성 프로세스 또는 스레드와 연관된 적어도 하나의 컴퓨터 루틴을 변경하는 단계를 포함하며,
    상기 변경하는 단계는 취약한 코드로부터 취약하지 않은 코드로의 트램펄린(trampoline)을 생성하는,
    컴퓨터-구현되는 방법.
  2. 제1항에 있어서,
    상기 적어도 하나의 컴퓨터 루틴은 상기 적어도 하나의 활성 프로세스와 관련하여 실행되는, 방법.
  3. 제1항에 있어서,
    상기 악성 동작은 상기 컴퓨터 애플리케이션 내의 상이한 코드 경로로의 악성 이동인, 방법.
  4. 제1항에 있어서,
    변경하는 단계는 상기 컴퓨터 애플리케이션과 연관된 패치 또는 구성을 검증하는 단계를 포함하는, 방법.
  5. 제1항에 있어서,
    사용자에 의한 하나 이상의 집합 패치의 수신에 대응하여,
    상기 컴퓨터 애플리케이션과 연관된 상기 적어도 하나의 컴퓨터 루틴을 변경 또는 제거하는 단계; 및
    상기 컴퓨터 애플리케이션과 연관된 하나 이상의 개별 패치를 변경 또는 제거하는 단계 중 적어도 하나를 수행하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 적어도 하나의 컴퓨터 루틴과 연관된 하나 이상의 스택을 변경하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서,
    상기 적어도 하나의 실행 컴퓨터 루틴과 연관된 하나 이상의 히프를 변경하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 적어도 하나의 활성 프로세스가 상기 적어도 하나의 컴퓨터 루틴을 실행하는 동안에, 상기 적어도 하나의 활성 프로세스와 연관된 상기 적어도 하나의 컴퓨터 루틴을 변경하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서,
    상기 적어도 하나의 컴퓨터 루틴을 변경한 후에, 상기 적어도 하나의 활성 프로세스 또는 스레드의 실행을 재개하는 단계를 더 포함하는, 방법.
  10. 컴퓨터 시스템으로서,
    계측 엔진; 및
    분석 엔진을 포함하며,
    상기 계측 엔진은,
    로딩 시간 동안에 컴퓨터 애플리케이션의 모델을 추출하도록 구성되고, 상기 추출된 모델은 상기 컴퓨터 애플리케이션의 주소 경계 속성들을 포함하며,
    상기 컴퓨터 애플리케이션의 모델을 저장하도록 구성되며,
    런타임시에 데이터를 수집하기 위해 상기 컴퓨터 애플리케이션 내로 명령을 삽입하도록 구성되고,
    상기 분석 엔진은,
    하나 이상의 보안 이벤트의 검출을 수행하기 위해 상기 컴퓨터 애플리케이션의 주소 경계 속성들을 포함하는 상기 저장된 모델에 대하여 런타임시에 수집된 상기 데이터를 분석하도록 구성되며, 상기 하나 이상의 보안 이벤트는 상기 컴퓨터 애플리케이션의 주소 경계 속성들 외부의 악성 동작과 연관되며,
    상기 하나 이상의 보안 이벤트의 검출에 기초하여,
    상기 컴퓨터 애플리케이션과 연관된 적어도 하나의 활성 프로세스 또는 스레드의 실행을 일시 정지시키며; 그리고
    상기 컴퓨터 애플리케이션의 연속 실행을 보존하는 방식으로, 상기 컴퓨터 애플리케이션과 연관된 상기 적어도 하나의 활성 프로세스 또는 스레드와 연관된 적어도 하나의 컴퓨터 루틴을 변경하도록 구성되며, 상기 변경하는 것은 취약한 코드로부터 취약하지 않은 코드로의 트램펄린을 생성하는,
    컴퓨터 시스템.
  11. 제10항에 있어서,
    상기 적어도 하나의 컴퓨터 루틴은 상기 적어도 하나의 활성 프로세스와 관련하여 실행되는, 컴퓨터 시스템.
  12. 제10항에 있어서,
    상기 악성 동작은 상기 컴퓨터 애플리케이션 내의 상이한 코드 경로로의 악성 이동인, 컴퓨터 시스템.
  13. 제10항에 있어서,
    상기 분석 엔진은 상기 컴퓨터 애플리케이션과 연관된 패치 또는 구성을 검증하도록 추가로 구성되는, 컴퓨터 시스템.
  14. 제10항에 있어서,
    상기 분석 엔진은,
    사용자에 의한 하나 이상의 집합 패치의 수신에 대응하여,
    상기 컴퓨터 애플리케이션과 연관된 상기 적어도 하나의 컴퓨터 루틴을 변경 또는 제거하는 단계; 및
    상기 컴퓨터 애플리케이션과 연관된 하나 이상의 개별 패치를 변경 또는 제거하는 단계 중 적어도 하나를 수행하도록 추가로 구성되는, 컴퓨터 시스템.
  15. 제10항에 있어서,
    상기 분석 엔진은,
    상기 적어도 하나의 컴퓨터 루틴과 연관된 하나 이상의 스택을 변경하도록 추가로 구성되는, 컴퓨터 시스템.
  16. 제10항에 있어서,
    상기 분석 엔진은,
    상기 적어도 하나의 실행 컴퓨터 루틴과 연관된 하나 이상의 히프를 변경하도록 추가로 구성되는, 컴퓨터 시스템.
  17. 제10항에 있어서,
    상기 분석 엔진은,
    상기 적어도 하나의 활성 프로세스가 상기 적어도 하나의 컴퓨터 루틴을 실행하는 동안에, 상기 적어도 하나의 활성 프로세스와 연관된 상기 적어도 하나의 컴퓨터 루틴을 변경하도록 추가로 구성되는, 컴퓨터 시스템.
  18. 제10항에 있어서,
    상기 분석 엔진은,
    상기 적어도 하나의 컴퓨터 루틴을 변경한 후에, 상기 적어도 하나의 활성 프로세스 또는 스레드의 실행을 재개하도록 추가로 구성되는, 컴퓨터 시스템.
  19. 컴퓨터-구현되는 방법으로서,
    로딩 시간 동안에 컴퓨터 애플리케이션의 모델을 추출하는 단계로, 상기 추출된 모델은 상기 컴퓨터 애플리케이션의 주소 경계 속성들을 포함하는, 추출 단계;
    상기 컴퓨터 애플리케이션의 모델을 저장하는 단계;
    런타임시에 데이터를 수집하기 위해 상기 컴퓨터 애플리케이션 내로 명령을 삽입하는 단계;
    하나 이상의 보안 이벤트의 검출을 수행하기 위해 상기 컴퓨터 애플리케이션의 주소 경계 속성들을 포함하는 상기 저장된 모델에 대하여 런타임시에 수집된 상기 데이터를 분석하는 단계로서, 상기 하나 이상의 보안 이벤트는 상기 컴퓨터 애플리케이션의 주소 경계 속성들 외부의 악성 동작과 연관되는, 분석 단계;
    상기 하나 이상의 보안 이벤트의 검출시에, 하나 이상의 리턴 명령을 실행하기 전에 상기 컴퓨터 애플리케이션과 연관된 메모리 손상을 일시적으로 교정하는 단계;
    상기 하나 이상의 검출된 보안 이벤트에 기초하여 실행 가능한 정보를 보고하는 단계; 그리고
    상기 하나 이상의 보안 이벤트의 검출에 기초하여,
    상기 컴퓨터 애플리케이션과 연관된 적어도 하나의 활성 프로세스 또는 스레드의 실행을 일시 정지시키는 단계; 및
    상기 컴퓨터 애플리케이션의 연속 실행을 보존하는 방식으로, 상기 컴퓨터 애플리케이션과 연관된 상기 적어도 하나의 활성 프로세스 또는 스레드와 연관된 적어도 하나의 컴퓨터 루틴을 변경하는 단계를 포함하며,
    상기 변경하는 단계는 취약한 코드로부터 취약하지 않은 코드로의 트램펄린을 생성하는,
    컴퓨터-구현되는 방법.
  20. 제19항에 있어서,
    적어도 하나의 프로세스가 실행되는 동안에, 상기 적어도 하나의 프로세스와 연관된 적어도 하나의 컴퓨터 명령을 변경하는 단계를 더 포함하는, 방법.
  21. 제19항에 있어서,
    상기 적어도 하나의 컴퓨터 루틴을 변경한 후에, 상기 적어도 하나의 활성 프로세스 또는 스레드의 실행을 재개하는 단계를 더 포함하는, 방법.
  22. 컴퓨터 시스템으로서,
    계측 엔진; 및
    분석 엔진을 포함하며,
    상기 계측 엔진은,
    로딩 시간 동안에 컴퓨터 애플리케이션의 모델을 추출하도록 구성되고, 상기 추출된 모델은 상기 컴퓨터 애플리케이션의 주소 경계 속성들을 포함하며,
    상기 컴퓨터 애플리케이션의 모델을 저장하도록 구성되며,
    런타임시에 데이터를 수집하기 위해 상기 컴퓨터 애플리케이션 내로 명령을 삽입하도록 구성되고,
    상기 분석 엔진은,
    하나 이상의 보안 이벤트의 검출을 수행하기 위해 상기 컴퓨터 애플리케이션의 주소 경계 속성들을 포함하는 상기 저장된 모델에 대하여 런타임시에 수집된 상기 데이터를 분석하도록 구성되며, 상기 하나 이상의 보안 이벤트는 상기 컴퓨터 애플리케이션의 주소 경계 속성들 외부의 악성 동작과 연관되며,
    상기 하나 이상의 보안 이벤트의 검출시에, 하나 이상의 리턴 명령을 실행하기 전에 상기 컴퓨터 애플리케이션과 연관된 메모리 손상을 일시적으로 교정하도록 구성되고,
    상기 하나 이상의 검출된 보안 이벤트에 기초하여 실행 가능한 정보를 보고하도록 구성되며,
    상기 하나 이상의 보안 이벤트의 검출에 기초하여,
    상기 컴퓨터 애플리케이션과 연관된 적어도 하나의 활성 프로세스 또는 스레드의 실행을 일시 정지시키고; 그리고
    상기 컴퓨터 애플리케이션의 연속 실행을 보존하는 방식으로, 상기 컴퓨터 애플리케이션과 연관된 상기 적어도 하나의 활성 프로세스 또는 스레드와 연관된 적어도 하나의 컴퓨터 루틴을 변경하도록 구성되며, 상기 변경하는 것은 취약한 코드로부터 취약하지 않은 코드로의 트램펄린을 생성하는,
    컴퓨터 시스템.
  23. 제22항에 있어서,
    상기 분석 엔진은,
    적어도 하나의 프로세스가 실행되는 동안에, 상기 적어도 하나의 프로세스와 연관된 적어도 하나의 컴퓨터 명령을 변경하도록 추가로 구성되는, 컴퓨터 시스템.
  24. 제22항에 있어서,
    상기 분석 엔진은,
    상기 적어도 하나의 컴퓨터 루틴을 변경한 후에, 상기 적어도 하나의 활성 프로세스 또는 스레드의 실행을 재개하도록 추가로 구성되는, 컴퓨터 시스템.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
KR1020197001449A 2016-06-16 2017-06-16 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법 KR102419574B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662350917P 2016-06-16 2016-06-16
US62/350,917 2016-06-16
PCT/US2017/037841 WO2017218872A1 (en) 2016-06-16 2017-06-16 Systems and methods for remediating memory corruption in a computer application

Publications (2)

Publication Number Publication Date
KR20190035686A KR20190035686A (ko) 2019-04-03
KR102419574B1 true KR102419574B1 (ko) 2022-07-11

Family

ID=59276839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197001449A KR102419574B1 (ko) 2016-06-16 2017-06-16 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US11409870B2 (ko)
EP (1) EP3472746B1 (ko)
JP (1) JP6949951B2 (ko)
KR (1) KR102419574B1 (ko)
AU (1) AU2017285429B2 (ko)
CA (1) CA3027728A1 (ko)
WO (1) WO2017218872A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
WO2015038944A1 (en) 2013-09-12 2015-03-19 Virsec Systems, Inc. Automated runtime detection of malware
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
AU2017285429B2 (en) 2016-06-16 2022-03-31 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
US10387198B2 (en) 2016-08-11 2019-08-20 Rescale, Inc. Integrated multi-provider compute platform
US10193762B2 (en) * 2016-08-11 2019-01-29 Rescale, Inc. Dynamic optimization of simulation resources
KR101904911B1 (ko) * 2017-10-13 2018-10-08 한국인터넷진흥원 하이브리드 퍼징 기반 보안 취약점 자동 탐색 방법 및 그 장치
US10296302B1 (en) * 2017-11-06 2019-05-21 General Electric Company One-click deployment of industrial software
EP3738058B1 (en) 2018-01-12 2022-11-23 Virsec Systems, Inc. Defending against speculative execution exploits
US10902130B2 (en) * 2018-02-18 2021-01-26 Fujitsu Limited Guiding automated testing of binary programs
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
JP7432523B2 (ja) * 2018-10-29 2024-02-16 スターナム リミテッド 動的メモリ保護
WO2020236981A1 (en) * 2019-05-20 2020-11-26 Sentinel Labs Israel Ltd. Systems and methods for executable code detection, automatic feature extraction and position independent code detection
CN110275722B (zh) 2019-06-21 2023-08-08 北京百度网讯科技有限公司 用于升级应用的方法、装置、设备和存储介质
CN110457909B (zh) * 2019-08-15 2024-05-28 腾讯科技(深圳)有限公司 虚拟机内存的漏洞修复方法、装置及计算机设备
EP4097614A1 (en) * 2020-01-28 2022-12-07 C2A-SEC, Ltd. Control flow integrity system and method
US11403092B2 (en) * 2020-07-09 2022-08-02 Microsoft Technology Licensing, Llc System compliance based on a mix of hotpatches and coldpatches
US11816211B2 (en) 2020-07-31 2023-11-14 RunSafe Security, Inc. Active signaling in response to attacks on a transformed binary
AU2021331486A1 (en) 2020-08-27 2023-04-13 Virsec Systems, Inc. Automated application vulnerability and risk assessment
US20230142345A1 (en) * 2021-11-05 2023-05-11 Blackberry Limited Detecting software vulnerabilities in a binary code
US20230141142A1 (en) * 2021-11-05 2023-05-11 Blackberry Limited Identifying application program interface use in a binary code
CN114244620B (zh) * 2021-12-24 2023-06-09 湖南云箭智能科技有限公司 一种板卡入网验证方法、装置及板卡控制中心

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
WO2015038944A1 (en) * 2013-09-12 2015-03-19 Virsec Systems, Inc. Automated runtime detection of malware
WO2015200046A1 (en) * 2014-06-27 2015-12-30 Qualcomm Incorporated Dynamic patching of multiple, functionally equivalent variations of various software modules for security reasons

Family Cites Families (227)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215406A (en) 1972-08-22 1980-07-29 Westinghouse Electric Corp. Digital computer monitored and/or operated system or process which is structured for operation with an improved automatic programming process and system
US4080650A (en) 1976-07-28 1978-03-21 Bell Telephone Laboratories, Incorporated Facilitating return from an on-line debugging program to a target program breakpoint
US4466077A (en) 1981-09-25 1984-08-14 International Business Machines Corporation Method and apparatus for division employing associative memory
JPS59216249A (ja) 1983-05-23 1984-12-06 Toshiba Corp 集積回路装置
GB8511995D0 (en) 1985-05-11 1985-06-19 Ross S R Software protection
US4803720A (en) 1986-09-22 1989-02-07 International Business Machines Corporation Dual plane cross point switch architecture for a micro-PBX
US5224160A (en) 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
US4910663A (en) 1987-07-10 1990-03-20 Tandem Computers Incorporated System for measuring program execution by replacing an executable instruction with interrupt causing instruction
US5222220A (en) 1989-11-16 1993-06-22 Mehta Hemang S Microprocessor stack built-in guards
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5161193A (en) 1990-06-29 1992-11-03 Digital Equipment Corporation Pipelined cryptography processor and method for its use in communication networks
JP2839201B2 (ja) 1990-07-30 1998-12-16 株式会社日立製作所 仮想計算機システム
US5235551A (en) 1991-01-08 1993-08-10 Pacific Data Products, Inc. Memory addressing scheme
US5297274A (en) 1991-04-15 1994-03-22 International Business Machines Corporation Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor
US5321828A (en) 1991-06-07 1994-06-14 Step Engineering High speed microcomputer in-circuit emulator
US5359659A (en) 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
US5440723A (en) 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
US5784552A (en) 1993-07-28 1998-07-21 Digital Equipment Corporation Debugging a computer program by simulating execution forwards and backwards in a main history log and alternative history logs
US5611043A (en) 1994-03-18 1997-03-11 Borland International, Inc. Debugger system and method for controlling child processes
US5533192A (en) 1994-04-21 1996-07-02 Apple Computer, Inc. Computer program debugging system and method
US5630048A (en) 1994-05-19 1997-05-13 La Joie; Leslie T. Diagnostic system for run-time monitoring of computer operations
JP3360933B2 (ja) 1994-06-01 2003-01-07 富士通株式会社 情報処理システムにおける記憶制御方法および記憶制御装置
US5826012A (en) 1995-04-21 1998-10-20 Lettvin; Jonathan D. Boot-time anti-virus and maintenance facility
US5680542A (en) 1995-06-07 1997-10-21 Motorola, Inc. Method and apparatus for synchronizing data in a host memory with data in target MCU memory
US5684948A (en) 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US6151618A (en) 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US5909580A (en) 1996-02-08 1999-06-01 Inprise Corporation Development system and methods with direct compiler support for detecting invalid use and management of resources and memory at runtime
US6119206A (en) 1996-02-12 2000-09-12 Sun Microsystems, Inc. Design of tags for lookup of non-volatile registers
JPH09282180A (ja) * 1996-04-11 1997-10-31 Sony Corp データ処理装置
EP0814404B1 (en) 1996-06-19 2001-01-31 Matsushita Electric Industrial Co., Ltd. Debugging apparatus for debugging a program
US5850559A (en) 1996-08-07 1998-12-15 Compaq Computer Corporation Method and apparatus for secure execution of software prior to a computer system being powered down or entering a low energy consumption mode
US6314558B1 (en) 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
GB9626401D0 (en) 1996-12-19 1997-02-05 Sgs Thomson Microelectronics Diagnostic procedures in an integrated circuit device
US5873124A (en) 1997-02-06 1999-02-16 Microsoft Corporation Virtual memory scratch pages
US5890005A (en) 1997-06-02 1999-03-30 Nokia Mobile Phones Limited Low power, low interconnect complexity microprocessor and memory interface
US6308246B1 (en) 1997-09-05 2001-10-23 Sun Microsystems, Inc. Skewed finite hashing function
US5983348A (en) 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
US6237137B1 (en) 1997-10-15 2001-05-22 Dell Usa, L.P. Method and system for preventing unauthorized access to a computer program
US6263489B1 (en) 1998-04-30 2001-07-17 Hewlett-Packard Company Method and apparatus for debugging of optimized code
US6077312A (en) 1998-05-06 2000-06-20 International Business Machines Corporation Apparatus, program product and method of debugging utilizing a context sensitive breakpoint
US6178522B1 (en) 1998-06-02 2001-01-23 Alliedsignal Inc. Method and apparatus for managing redundant computer-based systems for fault tolerant computing
US6553429B1 (en) 1998-06-05 2003-04-22 Microsoft Corporation Fast conditional thunk utility
US6275893B1 (en) 1998-09-14 2001-08-14 Compaq Computer Corporation Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US6665316B1 (en) 1998-09-29 2003-12-16 Agilent Technologies, Inc. Organization of time synchronization in a distributed system
EP0992906B1 (en) 1998-10-06 2005-08-03 Texas Instruments Inc. Apparatus and method for software breakpoint in a delay slot
US7380245B1 (en) 1998-11-23 2008-05-27 Samsung Electronics Co., Ltd. Technique for detecting corruption associated with a stack in a storage device
US6782478B1 (en) 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US6981176B2 (en) 1999-05-10 2005-12-27 Delphi Technologies, Inc. Secured microcontroller architecture
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
WO2001022228A1 (en) 1999-09-17 2001-03-29 Nortel Networks Limited System and method for producing a verification system for verifying procedure interfaces
US6745160B1 (en) 1999-10-08 2004-06-01 Nec Corporation Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
AU2001298116A1 (en) 2000-01-18 2009-07-29 Telcordia Technologies, Inc. Method and systems for identifying the existence of one or more unknown programs in a system
JP3552627B2 (ja) 2000-02-04 2004-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体
US7376820B2 (en) 2000-03-16 2008-05-20 Fujitsu Limited Information processing unit, and exception processing method for specific application-purpose operation instruction
US6775780B1 (en) 2000-03-16 2004-08-10 Networks Associates Technology, Inc. Detecting malicious software by analyzing patterns of system calls generated during emulation
US6973577B1 (en) 2000-05-26 2005-12-06 Mcafee, Inc. System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state
US7539875B1 (en) 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
US6895508B1 (en) 2000-09-07 2005-05-17 International Business Machines Corporation Stack memory protection
US6832373B2 (en) 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US7260845B2 (en) 2001-01-09 2007-08-21 Gabriel Kedma Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems
US6848044B2 (en) 2001-03-08 2005-01-25 International Business Machines Corporation Circuits and methods for recovering link stack data upon branch instruction mis-speculation
US20020138554A1 (en) 2001-03-26 2002-09-26 Motorola, Inc. Method for remotely verifying software integrity
US6993751B2 (en) 2001-05-14 2006-01-31 Microsoft Corporation Placing exception throwing instructions in compiled code
JP3702815B2 (ja) 2001-07-12 2005-10-05 日本電気株式会社 プロセッサ間レジスタ継承方法及びその装置
US20030014667A1 (en) 2001-07-16 2003-01-16 Andrei Kolichtchak Buffer overflow attack detection and suppression
US7421587B2 (en) 2001-07-26 2008-09-02 Mcafee, Inc. Detecting computer programs within packed computer files
US20030188160A1 (en) 2001-08-02 2003-10-02 Singam Sunder Method and system to securely update files via a network
US7257763B1 (en) 2001-08-03 2007-08-14 Netlogic Microsystems, Inc. Content addressable memory with error signaling
GB2378778B (en) 2001-08-13 2005-03-23 Ibm Computer system with heap and card table
EP1246033A1 (de) 2001-08-23 2002-10-02 Siemens Aktiengesellschaft Verfahren zur Überwachung konsistenter Speicherinhalte in redundanten Systemen
US7853803B2 (en) 2001-09-28 2010-12-14 Verizon Corporate Services Group Inc. System and method for thwarting buffer overflow attacks using encrypted process pointers
US7526654B2 (en) 2001-10-16 2009-04-28 Marc Charbonneau Method and system for detecting a secure state of a computer system
US20030079158A1 (en) 2001-10-23 2003-04-24 Tower James Brian Secured digital systems and a method and software for operating the same
US6832302B1 (en) 2001-10-24 2004-12-14 At&T Corp. Methods and apparatus for detecting heap smashing
US6668313B2 (en) 2001-12-21 2003-12-23 Agere Systems, Inc. Memory system for increased bandwidth
US7076629B2 (en) 2001-12-26 2006-07-11 Bonola Thomas J Method for providing concurrent non-blocking heap memory management for fixed sized blocks
US7168008B2 (en) 2002-01-18 2007-01-23 Mobitv, Inc. Method and system for isolating and protecting software components
ES2218484T3 (es) 2002-03-26 2004-11-16 Soteres Gmbh Un metodo de proteger la integridad de un programa de ordenador.
US7228426B2 (en) 2002-04-03 2007-06-05 Microsoft Corporation Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context
US6948091B2 (en) 2002-05-02 2005-09-20 Honeywell International Inc. High integrity recovery from multi-bit data failures
JP2003330736A (ja) 2002-05-08 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> 不正リソース利用防止システム及びその方法並びにプログラム
GB2383444B (en) 2002-05-08 2003-12-03 Gfi Software Ltd System and method for detecting a potentially malicious executable file
US7007159B2 (en) 2002-05-10 2006-02-28 Intel Corporation System and method for loading and integrating a firmware extension onto executable base system firmware during initialization
US7086088B2 (en) 2002-05-15 2006-08-01 Nokia, Inc. Preventing stack buffer overflow attacks
US7000095B2 (en) 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7386839B1 (en) 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
US7353501B2 (en) 2002-11-18 2008-04-01 Microsoft Corporation Generic wrapper scheme
US6996677B2 (en) 2002-11-25 2006-02-07 Nortel Networks Limited Method and apparatus for protecting memory stacks
US20040157639A1 (en) 2002-11-27 2004-08-12 Morris Roy D. Systems and methods of mobile restore
US20040168078A1 (en) 2002-12-04 2004-08-26 Brodley Carla E. Apparatus, system and method for protecting function return address
US7058838B2 (en) 2002-12-17 2006-06-06 Hewlett-Packard Development Company, L.P. System and method for synchronizing a plurality of processors in a multiprocessor computer platform employing a global clock counter
US7603704B2 (en) 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7594111B2 (en) 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US9503470B2 (en) 2002-12-24 2016-11-22 Fred Herz Patents, LLC Distributed agent based model for security monitoring and response
US7237172B2 (en) 2002-12-24 2007-06-26 Micron Technology, Inc. Error detection and correction in a CAM
US7043509B2 (en) 2003-02-19 2006-05-09 Sun Microsystems, Inc. Parallel non-contiguous allocation and card parsing
JP4547861B2 (ja) 2003-03-20 2010-09-22 日本電気株式会社 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
CA2426619A1 (en) 2003-04-25 2004-10-25 Ibm Canada Limited - Ibm Canada Limitee Defensive heap memory management
US20050108562A1 (en) 2003-06-18 2005-05-19 Khazan Roger I. Technique for detecting executable malicious code using a combination of static and dynamic analyses
US7480919B2 (en) 2003-06-24 2009-01-20 Microsoft Corporation Safe exceptions
US8250565B2 (en) 2003-06-27 2012-08-21 Hewlett-Packard Development Company, L.P. System and method for downloading update packages into a mobile handset in a carrier network
US7322027B2 (en) 2003-06-27 2008-01-22 Microsoft Corporation Detecting termination and providing information related to termination of a computer system process
US20040268095A1 (en) 2003-06-30 2004-12-30 Tatiana Shpeisman Efficient implementation of null reference check
US7707548B2 (en) 2003-07-22 2010-04-27 Verizon Business Global Llc Integration of information distribution systems
US7137038B2 (en) 2003-07-29 2006-11-14 Hitachi Global Storage Technologies Netherlands, B.V. System and method for autonomous data scrubbing in a hard disk drive
US7530103B2 (en) 2003-08-07 2009-05-05 Microsoft Corporation Projection of trustworthiness from a trusted environment to an untrusted environment
DE60321972D1 (de) 2003-08-11 2008-08-14 Telecom Italia Spa Verfahren und system zur erkennung einer unbefugten benutzung eines kommunikationsnetzes
CA2537910C (en) 2003-09-05 2012-11-06 Itron, Inc. Synchronizing and controlling software downloads, such as for utility meter-reading data collection and processing
US7467202B2 (en) 2003-09-10 2008-12-16 Fidelis Security Systems High-performance network content analysis platform
US7644441B2 (en) 2003-09-26 2010-01-05 Cigital, Inc. Methods for identifying malicious software
US7360097B2 (en) 2003-09-30 2008-04-15 Check Point Software Technologies, Inc. System providing methodology for securing interfaces of executable files
US7290253B1 (en) 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
WO2005036831A1 (ja) 2003-10-07 2005-04-21 Fujitsu Limited フレーム中継装置
US7500245B2 (en) 2005-07-08 2009-03-03 Microsoft Corporation Changing code execution path using kernel mode redirection
US7526755B2 (en) 2003-10-08 2009-04-28 Microsoft Corporation Plug-in pre- and postconditions for static program analysis
EP1679628A4 (en) 2003-10-15 2007-12-12 Zuken Inc PCB DESIGN INSTRUCTION SUPPORT PROCESS AND DEVICE
US7237267B2 (en) 2003-10-16 2007-06-26 Cisco Technology, Inc. Policy-based network security management
CN100391180C (zh) 2003-10-30 2008-05-28 华为技术有限公司 一种以太网二层交换设备绑定硬件地址和端口的方法
WO2005052767A1 (en) 2003-11-05 2005-06-09 Qinetiq Limited Detection of items stored in a computer system
US7451375B2 (en) 2003-11-20 2008-11-11 Fujitsu Limited Directed falsification of a circuit
US7529979B2 (en) 2003-12-12 2009-05-05 International Business Machines Corporation Hardware/software based indirect time stamping methodology for proactive hardware/software event detection and control
US7549042B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US20050138409A1 (en) 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device
US7716495B2 (en) 2003-12-31 2010-05-11 Microsoft Corporation Protection against runtime function attacks
US20100005531A1 (en) 2004-12-23 2010-01-07 Kenneth Largman Isolated multiplexed multi-dimensional processing in a virtual processing space having virus, spyware, and hacker protection features
US7284276B2 (en) 2004-01-22 2007-10-16 Symantec Corporation Return-to-LIBC attack detection using branch trace records system and method
US7730530B2 (en) 2004-01-30 2010-06-01 Microsoft Corporation System and method for gathering exhibited behaviors on a .NET executable module in a secure manner
US7694022B2 (en) 2004-02-24 2010-04-06 Microsoft Corporation Method and system for filtering communications to prevent exploitation of a software vulnerability
US7693975B2 (en) 2004-03-02 2010-04-06 Hewlett-Packard Development Company, L.P. Network device applying kalman filter
US7328323B1 (en) 2004-03-08 2008-02-05 Symantec Corporation Heap buffer overflow exploitation prevention system and method
JP2005258498A (ja) * 2004-03-09 2005-09-22 Hitachi Ltd サーバ回復方法
US7272748B1 (en) 2004-03-17 2007-09-18 Symantec Corporation Method and apparatus to detect and recover from a stack frame corruption
US7530093B2 (en) * 2004-04-30 2009-05-05 Microsoft Corporation Securing applications and operating systems
US8042180B2 (en) 2004-05-21 2011-10-18 Computer Associates Think, Inc. Intrusion detection based on amount of network traffic
US7490268B2 (en) 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7207065B2 (en) 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software
EP1754148A2 (en) 2004-06-08 2007-02-21 Dartdevices Corporation Architecture, apparatus and method for device team recruitment and content renditioning for universal device interoperability platform
US7860096B2 (en) 2004-06-08 2010-12-28 Oracle America, Inc. Switching method and apparatus for use in a communications network
US7526810B2 (en) 2004-06-21 2009-04-28 Ebay Inc. Method and system to verify data received, at a server system, for access and/or publication via the server system
US20050283601A1 (en) 2004-06-22 2005-12-22 Sun Microsystems, Inc. Systems and methods for securing a computer boot
US8955104B2 (en) 2004-07-07 2015-02-10 University Of Maryland College Park Method and system for monitoring system memory integrity
US7971255B1 (en) 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
FR2873466A1 (fr) 2004-07-21 2006-01-27 St Microelectronics Sa Procede de programmation d'un controleur de dma dans un systeme sur puce et systeme sur puce associe
US7634812B2 (en) 2004-07-21 2009-12-15 Microsoft Corporation Filter generation
US7603715B2 (en) 2004-07-21 2009-10-13 Microsoft Corporation Containment of worms
EP1619572A1 (en) 2004-07-23 2006-01-25 Texas Instruments Incorporated System and method of identifying and preventing security violations within a computing system
JP4643201B2 (ja) 2004-08-12 2011-03-02 日本電信電話株式会社 バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム
GB2417579A (en) 2004-08-26 2006-03-01 Hewlett Packard Development Co Method for dynamically inserting code into a process by enabling taken branch traps to intercept a branch during the execution of the process
US7430683B2 (en) 2004-09-23 2008-09-30 Intel Corporation Method and apparatus for enabling run-time recovery of a failed platform
EP1825342A1 (en) 2004-11-22 2007-08-29 Nokia Corporation Method and device for verifying the integrity of platform software of an electronic device
US7484239B1 (en) 2004-11-30 2009-01-27 Symantec Corporation Detecting heap and stack execution in the operating system using regions
JP3768516B1 (ja) 2004-12-03 2006-04-19 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステムとそのシステムにおけるプログラム実行方法
KR100675836B1 (ko) 2004-12-10 2007-01-29 한국전자통신연구원 Epon 구간내에서의 링크 보안을 위한 인증 방법
US20060126799A1 (en) 2004-12-15 2006-06-15 Microsoft Corporation Fault injection
US7613954B2 (en) 2004-12-21 2009-11-03 National Instruments Corporation Test executive with stack corruption detection
TWI252976B (en) 2004-12-27 2006-04-11 Ind Tech Res Inst Detecting method and architecture thereof for malicious codes
US7774787B2 (en) 2005-01-11 2010-08-10 Microsoft Corporation Method for specifying and verifying multi-threaded object-oriented programs with invariants
US7315871B2 (en) 2005-01-19 2008-01-01 International Business Machines Inc. Corporation Method, system and program product for interning invariant data objects in dynamic space constrained systems
JP4549303B2 (ja) 2005-02-07 2010-09-22 株式会社ソニー・コンピュータエンタテインメント パイプラインを用いてメッセージ認証コードを提供する方法および装置
JP2006259869A (ja) 2005-03-15 2006-09-28 Fujitsu Ltd マルチプロセッサシステム
US7290230B2 (en) 2005-03-17 2007-10-30 Fujitsu Limited System and method for verifying a digital design using dynamic abstraction
US7747725B2 (en) 2005-04-22 2010-06-29 Audinate Pty. Limited Method for transporting digital media
US7493602B2 (en) 2005-05-02 2009-02-17 International Business Machines Corporation Methods and arrangements for unified program analysis
US7912877B2 (en) 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
US7752381B2 (en) 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7730536B2 (en) 2005-06-08 2010-06-01 Verizon Business Global Llc Security perimeters
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US20070027815A1 (en) 2005-07-29 2007-02-01 Symantec Corporation Systems and methods for centralized subscription and license management in a small networking environment
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
CN1921474A (zh) * 2005-08-25 2007-02-28 国际商业机器公司 用于在计算机***中管理服务器处理的方法和设备
EP1758021A2 (en) 2005-08-25 2007-02-28 International Business Machines Corporation Method or apparatus for managing a server process in a computer system
US20070050848A1 (en) 2005-08-31 2007-03-01 Microsoft Corporation Preventing malware from accessing operating system services
US20070067359A1 (en) 2005-09-21 2007-03-22 Lenovo (Singapore) Pte. Ltd. Centralized system for versioned data synchronization
US20070118646A1 (en) 2005-10-04 2007-05-24 Computer Associates Think, Inc. Preventing the installation of rootkits on a standalone computer
US7809670B2 (en) 2005-12-09 2010-10-05 Microsoft Corporation Classification of malware using clustering that orders events in accordance with the time of occurance
CA2634462C (en) * 2005-12-22 2013-04-09 Giovanni Di Crescenzo A method and system for password protocols in the bounded retrieval model with security against dictionary attacks and intrusions
US9390031B2 (en) 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US8108840B2 (en) 2006-01-12 2012-01-31 International Business Machines Corporation Method for enhancing debugger performance of hardware assisted breakpoints
US20070174549A1 (en) 2006-01-24 2007-07-26 Yevgen Gyl Method for utilizing a memory interface to control partitioning of a memory module
US7845005B2 (en) 2006-02-07 2010-11-30 International Business Machines Corporation Method for preventing malicious software installation on an internet-connected computer
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8286238B2 (en) 2006-09-29 2012-10-09 Intel Corporation Method and apparatus for run-time in-memory patching of code from a service processor
WO2008055156A2 (en) 2006-10-30 2008-05-08 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
JP2008129714A (ja) 2006-11-17 2008-06-05 Univ Of Tsukuba 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法
IL181426A (en) 2007-02-19 2011-06-30 Deutsche Telekom Ag Automatic removal of signatures for malware
US20080215925A1 (en) 2007-03-02 2008-09-04 International Business Machines Corporation Distributed fault injection mechanism
EP2145252A4 (en) 2007-04-03 2011-12-21 Ldra Technology Inc AUTOMATED MANAGEMENT OF SOFTWARE REQUEST VERIFICATION
US8336102B2 (en) 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
JP4938576B2 (ja) 2007-07-24 2012-05-23 日本電信電話株式会社 情報収集システムおよび情報収集方法
CN101154258A (zh) 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析***与方法
US7971044B2 (en) 2007-10-05 2011-06-28 Qualcomm Incorporated Link stack repair of erroneous speculative update
US8627287B2 (en) 2007-11-29 2014-01-07 Microsoft Corporation Prioritizing quality improvements to source code
US7453910B1 (en) 2007-12-18 2008-11-18 International Business Machines Corporation Synchronization of independent clocks
US8434151B1 (en) 2008-01-04 2013-04-30 International Business Machines Corporation Detecting malicious software
US8261326B2 (en) 2008-04-25 2012-09-04 International Business Machines Corporation Network intrusion blocking security overlay
US8307191B1 (en) 2008-05-09 2012-11-06 Vmware, Inc. Page fault handling in a virtualized computer system
JP2009282180A (ja) 2008-05-21 2009-12-03 Olympus Imaging Corp 観察光学系及びそれを用いた撮像装置
US8407523B2 (en) 2008-06-06 2013-03-26 Iti Scotland Limited Method for protecting software programs
KR101038167B1 (ko) 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
WO2010067703A1 (ja) 2008-12-08 2010-06-17 日本電気株式会社 データ依存関係解析装置、情報処理装置、データ依存関係解析方法、及びプログラム
JP2010257150A (ja) 2009-04-23 2010-11-11 Ntt Docomo Inc 不正処理検知装置、不正処理検知方法及びプログラム
KR101269549B1 (ko) 2009-05-08 2013-06-04 한국전자통신연구원 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
JP2011059930A (ja) 2009-09-09 2011-03-24 Nec Computertechno Ltd 電源ユニット
US9230455B2 (en) 2009-12-11 2016-01-05 Digital Immunity Llc Steganographic embedding of executable code
KR101798672B1 (ko) 2009-12-11 2017-11-16 토마스 에이치 프로버트 코드 불변식을 이용한 스테가노그래픽 메시징 시스템
JP5499805B2 (ja) 2010-03-19 2014-05-21 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法並びに情報処理プログラム
CN102012987B (zh) 2010-12-02 2013-03-13 李清宝 自动二进制恶意代码行为分析***
US8464102B2 (en) 2010-12-23 2013-06-11 GM Global Technology Operations LLC Methods and systems for diagnosing hardware and software faults using time-stamped events
US8595610B2 (en) 2011-01-25 2013-11-26 Infineon Technologies Ag Method, software and computer system for manipulating aggregated data
US8615640B2 (en) 2011-03-17 2013-12-24 Lsi Corporation System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
US8495581B2 (en) 2011-05-05 2013-07-23 International Business Machines Corporation Code evaluation based on failure prediction
CN103765820B (zh) 2011-09-09 2016-10-26 惠普发展公司,有限责任合伙企业 基于依照事件序列中时间位置的参考基线评估事件的***和方法
US8788627B2 (en) 2011-09-30 2014-07-22 Apple Inc. Interactive web application framework
US8984478B2 (en) 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
WO2013063474A1 (en) 2011-10-28 2013-05-02 Scargo, Inc. Security policy deployment and enforcement system for the detection and control of polymorphic and targeted malware
BR112014011612B1 (pt) * 2011-11-15 2021-08-31 Japan Science And Technology Agency Sistema de provisão de serviço de análise/verificação de dados, método de controlar o mesmo e meio de armazenamento legível por computador
US9372991B2 (en) 2012-03-06 2016-06-21 International Business Machines Corporation Detecting malicious computer code in an executing program module
US8792498B2 (en) 2012-03-23 2014-07-29 Wind River Systems, Inc. System and method for enhanced updating layer-2 bridge address table on asymmetric multiprocessing systems
US9043903B2 (en) * 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
EP2881877A4 (en) 2012-08-01 2016-08-03 Mitsubishi Electric Corp PROGRAM EXECUTION DEVICE AND PROGRAM ANALYSIS DEVICE
US9201720B2 (en) 2012-08-13 2015-12-01 Nxp B.V. FlexRay network runtime error detection and containment
US9882984B2 (en) 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
GB2520987B (en) * 2013-12-06 2016-06-01 Cyberlytic Ltd Using fuzzy logic to assign a risk level profile to a potential cyber threat
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
CA2953787C (en) 2014-06-24 2021-07-20 Virsec Systems, Inc. Automated root cause analysis of single or n-tiered applications
US9699205B2 (en) * 2015-08-31 2017-07-04 Splunk Inc. Network security system
AU2017285429B2 (en) 2016-06-16 2022-03-31 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
WO2015038944A1 (en) * 2013-09-12 2015-03-19 Virsec Systems, Inc. Automated runtime detection of malware
WO2015200046A1 (en) * 2014-06-27 2015-12-30 Qualcomm Incorporated Dynamic patching of multiple, functionally equivalent variations of various software modules for security reasons

Also Published As

Publication number Publication date
US11409870B2 (en) 2022-08-09
JP2019519056A (ja) 2019-07-04
EP3472746A1 (en) 2019-04-24
WO2017218872A1 (en) 2017-12-21
CA3027728A1 (en) 2017-12-21
JP6949951B2 (ja) 2021-10-13
KR20190035686A (ko) 2019-04-03
EP3472746B1 (en) 2020-05-13
AU2017285429A1 (en) 2019-01-24
US20190138725A1 (en) 2019-05-09
AU2017285429B2 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
KR102419574B1 (ko) 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법
US11599634B1 (en) System and methods for run time detection and correction of memory corruption
AU2018204262B2 (en) Automated code lockdown to reduce attack surface for software
JP7046111B2 (ja) マルウェアのランタイム中の自動検出
US11494484B2 (en) Leveraging instrumentation capabilities to enable monitoring services
US11870811B2 (en) Trusted execution security policy platform
US9230100B2 (en) Securing anti-virus software with virtualization
Araujo et al. Embedded honeypotting
Zhang et al. DRSA: Debug Register-Based Self-relocating Attack Against Software-Based Remote Authentication
Yin Malware detection and analysis via layered annotative execution
Laventure et al. Lemona: Towards an open architecture for decentralized forensics analysis
Marco et al. Emerging Trends in ICT Security: Chapter 21. Security through Emulation-Based Processor Diversification
Kittel Design and Implementation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant