KR20170108019A - 메모리 모니터링을 통한 데이터 흐름 추적 - Google Patents

메모리 모니터링을 통한 데이터 흐름 추적 Download PDF

Info

Publication number
KR20170108019A
KR20170108019A KR1020177020895A KR20177020895A KR20170108019A KR 20170108019 A KR20170108019 A KR 20170108019A KR 1020177020895 A KR1020177020895 A KR 1020177020895A KR 20177020895 A KR20177020895 A KR 20177020895A KR 20170108019 A KR20170108019 A KR 20170108019A
Authority
KR
South Korea
Prior art keywords
behavior
operations
processor
memory
monitoring
Prior art date
Application number
KR1020177020895A
Other languages
English (en)
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 KR20170108019A publication Critical patent/KR20170108019A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • 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
    • 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
    • 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/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)

Abstract

컴퓨팅 디바이스에서 데이터 흐름들을 추적하기 위한 방법들 및 디바이스들은 오염된 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 컴퓨팅 디바이스의 하드웨어 컴포넌트에서 메모리를 모니터링하는 것, 식별된 판독 동작 후에 수행된 동작들의 제 1, 제 2, 및 제 3 수를 식별하기 위하여 휴리스틱들을 이용하는 것, 동작들의 제 1 수 후에, 그리고 동작들의 제 2 수 전에 수행된 기록 동작들의 메모리 어드레스들을 오염된 것으로서 표기하는 것, 동작들의 제 3 수 후에, 그리고 동작들의 제 2 수 전에 수행된 기록 동작들의 메모리 어드레스들을 비오염된 것으로서 표기하는 것을 포함한다.

Description

메모리 모니터링을 통한 데이터 흐름 추적{DATA FLOW TRACKING VIA MEMORY MONITORING}
셀룰러 및 무선 통신 기술들은 과거 몇 년에 걸쳐 폭발적인 성장을 보였다. 이 성장은 더욱 양호한 통신들, 하드웨어, 더욱 대형의 네트워크들, 및 더욱 신뢰성 있는 프로토콜들에 의해 추진되었다. 무선 서비스 제공자들은 지금, 특징들 및 서비스들의 계속 팽창하는 배열을 그 고객들에게 제안할 수 있고, 정보, 자원들, 및 통신들에 대한 전례없는 레벨들의 액세스를 사용자들에게 제공할 수 있다. 이 서비스 개량들과 보조를 맞추기 위하여, 이동 전자 디바이스들 (예를 들어, 셀룰러 폰들, 태블릿들, 랩톱들 등) 은 이전 보다 더욱 강력하고 복잡해졌다. 이 복잡성은 악성 (malicious) 소프트웨어, 소프트웨어 충돌들, 하드웨어 고장들, 및 이동 디바이스의 장기간 그리고 계속된 성능 및 전력 사용 레벨들에 부정적으로 영향을 주기 위한 다른 유사한 에러들 또는 현상들에 대한 새로운 기회들을 만들었다. 따라서, 이동 디바이스의 장기간 그리고 계속된 성능 및 전력 사용 레벨들에 부정적으로 영향을 줄 수도 있는 조건들 및/또는 이동 디바이스 거동 (behavior) 들을 식별하고 정정하는 것은 소비자들에게 유익하다.
다양한 양태들은 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법들을 포함하고, 이 방법들은 오염된 (tainted) 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 메모리를 모니터링하는 단계, 식별된 판독 동작 후에 수행된 동작들의 제 1 수를 식별하는 오프셋 값 (O), 동작들의 제 1 수 후에 수행된 동작들의 제 2 수를 식별하는 모니터링 윈도우 값 (M), 및 동작들의 제 1 수 후에 수행된 동작들의 제 3 수를 식별하는 상부 경계 값 (N) 을 결정하는 단계, M 동작들이 수행되는 것 및 비오염된 (untainted) 어드레스들에 대한 N 기록 동작들이 식별되는 것 중의 하나가 될 때까지 동작들을 모니터링하는 단계, 식별된 기록 동작들과 연관된 메모리 어드레스들을 오염된 것으로서 표기하는 단계, 및 N 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들, 및 M 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들을 비오염된 것으로서 표기하는 단계를 포함할 수도 있다.
양태에서, 방법은 동작들의 제 1 (O), 제 2 (M), 및 제 3 (N) 수를 식별하기 위하여 휴리스틱 (heuristic) 들을 이용하는 단계를 포함할 수도 있다. 추가의 양태에서, 방법은 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 소프트웨어 애플리케이션을 식별하는 단계, 및 소프트웨어 애플리케이션이 비-양성 (non-benign) 인지 여부를 결정하기 위하여 컴퓨팅 디바이스에서 수집된 거동 정보를 분류기 모델에서의 부스팅된 판단 스텀프 (boosted decision stump) 들에 적용하는 단계를 포함할 수도 있다. 추가의 양태에서, 방법은 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 1 소프트웨어 애플리케이션을 식별하는 단계, 및 제 1 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 단계를 포함할 수도 있다.
추가의 양태에서, 방법은 모니터링된 API 호출들에 기초하여 거동 벡터 정보 구조를 생성하는 단계, 거동-기반 분석 결과들을 생성하기 위하여 거동 벡터 정보 구조를 분류기 모델에 적용하는 단계, 및 제 1 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위하여 거동-기반 분석 결과들을 이용하는 단계를 포함할 수도 있다. 추가의 양태에서, 방법은 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 2 소프트웨어 애플리케이션을 식별하는 단계, 및 제 2 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 단계를 포함할 수도 있다.
추가의 양태에서, 방법은 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 거동 벡터 정보 구조를 생성하는 단계, 거동-기반 분석 결과들을 생성하기 위하여 거동 벡터 정보 구조를 분류기 모델에 적용하는 단계, 및 제 1 및 제 2 소프트웨어 애플리케이션들의 거동이 비-양성인지 여부를 결정하기 위하여 거동-기반 분석 결과들을 이용하는 단계를 포함할 수도 있다. 추가의 양태에서, 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 거동 벡터 정보 구조를 생성하는 단계는 제 1 및 제 2 소프트웨어 애플리케이션들의 집합적 거동을 특징화하는 정보 구조를 생성하는 단계를 포함할 수도 있다. 추가의 양태에서, 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 거동 벡터 정보 구조를 생성하는 단계는 제 1 및 제 2 소프트웨어 애플리케이션들 사이의 관계를 특징화하는 정보 구조를 생성하는 단계를 포함할 수도 있다.
추가적인 양태들은 프로세서-실행가능 소프트웨어 명령들을 그 상에 저장한 비-일시적 컴퓨터 판독가능 저장 매체를 포함할 수도 있고, 상기 프로세서-실행가능 소프트웨어 명령들은, 컴퓨팅 디바이스의 프로세서로 하여금, 오염된 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 메모리를 모니터링하는 것, 식별된 판독 동작 후에 수행된 동작들의 제 1 수를 식별하는 오프셋 값 (O), 동작들의 제 1 수 후에 수행된 동작들의 제 2 수를 식별하는 모니터링 윈도우 값 (M), 및 동작들의 제 1 수 후에 수행된 동작들의 제 3 수를 식별하는 상부 경계 값 (N) 을 결정하는 것, M 동작이 수행되는 것 및 비오염된 어드레스들에 대한 N 기록 동작들이 식별되는 것 중의 하나가 될 때까지 동작들을 모니터링하는 것, 식별된 기록 동작들과 연관된 메모리 어드레스들을 오염된 것으로서 표기하는 것, 및 N 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들, 및 M 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들을 비오염된 것으로서 표기하는 것을 포함하는 동작들을 수행하게 하도록 구성될 수도 있다.
양태에서, 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 동작들의 제 1, 제 2, 및 제 3 수를 식별하기 위하여 휴리스틱들을 이용하는 것을 더 포함하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 소프트웨어 애플리케이션을 식별하는 것, 및 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위하여 컴퓨팅 디바이스에서 수집된 거동 정보를 분류기 모델에서의 부스팅된 판단 스텀프들에 적용하는 것을 더 포함하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 1 소프트웨어 애플리케이션을 식별하는 것, 및 제 1 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 것을 더 포함하는 동작들을 수행하게 하도록 구성될 수도 있다.
추가의 양태에서, 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 모니터링된 API 호출들에 기초하여 거동 벡터 정보 구조를 생성하는 것, 거동-기반 분석 결과들을 생성하기 위하여 거동 벡터 정보 구조를 분류기 모델에 적용하는 것, 및 제 1 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위하여 거동-기반 분석 결과들을 이용하는 것을 더 포함하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 2 소프트웨어 애플리케이션을 식별하는 것, 및 제 2 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 것을 더 포함하는 동작들을 수행하게 하도록 구성될 수도 있다.
추가의 양태에서, 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 거동 벡터 정보 구조를 생성하는 것, 거동-기반 분석 결과들을 생성하기 위하여 거동 벡터 정보 구조를 분류기 모델에 적용하는 것, 및 제 1 및 제 2 소프트웨어 애플리케이션들의 거동이 비-양성인지 여부를 결정하기 위하여 거동-기반 분석 결과들을 이용하는 것을 더 포함하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 거동 벡터 정보 구조를 생성하는 것이 제 1 및 제 2 소프트웨어 애플리케이션들의 집합적 거동을 특징화하는 정보 구조를 생성하는 것을 포함하도록, 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 거동 벡터 정보 구조를 생성하는 것이 제 1 및 제 2 소프트웨어 애플리케이션들 사이의 관계를 특징화하는 정보 구조를 생성하는 것을 포함하도록, 동작들을 수행하게 하도록 구성될 수도 있다.
추가의 양태들은, 오염된 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 메모리를 모니터링하는 것, 식별된 판독 동작 후에 수행된 동작들의 제 1 수를 식별하는 오프셋 값 (O), 동작들의 제 1 수 후에 수행된 동작들의 제 2 수를 식별하는 모니터링 윈도우 값 (M), 및 동작들의 제 1 수 후에 수행된 동작들의 제 3 수를 식별하는 상부 경계 값 (N) 을 결정하는 것, M 동작들이 수행되는 것 및 비오염된 어드레스들에 대한 N 기록 동작들이 식별되는 것 중의 하나가 될 때까지 동작들을 모니터링하는 것, 식별된 기록 동작들과 연관된 메모리 어드레스들을 오염된 것으로서 표기하는 것, 및 N 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들, 및 M 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들을 비오염된 것으로서 표기하는 것을 포함할 수도 있는 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성된 프로세서를 포함하는 컴퓨팅 디바이스를 포함한다.
양태에서, 프로세서는 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 1 소프트웨어 애플리케이션을 식별하는 것, 제 1 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 것, 모니터링된 API 호출들에 기초하여 거동 벡터 정보 구조를 생성하는 것, 거동-기반 분석 결과들을 생성하기 위하여 거동 벡터 정보 구조를 분류기 모델에 적용하는 것, 및 제 1 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위하여 거동-기반 분석 결과들을 이용하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성될 수도 있다.
추가의 양태들은 위에서 논의된 방법 동작들의 기능들을 수행하기 위한 다양한 수단을 가지는 컴퓨팅 디바이스를 포함한다.
본원에 편입되며 이 명세서의 일부를 구성하는 첨부한 도면들은 발명의 예시적인 양태들을 예시하고, 위에서 주어진 일반적인 설명 및 이하에서 주어진 상세한 설명과 함께, 발명의 특징들을 설명하도록 작용한다.
도 1 은 다양한 양태들을 구현하기 위해 적당한 일 예의 시스템 온 칩의 아키텍처 도면이다.
도 2 는 양태에 따라 데이터 흐름들을 추적하도록 구성된 일 양태의 이동 디바이스에서 일 예의 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 3 은 양태에 따라 컴퓨팅 디바이스에 의해 오염되거나 비오염된 것으로서 표기될 수 있는 일 예의 메모리 어드레스들의 예시도이다.
도 4 및 도 5 는 양태에 따라 데이터 흐름들을 추적하는 방법을 예시하는 프로세스 흐름도들이다.
도 6 은 또 다른 양태에 따라 데이터 흐름들을 추적하는 방법을 예시하는 프로세스 흐름도이다.
도 7 은 다양한 양태들과 함께 이용하기 위해 적당한 일 예의 이동 디바이스의 예시도이다.
다양한 양태들은 동반된 도면들을 참조하여 상세하게 설명될 것이다. 가능한 경우마다, 동일한 참조 번호들은 동일하거나 유사한 부분들을 지칭하기 위하여 도면들의 전반에 걸쳐 이용될 것이다. 특정한 예들 및 구현예들에 대해 행해진 참조들은 예시적인 목적들을 위한 것이고, 발명 또는 청구항들의 범위를 제한하도록 의도된 것은 아니다.
요약하면, 다양한 양태들은 데이터를 부적당하게 이용 (예컨대, 주소록 데이터를 판독하고 그것을 서버로 전송함) 하고 있는 소프트웨어 애플리케이션들 및/또는 이와 다르게 비-양성 (예컨대, 악성, 열악하게 기록됨, 디바이스와 호환불가능 등) 인 소프트웨어 애플리케이션들을 신속하고 효율적으로 식별하기 위하여 이동 및 자원-제약된 컴퓨팅 디바이스들에 의한 이용을 위해 적당한 효율적인 데이터 추적 솔루션들을 제공하기 위하여 휴리스틱들 및 머신 학습 (machine learning) 기법들을 이용하는 방법들을 포함한다.
양태에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스가 근접 모니터링 (close monitoring) 을 할 형편이 되어야 하는 메모리 어드레스들을 선택하는 것을 식별하거나 가능하게 하는 정보로 사전-구성될 수도 있다. 컴퓨팅 디바이스는 (예컨대, 메모리 어드레스들을 오염 리스트에 추가함으로써) 메모리 어드레스들을 "오염된" 것으로서 표기하고, 오염된 메모리 어드레스 (즉, 오염된 것으로서 표기된 메모리 어드레스) 로부터 정보를 판독하는 소프트웨어 애플리케이션들을 식별하기 위하여 컴퓨팅 디바이스에서 거동들, 활동들, 또는 동작들을 모니터링하고, 식별된 소프트웨어 애플리케이션들을 근접 모니터링 또는 추가적인 검토를 요구하는 것으로서 분류하고, 오염된 것으로서 표기되어야 하는 추가적인 메모리 어드레스들을 식별하기 위하여, 및/또는 "비오염" (예컨대, 오염 리스트로부터 제거됨, 더 이상 근접 모니터링을 요구하지 않는 것으로서 표기됨 등) 되어야 하는 오염된 메모리 어드레스들을 식별하기 위하여 오염-전파 휴리스틱 (taint-propagation heuristic) 을 적용하도록 구성될 수도 있다. 그 다음으로, 컴퓨팅 디바이스는 근접 모니터링 또는 추가적인 검토를 요구하는 추가적인 소프트웨어 애플리케이션들을 식별하기 위하여 오염된 메모리 어드레스들을 모니터링할 수도 있다. 양태에서, 오염된 어드레스 액세스에 후속하는 메모리 액세스 동작들 (예컨대, 정보를 오염된 메모리에 기록하거나 오염된 메모리로부터 정보를 판독하는 동작들 등) 의 모니터링은 동작들의 세트 또는 구성가능한 수에 대한 하드웨어 모듈에서 수행될 수도 있다. 이 동작들은 디바이스의 성능 또는 전력 소비에 대해 상당한 부정적인 영향을 부과하지 않으면서 비-양성 소프트웨어 애플리케이션들을 식별하기 위하여 컴퓨팅 디바이스에서 반복적으로 또는 연속적으로 수행될 수도 있다.
양태에서, 컴퓨팅 디바이스는 오염된 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 그 메모리들을 모니터링하도록 구성될 수도 있다. 양태에서, 판독 동작들의 이 모니터링은 거동 모니터링 시스템의 일부와 같은 소프트웨어에서 수행될 수도 있다. 이러한 판독 동작을 식별하는 것에 응답하여, 컴퓨팅 디바이스는 동작들의 제 1 수 (예컨대, 동작들의 "오프셋" 또는 "O" 수), 동작들의 제 2 수 (예컨대, 동작들의 모니터링 윈도우 또는 "M" 수), 및 동작들의 제 3 수 (예컨대, 동작들의 상부 경계 또는 "N" 수) 를 연산하거나 결정하기 위하여 오염 전파 휴리스틱을 이용할 수도 있다.
동작들의 제 1 수 (O) 는 컴퓨팅 디바이스가 그것이 메모리 어드레스들을 오염된 것으로서 표기하기 시작하기 전에 무시할 수 있는 검출된 판독 동작 후의 동작들의 수를 식별할 수도 있다. 동작들의 오프셋 수 (O) 전에, 또 다른 메모리 어드레스에 기록하는 악성 동작들의 가능성은 낮고, 따라서, 컴퓨팅 디바이스 (예컨대, 메모리 모니터링 모듈) 는 프로세싱 및 배터리 자원들을 절감하기 위하여 O 번째 동작 후까지 메모리 어드레스들을 표기하는 것을 시작하지 않는 것으로 결정할 수 있다. 동작들의 제 2 수 (M) 는 컴퓨팅 디바이스가 기록 동작들에 대하여 모니터링할 수도 있는 O 번째 동작 후의 동작들 (예컨대, 판독, 기록, 추가, 시프트, 분기 등) 의 수를 식별함으로써 모니터링 윈도우를 식별할 수도 있다. 동작들의 제 3 수 (N) 는 컴퓨팅 디바이스가 훈련된 것으로서 표기할 수도 있는 (예컨대, 동작들의 M 수에서의) 모니터링 윈도우 내의 기록 동작들의 수에 대한 상부 경계를 정의할 수도 있다.
예시적인 예로서, 컴퓨팅 디바이스는 O, M, 및 N 의 값들이 각각 10, 100, 및 4 이어야 하는 것으로 결정하기 위하여 오염 전파 휴리스틱을 이용할 수도 있다. 그 다음으로, 컴퓨팅 디바이스는 오염된 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별할 수도 있고, 검출된 판독 동작 후에 수행된 제 1 의 10 동작들 (즉, O 동작들) 을 무시할 수도 있고, 비오염된 어드레스들에 대한 제 1 의 4 기록 동작들 (즉, 제 1 의 N 동작들) 을 식별하기 위하여 다음의 100 동작들 (즉, M 동작들) 을 모니터링할 수도 있다. 컴퓨팅 디바이스는 어느 쪽이 먼저 발생하든, 그것이 모니터링 윈도우에서 4 번째 (즉, N 번째) 기록 동작을 식별한 후에, 또는 모니터링 윈도우의 100 동작들이 수행된 후에, 비오염된 어드레스들에 대한 기록 동작들을 모니터링하는 것을 정지할 수도 있다. 예를 들어, 모니터링 윈도우의 100 동작들에서 오직 세 개 (3) 의 기록 동작들이 있을 경우, 컴퓨팅 디바이스는 모든 100 동작들을 모니터링할 것이다. 다른 한편으로, 모니터링 윈도우에서의 제 2, 제 4, 제 8, 및 제 10 동작들이 비오염된 어드레스들에 대한 기록 동작들일 경우, 컴퓨팅 디바이스는 제 10 동작 후에 (즉, N 번째 동작 후에) 비오염된 어드레스들에 대한 모니터링 동작들을 정지할 것이다. 컴퓨팅 디바이스는 모니터링 윈도우에서의 이 식별된 기록 동작들 (최대한으로 N 동작들) 과 연관된 메모리 어드레스들을 오염된 것으로서 표기할 수도 있다. 게다가, 컴퓨팅 디바이스는 기록 동작들이 모니터링 윈도우 (M) 내에서 발생하는지 여부에 관계 없이, N 번째 기록 동작 후에 (예컨대, 상기 예에서의 4 번째 동작 후에) 발생하는 모든 기록 동작들을 비오염된 것으로서 표기할 수도 있다. 다르게 말하면, 컴퓨팅 디바이스는 모니터링 윈도우 (M) 에서의 N 번째 동작 후에 수행된 모든 기록 동작들 및 모니터링 윈도우 (M) 의 외부의 모든 기록 동작들을 비오염된 것으로서 표기할 수도 있다.
양태에서, 메모리 액세스 동작들의 모니터링은 컴퓨팅 디바이스의 하드웨어 컴포넌트에서 수행될 수도 있다. 오염된 어드레스가 판독되었다는 것을 인식하는 소프트웨어 모듈은 M 동작들이 수행될 때까지 O 동작들 후에 메모리 동작들을 트리거링하는 것을 시작하기 위하여 (예컨대, 애플리케이션 프로그래밍 인터페이스 (application programming interface; API) 를 통해) 메모리 모니터링 하드웨어 모듈을 트리거링할 수도 있다. 대안적으로 또는 추가적으로, 컴퓨팅 디바이스에서의 동일하거나 상이한 컴포넌트들은 오염된 메모리 어드레스들에 대한 모든 메모리 판독 및 기록 동작들을 모니터링할 수도 있고, 오염된 메모리 어드레스들에 대한 기록들을 식별할 수도 있고, 이 메모리 어드레스들을 비오염된 것으로서 표기할 수도 있다.
상기 설명된 오염 전파 휴리스틱을 구현하고 이용함으로써, 컴퓨팅 디바이스는 그 실행시간 시스템에 대한 임의의 수정들 없이, 데이터가 시스템을 통해 흐를 때에 데이터를 추적할 수도 있다. (기존의 솔루션들에 의해 요구된) 실행시간 시스템에 대한 이러한 수정들은 컴퓨팅 디바이스의 성능 및 전력 소비에 대한 상당한 그리고 부정적인 영향을 가질 수도 있으므로, 오염 전파 휴리스틱 (taint propagation heuristic) 의 이용은 (예컨대, 그 성능 및 전력 소비 특성들을 개선시킴으로써) 컴퓨팅 디바이스의 작용을 개선시킬 수도 있다. 게다가, 오염 전파 휴리스틱을 이용함으로써, 컴퓨팅 디바이스는 메모리 어드레스들을 선택하기 위하여 판독 및 기록 동작들을 식별함으로써, 데이터가 (예컨대, 소스 컴포넌트 (source component) 와 싱크 컴포넌트 (sink component) 사이에서) 시스템을 통해 흐를 때에 데이터를 추적할 수도 있다. 이것은 컴퓨팅 디바이스가 식별자들 또는 (기존의 데이터 흐름 추적 솔루션들에 의해 요구되는) 추적/오염 정보로 데이터를 주석부기 (annotate) 하거나, 표기하거나, 또는 추적하기 위한 동작들과 같은 복잡하거나 전력-집약적 동작들을 수행하지 않으면서 데이터 흐름들을 추적하는 것을 허용한다. 이것은 컴퓨팅 디바이스의 성능 및 전력 소비 특성들을 추가로 개선시킨다.
용어가 본원에서 이용되는 바와 같이, "소스 컴포넌트" 는 데이터를 생성하고 및/또는 데이터를 평가되고 있는 소프트웨어 애플리케이션으로 입력하는 임의의 컴포넌트를 지칭한다. 소스 컴포넌트들의 예들은 파일들, 소프트웨어 애플리케이션들 (예컨대, 주소록 애플리케이션 등), 원격 프로세스들, 외부 서버들, 시스템 서비스들 등을 포함한다. "싱크 컴포넌트" 는 데이터가 소프트웨어 애플리케이션에 의해 프로세싱된 후에 데이터를 소비하거나 이용하는 임의의 컴포넌트를 지칭한다. 싱크 컴포넌트들의 예들은 파일들, 데이터베이스들, 전자 디스플레이들, 네트워크 접속들, 및 송신 포인트들 예컨대, 인터넷, HTTP, 텍스트 메시지들, Bluetooth® 트랜시버 등을 포함한다.
용어들 "이동 컴퓨팅 디바이스" 및 "이동 디바이스" 는 셀룰러 전화들, 스마트폰들, 개인용 또는 이동 멀티-미디어 플레이어들, 개인 정보 단말 (personal data assistant; PDA) 들, 랩톱 컴퓨터들, 태블릿 컴퓨터들, 스마트북 (smartbook) 들, 울트라북 (ultrabook) 들, 팜-톱 (palm-top) 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 가능형 셀룰러 전화들, 무선 게임용 제어기들과, 메모리, 성능이 중요한 프로그래밍가능 프로세서를 포함하는 유사한 개인용 전자 디바이스들 중의 임의의 하나 또는 전부를 지칭하기 위하여 본원에서 상호 교환가능하게 이용된다. 다양한 양태들은 스마트폰들과 같은, 제한된 자원들을 가지며 배터리 전력으로 작동되는 이동 컴퓨팅 디바이스들을 위하여 특히 유용하지만, 양태들은 일반적으로, 프로세서를 포함하며 애플리케이션 프로그램들을 실행하는 임의의 전자 디바이스에서 유용하다.
용어 "실행시간 시스템" 은 그 디바이스에서의 애플리케이션 프로그램의 실행을 지원하는 컴퓨팅 디바이스에서의 소프트웨어 및/또는 하드웨어 자원들의 조합을 지칭하기 위하여 본원에서 이용된다. 예를 들어, 실행시간 시스템은 컴퓨팅 디바이스의 프로세싱 자원들, 오퍼레이팅 시스템들, 라이브러리 모듈들, 스케줄러들, 프로세스들, 스레드 (thread) 들, 스택 (stack) 들, 카운터들, 및/또는 다른 유사한 컴포넌트들의 전부 또는 부분들을 포함할 수도 있다. 실행시간 시스템은 연산 자원들을 애플리케이션 프로그램에 할당하는 것, 할당된 자원들을 제어하는 것, 및 애플리케이션 프로그램의 동작들을 수행하는 것을 담당할 수도 있다.
용어 "성능 열화" 는 더 긴 프로세싱 시간들, 더 느린 실시간 응답성, 더 낮은 배터리 수명, 사적 데이터의 손실, 악의적인 경제적 활동 (예컨대, 비인가된 고급 SMS 메시지의 전송), 서비스 거부 (denial of service; DoS), 열악하게 기록되거나 지정된 소프트웨어 애플리케이션들, 악성 소프트웨어, 멀웨어 (malware), 바이러스들, 프래그먼트화된 메모리, 이동 디바이스를 멋대로 사용하는 것 또는 스파이 (spy) 또는 봇넷 (botnet) 활동들을 위하여 폰을 사용하는 것과 관련된 동작들 등과 같은, 광범위한 바람직하지 않은 이동 디바이스 동작들 및 특성들을 지칭하기 위하여 본원에서 이용된다. 또한, 이 이유들 중의 임의의 것으로 성능을 열화시키는 애플리케이션들 및 조건들은 "비-양성" 또는 "비-양성" 으로서 본원에서 지칭된다.
일반적으로, 이동 디바이스의 성능, 전력 효율, 및 보안성은 시간 경과에 따라 열화된다. 최근에는, 안티-바이러스 (anti-virus) 회사들 (예컨대, McAfee, Symantec 등) 이 이 열화를 늦추는 것을 목적으로 하는 이동 안티-바이러스, 방화벽, 및 암호화 제품들을 판매하기 시작하였다. 그러나, 이 솔루션들 중의 다수는 이동 디바이스 상에서의 연산-집약적 스캐닝 엔진 (computationally-intensive scanning engine) 의 주기적 실행에 의존하고, 이것은 이동 디바이스의 프로세싱 및 배터리 자원들 중의 다수를 소비할 수도 있고, 연장된 시간 주기들 동안에 이동 디바이스를 느리게 하거나 이동 디바이스를 쓸모없게 할 수도 있고, 및/또는 이와 다르게 사용자 경험을 열화시킬 수도 있다. 게다가, 이 솔루션들은 알려진 바이러스들 및 멀웨어 (malware) 를 검출하는 것으로 전형적으로 제한되고, (예컨대, 성능 열화가 바이러스들 또는 멀웨어에 의해 야기되지 않을 때) 시간 경과에 따른 이동 디바이스의 열화에 기여하기 위하여 종종 조합되는 다수의 복잡한 인자들 및/또는 상호작용들을 다루지는 않는다. 이러한 그리고 다른 이유들로 인해, 현존하는 안티-바이러스, 방화벽, 및 암호화 제품들은 시간 경과에 따른 이동 디바이스의 열화에 기여할 수도 있는 많은 인자들을 식별하거나, 이동 디바이스 열화를 방지하거나, 또는 노화된 이동 디바이스를 그 원래의 상태로 효율적으로 복원시키기 위한 적절한 솔루션들을 제공하지 않는다.
다양한 양태들에서, 컴퓨팅 디바이스 (예컨대, 이동 또는 자원-제약된 컴퓨팅 디바이스) 는 시간 경과에 따라 컴퓨팅 디바이스의 성능 및/또는 전력 사용 레벨들을 종종 열화시키는 조건들, 인자들, 및/또는 거동들을 지능적으로 그리고 효율적으로 식별하고, 방지하고, 및/또는 정정하기 위하여 거동 분석 및 머신 학습 기법들을 이용하도록 구성되는 거동-기반 보안 시스템을 구비할 수도 있다. 예를 들어, 거동-기반 보안 시스템은 소프트웨어 애플리케이션, 프로세스, 활동, 또는 디바이스 거동이 양성 또는 비-양성인지 여부를 신속하게 그리고 효율적으로 결정하기 위하여 거동 분석 기법들을 이용할 수도 있다. 그 다음으로, 거동-기반 보안 시스템은, 컴퓨팅 디바이스로 하여금, 식별된 문제들 (예컨대, 비-양성인 것으로 결정된 거동들) 을 정정하거나, 치유하거나, 고치거나, 격리시키거나, 또는 이와 다르게 고정하기 위하여 다양한 액션들 또는 동작들을 수행하게 할 수도 있다.
상기 언급된 거동-기반 보안 시스템은 시간 경과에 따른 컴퓨팅 디바이스의 성능 및 전력 사용 레벨들에서의 열화를 방지하기 위하여 일반적으로 매우 효과적이지만, 어떤 비-양성 거동들은 이러한 시스템들에 의한 검출을 회피할 수도 있다. 또한, 악성 소프트웨어 애플리케이션들은 그 동작들을 지연시킴으로써, 협력하여 작동함으로써, 또는 이와 다르게 악성 활동들을 마스킹함으로써, 이러한 시스템에 의한 검출을 모면하거나 회피하는 것을 시도할 수도 있다. 예를 들어, 사용자의 주소록으로부터 정보를 도난할 때, 악성 소프트웨어 애플리케이션은 주소록을 액세스함으로써, 주소록 정보를 인코딩함으로써, 그리고 주소록 파일로부터 분리되어 있는 별개의 파일에서 인코딩된 정보를 저장함으로써, 검출을 회피하는 것을 시도할 수도 있다. 그 다음으로, 악성 애플리케이션은 별개의 파일로부터 정보를 취출 (retrieve) 하여 정보를 서버로 전송하기 전에 며칠을 대기할 수도 있거나, 제 2 악성 애플리케이션이 정보를 취출할 수도 있고 정보를 서버로 전송할 수도 있다.
전형적으로, 거동-기반 보안 시스템은 동작들 (예컨대, 주소록 데이터를 판독하고, 저장하고, 송신하는 것) 의 상기 설명된 시퀀스가 디바이스의 정상적인 동작 패턴들과 부합하지 않는 것으로 결정할 수 있을 것이고, 이 거동을 비-양성으로서 분류할 수 있을 것이다. 그러나, 동작들은 상대적으로 긴 시간의 주기 동안에, 및/또는 협력하여 작동하는 다수의 소프트웨어 애플리케이션들에 의해 수행되므로, 거동-기반 보안 시스템은 이 동작들을 동일한 시퀀스 또는 거동의 일부인 것으로서 식별하는 것에 실패할 수도 있다.
컴퓨팅 디바이스는 거동-기반 보안 시스템과 함께 데이터 흐름 추적 솔루션을 구현하고 이용함으로써 상기 언급된 제한들을 극복할 수도 있다. 간단하게, FlowDroid 와 같은 데이터 흐름 추적 솔루션들은 민감한 소스 컴포넌트에 의해 생성된 데이터가 중요한 싱크 컴포넌트 (즉, 남용하기 쉽고, 중요한 것으로서 표기되는 등으로 결정된 컴포넌트) 에 도달하는지 여부를 결정하기 위한 메커니즘을 제공한다. 기존의 솔루션들을 이용하면, 데이터는 식별자들 (예컨대, 추적 또는 오염 정보) 로 주석부기되거나, 표기되거나, 또는 태그 (tag) 된다. 이 식별자들은 데이터를 프로세싱하거나, 이용하거나, 또는 통신하는 각각의 중간 컴포넌트에 의해 복제되고, 싱크 컴포넌트는 데이터가 인가된, 신뢰된, 승인된, 또는 적절한 소스 컴포넌트로부터 발신되는지 여부를 결정하기 위하여 이 식별자들을 이용한다.
예로서, 컴퓨팅 디바이스에서의 소스 컴포넌트는 소스 ID 값을, 그것이 만들거나, 생성하거나, 통신하는 데이터의 각각의 유닛에 연관시킬 수도 있다. 데이터의 그 유닛을 프로세싱하는 각각의 중간 컴포넌트는 데이터 유닛과 함께 소스 ID 값을 통신할 수도 있어서, 데이터 유닛 및 그 소스 ID 값의 양자는 그것들이 싱크 컴포넌트에서 수신될 때까지 시스템을 통해 전파한다. 싱크 컴포넌트는 데이터 유닛이 인가된, 신뢰된, 승인된, 또는 이와 다르게 적절한 소스 컴포넌트로부터 발신되는지 여부를 결정하기 위하여 소스 ID 값을 이용할 수도 있다. 컴퓨팅 디바이스는 데이터 유닛이 인가된, 신뢰된, 또는 승인된 소스 컴포넌트와 연관되지 않는 것으로 결정하는 것에 응답하여, 에러 메시지를 생성할 수도 있거나 예외를 던질 (throw an exception) 수도 있다.
상기 언급된 데이터 흐름 추적 솔루션은 비-양성 소프트웨어 애플리케이션들을 식별하기 위하여 일반적으로 효과적이지만, 그것은 다수의 최신 컴퓨팅 디바이스들 (예컨대, 이동 디바이스들 등) 에서의 이용을 위해 적당하지 않다. 이것은 최신 컴퓨팅 디바이스들이 고도로 구성가능하고 복잡한 시스템들이고 많은 수의 동작들 (판독들, 기록들, 데이터 인코딩, 데이터 송신들 등) 을 수행하는 다수의 컴포넌트들을 포함하기 때문이다. 그 결과, 컴퓨팅 디바이스에서 모니터링을 요구하는 많은 수의 데이터 흐름들이 있을 수도 있고, 이 데이터 흐름들의 각각은 다수의 상이한 중간 컴포넌트들을 통해 전파하는 큰 수의 데이터 유닛들을 포함할 수도 있다. 기존의 데이터 흐름 추적 솔루션을 이용하면, 컴퓨팅 디바이스는 이 데이터 유닛들의 다수 또는 전부를 표기하거나, 모니터링하거나, 추적하거나, 또는 평가하도록 요구될 수도 있다. 종종, 이것은 컴퓨팅 디바이스가 많은 수의 복잡하고 전력-집약적 동작들을 수행하는 것을 요구한다. 이러한 동작들은 디바이스의 성능 및 전력 소비 특성들에 대해 상당한 그리고 부정적인 영향을 가질 수도 있다.
컴퓨팅 디바이스는, 추적을 요구하는 데이터 흐름들의 수를 감소시키고, 및/또는 디바이스 거동들을 분석할 때에 표기하고, 모니터링하고, 추적하고, 평가하는 것을 요구하는 데이터 유닛들의 수를 감소시키는 오염 추적 솔루션을 구현하고 이용함으로써, 상기 언급된 제한들을 극복할 수도 있다.
일반적으로, 오염 추적은 컴퓨팅 디바이스의 실행시간 시스템 또는 가상 머신이 어떤 컴포넌트들, 동작들, 또는 메모리 로케이션들을 "오염된" 것으로서 표기하도록 수정되는 데이터 흐름 추적 기법이다. 그 다음으로, 실행시간 시스템 또는 가상 머신은 이 오염된 자원들을 이용하는 컴포넌트들을 식별하기 위하여 오염된 컴포넌트들, 동작들, 또는 메모리 로케이션들을 모니터링할 수도 있다. 예를 들어, 컴퓨팅 디바이스는 민감한 소스 컴포넌트에 의해 이용되는 메모리 로케이션을 오염된 것으로서 표기하고, 오염된 메모리로부터 정보를 판독하는 중간 소프트웨어 애플리케이션 또는 프로세스를 식별하기 위하여 오염된 메모리 로케이션을 모니터링하고, 식별된 중간 애플리케이션/프로세스에 의해 이용된 메모리 로케이션들을 오염된 것으로서 표기하는 등등을 행하도록 구성될 수도 있다. 이것은 시스템이 협력하여 작동하고 있는 소프트웨어 애플리케이션들과 같은 거동-기반 보안에 의한 검출을 이와 다르게 회피할 비-양성 거동들을 식별하는 것을 허용한다. 이것은 또한, 컴퓨팅 디바이스가 데이터 흐름을 추적할 때에 수행되도록 요구되는 복잡하고 전력-집약적인 동작들의 수를 감소시키기 위하여 디바이스에서의 선택된 수의 컴포넌트들, 동작들, 또는 메모리 로케이션들을 모니터링하는 것에 그 동작들을 포커싱하는 것을 허용한다.
오염 추적 솔루션들은 더 많은 기존의 데이터 흐름 추적 솔루션들의 제한들의 일부를 극복하지만, 현존하는 오염 추적 솔루션들은 다수의 최신 컴퓨팅 디바이스에서의 거동-기반 보안 솔루션의 일부로서의 이용을 위해 적당하지 않다. 먼저, 기존의 오염 추적 솔루션들은 컴퓨팅 디바이스의 실행시간 시스템 또는 가상 머신에 대한 수정들을 요구하고, 이러한 수정들은 컴퓨팅 디바이스의 성능 및 전력 소비 특성들에 대해 상당한 그리고 부정적인 영향을 가질 수도 있다. 게다가, 다수의 기존의 오염 추적 솔루션들은 오염된 컴포넌트와 연관된 모든 컴포넌트들, 동작들, 및 메모리 로케이션들을 또한 오염된 것으로서 표기하는 것을 요구하지만, 이 오염된 자원들이 비오염된 것으로서 재분류되어야 하는지 여부를 지능적으로 결정하지는 않는다. 그 결과, 시간 경과에 따른 이 솔루션들의 계속되거나 반복된 이용은 컴퓨팅 디바이스가 컴퓨팅 디바이스를 비-응답성으로 할 수도 있는 많은 수의 컴포넌트들을 식별하고, 표기하고, 태그하고, 모니터링하고, 및/또는 추적하는 것을 요구할 수도 있다. 또한, 다수의 현존하는 솔루션들은 컴퓨팅 디바이스가 디바이스의 프로세싱, 전력, 또는 메모리 자원들의 상당한 양을 소비할 수도 있는 매 저장 명령에 따라 식별자들 (즉, 추적/오염 정보) 을 동적으로 전파하기 위하여 복제된 변수들을 메타데이터로서 이용하고 및/또는 전체 또는 추가적인 명령 세트들을 구현하는 것을 요구한다.
모든 상기 설명된 이유들로, 기존의 오염 추적 솔루션들은 제한된 메모리, 전력, 및 프로세싱 자원들을 가지는 자원-제약된 디바이스들인 이동 디바이스들과 같은 최신 컴퓨팅 디바이스들에서의 이용을 위해 적당하지 않다. 이 현존하는 솔루션들의 연속되거나 반복된 이용이 컴퓨팅 디바이스를 비-응답성으로 할 수도 있으므로, 이 솔루션들은 또한, 많은 수의 디바이스 거동들을 연속적으로 또는 반복적으로 모니터링하고 분석하는 포괄적인 거동-기반 보안 시스템의 일부로서의 이용을 위해 적당하지 않다.
다양한 양태들은 현존하는 솔루션들의 상기 언급된 제한들을 극복하고 자원-제약된 컴퓨팅 디바이스의 거동-기반 보안 시스템의 일부로서의 이용을 위해 적당한 개선된 데이터 추적 솔루션들 (예컨대, 개선된 오염 추적 솔루션들 등) 을 구현하고 제공하기 위하여 휴리스틱 및 머신 학습 기법들을 이용하는 방법들, 및 방법들을 구현하도록 구성된 컴퓨팅 디바이스들을 포함한다.
기존의 솔루션들과 달리, 다양한 양태들은 메모리 액세스들, 데이터 변환 동작들, 메모리 기록 동작들이 시스템을 통해 데이터를 흐르게 할 때에 데이터의 큰 용량들을 태그하거나 추적할 것을 컴퓨팅 디바이스에 요구하지 않는 데이터 추적 솔루션들을 포함한다. 다양한 양태들은 컴퓨팅 디바이스가 메모리 로케이션이 오염되거나 비오염된 것으로서 표기되어야 하는지 여부를 결정하기 위하여 오염-전파 휴리스틱을 이용하는 것을 허용한다. 이것은 디바이스가 데이터가 시스템을 통해 흐를 때에 데이터를 지능적으로 추적하고, 그 성능 및 전력 소비 특성들에 대해 상당한 부정적인 영향을 가지지 않으면서, 추가적인 또는 더욱 상세한 모니터링, 분석, 또는 검토를 요구하는 디바이스 거동들, 특징들, 또는 소프트웨어 애플리케이션들을 식별하는 것을 허용한다. 방법을 구현하기 위하여 추적되어야 하는 데이터의 용량을 감소시킴으로써, 다양한 양태들은 이러한 모니터링의 프로세싱 오버헤드 (processing overhead) 를 감소시키기 위하여 적어도 부분적으로 하드웨어 (예컨대, 메모리 모니터링 모듈) 에서 구현될 수도 있다.
일부 양태들에서, 거동-기반 보안 시스템은 비-양성 소프트웨어 애플리케이션들 (예컨대, 악성이고, 열악하게 기록되고, 디바이스와 호환불가능한 등의 애플리케이션들) 을 효율적으로 식별하고 이러한 애플리케이션들이 시간 경과에 따라 디바이스의 성능 및/또는 전력 사용 레벨들을 열화시키는 것을 방지하도록 구성되는 거동 모니터링 및 분석 시스템일 수도 있다. 거동 모니터링 및 분석 시스템들은 컴퓨팅 디바이스 시스템의 다양한 레벨들에서 다양한 애플리케이션 프로그래밍 인터페이스 (API) 들, 레지스터들, 카운터들, 또는 다른 컴포넌트들 (본원에서 집합적으로 "도구화된 컴포넌트들") 을 도구화 (instrument) 하거나 조직화 (coordinate) 하도록 구성된 관측기 프로세스, 데몬 (daemon), 모듈, 또는 서브-시스템 (본원에서는 집합적으로 "모듈" 로서 지칭됨) 을 포함할 수도 있다. 관측기 모듈은 도구화된 컴포넌트들로부터 거동 정보를 수집함으로써 디바이스 거동들을 연속적으로 (또는 연속적인 것에 근접하게) 모니터링할 수도 있고, 이 수집은 디바이스의 메모리 내에 저장된 로그 파일들 (예컨대, API 로그들) 로부터 정보를 판독함으로써 달성될 수도 있다. 거동 모니터링 및 분석 시스템은 또한, 분석기 모듈을 포함할 수도 있고, 관측기 모듈은 (예컨대, 메모리 기록 동작, 함수 호출 등을 통해) 수집된 거동 정보를 분석기 모듈로 통신할 수도 있다. 분석기 모듈은 디바이스 거동이 양성 또는 비-양성/성능-열화인지 여부를 결정하기 위하여 데이터, 알고리즘들, 분류기들, 및/또는 모델들을 수행하고, 실행하고, 및/또는 적용하는 것을 포함할 수도 있는 거동 분석 동작들을 수행하기 위하여 거동 정보를 수신할 수도 있고 이용할 수도 있다.
양태에서, 컴퓨팅 디바이스는 보안 정책들을 생성하기 위하여 및/또는 더욱 근접한 또는 추가적인 모니터링 또는 분석을 요구하는 컴포넌트들 또는 특징들을 식별하기 위하여, 일 양태의 데이터 추적 솔루션들을 포괄적인 거동 모니터링 및 분석 시스템의 일부로서 이용하도록 구성될 수도 있다. 예를 들어, 거동 모니터링 및 분석 시스템은 선택 제어 흐름 및/또는 실행시간 파라미터들을 식별할 수도 있고, 측정할 수도 있고, 모니터링할 수도 있고, 및/또는 분석할 수도 있고, 그 다음으로, 싱크 컴포넌트에서 수신된 데이터가 더욱 근접한 모니터링 또는 추가적인 검토를 요구하는 민감한 또는 보호된 소스 컴포넌트로부터의 것일 가능성을 식별하는 확률 값을 연산하기 위하여 이 동작들의 결과들을 이용할 수도 있다. 이것은 컴퓨팅 디바이스가 민감한 데이터를 식별하고 컴퓨팅 디바이스의 가장 중요한 특징들을 평가하는 것에 그 모니터링 및 분석 동작들을 포커싱기 위하여 (전체 데이터 흐름들을 추적하는 것과 반대로) 오직 선택 실행시간 파라미터들을 분석하는 것을 허용한다. 이것은 (예컨대, 거동-기반 보안 시스템의 성능을 개선시키는 것 등에 의해) 디바이스의 속력, 응답성, 및 전체적인 성능을 개선시킨다.
양태에서, 컴퓨팅 디바이스는 기존의 데이터 흐름 추적 솔루션들을 이용할 때에 요구되는 바와 같이 데이터를 태그하거나 추적하지 않으면서 비-양성 (예컨대, 악성, 열악하게 기록됨, 디바이스와 호환불가능 등) 인 소프트웨어 애플리케이션을 식별하기 위하여 거동 모니터링 및 분석 시스템에 의해 이용될 수도 있는 데이터, 알고리즘들, 분류기들, 및/또는 거동 모델들을 생성하고, 업데이트하고, 및/또는 훈련하기 위하여 머신 학습 기법들 및 휴리스틱들을 이용하도록 구성될 수도 있다. 예를 들어, 컴퓨팅 디바이스 프로세서는, 소프트웨어 애플리케이션을 작동/실행하고, 애플리케이션에 의해 이용된 데이터 소스 및 싱크 포인트들 또는 컴포넌트들의 전부를 식별하고, 각각의 식별된 포인트/컴포넌트에 대한 휴리스틱 값들 및 지상 검증 값들 (예컨대, "발생한 데이터 누설" 등) 을 수집하고 저장하고, 메모리 로케이션이 오염된 또는 비오염된 것으로서 표기되어야 하는지 여부를 결정하기 위하여 휴리스틱 값을 이용하고, 정보를 판독하거나 정보를 오염된 메모리 어드레스에 기록하는 소프트웨어 애플리케이션들을 식별하기 위하여 오염된 메모리 어드레스를 모니터링하고, 식별된 소프트웨어 애플리케이션들이 양성 또는 비-양성인지 여부를 결정하기 위한 프로세서-실행가능 명령들로 구성될 수도 있다.
다양한 양태들에서, 컴퓨팅 디바이스는 멀티스레딩된 소프트웨어 애플리케이션의 다수의 스레드들을 통해, 및/또는 애플리케이션의 다수의 동시 실행들로 데이터 흐름을 추적하도록 구성될 수도 있다. 양태에서, 이것은 각각의 스레드 또는 프로세스에 대한 스레드-휴리스틱 카운터들마다 구현하고 이용하는 디바이스에 의해 달성될 수도 있다. 양태에서, 컴퓨팅 디바이스는 각각의 스레드에 대한 별도의 휴리스틱들을 생성할 수도 있고 유지할 수도 있다. 배경 스레드 (background thread) 들 및 스레드 풀 (thread pool) 들에 대하여, 디바이스는 스레드 풀에서의 스레드들이 휴리스틱 값들을 태스크들에 걸쳐 틀리게 공유하지 않도록 (이것은 스레드를 공유하였던 관련되지 않은 태스크들 사이의 정확도를 왜곡시킬 것임) 그것이 스케줄링/실행될 때마다 각각의 태스크/프로세스에 대한 카운터를 유지하거나, 복원하거나, 또는 저장하도록 구성될 수도 있다.
양태에서, 컴퓨팅 디바이스는 디바이스의 프로세싱, 전력, 또는 메모리 자원들의 과도한 양을 소비하지 않으면서, 민감한 정보가 소스 컴포넌트로부터 싱크 컴포넌트로 누설되고 있는지 (즉, 부적당하게, 또는 비인가된 컴포넌트에 의해 등으로 이용되는지) 여부를 신속하게 그리고 효율적으로 결정하도록 구성될 수도 있다. 이것은, 민감한 소스 컴포넌트와 연관된 제 1 메모리 어드레스를 식별하고, 싱크 컴포넌트와 연관된 제 2 메모리 어드레스를 식별하고, 제 1 메모리 어드레스가 제 2 메모리 어드레스와 동일한지 여부를 결정하는 디바이스 프로세서를 통해 달성될 수도 있다. 예를 들어, 소스 컴포넌트 (예컨대, gps_location 등) 및 싱크 컴포넌트 (예컨대, sendsms(msg)) 를 식별한 후에, 컴퓨팅 디바이스 프로세서는 어드레스들이 일치하는지 (예컨대, 동일하고, 같고, 동등한 등) 여부를 결정하기 위하여 싱크 인수 (sink argument) (예컨대, "sendsms(msg)" 에서의 "msg", "send(a)" 에서의 "a" 등) 의 어드레스를 소스 컴포넌트의 어드레스와 비교할 수도 있다. 디바이스 프로세서는 제 1 메모리 어드레스가 제 2 메모리 어드레스와 동일한 것으로 결정하는 것에 응답하여, 정보 누설이 발생한 것으로 결정할 수도 있다. 컴퓨팅 디바이스는 또한, 소스 및 싱크 컴포넌트들의 어드레스들이 일치하는 것 (즉, 제 1 메모리 어드레스가 제 2 메모리 어드레스와 동일함) 으로 결정하는 것에 응답하여, 소스 또는 싱크를 이용하거나, 소스 또는 싱크와 연관되는 (그리고 이에 따라, 더욱 근접한 검토 또는 더욱 심층적인 분석을 요구하는) 컴포넌트들을 식별할 수도 있다. 그 다음으로, 컴퓨팅 디바이스는 예컨대, 정보를 판독하거나 정보를 식별된 어드레스들에 기록하는 애플리케이션 프로그램들, 소스 또는 싱크 컴포넌트들을 이용하는 애플리케이션 프로그램들 등을 격리함으로써, 정보 누설에 대해 응답할 수도 있다.
다양한 양태들은 단일 프로세서 및 멀티프로세서 시스템들을 포함하는 다수의 상이한 컴퓨팅 디바이스들에서 구현될 수도 있다. 도 1 은 다양한 양태들을 구현하는 컴퓨팅 디바이스들에서 이용될 수도 있는 일 예의 시스템-온-칩 (system-on-chip; SOC) (100) 아키텍처를 예시하는 아키텍처 도면이다. SOC (100) 는 디지털 신호 프로세서 (digital signal processor; DSP) (103), 모뎀 프로세서 (104), 그래픽 프로세서 (106), 및 애플리케이션 프로세서 (108) 와 같은 다수의 이종 프로세서들을 포함할 수도 있다. SOC (100) 는 또한, 이종 프로세서들 (103 내지 108) 중의 하나 이상에 접속된 하나 이상의 코프로세서 (coprocessor) 들 (110) (예컨대, 벡터 코-프로세서) 을 포함할 수도 있다.
각각의 프로세서 (103 내지 110) 는 하나 이상의 코어들을 포함할 수도 있고, 각각의 프로세서/코어는 다른 프로세서들/코어들에 독립적인 동작들을 수행할 수도 있다. 또한, 각각의 프로세서 (103 내지 108) 는 시스템에서의 다른 오퍼레이팅 시스템들 및 프로세서들에 독립적인 메모리 관리 동작들을 수행하는 오퍼레이팅 시스템을 포함할 수도 있다. 예를 들어, 멀티프로세서 시스템은 제 1 타입의 오퍼레이팅 시스템 (예컨대, FreeBSD, LINUX, OS X 등) 을 실행하는 제 1 프로세서, 및 제 2 타입의 오퍼레이팅 시스템 (예컨대, 마이크로소프트 윈도우즈 (Microsoft Windows) 10 등) 을 실행하는 제 2 프로세서를 포함할 수도 있다. 이 오퍼레이팅 시스템들의 각각은 프로세서 (103 내지 108) 상에서 실행되는 애플리케이션 프로그램들에 의한 시스템 메모리 (116) 의 할당 및 이용을 관리하기 위한 메모리 관리 시스템을 포함할 수도 있다. 예를 들어, 각각의 오퍼레이팅 시스템은, 가상 메모리 어드레스들을 애플리케이션 프로그램들에 할당하고, 하나의 프로세스에 의해 이용된 메모리가 또 다른 프로세스에 의해 이미 이용 중인 메모리와 간섭하지 않는다는 것을 보장하도록 구성된 가상 메모리 관리기 (OS VMM) 를 포함할 수도 있다. 프로세스가 물리적 메모리에 대한 액세스를 요구할 때, 이 가상 어드레스들은 그 프로세서 (103 내지 108) 에 특정한 메모리 관리 유닛 (memory management unit; MMU) 에 의해 물리적 메모리 어드레스들로 변환될 수도 있다.
SOC (100) 는, 오염된 메모리 어드레스들의 리스트를 유지하고, 오염된 메모리 어드레스들과 연관된 판독 및 기록 동작들을 식별하기 위하여 메모리 (116) 를 모니터링하고, 정보가 오염된 메모리 어드레스로부터 판독된 후에 수행되는 동작들에 관한 정보를 식별하고 수집하고, 임의의 또는 모든 이러한 정보를 컴퓨팅 디바이스의 하나 이상의 소프트웨어 모듈들로 통신하는 메모리 모니터링 모듈 (118) 을 포함할 수도 있다.
SOC (100) 는 또한, 센서 데이터, 아날로그-대-디지털 변환들, 무선 데이터 송신들을 관리하고, 게임들 및 영화들을 위한 인코딩된 오디오 신호들을 프로세싱하는 것과 같은 다른 특화된 동작들을 수행하기 위한 아날로그 회로부 및 커스텀 회로부 (112) 를 포함할 수도 있다. SOC (100) 는 전압 레귤레이터 (voltage regulator) 들, 발진기들, 위상-고정 루프 (phase-locked loop) 들, 주변 브릿지들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 및 컴퓨팅 디바이스 상에서 실행되는 프로세서들 및 클라이언트들을 지원하기 위하여 이용된 다른 유사한 컴포넌트들과 같은 시스템 컴포넌트들 및 자원들 (114) 을 포함할 수도 있다. 자원들/시스템 컴포넌트들 (114) 및 커스텀 회로부 (112) 는 카메라들, 전자 디바이스들, 무선 통신 디바이스들, 외부 메모리 칩들 등과 같은 주변 디바이스들과 인터페이싱하기 위한 회로부를 포함할 수도 있다.
프로세서들 (103 내지 108) 은, 재구성가능한 로직 게이트들의 어레이를 포함할 수도 있고 및/또는 버스 아키텍처 (예컨대, CoreConnect, AMBA 등) 를 구현할 수도 있는 상호접속/버스 모듈 (124) 을 통해 메모리 (116) 엘리먼트들, 메모리 모니터링 모듈 (118), 자원들 및 커스텀 회로부 (112) 에 상호접속될 수도 있다. 통신들은 고성능 네트워크들-온 칩 (networks-on chip; NoCs) 과 같은 진보된 상호접속들에 의해 제공될 수도 있다.
SOC (100) 는 클록 (120) 및 전압 레귤레이터 (122) 와 같은 SOC (100) 외부의 자원들과 통신하기 위한 입력/출력 모듈 (예시되지 않음) 을 더 포함할 수도 있다. SOC 외부의 자원들 (예컨대, 클록 (120), 전압 레귤레이터 (122)) 은 내부 SOC 프로세서들/코어들 (예컨대, DSP (103), 모뎀 프로세서 (104), 그래픽 프로세서 (106), 애플리케이션들 프로세서 (108) 등) 중의 2 개 이상에 의해 공유될 수도 있다.
SOC (100) 는 또한, 스피커들과 인터페이싱하고, 사용자 인터페이스 엘리먼트들 (예컨대, 입력 버튼들, 터치 스크린 디스플레이 등) 로부터 입력들을 수신하고, 마이크로폰 어레이들로부터 오디오 데이터를 수신하고, 물리적 조건들 (예컨대, 로케이션, 방향, 모션, 방위, 진동, 압력 등) 을 모니터링하기 위한 센서들, 카메라들, 나침반들, GPS 수신기들, 통신 회로부 (예컨대, 셀룰러, Bluetooth®, WLAN, WiFi 등), 및 최신 전자 디바이스들의 다른 잘 알려진 컴포넌트들 (예컨대, 가속도계, 자이로스코프 (gyroscope) 들 등) 을 포함하는 센서들로부터 센서 데이터를 수집하기 위해 적당한 하드웨어 및/또는 소프트웨어 컴포넌트들을 포함할 수도 있다.
프로세서들 (103 내지 108) 은 서로에 대해 (예컨대, 단일 기판, 다이, 집적된 칩 등의 상에서) 근접하게 인접한 독립적인 프로세싱 코어들일 수도 있다. 프로세서들 (103 내지 108) 의 인접성은 온-칩 메모리 (116) 의 공유와, 코어들 사이의 더욱 조직화된 협력을 허용한다. 게다가, 프로세서들 (103 내지 108) 의 인접성은 또한, 메모리 (116) 가 데이터 신호들이 오프-칩 (off-chip) 에서 이동해야 할 경우에 가능한 것보다 훨씬 더 높은 주파수/클록-레이트에서 동작하는 것을 허용한다.
도 2 는 특정한 이동 디바이스 거동, 소프트웨어 애플리케이션, 또는 프로세스가 비-양성 (즉, 악성, 성능-열화, 또는 의심스러움) 인지 여부를 결정하도록 구성된 일 양태의 이동 디바이스 (102) 의 프로세서에서 구현될 수도 있는 일 예의 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 도 2 에서 예시된 예에서, 이동 디바이스 (102) 는 하드웨어 및 소프트웨어 컴포넌트들의 양자를 포함한다.
하드웨어 컴포넌트는 오염됨/민감한 메모리 어드레스들 (222) 의 리스트를 포함/저장하는 메모리 모니터링 모듈 (118) 을 포함할 수도 있다. 소프트웨어 컴포넌트들은 오퍼레이팅 시스템 프레임워크 모듈 (202), 오염 관리 모듈 (204), 및 거동-기반 보안 모듈 (206) 을 포함할 수도 있다. 오염 관리 모듈 (204) 은 데이터-대-어드레스 변환 모듈 (208), 오염 전파기 모듈 (210), 및 오염된 어드레스 모듈 (212) 을 포함할 수도 있다. 거동-기반 보안 모듈 (206) 은 거동 관측기 모듈 (214), 거동 분석기 모듈 (216), 및 액츄에이터 모듈 (218) 을 포함할 수도 있다.
오퍼레이팅 시스템 프레임워크 모듈 (202) 은 근접 모니터링을 요구하는 민감한 컴포넌트들의 초기 리스트를 전송할 수도 있다. 오염 관리 모듈 (204) 은 이 민감한 컴포넌트들에 의해 이용된 메모리 어드레스들을 "오염된" 것으로서 표기할 수도 있다. 이것은 민감한 컴포넌트에 의해 이용된 메모리 어드레스를 포함하는 오염 리스트를 생성함으로써, 그리고 오염 리스트를 메모리 모니터링 모듈 (118) 로 전송함으로써 달성될 수도 있다.
메모리 모니터링 모듈 (118) 은 오염 관리 모듈 (204) 로부터 오염 리스트를 수신하고, 오염된/민감한 메모리 어드레스들 (222) 의 그 리스트를 업데이트하도록 구성될 수도 있다. 메모리 모니터링 모듈 (118) 은 오염된/민감한 메모리 어드레스들 (222) 의 리스트 내에 포함된 메모리 어드레스로부터 정보를 판독하는 판독 동작을 검출하기 위하여 디바이스의 메모리를 모니터링할 수도 있다. 메모리 모니터링 모듈 (118) 은 검출된 판독 동작 후에 수행되는 동작들에 관한 정보를 수집할 수도 있고, 이 동작들을 포함하는 동작들 리스트를 생성할 수도 있고, 리스트를 오염 관리 모듈 (204) 로 전송할 수도 있다.
오염 관리 모듈 (204) 은 메모리 모니터링 모듈 (118) 로부터 동작들 리스트를 수신할 수도 있고, 동작들의 제 1 수 (O), 동작들의 제 2 수 (M), 및 동작들의 동작들의 제 3 수 (N) 를 연산하거나 결정하기 위하여 오염 전파 휴리스틱을 이용할 수도 있다. 위에서 설명된 바와 같이, 동작들의 제 1 수 (O) 는 컴퓨팅 디바이스가 그것이 메모리 어드레스들을 오염된 것으로서 표기하기 시작하기 전에 무시할 수 있는 검출된 판독 동작 후의 동작들의 수를 식별할 수도 있다. 동작들의 제 2 수 (M) 는 컴퓨팅 디바이스가 기록 동작들에 대하여 모니터링할 수도 있는 O 번째 동작 후의 동작들 (예컨대, 판독, 기록, 추가, 시프트, 분기 등) 의 수를 식별함으로써 모니터링 윈도우를 식별할 수도 있다. 동작들의 제 3 수 (N) 는 컴퓨팅 디바이스가 훈련된 것으로서 표기할 수도 있는 (예컨대, 동작들의 M 수에서의) 모니터링 윈도우 내의 기록 동작들의 수에 대한 상부 경계를 정의할 수도 있다.
O, M, 및 N 값들을 결정한 후, 오염 관리 모듈 (204) 은 O 번째 동작과 M 번째 동작 사이에서 수행된 제 1 의 N 기록 동작들과 연관된 메모리 어드레스들을 포함하기 위하여 오염 리스트를 업데이트할 수도 있고, 어느 쪽이 먼저 발생하든, N 번째 검출된 기록 동작 후에, 또는 M 번째 동작 후에 수행된 기록 동작들과 연관되는 메모리 어드레스들을 오염 리스트로부터 제거할 수도 있다. 오염 관리 모듈 (204) 은 또한, 정보를 판독하거나 정보를 오염된 메모리 어드레스들에 기록하는 소프트웨어 애플리케이션들을 식별할 수도 있고, 이 정보를 거동-기반 보안 모듈 (206) 로 전송할 수도 있다. 이 동작들은 이동 디바이스 (102) 의 성능 또는 전력 소비 특성들에 대해 상당한 부정적인 영향을 가지지 않으면서, 성능 열화 거동들의 소스들 또는 원인들을 식별하기 위하여 반복적으로 또는 연속적으로 수행될 수도 있다.
거동 관측기 모듈 (214) 은 애플리케이션 프로그래밍 인터페이스 (API) 들을 이동 디바이스의 다양한 레벨들/모듈들에서 도구화하거나 조직화하고, 도구화된 API 들을 통해 다양한 레벨들/모듈들에서 이동 디바이스 동작들 및 이벤트들 (예컨대, 시스템 이벤트들, 상태 변경들 등) 을 모니터링/관측하고, 관측된 동작들/이벤트들에 속하는 정보를 수집하고, 수집된 정보를 지능적으로 필터링하고, 필터링된 정보에 기초하여 하나 이상의 관측들을 생성하고, 생성된 관측들을 메모리 내에 (예컨대, 로그 파일, 캐시 메모리 등에) 저장하고, 및/또는 (예컨대, 메모리 기록들, 함수 호출들 등을 통해) 생성된 관측들을 거동 분석기 모듈 (216) 로 전송하도록 구성될 수도 있다. 다양한 양태들에서, 생성된 관측들은 거동 벡터로서, 및/또는 API 로그 파일 또는 구조에서 저장될 수도 있다.
다양한 양태들에서, 거동 관측기 모듈 (214) 은 오염된 메모리 어드레스에 대한 판독들/기록들, 애플리케이션 프레임워크 또는 실행-시간 라이브러리 (library) 들에서의 라이브러리 API 호출들, 시스템 호출 API 들, 파일-시스템, 및 네트워킹 서브-시스템 동작들, (센서 디바이스들을 포함하는) 디바이스 상태 변경들, 및 다른 유사한 이벤트들에 속하는 정보를 수집함으로써, 이동 디바이스 동작들 및 이벤트들을 모니터링/관측할 수도 있다. 거동 관측기 모듈 (214) 은 또한, 파일명들을 검색하는 것, 파일 액세스들의 범주들 (개인 정보 또는 정상 데이터 파일들), 파일들 (예컨대, 타입 exe, zip 등) 을 생성하거나 삭제하는 것, 파일 판독/기록/탐색 동작들, 파일 허가 (file permission) 들을 변경하는 것 등을 포함할 수도 있는 파일 시스템 활동을 모니터링할 수도 있다.
거동 관측기 모듈 (214) 은 또한, 접속들의 타입들, 프로토콜들, 포트 번호들, 디바이스가 접속되는 서버/클라이언트, 접속들의 수, 통신들의 용량 또는 주파수 등을 포함할 수도 있는 데이터 네트워크 활동을 모니터링/관측할 수도 있다. 거동 관측기 모듈 (214) 은 전화 네트워크 활동을 모니터링할 수도 있고, 이것은 송출되거나, 수신되거나, 또는 도청된 호출들 또는 메시지들 (예컨대, SMS 등) 의 수 (예컨대, 걸려진 고급 호출들의 수) 및 타입을 모니터링하는 것을 포함할 수도 있다.
거동 관측기 모듈 (214) 은 또한 시스템 자원 사용을 모니터링/관측할 수도 있고, 이것은 포크 (fork) 들의 수, 메모리 액세스 동작들, 열린 파일들의 수 등을 모니터링하는 것을 포함할 수도 있다. 거동 관측기 모듈 (214) 은, 디스플레이가 온 (on) 또는 오프 (off) 인지 여부, 디바이스가 잠금 (locking) 되거나 잠금해제 (unlocking) 되는지 여부, 남아 있는 배터리의 양, 카메라의 상태 등과 같은 다양한 인자들을 모니터링하는 것을 포함할 수도 있는 이동 디바이스의 상태를 모니터링할 수도 있다. 거동 관측기 모듈 (214) 은 또한, 예를 들어, 중대한 서비스들 (브라우저, 계약들 제공자 등) 에 대한 의향들, 인터-프로세스 (inter-process) 통신들의 정도, 팝-업 (pop-up) 윈도우들 등을 모니터링함으로써 인터-프로세스 통신들 (inter-process communications; IPC) 을 모니터링할 수도 있다.
거동 관측기 모듈 (214) 은 또한, 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 주변 디바이스들, 무선 통신 컴포넌트들, 외부 메모리 칩들, 전압 레귤레이터들, 발진기들, 위상-고정 루프들, 주변 브릿지들, 및 이동 컴퓨팅 디바이스 상에서 실행되는 프로세서들 및 클라이언트들을 지원하기 위하여 이용된 다른 유사한 컴포넌트들을 포함할 수도 있는 하나 이상의 하드웨어 컴포넌트들의 드라이버 통계 및/또는 스테이터스를 모니터링/관측할 수도 있다.
거동 관측기 모듈 (214) 은 또한, 이동 컴퓨팅 디바이스 및/또는 이동 디바이스 서브-시스템들의 상태 또는 스테이터스를 나타내는 하나 이상의 하드웨어 카운터들을 모니터링/관측할 수도 있다. 하드웨어 카운터는 이동 컴퓨팅 디바이스에서 발생하는 하드웨어-관련된 활동들 또는 이벤트들의 카운트 값 또는 상태를 저장하도록 구성되는 프로세서들/코어들의 특수-목적 레지스터를 포함할 수도 있다.
거동 관측기 모듈 (214) 은 또한, 소프트웨어 애플리케이션들의 액션 (action) 들 또는 동작들, 애플리케이션 다운로드 서버 (예컨대, Apple® App Store (앱 스토어) 서버) 로부터의 소프트웨어 다운로드들, 소프트웨어 애플리케이션들에 의해 이용된 이동 디바이스 정보, 호출 정보, 텍스트 메시징 정보 (예컨대, SendSMS, BlockSMS, ReadSMS 등), 미디어 메시징 정보 (예컨대, ReceiveMMS), 사용자 계정 정보, 위치 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 브라우저-기반 통신들의 컨텐츠, 음성-기반 통신들의 컨텐츠, 단거리 라디오 통신들 (예컨대, 블루투스, WiFi 등), 텍스트-기반 통신들의 컨텐츠, 레코딩된 오디오 파일들의 컨텐츠, 전화번호부 또는 연락처 정보, 연락처 리스트들 등을 모니터링/관측할 수도 있다.
거동 관측기 모듈 (214) 은 또한, 음성메일 (VoiceMailComm), 디바이스 식별자들 (DeviceIDComm), 사용자 계정 정보 (UserAccountComm), 달력 정보 (CalendarComm), 위치 정보 (LocationComm), 레코딩된 오디오 정보 (RecordAudioComm), 가속도계 정보 (AccelerometerComm) 등을 포함하는 통신들을 포함하는, 이동 디바이스의 송신들 또는 통신들을 모니터링/관측할 수도 있다.
거동 관측기 모듈 (214) 은 또한, 나침반 정보, 이동 디바이스 세팅들, 배터리 수명, 자이로스코프 정보, 압력 센서들, 자석 센서들, 스크린 활동 등의 사용 및 업데이트들/변경들을 모니터링/관측할 수도 있다. 거동 관측기 모듈 (214) 은 소프트웨어 애플리케이션으로 그리고 이로부터 통신된 통지들 (AppNotifications), 애플리케이션 업데이트들 등을 모니터링/관측할 수도 있다. 거동 관측기 모듈 (214) 은 제 2 소프트웨어 애플리케이션의 다운로딩 및/또는 설치를 요청하는 제 1 소프트웨어 애플리케이션에 속하는 조건들 또는 이벤트들을 모니터링/관측할 수도 있다. 거동 관측기 모듈 (214) 은 패스워드의 입력 등과 같은 사용자 검증에 속하는 조건들 또는 이벤트들을 모니터링/관측할 수도 있다.
거동 관측기 모듈 (214) 은 또한, 애플리케이션 레벨, 라디오 레벨, 및 센서 레벨을 포함하는, 이동 디바이스의 다수의 레벨들에서 조건들 또는 이벤트들을 모니터링/관측할 수도 있다. 애플리케이션 레벨 관측들은 얼굴 인식 소프트웨어를 통해 사용자를 관측하는 것, 소셜 스트림 (social stream) 들을 관측하는 것, PassBook/Google Wallet/Paypal 등의 이용에 속하는 이벤트들을 관측하는 것을 포함할 수도 있다. 애플리케이션 레벨 관측들은 또한, 가상 사설 네트워크 (virtual private network; VPN) 들의 이용에 관련된 이벤트들과, 동기화, 음성 검색들, 음성 제어 (예컨대, 하나의 단어를 말함으로써 전화를 록킹/언록킹), 언어 번역기들, 통신들을 위한 데이터의 오프로딩 (offloading), 비디오 스트리밍, 사용자 활동 없는 카메라 사용, 사용자 활동 없는 마이크로폰 사용 등에 속하는 이벤트들을 관측하는 것을 포함할 수도 있다.
라디오 레벨 관측들은 라디오 통신 링크들을 확립하거나 정보를 송신하기 전의 이동 디바이스와의 사용자 상호작용, 이중/다중 카드들, 인터넷 라디오, 이동 전화 테더링, 연산들을 위한 데이터 오프로딩, 디바이스 상태 통신들, 게임 제어기 또는 홈 제어기로서의 이용, 차량 통신들, 이동 디바이스 동기화 등 중의 임의의 것 이상의 존재, 실존, 또는 양을 결정하는 것을 포함할 수도 있다. 라디오 레벨 관측들은 또한, 위치결정, 피어-투-피어 (peer-to-peer; p2p) 통신들, 동기화, 차량-대-차량 통신들, 및/또는 머신-대-머신 (machine-to-machine; m2m) 을 위한 라디오들 (WiFi, WiMax, 블루투스 등) 의 이용을 모니터링하는 것을 포함할 수도 있다. 라디오 레벨 관측들은 네트워크 트래픽 사용, 통계, 또는 프로파일들을 모니터링하는 것을 더 포함할 수도 있다.
센서 레벨 관측들은 이동 디바이스의 사용 및/또는 외부 환경을 결정하기 위하여 자석 센서 또는 다른 센서를 모니터링하는 것을 포함할 수도 있다. 예를 들어, 이동 디바이스 프로세서는 전화가 (예컨대, 수납주머니 (holster) 내의 자석을 감지하도록 구성된 자석 센서를 통해) 수납주머니 내에 있는지, 또는 (예컨대, 카메라 또는 광 센서에 의해 검출된 광의 양을 통해) 사용자의 포켓 내에 있는지 여부를 결정하도록 구성될 수도 있다. 이동 디바이스가 수납주머니 내에 있는 것을 검출하는 것은 의심스러운 거동들을 인식하는 것에 관련될 수도 있는데, 예를 들어, 이는 이동 디바이스가 수납되는 동안에 발생하는 사용자에 의한 능동적인 사용 (예컨대, 사진들 또는 비디오들의 촬영, 메시지들의 전송, 음성 호출을 행함, 사운드들을 레코딩 등) 에 관련된 활동들 및 기능들이 (예컨대, 사용자에 관해 추적하거나 정찰하기 위하여) 디바이스 상에서 실행되는 범죄적 프로세스들의 징후들일 수 있기 때문이다.
사용 또는 외부 환경들에 관련된 센서 레벨 관측들의 다른 예들은 근접장 통신 (near-field communication; NFC) 들을 검출하는 것, 신용 카드 스캐너, 바코드 스캐너, 또는 이동 태그 판독기로부터 정보를 수집하는 것, USB 전력 충전 소스의 존재를 검출하는 것, 키보드 또는 보조 디바이스가 이동 디바이스에 결합된 것을 검출하는 것, 이동 디바이스가 (예컨대, USB 등을 통해) 컴퓨팅 디바이스에 결합된 것을 검출하는 것, LED, 플래시, 플래시라이트, 또는 광원이 수정되었거나 디스에이블되었는지 여부 (예컨대, 긴급 시그널링 앱을 악의적으로 디스에이블하는 것 등) 를 결정하는 것, 스피커 또는 마이크로폰이 턴온 (turn on) 되거나 급전된 것을 검출하는 것, 충전 또는 전력 이벤트를 검출하는 것, 이동 디바이스가 게임 제어기로서 이용되고 있는 것을 검출하는 것 등을 포함한다. 센서 레벨 관측들은 또한, 의료용 또는 건광관리 센서들로부터 또는 사용자의 신체를 스캐닝하는 것으로부터 정보를 수집하는 것, USB/오디오 잭으로 플러깅된 외부 센서로부터 정보를 수집하는 것, (예컨대, 진동기 인터페이스 등을 통해) 촉각 또는 햅틱 센서로부터 정보를 수집하는 것, 이동 디바이스의 열 상태에 속하는 정보를 수집하는 것 등을 포함할 수도 있다.
거동 관측기 모듈 (214) 은 관측된 거동들의 간결한 정의를 포함하는 거동 벡터들을 생성하도록 구성될 수도 있다. 각각의 거동 벡터는 이동 디바이스, 소프트웨어 애플리케이션, 또는 프로세스의 관측된 거동을 값 또는 벡터 데이터-구조로 (예컨대, 수들의 스트링의 형태 등으로) 간단 명료하게 설명할 수도 있다. 거동 벡터는 또한, 이동 디바이스 시스템이 이동 디바이스 거동들을 신속하게 인식하고, 식별하고, 및/또는 분석하는 것을 가능하게 하는 식별자로서 기능할 수도 있다. 양태에서, 거동 관측기 모듈 (214) 은 일련의 수들을 포함하는 거동 벡터를 생성할 수도 있고, 이러한 수들의 각각은 이동 디바이스의 특징 또는 거동을 나타낸다. 예를 들어, 거동 벡터 내에 포함된 수들은 이동 디바이스의 카메라가 이용 중인지 여부 (예컨대, 제로 (zero) 또는 1 로서), 얼마나 많은 네트워크 트래픽이 이동 디바이스로부터 송신되었거나 이동 디바이스에 의해 생성되었는지 (예컨대, 20 KB/sec 등), 얼마나 많은 인터넷 메시지들이 통신되었는지 (예컨대, SMS 메시지들의 수 등) 를 나타낼 수도 있다.
관리가능한 레벨로 모니터링된 인자들의 수를 감소시키기 위하여, 양태에서, 거동 관측기 모듈 (214) 은 이동 디바이스의 열화에 기여할 수 있었던 모든 인자들의 작은 서브세트인 거동들 또는 인자들의 초기 세트를 모니터링/관측함으로써 대략적인 관측들을 수행하도록 구성될 수도 있다. 다양한 양태들에서, 거동 관측기 모듈 (214) 은 다른 이동 디바이스들, 네트워크 서버, 또는 클라우드 서비스 또는 네트워크에서의 컴포넌트로부터 거동들 및/또는 인자들의 초기 세트를 수신할 수도 있다. 양태에서, 거동들/인자들의 초기 세트는 다른 이동 디바이스, 네트워크 서버, 또는 클라우드 서비스/네트워크로부터 수신된 데이터/거동 모델들에서 특정될 수도 있다. 양태에서, 거동들/인자들의 초기 세트는 감소된 특징 모델 (reduced feature model; RFM) 들에서 특정될 수도 있다.
거동 분석기 모듈 (216) 은 거동 관측기 모듈 (214) 로부터 관측들, 거동 벡터들, 및/또는 수집된 거동 정보를 수신할 수도 있고, 수신된 정보 (즉, 관측들) 를 컨텍스트 정보와 비교할 수도 있고, 시간 경과에 따른 디바이스의 열화에 기여하고 있거나 (또는 기여할 가능성이 있음), 또는 이와 다르게 디바이스에 관한 문제들을 야기시킬 수도 있는 수신된 관측들과 연관된 서브시스템들, 프로세스들, 및/또는 애플리케이션들을 식별할 수도 있다.
양태에서, 거동 분석기 모듈 (216) 은, 시간 경과에 따른 디바이스의 열화에 기여하고 있거나 (또는 기여할 가능성이 있음), 또는 이와 다르게 디바이스에 관한 문제들을 야기시킬 수도 있는 거동들, 프로세스들, 또는 프로그램들을 식별하기 위하여 정보의 제한된 세트 (즉, 대략적인 관측들) 를 사용하기 위한 지능 (intelligence) 을 포함할 수도 있다. 예를 들어, 거동 분석기 모듈 (216) 은 다양한 모듈들로부터 수집된 (예컨대, 관측들의 형태인) 정보를 분석하고, 이동 디바이스의 정상 동작 거동들을 학습하고, 비교들의 결과들에 기초하여 하나 이상의 거동 벡터들을 생성하도록 구성될 수도 있다. 거동 분석기 모듈 (216) 은 생성된 거동 벡터들을 액츄에이터 모듈로 전송할 수도 있고, 액츄에이터 모듈은 식별된 문제를 치유하거나, 고치거나, 격리하거나, 또는 이와 다르게 고정하기 위한 동작들에 대한 다양한 동작들을 수행할 수도 있다.
거동 분석기 모듈 (216) 은 거동 벡터들을 수신할 수도 있고, 특정한 이동 디바이스 거동, 소프트웨어 애플리케이션, 또는 프로세스가 비-양성 (예컨대, 성능-열화/악성), 양성, 또는 의심스러운지 여부를 결정하기 위하여 거동 벡터들을 하나 이상의 거동 모듈들과 비교할 수도 있다. 거동, 소프트웨어 애플리케이션, 또는 프로세스가 악성 또는 성능-열화인 것으로 결정될 때, 거동 분석기 모듈 (216) 은 액츄에이터 모듈 (218) 에 통지할 수도 있고, 이 액츄에이터 모듈 (218) 은 비-양성, 악성, 또는 성능-열화인 것으로 결정된 이동 디바이스 거동들을 정정하기 위한 다양한 액션들 또는 동작들을 수행할 수도 있고, 및/또는 식별된 문제를 치유하거나, 고치거나, 격리하거나, 또는 이와 다르게 고정하기 위한 동작들을 수행할 수도 있다.
거동 분석기 모듈 (216) 이 거동, 소프트웨어 애플리케이션, 또는 프로세스가 의심스러운 것으로 결정할 때, 거동 분석기 모듈 (216) 은 거동 관측기 모듈 (214) 에 통지할 수도 있고, 이 거동 관측기 모듈 (214) 은 그 관측들의 세분화도 (granularity) (즉, 이동 디바이스 거동들이 관측되는 상세함의 레벨) 를 조절할 수도 있고 및/또는 거동 분석기 모듈 (216) 로부터 수신된 정보 (예컨대, 실시간 분석 동작들의 결과들) 에 기초하여 관측되는 거동들을 변경할 수도 있고, 새로운 또는 추가적인 거동 정보를 생성하거나 수집할 수도 있고, 새로운/추가적인 정보를 추가의 분석/분류를 위하여 거동 분석기 모듈 (216) 로 전송할 수도 있다. 거동 관측기 모듈 (214) 과 거동 분석기 모듈 (216) 사이의 이러한 피드백 통신들은 이동 디바이스 (102) 가 관측들의 세분화도를 재귀적으로 증가시키는 것 (즉, 더욱 미세하거나 더욱 상세한 관측들을 행함) 을 가능하게 하거나, 의심스러운 또는 성능-열화인 이동 디바이스 거동의 소스가 식별될 때까지, 프로세싱 또는 배터리 소비 임계점에 도달될 때까지, 또는 이동 디바이스 프로세서가 의심스러운 또는 성능-열화인 이동 디바이스 거동의 소스가 관측 세분화도에 있어서의 추가의 증가들로부터 식별될 수 없는 것으로 결정할 때까지 관측되는 특징들/거동들을 변경하는 것을 가능하게 한다. 이러한 피드백 통신은 또한, 이동 디바이스의 프로세싱, 메모리, 또는 에너지 자원들의 과도한 양을 소비하지 않으면서, 이동 디바이스 (102) 가 이동 디바이스에서 국소적으로 데이터/거동 모델들을 조절하거나 수정하는 것을 가능하게 한다.
이에 따라, 거동 분석기 모듈 (216) 은 거동 관측기 모듈 (214) 로부터 대략적인 관측들을 수신하고, 이동 디바이스의 열화에 잠재적으로 기여할 수도 있는 수신된 대략적인 관측들과 연관된 서브시스템들, 프로세스들, 및/또는 애플리케이션들을 식별하도록 구성될 수도 있다. 이것은 예를 들어, 수신된 정보를 외부 컴포넌트들로부터 수신된 컨텍스트 정보와 비교하는 거동 분석기 모듈 (216) 에 의해 달성될 수도 있다.
거동 분석기 모듈 (216) 은 식별된 서브시스템들, 프로세스들, 또는 애플리케이션들에 관한 더욱 심층적인 로깅 (logging)/관측들 또는 최종적인 로깅을 수행하거나 가능하게 할 것을 거동 관측기 모듈 (214) 에 명령할 수도 있다. 거동 관측기 모듈 (214) 은 식별된 서브시스템들, 프로세스들, 또는 애플리케이션들에 관한 더욱 심층적인 관측들을 수행할 수도 있다. 거동 관측기 모듈 (214) 은 더욱 심층적인 관측들의 결과들을 추가의 (그리고 더욱 심층적인) 분석을 위하여 거동 분석기 모듈 (216) 로 전송할 수도 있다. 이 동작들은 문제의 소스가 식별될 때까지, 또는 식별된 서브시스템들, 프로세스들, 또는 애플리케이션들이 문제들 또는 열화를 야기시킬 가능성이 없는 것으로 결정될 때까지 반복될 수도 있다. 그 다음으로, 거동 분석기 모듈 (216) 은 분석의 결과들을 액츄에이터 모듈 (218) 로 전송할 수도 있고, 액츄에이터 모듈 (218) 은 결과들을 수신할 수도 있고, 식별된 문제를 치유하거나, 고치거나, 격리하거나, 또는 이와 다르게 고정하기 위한 동작들을 수행할 수도 있다.
거동 관측기 모듈 (214) 및 거동 분석기 모듈 (216) 은, 제한된 그리고 대략적인 관측들로부터 의심스러운 거동을 식별하고, 더욱 상세하게 관측하기 위한 거동들을 동적으로 결정하고, 관측들에 대해 요구된 상세함의 레벨을 동적으로 결정하기 위하여, 개별적으로 또는 집합적으로 중의 어느 하나로, 컴퓨팅 시스템의 거동들의 실시간 거동 분석을 제공할 수도 있다. 이러한 방식으로, 거동 관측기 모듈 (214) 은 컴퓨팅 시스템 (200) 이 디바이스 상에서 많은 양의 프로세서, 메모리, 또는 배터리 자원들을 요구하지 않으면서, 문제들을 효율적으로 식별하고 문제들이 이동 디바이스들 상에서 발생하는 것을 방지하는 것을 가능하게 한다.
거동 관측기 모듈 (214) 은 멀티-레벨 로깅 (예컨대, 파인 그레인드 (fine grained) 및 코스 그레인드 (coarse-grained) 로깅) 을 가능하게 하기 위한 다양한 관측기 모드들을 시스템에 제공할 수도 있다. 거동 관측기 모듈 (214) 은 상이한 관측기 모드들 사이에서 자동으로 그리고 동적으로 스위칭하기 위한 능력을 제공할 수도 있다. 거동 관측기 모듈 (214) 은 시스템 자원들을 고갈시킬 수도 있는 프로세스/애플리케이션을 모니터링할 수도 있고 한정할 수도 있다. 거동 관측기 모듈 (214) 은 통신들 (예컨대, 비-보안 대 보안 세계 (non-secure to secure world)) 오버헤드를 관리할 수도 있어서, 오버헤드는 최소이고 흐름 제어는 효율적으로 유지/수행된다.
양태에서, 거동 관측기 모듈 (214) 은 양성 애플리케이션들 및 이동 디바이스에 대한 성능-영향을 감소시키기 위하여 공간 효율적 및 질의-서비스-시간 (query-service-time) 효율적인 방식으로 거동 정보를 관측들로서 저장하도록 구성될 수도 있다.
다양한 양태들에서, 거동 관측기 모듈 (214) 및/또는 거동 분석기 모듈 (216) 은 근접 모니터링을 요구하는 임계 데이터 자원 (critical data resource) 을 식별함으로써, 임계 데이터 자원과 연관된 중간 자원을 식별함으로써, 임계 데이터 자원 및 중간 자원을 액세스할 때에 소프트웨어 애플리케이션에 의해 행해진 API 호출들을 모니터링함으로써, API 호출들에 의해 소비되거나 생성되는 이동 컴퓨팅 디바이스 자원들을 식별함으로써, API 호출들의 패턴을 소프트웨어 애플리케이션에 의한 비-양성 활동을 표시하는 것으로서 식별함으로써, API 호출들의 식별된 패턴 및 식별된 이동 컴퓨팅 디바이스 자원들에 기초하여 경량 거동 시그니처 (light-weight behavior signature) 를 생성함으로써, 거동 분석 동작들을 수행하기 위하여 경량 거동 시그니처를 이용함으로써, 그리고 거동 분석 동작들에 기초하여 소프트웨어 애플리케이션이 비-양성인지 또는 양성인지 여부를 결정함으로써, 이동 컴퓨팅 디바이스 거동들을 분석하도록 구성될 수도 있다.
다양한 양태들에서, 거동 관측기 모듈 (214) 및/또는 거동 분석기 모듈 (216) 은 이동 컴퓨팅 디바이스 상에서 실행되는 소프트웨어 애플리케이션들에 의해 가장 빈번하게 이용되는 API 들을 식별함으로써, 이동 컴퓨팅 디바이스의 메모리 내의 API 로그에서 식별된 핫 API (hot API) 들의 사용에 관한 정보를 저장함으로써, 그리고 정상 동작 패턴들과 부합하지 않는 이동 컴퓨팅 디바이스 거동들을 식별하기 위하여 API 로그에서 저장된 정보에 기초하여 거동 분석 동작들을 수행함으로써, 이동 컴퓨팅 디바이스 거동들을 분석하도록 구성될 수도 있다. 양태에서, API 로그는, API 의 소환 (invocation) 들에 걸쳐 동일하게 유지되는 일반적인 필드들의 값들이 API 의 각각의 소환에 특정적인 특정 필드들의 값들을 저장하는 테이블로부터 분리되어 있는 테이블에서 저장되도록 API 로그가 편성되게 생성될 수도 있다. API 로그는 또한, 특정 필드들의 값들이 일반적인 필드들의 값들을 저장하는 별도의 테이블에 대한 해시 키 (hash key) 들과 함께 테이블에서 저장되도록 생성될 수도 있다.
다양한 양태들에서, 거동 관측기 모듈 (214) 및/또는 거동 분석기 모듈 (216) 은 복수의 부스팅된 판단 스텀프들로서의 변환 또는 표현을 위해 적당한 유한 상태 머신을 포함하는 전체 분류기 모델을 수신함으로써, 전체 분류기에 기초하여 이동 컴퓨팅 디바이스에서 희박 분류기 모델을 생성함으로써, 그리고 이동 컴퓨팅 디바이스의 거동을 양성 또는 비-양성 (즉, 악성, 성능 열화 등) 중의 어느 하나인 것으로서 분류하기 위하여 이동 컴퓨팅 디바이스에서 희박 분류기 모델을 이용함으로써, 이동 컴퓨팅 디바이스 거동들을 분석하도록 구성될 수도 있다. 양태에서, 전체 분류기 모델에 기초하여 희박 분류기 모델을 생성하는 것은 이동 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 자원들의 과도한 양을 소비하지 않으면서, 이동 컴퓨팅 디바이스 거동을 분류하기 위하여 평가되어야 하는 다수의 고유한 테스트 조건들을 결정하는 것, 부스팅된 판단 스텀프들의 리스트를 순차적으로 통과함으로써, 그리고 테스트 조건들의 리스트가 결정된 수의 고유한 테스트 조건들을 포함할 수도 있을 때까지, 각각의 순차적으로 통과된 부스팅된 판단 스텀프와 연관된 테스트 조건을 테스트 조건들의 리스트 내로 삽입함으로써 테스트 조건들의 리스트를 생성하는 것, 및 테스트 조건들의 생성된 리스트 내에 포함된 복수의 테스트 조건들 중의 하나를 테스트하는 그 부스팅된 판단 스텀프들을 오직 포함하기 위하여 희박 분류기 모델을 생성하는 것을 포함할 수도 있다.
다양한 양태들에서, 거동 관측기 모듈 (214) 및/또는 거동 분석기 모듈 (216) 은, 이동 컴퓨팅 디바이스의 거동을 분류하는 것에 관련되는 복수의 테스트 조건들에서 이동 컴퓨팅 디바이스-특정 테스트 조건들을 식별하기 위하여 이동 컴퓨팅 디바이스의 능력 및 상태 정보와 같은 디바이스-특정 정보를 이용하고, 식별된 이동 컴퓨팅 디바이스-특정 테스트 조건들을 오직 포함하는 희박 분류기 모델을 생성하고, 이동 컴퓨팅 디바이스의 거동을 분류하기 위하여 이동 컴퓨팅 디바이스에서의 생성된 희박 분류기 모델을 이용하도록 구성될 수도 있다. 양태에서, 희박 분류기 모델은 이동 컴퓨팅 디바이스의 현재의 동작 상태 또는 구성에 관련되는 이동 컴퓨팅 디바이스 특징을 평가하는 판단 노드들을 오직 포함하기 위하여 생성될 수도 있다. 추가의 양태에서, 희박 분류기 모델을 생성하는 것은 이동 컴퓨팅 디바이스의 자원들 (예컨대, 프로세싱, 메모리, 또는 에너지 자원들) 의 과도한 양을 소비하지 않으면서, 거동을 분류하기 위하여 평가되어야 하는 다수의 고유한 테스트 조건들을 결정하는 것, 전체 분류기 모델에서 복수의 테스트 조건들을 순차적으로 통과함으로써, 테스트 조건들의 리스트가 결정된 수의 고유한 테스트 조건들을 포함할 때까지, 이동 컴퓨팅 디바이스의 거동을 분류하는 것에 관련되는 그 테스트 조건들을 테스트 조건들의 리스트 내로 삽입함으로써 테스트 조건들의 리스트를 생성하는 것, 및 테스트 조건들의 생성된 리스트 내에 포함된 조건들 중의 하나를 테스트하는 전체 분류기 모델 내에 포함된 판단 노드들을 포함하기 위하여 희박 분류기 모델을 생성하는 것을 포함할 수도 있다.
다양한 양태들에서, 거동 관측기 모듈 (214) 및/또는 거동 분석기 모듈 (216) 은 소프트웨어 애플리케이션 또는 프로세스의 활동을 모니터링함으로써, 소프트웨어 애플리케이션/프로세스의 오퍼레이팅 시스템 실행 상태를 결정함으로써, 그리고 활동이 모니터링되었던 소프트웨어 애플리케이션 또는 프로세스의 활동 및/또는 오퍼레이팅 시스템 실행 상태에 기초하여 활동이 양성인지 여부를 결정함으로써, 이동 컴퓨팅 디바이스의 정상 동작 패턴들과 부합하지 않는 이동 컴퓨팅 디바이스 거동들을 인식하도록 구성될 수도 있다. 추가의 양태에서, 거동 관측기 모듈 (214) 및/또는 거동 분석기 모듈 (216) 은 소프트웨어 애플리케이션 또는 프로세스의 오퍼레이팅 시스템 실행 상태가 활동에 관련되는지 여부를 결정할 수도 있고, 활동이 모니터링되었던 소프트웨어 애플리케이션 또는 프로세스의 오퍼레이팅 시스템 실행 상태를 식별하는 섀도우 특징 값을 생성할 수도 있고, 활동을 오퍼레이팅 시스템 실행 상태를 식별하는 섀도우 특징 값과 연관시키는 거동 벡터를 생성할 수도 있고, 활동이 양성인지, 의심스러운지, 또는 비-양성 (즉, 악성 또는 성능-열화) 인지 여부를 결정하기 위하여 거동 벡터를 이용할 수도 있다.
양태에서, 이동 디바이스 (102) 는 또한, 오용하기 쉽고 및/또는 근접 모니터링을 요구하는 것으로 결정되는 데이터 자원들 (예컨대, 주소록, 카메라 등) 의 리스트를 저장하고 관리하는 임계 데이터 자원들 모듈을 포함할 수도 있다. 이동 디바이스 (102) 는 거동 분석기 모듈로부터의 피드백, 휴리스틱들, 머신 학습, 이력 정보, 현재의 사용, 이동 디바이스에서 검출된 이벤트들 또는 조건들, 서버로부터 수신된 정보, 사용자 구성, 및/또는 다른 유사한 기준들, 인자들, 이벤트들, 또는 조건들에 기초하여 임계 데이터 자원들의 리스트를 동적으로 업데이트/변경하도록 구성될 수도 있다.
추가의 양태에서, 이동 디바이스 (102) 는 또한, 임계 자원의 사용을 추적하기 위하여 모니터링을 요구하는 것으로 결정되는 중간 자원들의 리스트를 저장할 수도 있다. 예를 들어, 소프트웨어 애플리케이션이 이동 디바이스의 임계 자원 (예컨대, 주소록 등) 으로부터 정보를 판독하고 정보를 일반적인 파일에 기록할 때, 이동 디바이스 (102) 는 일반적인 파일이 임계 자원 (즉, 주소록) 을 적당하게 추적하기 위하여 모니터링을 요구하는 중간 자원인 것으로 결정할 수도 있다. 양태에서, 임계 데이터 자원들 모듈은 중간 자원들의 리스트를 저장할 수도 있고 관리할 수도 있다.
양태에서, 이동 디바이스 (102) 는 임계 자원들 (예컨대, 임계 데이터 자원들 모듈에서 식별된 자원들) 에 관련되는 소프트웨어 스택의 다양한 레벨들에서 API 호출들을 모니터링하도록 구성될 수도 있다. 이것은 임계 자원들에 관련되는 도구화된 컴포넌트들로부터 거동 정보를 수집함으로써, 및/또는 임계 자원들에 의해 생성된 API 로그들로부터 정보를 판독함으로써 달성될 수도 있다. 이동 디바이스는 이 정보를 API 셀 거동 로그 데이터베이스에서 저장할 수도 있고, 모니터링을 요구하는 추가적인 자원들을 식별할 수도 있고, 임계 자원의 계속된 모니터가 유용한 정보를 제공할 가능성이 없는 것으로 결정할 수도 있고, 이에 따라, 임계 데이터 자원들에서 저장된 데이터 자원들의 리스트에 자원들을 추가할 수도 있거나 이를 제거할 수도 있다.
양태에서, 이동 디바이스 (102) 는 비-양성/악성 활동 또는 거동을 표시하는 API 호출들의 의심스러운 시퀀스들 또는 패턴들을 식별하기 위하여, 단일 이동 디바이스 거동의 일부로서 함께 평가되어야 하는 동작들을 식별하기 위하여, 분석을 요구하는 다양한 제어 흐름 또는 데이터 흐름 파라미터들을 식별하기 위하여, 소스들과 싱크들 사이의 거리들을 연산하기 위하여, 및/또는 거동 분석기 모듈 (216) 에 의해 더욱 근접한 모니터링 또는 검토를 요구하는 임계 자원들을 식별하기 위하여, API 호출 거동 로그 데이터베이스에서 저장된 정보를 거동 사양 모델들과 비교하고 및/또는 이를 분석하도록 구성될 수도 있다. 이동 디바이스 (102) 는 비교 및/또는 분석 동작들의 결과에 기초하여 각각의 임계 자원에 대한 간결하고 경량 거동 시그니처들을 생성할 수도 있고, 이 경량 거동 시그니처들을 분석을 위하여 거동 분석기 모듈 (216) 로 전송할 수도 있다. 거동 분석기 모듈 (216) 은 추가적이거나, 상이하거나, 또는 더욱 심층적인 분석을 요구하는 이동 디바이스 거동들 또는 컴포넌트들을 신속하고 효율적으로 결정하기 위하여 경량 거동 시그니처들을 수신할 수도 있고 이용할 수도 있다.
도 3 은 컴퓨팅 디바이스가 오염된 메모리 어드레스와 연관된 판독 동작 (302) 을 식별할 수도 있고, 평가되어야 하는 동작들의 제 1 수 (O), 제 2 수 (M), 및 제 3 수 (N) 를 연산하거나 결정하기 위하여 오염 전파 휴리스틱을 이용할 수도 있고, O 번째 동작 후에, 그리고 M 번째 동작 전에 수행된 제 1 의 N 기록 동작들 (304) 과 연관된 메모리 어드레스들을 오염시킬 수도 있고, N 번째 동작 후에 수행된 기록 동작들 (306) 과 연관된 메모리 어드레스들을 비오염시킬 수도 있다는 것을 예시한다.
도 4 및 도 5 는 다양한 양태들에 따라 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법들을 예시한다. 특히, 도 4 는 데이터 흐름들을 추적할 때에 하드웨어에서의 모니터링을 수반하는 메모리 어드레스들을 식별하기 위하여 오염-전파 휴리스틱을 이용하는 일 양태의 방법 (400) 을 예시하고, 도 5 는 컴퓨팅 디바이스의 하드웨어-기반 메모리 모니터링 모듈에서 메모리를 모니터링하는 일 양태의 방법 (500) 을 예시한다.
도 4 에서 예시된 블록 (402) 에서, 컴퓨팅 디바이스의 프로세서는 오염된 메모리 어드레스의 초기 리스트를 컴퓨팅 디바이스의 하드웨어 컴포넌트로 전송할 수도 있다. 양태에서, 하드웨어 컴포넌트는 하드웨어-기반 메모리 모니터링 모듈일 수도 있다. 블록 (404) 에서, 프로세서는 하드웨어 컴포넌트로부터 식별된 동작들 및 그 연관된 메모리 어드레스들의 리스트를 수신할 수도 있다. 블록 (406) 에서, 프로세서는 식별된 판독 동작 후에 수행된 동작들의 "O" 수를 연산하거나, 결정하거나, 또는 식별하기 위하여 수신된 리스트에서의 정보를 이용할 수도 있다. 블록 (408) 에서, 프로세서는 O 번째 동작 후에 수행된 동작들의 M 수를 식별함으로써 모니터링 윈도우를 결정할 수도 있다. 블록 (410) 에서, 프로세서는 모니터링 윈도우 (M) 에서의 기록 동작들의 제 1 의 "N" 수를 식별할 수도 있다.
블록 (412) 에서, 프로세서는 식별된 판독 동작과 연관된 메모리 어드레스들을 오염 리스트에 추가할 수도 있다. 블록 (414) 에서, 프로세서는 식별된 기록 동작들 (즉, 모니터링 윈도우 M 에서의 제 1 의 N 기록 동작들) 과 연관된 메모리 어드레스들을 오염 리스트에 추가할 수도 있다. 블록 (416) 에서, 프로세서는 오염 리스트로부터, N 번째 기록 동작이 검출된 후에 수행된 기록 동작들과 연관된 메모리 어드레스들을 제거할 수도 있다. 블록 (418) 에서, 프로세서는 오염 리스트를 하드웨어 컴포넌트로 전송할 수도 있다. 블록들 (404 내지 418) 에서의 동작들은 컴퓨팅 디바이스의 성능 또는 전력-소비 특성들에 대해 상당한 또는 부정적인 영향을 가지지 않으면서, 데이터 흐름들을 추적하기 위하여 반복적으로 또는 연속적으로 수행될 수도 있다.
도 5 를 참조하면, 블록 (502) 에서, 컴퓨팅 디바이스의 하드웨어-기반 메모리 모니터링 모듈은 컴퓨팅 디바이스의 소프트웨어 컴포넌트로부터 오염된 메모리 어드레스의 초기 리스트를 수신할 수도 있다. 블록 (504) 에서, 메모리 모니터링 모듈은 수신된 리스트 내에 포함된 메모리 어드레스들을 "민감한" (또는 "오염된") 어드레스들로서 표기할 수도 있다. 블록 (506) 에서, 메모리 모니터링 모듈은 민감한 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 컴퓨팅 디바이스에서 메모리를 모니터링할 수도 있다. 블록 (508) 에서, 메모리 모니터링 모듈은 오프셋 (O) 및/또는 모니터링 윈도우 (M) 에서 동작들을 식별하기 위하여 메모리를 모니터링하는 것을 계속할 수도 있다. 블록 (510) 에서, 메모리 모니터링 모듈은 식별된 동작들 및 그 연관된 메모리 어드레스들을 동작들 리스트에 추가할 수도 있다. 블록 (512) 에서, 메모리 모니터링 모듈은 동작들 리스트를 소프트웨어 컴포넌트로 전송할 수도 있다. 블록 (514) 에서, 메모리 모니터링 모듈은 소프트웨어 컴포넌트로부터 오염 리스트를 수신할 수도 있고, 블록 (504) 에서, 수신된 리스트 내에 포함된 메모리 어드레스들을 민감한/오염된 것으로서 표기할 수도 있다.
도 6 은 정보 누설이 소스와 싱크 컴포넌트 사이에서 발생하였는지 (또는 발생할 가능성이 있음) 여부를 신속하게 그리고 효율적으로 결정하기 위하여 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 일 양태의 방법 (600) 을 예시한다. 블록 (602) 에서, 컴퓨팅 디바이스의 프로세서 또는 프로세싱 코어는 민감한 소스 컴포넌트와 연관된 제 1 메모리 어드레스를 식별할 수도 있다. 블록 (604) 에서, 프로세서는 싱크 컴포넌트와 연관된 제 2 메모리 어드레스를 식별할 수도 있다. 결정 블록 (606) 에서, 프로세서는 식별된 제 1 어드레스가 제 2 메모리 어드레스와 동일한지 (또는 동등함 등) 여부를 결정할 수도 있다. 식별된 제 1 어드레스가 제 2 메모리 어드레스와 동일하지 않은 것으로 결정하는 것에 응답하여 (즉, 결정 블록 (606) = "아니오"), 프로세서는 블록 (602) 에서, 그 정상적인 거동-분석 동작들을 계속할 수도 있고 및/또는 추가적인 소스 컴포넌트들을 식별할 수도 있다.
식별된 제 1 어드레스가 제 2 메모리 어드레스와 동일한 것으로 결정하는 것에 응답하여 (즉, 결정 블록 (606) = "예"), 프로세서는 블록 (608) 에서, 정보 누설이 있는 것 (또는 정보 누설이 발생할 높은 확률이 있는 것) 으로 결정할 수도 있고, 정보 누설에 대해 응답하기 위하여 다양한 동작들을 수행할 수도 있다. 예를 들어, 블록 (608) 에서, 프로세서는 소스 또는 싱크 컴포넌트들과 연관된 소프트웨어 애플리케이션 프로그램들을 격리할 수도 있고, 거동 관측기 모듈 (214) 에 의해 모니터링된 인자들/특징들/거동들의 수를 증가시킬 수도 있고, 거동 분석기 모듈 (216) 로 하여금, 더 크거나 더 많은 강인한 분류기 모델들을 이용하게 할 수도 있는 등을 행할 수도 있다.
다양한 양태들 (도 1 내지 도 6 을 참조하여 위에서 설명된 양태) 은 다양한 이동 컴퓨팅 디바이스들 상에서 구현될 수도 있고, 그 예는 도 7 에서 스마트폰의 형태로 예시되어 있다. 스마트폰 (700) 은 내부 메모리 (702), 디스플레이 (703), 및 스피커에 결합된 프로세서 (701) 를 포함할 수도 있다. 양태에서, 위에서 설명된 일 양태의 방법 동작들 중의 하나 이상의 방법 동작의 동작들을 수행하도록 프로세서 (701) 를 구성하기 위한 프로세서-실행가능 명령들은 메모리 (702) 내에 저장될 수도 있다. 추가적으로, 스마트폰 (700) 은, 무선 데이터 링크, 및/또는 프로세서 (701) 에 결합된 셀룰러 전화 트랜시버 (705) 에 접속될 수도 있는, 전자기 복사를 전송하고 수신하기 위한 안테나 (704) 를 포함할 수도 있다. 스마트폰들 (700) 은 또한 전형적으로, 사용자 입력들을 수신하기 위한 메뉴 선택 버튼들 또는 록커 스위치 (rocker switch) 들 (706, 708) 을 포함한다.
전형적인 스마트폰 (700) 은 또한, 마이크로폰으로부터 수신된 사운드를, 무선 송신을 위해 적당한 데이터 패킷들로 디지털화하고, 사운드를 생성하기 위한 스피커에 제공되는 아날로그 신호들을 생성하기 위하여 수신된 사운드 데이터 패킷들을 디코딩하는 사운드 인코딩/디코딩 (encoding/decoding; CODEC) 회로 (712) 를 포함한다. 또한, 프로세서 (701), 무선 트랜시버 (705), 및 CODEC 회로 (712) 중의 하나 이상은 디지털 신호 프로세서 (DSP) 회로 (별도로 도시되지 않음) 를 포함할 수도 있다.
프로세서 (701) 는, 이하에서 설명된 다양한 양태들의 기능들을 포함하는 다양한 기능들을 수행하기 위하여 소프트웨어 명령들 (애플리케이션들) 에 의해 구성될 수 있는 임의의 프로그래밍가능한 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수도 있다. 일부 이동 디바이스들에서는, 무선 통신 기능들에 전용인 하나의 프로세서 및 다른 애플리케이션들을 실행하는 것에 전용인 하나의 프로세서와 같은, 다중 프로세서들 (701) 이 제공될 수도 있다. 전형적으로, 소프트웨어 애플리케이션들은, 이들이 액세스되고 프로세서 (701) 내로 로딩되기 전에 내부 메모리 (702) 내에 저장될 수도 있다. 프로세서 (701) 는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다.
다양한 양태들의 동작들을 수행하기 위한 프로그래밍가능한 프로세서 상에서의 실행을 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드" 는 C, C++, C#, 스몰토크 (Smalltalk), 자바 (Java), 자바스크립트 (JavaScript), 비쥬얼 베이직 (Visual Basic), 구조화 질의어 (예컨대, 트랜잭트-SQL (Transact-SQL)), 펄 (Perl), 또는 다양한 다른 프로그래밍 언어들과 같은 하이 레벨 프로그래밍 언어로 기재될 수도 있다. 본원에서 이용된 바와 같은 컴퓨터 판독가능 저장 매체 상에 저장된 프로그램 코드 또는 프로그램들은 그 포맷이 프로세서에 의해 이해가능한 (오브젝트 코드 (object code) 와 같은) 머신 언어 코드를 지칭한다.
시스템 커널들을 동작시키는 다수의 이동 컴퓨팅 디바이스들은 사용자 공간 (비-특권부여된 (non-privileged) 코드가 실행됨) 및 커널 공간 (특권부여된 코드가 실행됨) 으로 편성된다. 이 분리는, 커널 공간의 일부인 코드가 GPL 라이센싱되어야 하는 반면, 사용자-공간에서 실행되는 코드는 GPL 라이센싱되지 않을 수도 있는 Android® 및 다른 일반 공중 라이센스 (general public license; GPL) 환경들에서 특히 중요하다. 여기에서 논의된 다양한 소프트웨어 컴포넌트들/모듈들은 이와 다르게 명시적으로 기재되지 않으면, 커널 공간 또는 사용자 공간의 어느 하나에서 구현될 수도 있다는 것이 이해되어야 한다.
용어 "시스템 온 칩" (SOC) 은 단일 기판 상에 집적된 다수의 자원들 및/또는 프로세서들을 포함하는 단일 집적 회로 (integrated circuit; IC) 칩을 지칭하기 위하여 이 출원에서 이용된다. 단일 SOC 는 디지털, 아날로그, 혼합된-신호, 및 라디오-주파수 기능들을 위한 회로부를 포함할 수도 있다. 단일 SOC 는 또한, 임의의 수의 범용 및/또는 특화된 프로세서들 (디지털 신호 프로세서들, 모뎀 프로세서들, 비디오 프로세서들 등), 메모리 블록들 (예컨대, ROM, RAM, 플래시 등), 및 자원들 (예컨대, 타이머들, 전압 레귤레이터들, 발진기들 등) 을 포함할 수도 있다. SOC 들은 또한, 집적된 자원들 및 프로세서들을 제어하는 것뿐만 아니라, 주변 디바이스들을 제어하기 위한 소프트웨어를 포함할 수도 있다.
용어 "멀티코어 프로세서" 는 프로그램 명령들을 판독하고 실행하도록 구성된 2 개 이상의 독립적인 프로세싱 코어들 (예컨대, CPU 코어들) 을 포함하는 단일 집적 회로 (IC) 칩 또는 칩 패키지를 지칭하기 위하여 이 출원에서 이용된다. SOC 는 다수의 멀티코어 프로세서들을 포함할 수도 있고, SOC 에서의 각각의 프로세서는 코어로서 지칭될 수도 있다. 용어 "멀티프로세서" 는 프로그램 명령들을 판독하고 실행하도록 구성된 2 개 이상의 프로세싱 유닛들을 포함하는 시스템 또는 디바이스를 지칭하기 위하여 이 출원에서 이용된다.
이 출원에서 이용된 바와 같이, 용어들 "컴포넌트", "모듈" 등등은 하드웨어, 펌웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 특정한 동작들 또는 기능들을 수행하도록 구성되는 실행 중인 소프트웨어와 같지만, 이것으로 제한되지 않는 컴퓨터-관련 엔티티를 포함하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 엑시큐터블 (executable), 실행 스레드 (thread of execution), 프로그램, 및/또는 컴퓨터일 수도 있지만, 이것으로 제한되지 않는다. 예시로서, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스 양자는 컴포넌트로서 지칭될 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에서 상주할 수도 있고, 컴포넌트는 하나의 프로세서 상에서 로컬라이즈 (localize) 될 수도 있고 및/또는 2 개 이상의 프로세서들 또는 코어들 사이에서 분산될 수도 있다. 게다가, 이 컴포넌트들은 그 위에 저장된 다양한 명령들 및/또는 데이터 구조들을 가지는 다양한 비-일시적 (non-transitory) 컴퓨터 판독가능 매체들로부터 실행될 수도 있다. 컴포넌트들은 로컬 및/또는 원격 프로세스들, 함수 또는 프로시저 (procedure) 호출들, 전자 신호들, 데이터 패킷들, 메모리 판독/기록들, 및 다른 알려진 네트워크, 컴퓨터, 프로세서, 및/또는 프로세스 관련 통신 방법론들을 통해 통신할 수도 있다.
상기한 방법 설명들 및 프로세스 흐름도들은 예시적인 예들에 불과한 것으로서 제공되고, 다양한 양태들의 단계들이 제시된 순서로 수행되어야 하는 것을 요구하거나 암시하도록 의도된 것이 아니다. 당해 분야의 당업자에 의해 인식되는 바와 같이, 상기한 양태들에서의 단계들의 순서는 임의의 순서로 수행될 수도 있다. "그 다음", "다음으로", "다음" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도된 것이 아니고; 이 단어들은 방법들의 설명을 통해 독자를 안내하기 위하여 간단하게 이용된다. 또한, 예를 들어, 관사들 "a", "an", 또는 "the" 를 이용하는 단수인 청구항 구성요소들에 대한 임의의 참조는 구성요소를 단수로 제한하는 것으로 해석되지 않아야 한다.
본원에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수도 있다. 하드웨어 및 소프트웨어의 이 교환가능성을 명확하게 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 그 기능성의 측면에서 위에서 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션과, 전체적인 시스템에 부과된 설계 제약들에 종속된다. 당업자들은 각각의 특정한 애플리케이션을 위한 다양한 방법들로 설명된 기능성을 구현할 수도 있지만, 이러한 구현 판단들은 본 발명의 범위로부터의 이탈을 야기시키는 것으로서 해석되지 않아야 한다.
본원에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리적 블록들, 모듈들, 및 회로들을 구현하기 위하여 이용된 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (application specific integrated circuit; ASIC), 필드 프로그래밍가능한 게이트 어레이 (field programmable gate array; FPGA) 또는 다른 프로그래밍가능한 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 그 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 멀티프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 기존의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 및 멀티프로세서, 복수의 멀티프로세서들, DSP 코어와 함께 하나 이상의 멀티프로세서들, 또는 임의의 다른 이러한 구성의 조합으로서 구현될 수도 있다. 대안적으로, 일부의 단계들 또는 방법들은 주어진 기능에 특정한 회로부에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에서는, 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현될 경우, 기능들은 비-일시적 컴퓨터-판독가능 매체 또는 비-일시적 프로세서-판독가능 매체 상에서 하나 이상의 명령들 또는 코드로서 저장될 수도 있다. 본원에서 개시된 방법 또는 알고리즘의 단계들은 비-일시적 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체 상에서 상주할 수도 있는 프로세서-실행가능 소프트웨어 모듈에서 구체화될 수도 있다. 비-일시적 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체들일 수도 있다. 제한이 아닌 예로서, 이러한 비-일시적 컴퓨터-판독가능 또는 프로세서-판독가능 매체들은 RAM, ROM, EEPROM, FLASH 메모리, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 희망하는 프로그램 코드를 저장하기 위해 이용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 이용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (compact disc; CD), 레이저 디스크 (laser disc), 광학 디스크 (optical disc), 디지털 다기능 디스크 (digital versatile disc; DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크 (blu-ray disc) 를 포함하고, 여기서, 디스크 (disk) 들은 통상 데이터를 자기적으로 재생하는 반면, 디스크 (disc) 들은 데이터를 레이저들로 광학적으로 재생한다. 상기의 조합들은 또한, 비-일시적 컴퓨터-판독가능 및 프로세서-판독가능 매체들의 범위 내에 포함된다. 추가적으로, 방법 또는 알고리즘의 동작들은, 컴퓨터 프로그램 제품 내로 편입될 수도 있는 비-일시적 프로세서-판독가능 매체 및/또는 컴퓨터-판독가능 매체 상에 코드들 및/또는 명령들 중의 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.
개시된 양태들의 선행하는 설명은 당해 분야의 당업자가 본 발명을 제조하거나 이용하는 것을 가능하게 하도록 제공된다. 이 양태들에 대한 다양한 수정들은 당해 분야의 당업자들에게 용이하게 명백할 것이고, 본원에서 정의된 일반적인 원리들은 발명의 사상 또는 범위로부터 이탈하지 않으면서 다른 양태들에 적용될 수도 있다. 이에 따라, 본 발명은 본원에서 도시된 양태들로 제한되도록 의도된 것이 아니라, 다음의 청구항들 및 본원에서 개시된 원리들 및 신규한 특징들과 부합하는 가장 넓은 범위를 따르도록 하기 위한 것이다.

Claims (20)

  1. 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법으로서,
    오염된 (tainted) 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 메모리를 모니터링하는 단계;
    식별된 상기 판독 동작 후에 수행된 동작들의 제 1 수를 식별하는 오프셋 값 (O), 동작들의 상기 제 1 수 후에 수행된 동작들의 제 2 수를 식별하는 모니터링 윈도우 값 (M), 및 동작들의 상기 제 1 수 후에 수행된 동작들의 제 3 수를 식별하는 상부 경계 값 (N) 을 결정하는 단계;
    M 동작들이 수행되는 것; 및
    비오염된 (untainted) 어드레스들에 대한 N 기록 동작들이 식별되는 것 중의 하나가 될 때까지 동작들을 모니터링하는 단계;
    식별된 기록 동작들과 연관된 메모리 어드레스들을 오염된 것으로서 표기하는 단계; 및
    N 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들, 및 M 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들을 비오염된 것으로서 표기하는 단계를 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  2. 제 1 항에 있어서,
    동작들의 상기 제 1, 제 2, 및 제 3 수를 식별하기 위하여 휴리스틱 (heuristic) 들을 이용하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  3. 제 1 항에 있어서,
    상기 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 소프트웨어 애플리케이션을 식별하는 단계; 및
    상기 소프트웨어 애플리케이션이 비-양성 (non-benign) 인지 여부를 결정하기 위하여, 상기 컴퓨팅 디바이스에서 수집된 거동 정보를 분류기 모델에서의 부스팅된 판단 스텀프들에 적용하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  4. 제 1 항에 있어서,
    상기 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 1 소프트웨어 애플리케이션을 식별하는 단계; 및
    상기 제 1 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  5. 제 4 항에 있어서,
    모니터링된 API 호출들에 기초하여 거동 벡터 정보 구조를 생성하는 단계;
    거동-기반 분석 결과들을 생성하기 위하여 상기 거동 벡터 정보 구조를 분류기 모델에 적용하는 단계; 및
    상기 제 1 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위하여 상기 거동-기반 분석 결과들을 이용하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  6. 제 4 항에 있어서,
    상기 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 2 소프트웨어 애플리케이션을 식별하는 단계; 및
    상기 제 2 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  7. 제 6 항에 있어서,
    상기 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 거동 벡터 정보 구조를 생성하는 단계;
    거동-기반 분석 결과들을 생성하기 위하여 상기 거동 벡터 정보 구조를 분류기 모델에 적용하는 단계; 및
    상기 제 1 및 제 2 소프트웨어 애플리케이션들의 거동이 비-양성인지 여부를 결정하기 위하여 상기 거동-기반 분석 결과들을 이용하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  8. 제 7 항에 있어서,
    상기 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 상기 조합에 기초하여 상기 거동 벡터 정보 구조를 생성하는 단계는 상기 제 1 및 제 2 소프트웨어 애플리케이션들의 집합적 거동을 특징화하는 정보 구조를 생성하는 단계를 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  9. 제 7 항에 있어서,
    상기 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 상기 조합에 기초하여 상기 거동 벡터 정보 구조를 생성하는 단계는 상기 제 1 및 제 2 소프트웨어 애플리케이션들 사이의 관계를 특징화하는 정보 구조를 생성하는 단계를 포함하는, 컴퓨팅 디바이스에서 데이터 흐름들을 추적하는 방법.
  10. 프로세서-실행가능 소프트웨어 명령들을 저장한 비-일시적 컴퓨터 판독가능 저장 매체로서,
    상기 프로세서-실행가능 소프트웨어 명령들은 컴퓨팅 디바이스의 프로세서로 하여금,
    오염된 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 메모리를 모니터링하는 것;
    식별된 상기 판독 동작 후에 수행된 동작들의 제 1 수를 식별하는 오프셋 값 (O), 동작들의 상기 제 1 수 후에 수행된 동작들의 제 2 수를 식별하는 모니터링 윈도우 값 (M), 및 동작들의 상기 제 1 수 후에 수행된 동작들의 제 3 수를 식별하는 상부 경계 값 (N) 을 결정하는 것;
    M 동작들이 수행되는 것; 및
    비오염된 어드레스들에 대한 N 기록 동작들이 식별되는 것 중의 하나가 될 때까지 동작들을 모니터링하는 것;
    식별된 기록 동작들과 연관된 메모리 어드레스들을 오염된 것으로서 표기하는 것; 및
    N 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들, 및 M 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들을 비오염된 것으로서 표기하는 것
    을 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  11. 제 10 항에 있어서,
    저장된 상기 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 동작들의 제 1, 제 2, 및 제 3 수를 식별하기 위하여 휴리스틱들을 이용하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  12. 제 10 항에 있어서,
    저장된 상기 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금,
    상기 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 소프트웨어 애플리케이션을 식별하는 것; 및
    상기 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위하여, 상기 컴퓨팅 디바이스에서 수집된 거동 정보를 분류기 모델에서의 부스팅된 판단 스텀프들에 적용하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  13. 제 10 항에 있어서,
    저장된 상기 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금,
    상기 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 1 소프트웨어 애플리케이션을 식별하는 것; 및
    상기 제 1 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  14. 제 13 항에 있어서,
    상기 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금,
    모니터링된 API 호출들에 기초하여 거동 벡터 정보 구조를 생성하는 것;
    거동-기반 분석 결과들을 생성하기 위하여 상기 거동 벡터 정보 구조를 분류기 모델에 적용하는 것; 및
    상기 제 1 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위하여 상기 거동-기반 분석 결과들을 이용하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  15. 제 13 항에 있어서,
    상기 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금,
    상기 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 2 소프트웨어 애플리케이션을 식별하는 것; 및
    상기 제 2 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  16. 제 15 항에 있어서,
    상기 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금,
    상기 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 거동 벡터 정보 구조를 생성하는 것;
    거동-기반 분석 결과들을 생성하기 위하여 상기 거동 벡터 정보 구조를 분류기 모델에 적용하는 것; 및
    상기 제 1 및 제 2 소프트웨어 애플리케이션들의 거동이 비-양성인지 여부를 결정하기 위하여 상기 거동-기반 분석 결과들을 이용하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  17. 제 16 항에 있어서,
    상기 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 상기 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 상기 거동 벡터 정보 구조를 생성하는 것이 상기 제 1 및 제 2 소프트웨어 애플리케이션들의 집합적 거동을 특징화하는 정보 구조를 생성하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  18. 제 16 항에 있어서,
    상기 저장된 프로세서-실행가능 소프트웨어 명령들은, 프로세서로 하여금, 상기 제 1 및 제 2 소프트웨어 애플리케이션들에 의해 행해진 API 호출들의 조합에 기초하여 상기 거동 벡터 정보 구조를 생성하는 것이 상기 제 1 및 제 2 소프트웨어 애플리케이션들 사이의 관계를 특징화하는 정보 구조를 생성하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  19. 컴퓨팅 디바이스로서,
    동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성된 프로세서를 포함하고, 상기 동작들은,
    오염된 메모리 어드레스로부터 정보를 판독하는 판독 동작을 식별하기 위하여 메모리를 모니터링하는 것;
    식별된 상기 판독 동작 후에 수행된 동작들의 제 1 수를 식별하는 오프셋 값 (O), 동작들의 상기 제 1 수 후에 수행된 동작들의 제 2 수를 식별하는 모니터링 윈도우 값 (M), 및 동작들의 상기 제 1 수 후에 수행된 동작들의 제 3 수를 식별하는 상부 경계 값 (N) 을 결정하는 것;
    M 동작들이 수행되는 것; 및
    비오염된 어드레스들에 대한 N 기록 동작들이 식별되는 것 중의 하나가 될 때까지 동작들을 모니터링하는 것;
    식별된 기록 동작들과 연관된 메모리 어드레스들을 오염된 것으로서 표기하는 것; 및
    N 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들, 및 M 번째 동작 후에 수행된 기록 동작들과 연관된 메모리 어드레스들을 비오염된 것으로서 표기하는 것을 포함하는, 컴퓨팅 디바이스.
  20. 제 19 항에 있어서,
    상기 프로세서는,
    상기 오염된 메모리 어드레스들 중의 하나로부터 정보를 판독하는 제 1 소프트웨어 애플리케이션을 식별하는 것;
    상기 제 1 소프트웨어 애플리케이션에 의해 행해진 애플리케이션 프로그래밍 인터페이스 호출들을 모니터링하는 것;
    모니터링된 API 호출들에 기초하여 거동 벡터 정보 구조를 생성하는 것;
    거동-기반 분석 결과들을 생성하기 위하여 상기 거동 벡터 정보 구조를 분류기 모델에 적용하는 것; 및
    상기 제 1 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위하여 상기 거동-기반 분석 결과들을 이용하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
KR1020177020895A 2015-01-28 2015-12-17 메모리 모니터링을 통한 데이터 흐름 추적 KR20170108019A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/607,251 2015-01-28
US14/607,251 US9519533B2 (en) 2015-01-28 2015-01-28 Data flow tracking via memory monitoring
PCT/US2015/066442 WO2016122799A1 (en) 2015-01-28 2015-12-17 Data flow tracking via memory monitoring

Publications (1)

Publication Number Publication Date
KR20170108019A true KR20170108019A (ko) 2017-09-26

Family

ID=55130040

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177020895A KR20170108019A (ko) 2015-01-28 2015-12-17 메모리 모니터링을 통한 데이터 흐름 추적

Country Status (7)

Country Link
US (1) US9519533B2 (ko)
EP (1) EP3251042A1 (ko)
JP (1) JP2018507472A (ko)
KR (1) KR20170108019A (ko)
CN (1) CN107209825A (ko)
BR (1) BR112017016219A2 (ko)
WO (1) WO2016122799A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101666177B1 (ko) * 2015-03-30 2016-10-14 한국전자통신연구원 악성 도메인 클러스터 탐지 장치 및 방법
US10108529B2 (en) * 2015-10-13 2018-10-23 International Business Machines Corporation Dynamic instrumentation based on detected errors
JP6382892B2 (ja) * 2016-07-27 2018-08-29 三菱日立パワーシステムズ株式会社 運転情報分析装置
US10701099B2 (en) * 2016-09-28 2020-06-30 International Business Machines Corporation Providing efficient information tracking with dynamically selected precision
US10339320B2 (en) * 2016-11-18 2019-07-02 International Business Machines Corporation Applying machine learning techniques to discover security impacts of application programming interfaces
US10810099B2 (en) * 2017-09-11 2020-10-20 Internatinal Business Machines Corporation Cognitive in-memory API logging
US10915639B2 (en) * 2018-04-05 2021-02-09 Oracle International Corporation Staged dynamic taint flow inference
US10866809B2 (en) * 2018-07-05 2020-12-15 Qualcomm Incorporated Method, apparatus, and system for acceleration of inversion of injective operations
US11016874B2 (en) * 2018-09-19 2021-05-25 International Business Machines Corporation Updating taint tags based on runtime behavior profiles
CN109829346A (zh) * 2019-01-11 2019-05-31 安徽工程大学 一种基于机器视觉的条形码及二维码识别方法和系统
FR3093208B1 (fr) * 2019-02-27 2021-12-03 Commissariat Energie Atomique Procédé de validation d’un système flots de données
WO2020252698A1 (zh) * 2019-06-19 2020-12-24 深圳开源互联网安全技术有限公司 一种数据流跟踪方法、系统、存储介质和服务器
CN110941552B (zh) * 2019-11-20 2023-07-07 广州大学 一种基于动态污点分析的内存分析方法及装置
US12056239B2 (en) * 2020-08-18 2024-08-06 Micro Focus Llc Thread-based malware detection
US11347841B1 (en) * 2020-09-11 2022-05-31 Rockwell Collins, Inc. System and method for runtime monitoring during hash-locked remote attestation
CN112256197B (zh) * 2020-10-20 2022-09-02 Tcl通讯(宁波)有限公司 一种存储信息的管理方法、装置、设备及存储介质
CN113220285B (zh) * 2021-04-22 2023-08-22 上海雾帜智能科技有限公司 安全事件响应剧本生成方法、系统、装置和存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4335707B2 (ja) * 2004-02-06 2009-09-30 Necエレクトロニクス株式会社 プログラム改竄検出装置、及びプログラム改竄検出プログラムおよびプログラム改竄検出方法
US8510827B1 (en) 2006-05-18 2013-08-13 Vmware, Inc. Taint tracking mechanism for computer security
EP1906412A1 (en) * 2006-09-29 2008-04-02 Koninklijke Philips Electronics N.V. A secure non-volatile memory device and a method of protecting data therein
US7788235B1 (en) 2006-09-29 2010-08-31 Symantec Corporation Extrusion detection using taint analysis
US7870610B1 (en) * 2007-03-16 2011-01-11 The Board Of Directors Of The Leland Stanford Junior University Detection of malicious programs
US8074281B2 (en) * 2008-01-14 2011-12-06 Microsoft Corporation Malware detection with taint tracking
JP4669053B2 (ja) * 2008-09-29 2011-04-13 株式会社半導体理工学研究センター 情報処理装置、情報処理方法及びこれを実現させるためのプログラム
US8893280B2 (en) 2009-12-15 2014-11-18 Intel Corporation Sensitive data tracking using dynamic taint analysis
US9135405B2 (en) 2011-05-26 2015-09-15 Carnegie Mellon University Automated exploit generation
US20150128262A1 (en) * 2011-10-28 2015-05-07 Andrew F. Glew Taint vector locations and granularity
US9171028B1 (en) * 2013-06-11 2015-10-27 Google Inc. Method of maintaining a large set of taint labels

Also Published As

Publication number Publication date
WO2016122799A1 (en) 2016-08-04
JP2018507472A (ja) 2018-03-15
EP3251042A1 (en) 2017-12-06
BR112017016219A2 (pt) 2018-03-27
US9519533B2 (en) 2016-12-13
CN107209825A (zh) 2017-09-26
US20160217029A1 (en) 2016-07-28

Similar Documents

Publication Publication Date Title
US9158604B1 (en) Lightweight data-flow tracker for realtime behavioral analysis using control flow
EP3485415B1 (en) Devices and methods for classifying an execution session
US9519533B2 (en) Data flow tracking via memory monitoring
JP6345271B2 (ja) モバイルデバイスにおいて挙動分析動作を実行することによってアプリケーション状態を推論するための方法およびシステム
US9147072B2 (en) Method and system for performing behavioral analysis operations in a mobile device based on application state
US9357411B2 (en) Hardware assisted asset tracking for information leak prevention
EP3191960B1 (en) Methods and systems for aggregated multi-application behavioral analysis of mobile device behaviors
US9495537B2 (en) Adaptive observation of behavioral features on a mobile device
US9448859B2 (en) Exploiting hot application programming interfaces (APIs) and action patterns for efficient storage of API logs on mobile devices for behavioral analysis
EP2949144B1 (en) Adaptive observation of behavioral features on a mobile device
US9607146B2 (en) Data flow based behavioral analysis on mobile devices
CN107209818B (zh) 用于检测与移动装置的虚假用户交互以用于改进的恶意软件防护的方法和系统
US9189624B2 (en) Adaptive observation of behavioral features on a heterogeneous platform
US20180039779A1 (en) Predictive Behavioral Analysis for Malware Detection
JP2018514848A (ja) クラウド対クライアント挙動の差異を通じてマルウェアを特定するための方法およびシステム