KR101201118B1 - 바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를모으는 시스템 및 방법 - Google Patents

바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를모으는 시스템 및 방법 Download PDF

Info

Publication number
KR101201118B1
KR101201118B1 KR1020050086796A KR20050086796A KR101201118B1 KR 101201118 B1 KR101201118 B1 KR 101201118B1 KR 1020050086796 A KR1020050086796 A KR 1020050086796A KR 20050086796 A KR20050086796 A KR 20050086796A KR 101201118 B1 KR101201118 B1 KR 101201118B1
Authority
KR
South Korea
Prior art keywords
file
antivirus software
delete delete
software applications
malware
Prior art date
Application number
KR1020050086796A
Other languages
English (en)
Other versions
KR20060051383A (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
Priority claimed from US10/984,615 external-priority patent/US7765400B2/en
Priority claimed from US10/984,207 external-priority patent/US7478237B2/en
Priority claimed from US10/984,611 external-priority patent/US7765410B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060051383A publication Critical patent/KR20060051383A/ko
Application granted granted Critical
Publication of KR101201118B1 publication Critical patent/KR101201118B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F9/00Arrangements for program control, e.g. control units

Abstract

본 발명에 따르면, 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스(knowledge base)를 모으는 시스템, 방법 및 컴퓨터 판독가능 매체가 제공된다. 바이러스 방지 소프트웨어 어플리케이션과 같은 사용자 모드 어플리케이션은 일반 정보 모델을 통해 파일 시스템 동작에의 액세스를 획득하므로, 바이러스 방지 소프트웨어 판매자는 커널 모드 필터를 생성할 필요가 없다. 본 발명은 파일 시스템 동작이 바이러스 방지 소프트웨어 어플리케이션에 이용가능할 때, 컴퓨팅 장치 상에 설치된 각각의 바이러스 방지 소프트웨어 어플리케이션이 스캔을 수행하여 데이터가 멀웨어인지 판정하게 할 수 있다.
하드웨어 플랫폼, 오퍼레이팅 시스템, 어플리케이션 플랫폼, 사용자 어플리케이션, 바이러스 방지 소프트웨어 어플리케이션

Description

바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를 모으는 시스템 및 방법{SYSTEM AND METHOD OF AGGREGATING THE KNOWLEDGE BASE OF ANTIVIRUS SOFTWARE APPLICATIONS}
도 1은 종래 기술에 따른 컴퓨팅 장치의 계층 구조를 예시하는 블럭도.
도 2는 종래 기술에 따라 멀웨어를 스캐닝하기에 적절한 바이러스 방지 소프트웨어 어플리케이션을 포함하는 컴퓨팅 장치의 컴포넌트에 대한 블럭도.
도 3은 본 발명에 따라 멀웨어를 식별하기에 적절한 바이러스 방지 소프트웨어 어플리케이션을 포함하는 컴퓨팅 장치의 컴포넌트에 대한 블럭도.
도 4는 본 발명에 따라 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는 방법의 일 예시적인 실시예를 나타내는 순서도.
도 5는 도 4에 나타낸 방법에 관련하여 데이터를 저장하고 재호출하기에 적절한 스캔 캐시에 대한 도면.
도 6은 본 발명에 따라 바이러스 방지 소프트웨어 어플리케이션에게 파일 데이터에의 액세스를 제공하기 위한, 도 4에 나타낸 방법에 관련하여 이용될 수 있는 액세스 방법의 일 예시적인 실시예를 나타내는 순서도.
<도면의 주요 부분에 대한 부호의 설명>
102: 하드웨어 플랫폼
104: 오퍼레이팅 시스템
106: 어플리케이션 플랫폼
204: 사용자 어플리케이션
212: 바이러스 방지 소프트웨어 어플리케이션
본 발명은 컴퓨팅 장치에 관한 것이며, 특히 멀웨어(malware)에 대한 컴퓨팅 장치의 보호에 관한 것이다.
점점 더 많은 컴퓨터 및 다른 컴퓨팅 장치들이 인터넷과 같은 다양한 네트워크를 통해 상호 접속되어감에 따라, 특히 네트워크 또는 정보 스트림을 통해 전달되는 침입 또는 공격으로부터의 컴퓨터 보안은 점차 보다 중요해지고 있다. 당업자들은 이러한 공격들이 컴퓨터 바이러스, 컴퓨터 웜, 시스템 컴포넌트 대체, 서비스 공격 거부, 및 심지어는 합법적 컴퓨터 시스템 특징의 오용/남용(모두가 불법적인 목적으로 하나 이상의 컴퓨터 시스템 취약성을 이용함)을 포함하는 수많은 상이한 형태로 공격해 오지만, 단지 이에만 제한된 것은 아니라는 것을 인식할 것이다. 당업자들은 다양한 컴퓨터 공격이 기술적으로 다른 것들과 구별된다는 것을 인식할 수 있으므로, 본 발명의 목적 및 설명의 간결성을 위해, 인터넷과 같은 컴퓨터 네트워크 상에 퍼져있는 모든 악의 있는 컴퓨터 프로그램은 이후 전반적으로 컴퓨터 멀웨어, 또는 보다 단순하게 멀웨어로 언급될 것이다.
컴퓨터 시스템이 컴퓨터 멀웨어에 의해 공격당하거나 "감염"되면, 시스템 장치 이용불가; 펌웨어, 어플리케이션 또는 데이터 파일의 삭제 또는 붕괴; 네트워크 상의 또 다른 위치로의 잠재적으로 민감한 데이터의 전송; 컴퓨터 시스템 끄기; 또는 컴퓨터 시스템의 고장 일으키기를 포함하는 해로운 결과가 나타난다. (모두는 아닐지라도) 많은 컴퓨터 멀웨어의 또다른 해로운 양상은 감염된 컴퓨터 시스템이 다른 컴퓨터를 감염시키는데 이용된다는 점이다.
컴퓨터 멀웨어, 특히 컴퓨터 바이러스 및 웜에 대한 전통적인 방어 수단은 통상적으로 바이러스 방지 소프트웨어 어플리케이션이다. 일반적으로 설명하면, 바이러스 방지 소프트웨어 어플리케이션은 데이터를 스캐닝하고, 컴퓨터 멀웨어에 관련된 식별가능한 패턴을 관찰한다. 컴퓨터 멀웨어에 관련된 패턴을 탐지하면, 바이러스 방지 소프트웨어는 멀웨어를 격리시키거나, 멀웨어를 삭제함으로써 응답할 수 있다. 그러나 불행하게도, 바이러스 방지 소프트웨어 어플리케이션은 전형적으로 알려진 식별가능한 컴퓨터 멀웨어에 대해서 가장 잘 동작한다. 주로, 이것은 멀웨어의 "서명"으로서 참조되는 것에 데이터 내의 패턴들을 매칭시킴으로써 행해진다.
전형적으로, 기존 바이러스 방지 소프트웨어 어플리케이션에 의해 수행되는 대부분의 동작은 오퍼레이팅 시스템이 "사용자 모드"에 있을 때 일어난다. 당업자 및 다른 사람들에게 알려진 바와 같이, 바이러스 방지 소프트웨어 어플리케이션과 같은 컴퓨터 프로그램은 "커널 모드" 또는 "사용자 모드"에서 실행될 수 있다. "커널 모드"는 오퍼레이팅 시스템의 가장 특권 있고 보호되는 레벨에서 일어나는 프 로세싱을 의미한다. 커널 모드 프로그램은 항상 보호되는 메모리에 상주하며 기본 오퍼레이팅 시스템 서비스를 제공한다. "사용자 모드"는 커널 모드 데이터에 액세스할 수 없는 어플리케이션 계층에서 일어나는 프로세싱을 의미한다. 종래에, 커널 모드로부터 이용가능한 정보와 특징에 액세스할 필요가 있는 바이러스 방지 소프트웨어 어플리케이션의 판매자는 오퍼레이팅 시스템과 인터페이싱하는 커널 모드 필터를 구축할 필요가 있었다. 불행하게도, 각각의 바이러스 방지 소프트웨어 판매자는 컴퓨팅 장치 상에서 일어나도록 스케줄링된, 입출력(이후 "I/O"라고 함)과 같은 커널 모드로부터 이용가능한 특징에 액세스하기 위한 고유 필터를 개발하도록 요구되었다. 또한, 각각의 바이러스 방지 소프트웨어 어플리케이션이 본질적으로 동일한 태스크를 수행하는 대응하는 커널 모드 필터를 가지면, 컴퓨팅 장치는 몇몇의 개별적인 필터에서 실행되는 모든 중복 코드가 커널에 로드되는 수행 부담이 있다. 기존 기술의 또 다른 단점은 사용자 모드 인터페이스가 일관성이 없고, 획일적이지 않으며, 에러를 발생시키는 경향이 있다는 점이다. 따라서, 바이러스 방지 소프트웨어 판매자가 커널 모드 필터를 구현하지 않고서도, 컴퓨팅 장치 상에서 일어나도록 스케줄링된 I/O가 바이러스 방지 소프트웨어 어플리케이션을 이용할 수 있게 하는 메커니즘이 요구된다.
수많은 소프트웨어 판매자들은 바이러스 방지 소프트웨어 어플리케이션을 판매하고, 멀웨어 서명에 대해 항상 성장하는 데이터베이스를 유지한다. 사실 바이러스 방지 소프트웨어 판매자의 가장 중요한 것 중 하나가 알려진 멀웨어로부터 수집된 서명의 지식 베이스이다. 그러나, 상업적으로 이용가능한 바이러스 방지 소 프트웨어 어플리케이션은 항상 서로 호환가능하지는 않다. 예를 들어, 몇몇 경우에서, 두 개의 상이한 바이러스 방지 소프트웨어 어플리케이션이 컴퓨팅 장치 상에 설치되어 있을 때, 데이터 충돌이 일어날 것이란 것은 알려져 있다. 그 결과, 사용자는 컴퓨팅 장치 상에 복수의 바이러스 방지 소프트웨어 어플리케이션을 설치할 수 없으며, 따라서 각 어플리케이션의 지식 베이스의 혜택을 얻을 수 없다. 따라서, 동일한 컴퓨팅 장치 상에 설치된 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으기 위한 메커니즘이 요구된다.
본 발명은 컴퓨팅 장치에 관련되어 있는 데이터가 멀웨어인지를 판정하기 위해, 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는 메커니즘을 제공함으로써 상기 식별된 요구사항을 해결한다. 본 발명의 일 양상은 바이러스 방지 소프트웨어 어플리케이션이 일반 정보 모델을 통해 I/O 요청에 관련된 데이터에 액세스할 수 있도록 하는 방법이다. 일반 정보 모델은, 전형적으로 커널 모드 필터로부터 이용가능한 특징을 제공함으로써 바이러스 방지 소프트웨어 판매자가 커널 모드 필터를 생성하지 않아도 되게 한다. 대신 일반 정보 모듈은 바이러스 방지 소프트웨어 어플리케이션이 컴퓨팅 장치에 관련된 데이터를 스캐닝하여 데이터가 멀웨어인지 판정하게 할 수 있다. 멀웨어가 탐지되면, 멀웨어를 판독, 저장 또는 실행시키려는 어떤 시도도 방지된다.
본 발명의 또 다른 양상은 컴퓨팅 장치에 관련된 파일이 이전에 멀웨어로 식별되었는지 또는 이전에 안전하다고 입증되었는지를 판정하는 방법이다. 본 발명 의 이 양상은, 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 파일을 스캐닝할 때, 변수를 그 파일에 관련시키는 것을 포함한다. 그 변수는 파일이 멀웨어인지를 나타내며, 후에 재호출될 수 있다. 예를 들어, 변수는 사용자가 파일을 실행시키려고 할 때 재호출될 수 있다. 변수가 파일이 멀웨어라고 나타내면, 사용자가 그 파일을 실행시키려는 어떤 시도도 실패된다. 반대로, 변수가 파일이 멀웨어가 아니라고 나타내면, 바이러스 방지 소프트웨어 어플리케이션이 파일을 중복 스캐닝하지 않고서도, 파일을 실행하기 위한 시도가 성공될 것이다.
본 발명의 또 다른 양상은 바이러스 방지 소프트웨어 어플리케이션이 파일 데이터에 액세스하게 하는데 매우 효율적인 방법이다. 본 발명의 이 양상은 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 스캔을 수행하는데 이용될 파일 매핑 섹션 객체(file mapping section object)를 생성하는 것을 포함한다. 그 후 바이러스 방지 어플리케이션과 인터페이싱하는 사용자 모드 어플리케이션에게 파일 매핑 섹션 객체에 액세스하는데 이용될 수 있는 데이터가 제공된다. 마지막으로, 바이러스 방지 소프트웨어 어플리케이션이 액세스할 수 있는 파일에 대한 뷰(view)가 생성된다. 본 발명의 이 양상은 바이러스 방지 소프트웨어 어플리케이션에게 스캔을 수행하는 속도를 향상시키는 파일 시스템 동작의 기본 세트를 제공한다.
본 발명의 또 다른 양상에서, 컴퓨팅 장치에게 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는 것이 제공된다. 컴퓨팅 장치는 보안 서비스 어플리케이션, 하나 이상의 바이러스 방지 소프트웨어 어플리케이션, 및 스 캔 캐시와 데이터 매핑 모듈을 포함하는 일반화된 보안 필터를 포함한다. 일반화된 보안 필터와 보안 서비스 어플리케이션은 선택적으로 바이러스 방지 소프트웨어 어플리케이션에게 일반 정보 모델을 제공하도록 기능한다. 일반 정보 모델은 바이러스 방지 소프트웨어 어플리케이션이 컴퓨팅 장치 상에서 일어나도록 스케줄링된 I/O 요청에 액세스하게 한다. I/O 요청을 인터셉팅(intercept)하면, 바이러스 방지 소프트웨어 어플리케이션은 일반 정보 모델과 상호작용하여 스캔을 스케줄링할 수 있다. 스캔이 수행되면, 보안 서비스 어플리케이션은 컴퓨팅 장치 상에 설치된 상이한 바이러스 방지 소프트웨어 어플리케이션을 인지하고 데이터 충돌을 방지할 수 있다.
또 다른 실시예에서, 컴퓨팅 장치가 여기에 설명된 방법에 따라 동작하게 하는 프로그램과 같은 컨텐츠를 포함하는 컴퓨터 판독가능 매체가 제공된다.
본 발명의 상술된 양상들 및 여러 의도된 이점들은 첨부된 도면들과 함께 취해질 때 다음의 상세한 설명을 참조함으로써 보다 잘 이해될 수 있는 것과 같이 보다 용이하게 이해될 것이다.
본 발명에 따르면, 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는 시스템, 방법 및 컴퓨터 판독가능 매체가 제공된다. 바이러스 방지 소프트웨어 어플리케이션과 같은 사용자 모드 어플리케이션에게 일반 정보 모델을 통해 I/O 요청과 같은 파일 시스템 동작에의 액세스가 제공되므로, 바이러스 방지 소프트웨어 판매자는 커널 모드 필터를 생성할 필요가 없다. I/O 요청을 인터 셉팅하면, 본 발명은 컴퓨팅 장치 상에 설치된 각각의 바이러스 방지 소프트웨어 어플리케이션이 스캔을 수행하고 요청에 관련된 데이터가 멀웨어인지를 탐지하게 할 수 있다. 본 발명이 바이러스 방지 소프트웨어 어플리케이션의 관점에서 설명될 것이지만, 당업자 및 다른 사람들은 본 발명이 소프트웨어 개발의 다른 영역에도 적용가능하다는 점을 인식할 것이다. 따라서, 본 발명에 설명된 실시예들은 예시적인 것일 뿐 제한적인 것으로 해석되어서는 안된다.
도 1은 종래 기술에 따라 구성된 컴퓨팅 장치(100)의 블럭도이다. 컴퓨팅 장치(100)는 개인용 컴퓨팅 장치, 서버 기반 컴퓨팅 장치, PDA, 셀룰러폰, 몇몇 유형의 메모리를 갖는 다른 전자 장치 등을 포함하는 다양한 장치들 중 임의의 하나일 수 있지만, 이에 제한된 것은 아니다. 예시를 간단하게 하기 위해, 또한 그들이 본 발명을 이해하는데 중요하지 않기 때문에, 도 1은 키보드, 마우스, 프린터 또는 다른 I/O 장치, 디스플레이 등과 같은 수많은 컴퓨팅 장치의 전형적인 컴포넌트를 도시하지 않는다.
도 1에 예시된 컴퓨팅 장치(100)는 하드웨어 플랫폼(102), 오퍼레이팅 시스템(104) 및 어플리케이션 플랫폼(106)을 포함한다. 예시를 간단하게 하기 위해, 또한 그들이 본 발명을 이해하는데 중요하지 않기 때문에, 도 1은 CPU, 메모리, 하드 드라이브 등과 같은 하드웨어 플랫폼(102)에 전형적으로 포함되는 컴포넌트를 도시하지 않는다. 또한, 마찬가지의 이유로, 도 1은 오퍼레이팅 시스템(104) 또는 어플리케이션 플랫폼(106)의 임의의 컴포넌트들도 도시하지 않는다.
도 1에 도시된 바와 같이, 컴퓨터 장치(100)의 컴포넌트들은 하위 계층 상의 하드웨어 플랫폼(102)과 상위 계층 상의 어플리케이션 플랫폼(106)으로 계층화된다. 도 1의 계층화는 가급적으로 본 발명이 계층적 환경에서 구현된다는 것을 나타낸다. 컴퓨팅 장치(100)에 포함된 각각의 계층은 보다 낮은 계층의 시스템에 의존한다. 특히, 어플리케이션 플랫폼(106)은 오퍼레이팅 시스템(104) 위에서 작동되며, 하드웨어 플랫폼(102)의 컴포넌트들에 직접적으로 액세스하지 못한다. 대신, 어플리케이션 플랫폼(106)에 의한 하드웨어 플랫폼(102)에의 어떤 액세스도 오퍼레이팅 시스템(104)에 의해 관리된다. 당업자 또는 다른 사람들에게 알려진 바와 같이, 오퍼레이팅 시스템(104)은 어플리케이션 플랫폼(106)에게 어플리케이션 프로그래밍 인터페이스(API)를 제공하는데, 이것은 어플리케이션 플랫폼(106)이 이용할 수 있는 서비스를 정의한다.
도 2는 바이러스 방지 소프트웨어 어플리케이션에게 I/O 요청에 관련된 데이터에의 액세스를 제공하는 종래 기술 프로세스를 예시하기에 적절한 블럭도이다. 당업자 및 다른 사람들에게 알려진 바와 같이, 컴퓨터 사용자는 하드 드라이브, 플로피 디스크, RAM, CD 등과 같은 메모리 장치로부터 데이터를 판독하고 그것에 데이터를 기록하는 것에 관한 진행중인 요구사항을 갖는다. 예를 들어, 대부분의 소프트웨어 어플리케이션이 제공하는 일반 동작은 메모리 장치 상에 저장된 파일을 열고 컴퓨터 디스플레이 상에 그 파일의 컨텐츠를 디스플레이하기 위한 것이다. 그러나, 파일을 열면 파일에 관련된 멀웨어가 실행되기 때문에, 바이러스 방지 소프트웨어 어플리케이션은 여는 동작이 만족되기 전에 전형적으로 파일을 스캐닝하거나 파일에 다른 분석을 수행한다. 멀웨어가 탐지되면, 스캔을 수행한 바이러스 방지 소프트웨어 어플리케이션은, 예를 들어 여는 동작이 실패하도록 함으로써 멀웨어가 실행되지 못하게 할 수 있다. 또한, 바이러스 방지 소프트웨어 어플리케이션은 컴퓨터 사용자에게 멀웨어를 제거하거나 멀웨어를 "격리소"에 배치시키는 옵션을 제공할 수 있다.
당업자 및 다른 사람들에게 알려진 바와 같이, 컴퓨팅 장치에서 행해진 I/O 요청은 I/O 시스템으로 알려진 오퍼레이팅 시스템(104)(도 1)의 컴포넌트에 의해 처리된다. 컴퓨팅 장치를 멀웨어로부터 보호하기 위해, I/O 요청이 수신되면, 바이러스 방지 소프트웨어 어플리케이션에게 통지된다. 이제 도 2를 참조하여, 바이러스 방지 소프트웨어 어플리케이션에게 I/O 요청에 관련된 데이터에의 액세스를 제공하는 공지된 프로세스가 설명될 것이다. 도 2에 예시된 컴퓨팅 장치(100)는 I/O 시스템(200), 국부 또는 원격 I/O 장치(202), 사용자 어플리케이션(204), 바이러스 방지 필터(206-210), 및 사용자 모드 또는 커널 모드에 상주하는 바이러스 방지 소프트웨어 어플리케이션/드라이버(212-216)를 포함한다. I/O를 수행하기 위한 요청이 사용자 어플리케이션(204)과 같은 사용자 어플리케이션으로부터 생성되면, I/O 시스템(200)은 그 요청을 수신한다. 도 2에 예시된 바와 같이, 사용자 어플리케이션은 사용자 모드에서 동작하며, 커널 모드에서 I/O 시스템(200)에 의해 만족되는 I/O 요청을 생성한다. 요청이 만족되기 전에, I/O 요청이 만족되도록 스케줄링되어 있다는 것이 바이러스 방지 필터(206, 208 및 210)에 통지될 수 있다. 이에 응답하여, 바이러스 방지 필터(206, 208 및 210) 각각은 그들 각각의 바이러스 방지 소프트웨어 어플리케이션/드라이버(212, 214 및 216)에게 I/O 요청에 관련된 데이터가 스캔되어야 한다는 것을 통지할 수 있다. I/O 요청에 관련된 데이터가 멀웨어이면, 바이러스 방지 소프트웨어 어플리케이션/드라이버는 I/O 요청이 만족되는 것을 방지하도록 구성될 수 있다. 반대로, I/O 요청이 멀웨어와 관련이 없으면, I/O 시스템(200)은 I/O 요청을 만족시킨다. 예를 들어, I/O 시스템(200)은 데이터가 몇몇 시스템에서 하드 드라이브, 플로피 디스크, 플래시 메모리, 테이프 드라이브, CD 등과 같은 국부 하드웨어 장치인 I/O 장치(202)에 기록되게 할 수 있다. 이와는 다르게, I/O 장치(202)는 네트워크 접속을 통해 컴퓨팅 장치(100)에 접속되는 원격 하드웨어 장치일 수 있다.
그러나 불행하게도, 바이러스 방지 소프트웨어 어플리케이션에게 I/O 요청에 관련된 데이터에의 액세스를 제공하는 도 2에 예시된 종래 기술 프로세스는 바이러스 방지 소프트웨어 판매자가 각각 커널 모드 필터를 개발해야 한다는 단점이 있다. 도 2에 예시된 바와 같이, 바이러스 방지 필터(206, 208 및 210)는 특정한 바이러스 방지 소프트웨어 어플리케이션에 관련해서만 이용될 수 있다. 또한, 각각의 바이러스 방지 소프트웨어 어플리케이션마다 본질적으로 동일한 태스크를 수행하기 위해 커널 모드 필터를 유지하기 때문에, 컴퓨터 시스템은 중복 코드가 메모리에 동시에 로드된다는 수행 부담이 있다.
그러나 불행하게도, 바이러스 방지 소프트웨어 어플리케이션에게 I/O 요청에 관련된 데이터에의 액세스를 제공하는 도 2에 예시된 종래 기술 프로세스는 또한 컴퓨팅 장치로부터의 멀웨어의 제거가 방해될 가능성이 있다는 단점도 갖는다. 두 개 이상의 바이러스 방지 소프트웨어 어플리케이션이 동일한 컴퓨팅 장치 상에 설 치되면, 데이터 충돌이 일어난다는 것은 알려져 있다. 예를 들어, 두 개의 바이러스 방지 소프트웨어 어플리케이션이, 컴퓨팅 장치 상에 저장된 파일이 멀웨어에 의해 감염되어 있다고 판정할 수 있다. 제1 바이러스 방지 소프트웨어 어플리케이션은 파일 데이터를 삭제함으로써 파일을 "치료"하려고 시도할 수 있다. 그러나, 제1 바이러스 방지 소프트웨어 어플리케이션이 파일 데이터를 삭제하려고 시도하면, 전형적으로 제2 바이러스 방지 소프트웨어 어플리케이션에게 통지될 것이다. 이 경우에서, 제2 바이러스 방지 소프트웨어 어플리케이션은 감염된 파일에의 어떤 액세스도 방지되도록 구성될 수 있다. 또한, 제1 바이러스 방지 소프트웨어 어플리케이션은 제2 바이러스 방지 소프트웨어 어플리케이션과 같은 다른 어플리케이션이 감염된 파일에 액세스하지 못하게 하도록 구성될 수 있다. 이 상황에서, 명백하게, 멀웨어는 제1 바이러스 방지 소프트웨어 어플리케이션이나 제2 바이러스 방지 소프트웨어 어플리케이션에 의해 삭제되지 못한다.
도 3은 본 발명에 따라 바이러스 방지 소프트웨어 어플리케이션에게 I/O 요청에 관련된 데이터에의 액세스를 제공하는 프로세스를 예시하기에 적절한 블럭도이다. 다음은 본 발명이 구현될 수 있는 하나의 적절한 컴퓨팅 장치(300)의 예시적인 개요를 제공하도록 의도된 것이다. 도 3에 예시된 컴퓨팅 장치(300)는 도 2를 참조하여 상술된 유사한 이름의 컴포넌트와 유사한 방식으로 동작할 수 있는 몇몇 컴포넌트를 포함한다. 컴퓨팅 장치(300)는 I/O 시스템(302), I/O 장치(304), 사용자 어플리케이션(306), 바이러스 방지 소프트웨어 어플리케이션(308, 310 및 312), 보안 서비스 어플리케이션(314), 및 스캔 캐시(318)와 데이터 매핑 모듈 (320)을 포함하는 일반화된 보안 필터(316)를 포함한다. 본 발명에 의해 구현된 루틴이 구현된 소프트웨어는 보안 서비스 어플리케이션(314), 및 스캔 캐시(318)와 데이터 매핑 모듈(320)을 포함하는 일반화된 보안 필터(316)에 포함된다. 도 3에 예시된 바와 같이, 보안 서비스 어플리케이션(314)은 사용자 모드에서 실행되며, 일반화된 보안 필터(316)는 커널 모드에서 실행된다. 일반적으로 설명하면, 본 발명에 의해 구현된 루틴은 바이러스 방지 소프트웨어 어플리케이션(308, 310 및 312)과 같은 사용자 모드 어플리케이션이 I/O 시스템(302)에 의해 만족되도록 스케줄링된 I/O 요청에 관련된 데이터에 액세스하는 방식을 제공한다. 도 3에 예시된 바와 같이, 바이러스 방지 소프트웨어 어플리케이션(308, 310 및 312)은 커널 모드 필터를 이용하지 않고 기능할 수 있다. 또한, 컴퓨팅 장치(300)는 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는데 이용되어, 데이터를 스캐닝하고 데이터가 멀웨어에 감염되어 있는지를 판정할 수 있다. 도 3 및 수반된 텍스트가 바이러스 방지 소프트웨어 어플리케이션을 이용하여 본 발명의 실시예를 설명하고 있지만, 본 발명의 소프트웨어 구현 루틴은 다른 유형의 어플리케이션에 관련하여 이용될 수도 있다. 마찬가지로, 본 발명의 소프트웨어 구현 루틴은 어플리케이션 대신 특정 함수를 수행하는 서비스와 대화할 수도 있다. 그러므로, 도 3에 예시된 컴퓨팅 장치(300)의 컴포넌트들은 예시적인 것일 뿐 제한적인 것으로 해석되어서는 안된다.
상술한 바와 같이, 본 발명의 루틴이 구현된 몇몇의 소프트웨어는 일반화된 보안 필터(316)에 위치한다. 본 발명의 일 실시예를 설명하는 일상적인 말로, 일 반화된 보안 필터(316)는 사용자 어플리케이션(306)과 같은 사용자 어플리케이션으로부터 행해진 I/O 요청을 인터셉팅한다. 이에 응답하여, 일반화된 보안 필터(316)는 컴퓨팅 장치(300)에서의 멀웨어의 확산 또는 실행을 방지하도록 설계된 루틴을 수행한다. 특히, 일반화된 보안 필터(316)는 보안 서비스 어플리케이션(314)(후술됨)과 대화하여, 바이러스 방지 소프트웨어 어플리케이션이 그 요청에 관련된 파일을 분석하고 그 파일이 멀웨어를 포함하는지를 판정하게 한다. 멀웨어가 탐지되면, 일반화된 보안 필터(316)는 I/O 시스템(302)과 대화하여, 요청이 만족되지 못하게 한다.
도 3에 예시된 바와 같이, 일반화된 보안 필터(316)는 본 발명이 I/O 시스템(302)으로부터 인터셉팅한 I/O 요청을 분석하는 속도를 향상시키는 스캔 캐시(318)를 포함한다. 예를 들어, 당업자 및 다른 사람들에게 알려진 바와 같이, 사용자 어플리케이션은 주로 동일한 파일로 향한 그 다음의 I/O 요청을 만들 것이다. 이 경우에서, 본 발명은 제1 I/O 요청을 인터셉팅하고, 바이러스 방지 소프트웨어 어플리케이션(308, 310 및 312)이 파일을 스캐닝하고 그 파일이 멀웨어에 감염되지 않았다는 것을 검증하게 한다. 파일이 감염되지 않은 경우에, 그 다음의 I/O 요청은 파일의 스캔을 시작시키지 않는다. 대신, 스캔 캐시(318)가 파일이 멀웨어에 감염되어 있는지에 관하여 파일의 상태를 추적함으로써, 불필요한 스캔이 수행되지 않는다. 파일은 (1) 멀웨어라고 알려짐, (2) 안전하다고 알려짐 또는 (3) 모름으로 분류된다. 파일을 스캐닝하는 것은 자원 집약적 프로세스이므로, 불필요한 스캔을 방지하여 본 발명의 속도를 향상시킨다. 보다 상세하게 후술된 바와 같이, 스캔 캐시(318)는 멀웨어의 확산 또는 실행을 방지하도록 설계된 시스템 이외에 파일의 상태를 추적하는 다른 시스템에 관련하여 이용될 수도 있다. 예를 들어, 몇몇 소프트웨어 어플리케이션은 사용자가 2차 하드웨어 장치에 데이터를 "백업" 또는 저장하게 한다. 이 경우에서, 소프트웨어 어플리케이션은 2차 하드웨어 장치가 가장 최근 버전의 파일을 갖고 있는지에 관련하여 컴퓨팅 장치 상의 각 파일의 상태를 추적한다. 스캔 캐시(318)는 컴퓨팅 장치 상의 파일의 상태를 추적하기 위한 이러한 유형의 시스템에 관련하여 이용될 수 있다.
일반화된 보안 필터(316)는 어떤 바이러스 방지 소프트웨어 어플리케이션이 파일을 스캐닝할 수 있는지에 대한 신뢰성 및 그 속도를 향상시키는 데이터 매핑 모듈(320)을 포함한다. 전형적으로, 요즘의 바이러스 방지 소프트웨어 어플리케이션이 파일 여는 동작을 인터셉팅하면, 파일 데이터를 판독하는데 이용되는 제2 파일 핸들이 열린다. 그러나, 당업자 및 다른 사람들에게 알려진 바와 같이, 파일은 다수의 어플리케이션이 파일을 동시에 액세싱하지 못하게 하기 위해 "잠겨"있을 수 있다. 다른 어플리케이션이 파일을 "잠갔"을 경우, 바이러스 방지 소프트웨어 어플리케이션은 그 데이터를 판독하지 못할 수 있다. 또한, 새로운 핸들이 열리면 다른 어플리케이션은 파일을 열지 못할 수 있으며, 이것은 종래 기술에서 어플리케이션 실패를 발생시킨다. 그러나, 데이터 매핑 모듈(320)은 제2 파일 핸들의 생성을 요구하지 않고서 바이러스 방지 소프트웨어 어플리케이션(308, 310 및 312)과 같은 어플리케이션에게 파일 데이터에의 액세스를 제공한다. 대신, 데이터 매핑 모듈(320)은 어플리케이션에게 파일 데이터가 판독될 수 있는 저레벨 객체에의 액세스를 제공한다. 저레벨 객체에의 액세스는 다른 어플리케이션이 파일을 "잠갔"는지에 상관없이 이용가능하다. 또한, 제2 파일 핸들의 생성은 상당한 컴퓨터적 자원을 요청한다. 그러므로, 바이러스 방지 소프트웨어 어플리케이션이 저레벨 객체를 이용하여 파일 데이터를 판독할 수 있으면 바이러스 방지 소프트웨어 어플리케이션이 멀웨어에 대해 스캔을 수행할 수 있는 속도가 향상된다. 보다 상세하게 후술된 바와 같이, 데이터 매핑 모듈(320)은 파일 데이터를 판독하는 다른 시스템과 관련하여 이용될 수 있다. 예를 들어, 몇몇 소프트웨어 어플리케이션은 파일을 하드웨어 장치 상에 저장하기 전에 그 파일을 암호화하고, 하드웨어 장치로부터의 검색이 수행될 때 파일을 복호화한다. 이 경우에서, 데이터 매핑 모듈(320)은 암호화 어플리케이션이 파일 내의 데이터에 액세스하기에 효율적인 방식을 제공하는데 이용될 수 있다.
도 3에 예시된 바와 같이, 컴퓨팅 장치(300)는 특히 컴퓨팅 장치(300) 상에 설치된 바이러스 방지 소프트웨어 어플리케이션에의 인터페이스로 동작하는 보안 서비스 어플리케이션(314)을 포함한다. 보안 서비스 어플리케이션(314)은 바이러스 방지 소프트웨어 어플리케이션을 등록하고 바이러스 방지 소프트웨어 어플리케이션이 스캐닝 프로파일을 생성하게 한다. 스캐닝 프로파일은 바이러스 방지 어플리케이션이 "관심있어하는" I/O 요청을 식별한다. 예를 들어, I/O 요청이 멀웨어에 감염되어 있는지에 관해 "모름" 상태를 갖는 파일을 향해 있을 때, 스캐닝 프로파일은 바이러스 방지 소프트웨어 어플리케이션이 스캔을 수행할 것임을 나타낼 수 있다. 이와는 다르게, 스캐닝 프로파일은, 소정 유형의 I/O 요청이 생성될 때 바 이러스 방지 소프트웨어 어플리케이션이 스캔을 수행하도록 정의될 수 있다. 임의의 이벤트에서, 바이러스 방지 소프트웨어 어플리케이션은 보안 서비스 어플리케이션(314)에 등록되고, 스캔이 수행될 환경을 정의하는 프로파일을 생성한다. 보안 서비스 어플리케이션(314)은 상이한 등록된 바이러스 방지 소프트웨어 어플리케이션들 간에 스캔을 스캐줄링할 책임이 있다.
본 발명의 구현은 도 3에 도시된 예시적인 컴퓨팅 장치(300)에 제한되지 않는다. 예를 들어, 도 3 및 수반된 텍스트는 사용자 모드에서 실행되는 바이러스 방지 소프트웨어 어플리케이션(308, 310 및 312)을 설명한다. 그러나 본 발명의 소프트웨어 구현 루틴은 커널 모드에서 실행되는 바이러스 방지 소프트웨어 어플리케이션과 대화하도록 구성될 수 있다. 또한, 컴퓨팅 장치(300)는 사용자 어플리케이션(306)으로부터 I/O 요청을 수신하는 것으로 도시된다. 그러나, 당업자 및 다른 사람들이 이해하는 바와 같이, I/O 요청은 원격 컴퓨팅 장치 간의 통신을 위해 이용되는 프로토콜과 같은 다른 소스(source)로부터 수신될 수 있다. 또한, I/O 장치(304)는 컴퓨팅 장치(300)의 컴포넌트인 하드웨어 장치로 예시된다. 그러나, I/O 장치(304)는 네트워크 접속을 통해 컴퓨팅 장치(300)에 접속된 원격 하드웨어 장치일 수 있다. 이와는 다르게, I/O 요청은 하드웨어 장치를 향해 있지 않을 수 있다. 대신, I/O 요청은 파이프, 통신 자원, 디스크 장치, 콘솔, 메일 슬롯 (이에 제한되지 않음) 등을 포함하는, 파일 생성 코맨드를 이용하여 액세스될 수 있는 객체를 향해 있을 수 있다. 그러므로, 도 3에 예시된 컴퓨팅 장치(300)의 컴포넌트는 예시적인 것일 뿐 제한적인 것으로 해석되어서는 안된다.
도 4는 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으도록 설계된 일 예시적인 방법(400)의 순서도이다. 요약하면, 방법(400)은 바이러스 방지 소프트웨어 어플리케이션이 일반 정보 모델을 통해 I/O 요청을 접하게 한다. I/O 요청이 생성되면, 방법(400)은 컴퓨팅 장치 상에 설치된 하나 이상의 바이러스 방지 소프트웨어 어플리케이션에 의한 스캔이 필요한지를 판정한다. 스캔이 필요한 경우, 방법(400)은 생성된 I/O 요청의 유형에 "관심있어하는" 바이러스 방지 소프트웨어 어플리케이션을 식별한다. 일반 정보 모델을 통해, 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 스캔을 수행하여, 멀웨어가 I/O 요청에 관련되어 있는지를 판정할 수 있다. 도 1-3 및 수반된 설명을 계속 참조하여, 도 4에 예시된 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는 예시적인 방법(400)이 이제 설명될 것이다.
판정 블럭(402)에서, 방법(400)은 전형적으로 유휴상태로서, I/O 시스템(302)(도 3)과 같은 오퍼레이팅 시스템의 커널 모드 컴포넌트가 수신할 I/O 요청을 대기하고 있다. 당업자에 의해 인식될 바와 같이, I/O 요청은 다양하고 상이한 메커니즘을 통해 생성될 수 있다. 예를 들어, 워드 프로세싱 프로그램의 사용자는 "파일 열기" 코맨드가 드롭다운 메뉴 또는 다른 그래픽 기반 입력 시스템으로부터 생성되도록 할 수 있다. "파일 열기" 코맨드를 만족시키기 위해, 워드 프로세싱 프로그램은 메모리 장치로부터 파일 데이터를 획득하는 것을 요청하는 API 호출을 생성할 수 있다. 또 다른 예로서, 웹 브라우저 프로그램의 사용자는 원격 컴퓨터로부터 파일을 다운로드하기 위한 코맨드를 생성할 수 있다. 그 코맨드를 만족시 키기 위해, 웹 브라우저 프로그램은 I/O 장치(304)(도 3)와 같은 하드웨어 장치 상에 데이터 스트림을 저장하기 위한 API 호출을 생성할 수 있다. I/O 요청이 생성되면, I/O 시스템(302)이 하드웨어 장치와 상호작용하여 요청을 만족시킨다. 그러나, 방법(400)은 I/O 요청이 I/O 시스템(302)에 의해 만족되기 전에 I/O 요청을 인터셉팅함으로써, 멀웨어의 실행 및/또는 확산을 방지한다.
판정 블럭(404)에서, 방법(400)은 블럭(402)에서 수신한 I/O 요청이 새로운 파일을 생성시키는 코맨드인지를 판정한다. 블럭(402)에서 인터셉팅할 수 있는 I/O 요청의 한 유형은 새로운 파일을 생성시킨다. 이 유형의 요청은 컴퓨팅 장치를 멀웨어에 노출시킬 수 없다. 블럭(422)에서 후술된 바와 같이, 새로운 파일을 생성시키는 코맨드는 방법(400)이 수신하는 다른 I/O 요청과는 상이하게 처리된다. 새로운 파일을 생성하는 코맨드는 요즘의 오퍼레이팅 시스템으로부터 이용가능한 수많은 상이한 코맨드 중 임의의 하나를 이용하여 생성될 수 있다. 예를 들어, 윈도우즈 오퍼레이팅 시스템의 관점에서, 새로운 파일은 "파일생성" API와 같은 새로운 파일을 생성하기 위해 특별히 설계된 API를 이용하여 생성될 수 있다. 이와는 다르게, 새로운 파일은 열기, 오버라이팅 및 폐기 API와 같은 다른 API를 이용하는 소정의 환경에서도 생성될 수 있다. 블럭(404)에서 수신한 요청이 새로운 파일을 생성하는 코맨드이면, 방법(400)은 후술된 블럭(422)으로 진행된다. 이와는 다르게, 요청이 새로운 파일을 생성하는 코맨드가 아니면, 방법(400)은 블럭(406)으로 진행된다.
판정 블럭(406)에서, 방법(400)은 블럭(402)에서 인터셉팅한 I/O 요청이 컴 퓨팅 장치를 멀웨어에 노출시킬 가능성이 있는지를 판정한다. 당업자 및 다른 사람들에게 알려진 바와 같이, 어떤 I/O 요청은 컴퓨팅 장치를 멀웨어에 노출시킬 가능성을 갖지 않을 수 있다. 예를 들어, I/O 요청이 "파일 열기" 코맨드이고 지정한 파일이 어떤 데이터도 포함하고 있지 않으면, 코맨드를 만족시키는 것은 컴퓨팅 장치를 멀웨어에 노출시키지 못한다. 마찬가지로, 블럭(402)에서 수신한 I/O 요청은 디렉토리를 열거나 닫는 코맨드일 수 있다. 이 경우에서, I/O 요청은 컴퓨팅 장치를 멀웨어에 노출시키지 못한다. 당업자 및 다른 사람들은, 다른 유형의 I/O 요청이 컴퓨팅 장치를 멀웨어에 노출시킬 가능성을 갖지 않음을 인식할 것이다. 그러므로, 상술된 예는 예시적인 것일 뿐 제한적인 것으로 해석되어서는 안된다. 블럭(402)에서 수신한 요청이 컴퓨팅 장치를 멀웨어에 노출시킬 가능성을 갖지 않으면, 방법(400)은 후술된 블럭(426)으로 진행된다. 이와는 다르게, 블럭(402)에서 수신한 요청이 컴퓨팅 장치를 멀웨어에 노출시킬 가능성을 가지고 있으면, 방법(400)은 블럭(408)으로 진행된다.
블럭(408)에서, 방법(400)은 스캔 캐시(318)와 같은 데이터베이스에 질의하고 블럭(402)에서 수신한 I/O 요청의 객체인 파일의 상태를 식별한다. 보다 상세하게 후술된 바에 따르면, 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 멀웨어에 대해서 파일을 스캐닝할 때, 변수가 파일에 관련된다. 변수는 (1) 멀웨어라고 알려짐, (2) 양호하다고 알려짐, 또는 (3) 모름을 포함하는 세 가지의 가능한 상태 중 하나를 나타낸다.
예시의 목적을 위해서 및 단지 예로서, 예시적인 스캔 캐시(318)의 컨텐츠가 도 5에 도시된다. 예시된 바와 같이, 스캔 캐시(318)는 각각이 다수의 엔트리를 포함하는 세 개의 열로 구성된다. 열은 파일색인(502), 제1 비트(504) 및 제2 비트(506)로 식별된다. 파일색인(502) 필드는 고유하게 파일을 식별하는데 이용될 수 있는 값을 포함한다. 당업자 및 다른 사람들에게 알려진 바와 같이, 메모리 장치는 전형적으로 볼륨(volume)아라고 칭해지는 논리적인 유닛으로 파티셔닝된다. 각각의 볼륨은 그 볼륨 상의 파일들에 대한 정보가 저장되어 있는 중심적인 위치를 갖는다. 예를 들어, 윈도우즈 NT 파일 시스템("NTFS")은 볼륨 상의 각 파일에 대한 레코드를 포함하는 마스터 파일 테이블("MFT")을 유지한다. 파일이 생성되면, 파일에 대한 새로운 레코드가 MFT에 저장되고, 미리결정된 양만큼의 공간이 파일 속성을 저장하기 위해 할당된다. 예를 들어, 각각의 파일은 MFT 내에 파일의 위치를 나타내는 고유한 파일 색인을 할당받는다. 보다 상세하게 후술된 바와 같이, 파일이 본 발명에 따라 하나 이상의 바이러스 방지 소프트웨어 어플리케이션에 의해 스캐닝 될 때, MFT 내의 파일에 관련된 색인 값이 스캔 캐시(318)의 파일색인(502) 필드에 입력된다. 제1 비트(504)와 제2 비트(506) 필드 각각은 파일의 상태를 선택적으로 식별하는 값을 저장한다. 예를 들어, 제1 비트(504)와 제2 비트(506) 필드 모두는 "0" 또는 "1"의 값을 포함한다. 본 발명의 일 실시예에서, 제1 비트(504) 필드가 "1"을 포함하고 제2 비트(506) 필드가 "0"을 포함하면, 필드의 상태는 "멀웨어라고 알려짐"이다. 이와 다르게, 제1 비트(504) 필드가 "0"을 포함하고 제2 비트(506) 필드가 "1"을 포함하면, 필드의 상태는 "양호하다고 알려짐"이다. 또한, 제1 비트(504) 필드가 "0"을 포함하고 제2 비트(506) 필드가 "0"을 포 함하면, 필드의 상태는 "모름"이다. 도 5가 특정 속성을 갖는 스캔 캐시(318)를 예시하지만, 당업자는 스캔 캐시(318)가 리스팅된 속성 모두보다 많거나 또는 적은 속성으로 동작할 수 있음을 인식할 것이다.
파일의 상태를 추적하는 종래 기술은 스캔 캐시(318)에 비해 에러를 발생시키기 쉬우며 자원 집약적이다. 예를 들어, 파일이 멀웨어에 감염되어 있는지를 추적하기 위한 하나의 알려진 기술은 해시 테이블(hash table)을 이용한다. I/O 요청을 인터셉팅하면, 해시 키로서 스트링 기반 파일 이름을 이용하여 해시 테이블을 검색한다. 그러나, 파일 이름이 항상 파일을 고유하게 식별하는 것은 아니다. 예를 들어, 사용자가 "링크"를 생성하여 파일을 참조할 때, 파일은 두 개 이상의 파일 이름과 관련되어 있을 수 있다. 이 경우에서, 해시 테이블은 동일한 파일에 대해서 다수의 엔트리를 포함할 수 있다. 결과적으로, 파일이 두 개 이상의 파일 이름에 의해 참조될 때, 바이러스 방지 소프트웨어 어플리케이션은 불필요한 스캔을 수행할 수 있다. 상술된 바와 같이, 스캔 캐시(318)는 파일을 식별하기 위해 중복 스캔이 일어나는 것을 방지하는 MFT로부터 획득된 고유 파일 색인을 이용한다. 또한, 해시 키를 계산하거나 스트링 기반 파일 이름을 검색하는 것은 비트맵으로부터의 비트를 질의하는 것에 비하면 자원 집약적이다. 예를 들어, 해시 테이블은 전형적으로 많은 메모리를 소용하므로, 해시 테이블 내의 엔트리가 결국 새로운 파일을 수용하기 위해 삭제된다. 그러나, 스캔 캐시(318) 내의 엔트리는 충분히 작은 양의 메모리를 필요로하므로, 새로운 엔트리를 수용하기 위해 엔트리들이 삭제되지는 않을 것이다.
상술된 바와 같이, 스캔 캐시(318)는 하나 이상의 파일의 상태를 추적하기 위해 다른 시스템과 관련하여 이용될 수 있다. 단지 예로서, 스캔 캐시(318)는 (1) 2차 하드웨어 장치 상에서의 그들의 저장에 관련해 파일의 상태를 추적하기 위한 "백업" 어플리케이션, (2) 파일이 암호화되어 있는지를 추적하기 위한 암호화/복호화 어플리케이션, 및 (3) 파일이 부적절한 컨텐츠를 포함하고 있는지를 추적하기 위한 컨텐츠 필터링 어플리케이션에 관련하여 구현될 수 있다. 당업자 및 다른 사람들에게 알려진 바와 같이, 추가적인 데이터를 저장하기 위한 비트가 스캔 캐시(318)에 추가되어, 이러한 유형의 시스템에 대한 요구사항을 만족시킨다.
도 4를 참조하면, 판정 블럭(410)에서 방법(400)은 파일에 관한 상태가 "양호하다고 알려짐" 또는 멀웨어 감염으로부터 자유로운지를 판정한다. 본 발명의 예시적인 실시예에서, 파일이 "양호하다고 알려짐"인지에 대한 판정은, 스캔 캐시(318)에 포함된 비트 정보와 같은 데이터베이스에 포함된 데이터를 분석함으로써 내려진다. 데이터베이스를 질의하는 것과 파일 색인에 관한 정보를 분석하는 것은 본 기술에 일반적으로 알려진 기술을 이용해 수행될 수 있기 때문에, 본 발명에 이용되는 그 기술은 여기서 설명되지 않는다. 이와는 다르게, 파일이 "양호하다고 알려짐" 이외의 상태와 관련되면, 방법(400)은 블럭(412)으로 진행된다.
판정 블럭(412)에서, 방법(400)은 파일에 관한 상태가 "멀웨어라고 알려짐"인지를 판정한다. 파일이 "양호하다고 알려짐"으로 식별된 경우와 마찬가지로, 파일이 "멀웨어라고 알려짐"인지에 대한 판정도 스캔 캐시(318)에 포함된 비트 정보와 같은 데이터베이스에 포함된 데이터를 분석함으로써 내려진다. 파일 상태가 "멀 웨어라고 알려짐"으로 식별되면, 방법(400)은 후술된 블럭(428)으로 진행된다. 이와는 다르게, 파일이 모름 상태에 관련되면, 방법(400)은 블럭(414)으로 진행된다.
블럭(414)에서, 방법(400)은 파일 데이터에의 액세스를 가진, 사용자 모드에서 실행되는 바이러스 방지 소프트웨어 어플리케이션을 제공한다. 블럭(414)에 도달하면, 파일에 관련된 상태는 "모름"이고 방법(400)은 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 블럭(402)에서 인터셉팅한 I/O 요청의 객체인 파일을 스캐닝하게 할 것이다. 본 발명은 바이러스 방지 소프트웨어 어플리케이션에게 파일 데이터에 효율적으로 액세스하는 방식을 제공하여, 멀웨어에 대한 스캔이 빠르게 수행될 수 있게 한다. 바이러스 방지 소프트웨어 어플리케이션에게 파일 데이터에의 액세스를 제공하는 방법에 대한 일 실시예는 도 6을 참조하여 후술된다.
블럭(416)에서, 방법(400)은 블럭(402)에서 수신한 I/O 요청의 객체인 파일을 스캐닝할 바이러스 방지 소프트웨어 어플리케이션을 선택한다. 도 3을 참조하여 상술된 바와 같이, 본 발명의 양상은 바이러스 방지 소프트웨어 어플리케이션을 등록시키고 스캐닝 프로파일(scanning profile)을 생성하게 한다. 스캐닝 프로파일은 바이러스 방지 소프트웨어 어플리케이션이 "관심있어하는" I/O 요청을 정의한다. 방법(400)은 컴퓨팅 장치 상에 설치된 바이러스 방지 소프트웨어 어플리케이션의 스캐닝 프로파일을 체크하고 이어서 인터셉팅한 I/O 요청에 "관심있어하는" 바이러스 방지 소프트웨어 어플리케이션을 선택한다.
블럭(418)에서, 방법(400)은 선택된 바이러스 방지 소프트웨어 어플리케이션이 데이터를 스캐닝하고 블럭(402)에서 수신한 I/O 요청의 객체인 파일이 멀웨어에 감염되어 있는지를 판정하게 한다. 상술된 바와 같이, 바이러스 방지 소프트웨어 어플리케이션은 전형적으로 감염이 존재하는지를 판정할 때 데이터의 패턴을 멀웨어 "서명"에 매칭시킨다. 그러나, 점차적으로, 바이러스 방지 소프트웨어 어플리케이션은 혁신적인 멀웨어 탐지 기술을 이용한다. 예를 들어, 몇몇 바이러스 방지 어플리케이션은 데이터가 가상적인 오퍼레이팅 환경에서 실행되게 함으로써, 프로그램 습성을 열거한다. 가상적인 오퍼레이팅 환경에서의 자원의 오용/남용이 탐지되면, 바이러스 방지 소프트웨어 어플리케이션은 파일이 멀웨어에 감염되어 있다고 판정한다. 임의의 이벤트에 의해, 블럭(418)에서, 선택된 바이러스 방지 소프트웨어 어플리케이션은 파일 데이터를 획득하고 파일 데이터가 멀웨어에 감염되 있는지를 판정하기 위한 활동을 수행한다. 도 6을 참조하여 보다 상세하게 후술된 바와 같이, 파일 데이터는 등록된 바이러스 방지 소프트웨어 어플리케이션에 이용가능한 일반 정보 모델을 이용하여 획득될 수 있다.
멀웨어 감염이 존재하는지를 판정하는 것 이외에, 블럭(418)에서 바이러스 방지 소프트웨어 어플리케이션은 교정 활동을 수행할 수 있다. 당업자 및 다른 사람들에게 알려진 바와 같이, 요즘의 바이러스 방지 소프트웨어 어플리케이션은 멀웨어로 식별된 데이터를 삭제하거나 멀웨어 감염을 교정할 수 있다. 블럭(418)에서 멀웨어가 탐지되면, 선택된 바이러스 방지 소프트웨어 어플리케이션은 교정 활동을 취하도록 허용된다. 한번에 단지 하나의 바이러스 방지 소프트웨어 어플리케이션이 선택될 수 있기 때문에, 블럭(418)에서 취한 임의의 교정 활동은 데이터 충돌을 일으킬 가능성 없이 수행된다. 다르게 설명하면, 방법(400)은 바이러스 방지 소프트웨어 어플리케이션에 의해 취해지는 교정 활동이 연속적으로 일어나게 스케줄링하는데, 이것은 데이터 뷰가 다른 바이러스 방지 소프트웨어 어플리케이션에 관해서 일관성이 있음을 의미한다.
판정 블럭(420)에서, 방법(400)은 임의의 추가적인 바이러스 방지 소프트웨어 어플리케이션이 선택될지를 판정한다. 상술된 바와 같이, 방법(400)은 멀웨어의 존재를 탐지하기 위해 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는데 이용될 수 있다. 추가적인 바이러스 방지 소프트웨어 어플리케이션이 선택되지 않으면, 방법(400)은 후술된 블럭(422)으로 진행된다. 반대로, 추가적인 바이러스 방지 소프트웨어 어플리케이션이 선택되면, 방법(400)은 블럭(416)으로 진행되고, 블럭(402)에서 인터셉팅한 I/O 요청에 "관심있는" 모든 바이러스 방지 소프트웨어 어플리케이션이 스캔을 수행할 수 있을 때까지 블럭(416-420)이 반복된다.
블럭(422)에서, 파일 상태가 스캔 캐시(318)와 같은 데이터베이스에 저장된다. 상술된 바와 같이, 소정의 경우에서, 방법(400)은 바이러스 방지 소프트웨어 어플리케이션이 데이터 파일을 스캐닝하고 파일이 멀웨어에 감염되어 있는지를 판정하도록 할 수 있다. 본 발명의 일 예시적인 실시예에서, 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 멀웨어의 존재를 탐지했는데 감염을 교정할 수 없으면, 파일은 스캔 캐시(318)에 "멀웨어라고 알려짐"으로 표시된다. 이 실시예에서, 어느 바이러스 방지 소프트웨어 어플리케이션도 멀웨어의 존재를 탐지하지 않았으면, 파일은 스캔 캐시(318)에 "양호하다고 알려짐"으로 표시된다. 당업자 및 다른 사람들은, 파일이 멀웨어에 감염되어 있음을 판정하는 다른 가능한 실시예가 있음을 인식할 것이다. 예를 들어, 방법(400)은, 파일이 스캔 캐시(318)에 "멀웨어라고 알려짐"으로 식별되기 전에, 컴퓨팅 장치 상에 설치된 대부분의 바이러스 방지 소프트웨어 어플리케이션이 멀웨어를 탐지할 것을 요청할 수 있다. 특히, 방법(400)은 바이러스 방지 소프트웨어 어플리케이션이 생성한 결과 세트에 대한 가중치 값을 계산하는 시스템으로 구현될 수 있다. 이 경우에서, 가중치 값이 임계치 보다 크면, 파일은 스캔 캐시(318)에 "멀웨어라고 알려짐"으로 표시된다. 어플리케이션으로부터 수신한 입력에 기초하여 가중치 값을 계산하는 시스템은 일반적으로 본 기술에 알려진 것이기 때문에, 이 시스템에 대한 추가적인 설명은 여기에 제공되지 않는다.
블럭(404)에서 상술된 바와 같이, 블럭(402)에서 인터셉팅한 I/O 요청은 새로운 파일을 생성하게 하는 코맨드일 수 있다. 이 경우에서, 코맨드는 컴퓨팅 장치를 멀웨어에 노츨시키지 않고서 만족 될 수 있다. 블럭(422)에서, 코맨드에 관련된 파일의 상태는 스캔 캐시(318) 내에 "양호하다고 알려짐"으로 식별된다. 블럭(408)에 상술된 바와 같이, 본 발명의 일 실시예에서, 고유한 파일 색인 값이 MFT로부터 획득되어 스캔 캐시(318) 내에서 파일을 식별하기 위해 이용된다. 그러나, 파일이 컴퓨팅 장치로부터 삭제되면, MFT는 그 삭제된 파일에 관련된 파일 색인 값을 새로운 파일에 재할당할 수 있다. 본 발명은 파일이 삭제될 때, 파일의 상태를 스캔 캐시(318)에 기록되어 있는 것으로 바꾸지 않는다. 대신, 새로운 파일을 생성하게 하는 코맨드를 수신하면, 이 방법은 단순히 삭제된 파일의 상태를 코맨드의 객체인 파일의 상태로 오버라이팅한다.
상술된 바와 같이, 방법(400)은 파일의 상태가 스캔 캐시(318)와 같은 데이터베이스에 저장되게 한다. 몇몇 경우에서, 스캔 캐시(318)가 파일 시스템의 성장을 수용할 수 있게 하기 위한 추가적인 관리 절차들이 블럭(422)에서 수행될 수 있다. 예를 들어, 본 발명의 일 실시예에서, I/O 요청이 스캔 캐시(318)에 엔트리를 유지하고 있지 않은 이전에 식별되지 않은 파일을 향해 있으면, 보다 큰 스캔 캐시가 생성된다. 보다 작은 스캔 캐시(318)의 컨텐츠가 이전에 식별되지 않은 파일의 상태에 따라 보다 큰 스캔 캐시로 복사된다. 이 실시예의 최적화는 스캔 캐시(318)에 할당된 메모리가 I/O 요청의 객체가 될 추가적인 파일에 대한 이전에 식별되지 않은 파일을 수용하기 위해 요청되는 최소 공간 이상의 미리결정된 비율만큼 성장하게 한다.
판정 블럭(424)에서, 방법(400)은 파일에 관련된 상태가 "멀웨어라고 알려짐"인지를 판정한다. 방법(400)은 새로운 파일을 생성하는 코맨드가 인터셉팅되거나 "모름"의 상태를 갖는 파일이 하나 이상의 바이러스 방지 소프트웨어 어플리케이션에 의해 스캐닝되면, 블럭(424)에 도달한다. 둘 중 하나의 경우에서, 파일에 관련된 상태는 스캔 캐시(318)와 같은 데이터베이스에 저장된다. 그러므로, 이전에 저장된 데이터를 재호출함으로써, 블럭(424)에서 파일이 멀웨어에 감염되어 있는지가 판정된다. 파일 상태가 멀웨어로 판정되면, 방법(400)은 후술된 블럭(428)으로 진행된다. 이와는 다르게, 파일이 멀웨어로 식별되지 않으면, 방법(400)은 블럭(426)으로 진행된다.
블럭(426)에서, 방법(400)은 I/O 시스템(302)(도 3)과 같은 오퍼레이팅 시스템의 컴포넌트로 프로그램 실행을 반환한다. 상술된 바와 같이, 방법(400)은 I/O 요청이 만족되기 전에 그것을 인터셉팅하여, 멀웨어의 실행 및/또는 확산을 방지한다. 블럭(426)에 도달하면, 블럭(402)에서 인터셉팅한 I/O 요청은 멀웨어로 컴퓨팅 장치를 감염시킬 수 없거나, 스캐닝된 후 컴퓨팅 장치에 설치된 바이러스 방지 소프트웨어 어플리케이션에 의해 멀웨어가 아니라고 식별된 데이터를 포함한다. 둘 중 하나의 경우에서, I/O 요청을 만족시키는 것은 멀웨어를 실행 및/또는 확산시키지 않을 것이다. 그러므로, 프로그램 실행이 I/O 시스템(302)에 반환된 후, I/O 요청이 종래기술에 따라 만족된다. 그 후, 방법(400)은 블럭(430)으로 진행되고, 여기서 종료된다.
블럭(428)에서, 방법(400)은 프로그램 실행을 I/O 시스템(302)와 같은 오퍼레이팅 시스템의 컴포넌트로 반환한다. 그러나, 블럭(428)에 도달하면, 블럭(402)에서 인터셉팅한 I/O 요청은 멀웨어를 실행 및/또는 확산시킬 수 있다. 그러므로, 프로그램 실행이 I/O 시스템(302)에 반환되면, I/O 요청이 실패되고 컴퓨터 사용자에게 멀웨어 감염이 보고된다. 그 후 방법(400)은 블럭(430)으로 진행되고, 여기서 종료된다.
본 발명의 구현은 도 4에 도시된 예시적인 방법(400)에 제한되지 않는다. 예를 들어, 방법(400)은 별개의 시작 및 종료를 갖는 것으로 예시되어 있다. 그러나, 본 발명의 실제 실시예에서, I/O 요청은 연속적인 프로세스에서 인터셉팅된다. I/O 요청이 멀웨어를 실행 및/또는 확산시키란 것을 믿기에 충분한 정보가 존재하 면, 방법(400)은 I/O 요청을 실패시킨다. 또한, 본 발명은 상기 제공된 예들에 제한되는 것은 아니다. 예를 들어, 방법(400)은 주로 파일 데이터를 스캐닝하는 것에 관련하여 설명되었다. 그러나, 당업자는, 방법(400)이 본 발명의 영역을 벋어나지 않으면서 데이터의 다른 유닛을 스캐닝하는데 이용될 수 있음을 인식할 것이다.
도 6은 도 4를 참조하여 설명된 방법(400)에 관련하여 이용되어, 매우 최적화된 방식으로 바이러스 방지 소프트웨어 어플리케이션에게 파일 데이터에의 액세스를 제공하는 한 예시적인 액세스 방법(600)의 순서도이다. 요약하면, 방법(600)은 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 스캔을 수행하는데 이용할 섹션 객체를 생성하는 것을 포함한다. 그 후 바이러스 방지 소프트웨어 어플리케이션과 인터페이싱하는 사용자 모드 어플리케이션에게 그 섹션 객체를 액세스하는데 필요한 정보가 제공된다. 마지막으로, 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 기본 파일 시스템 동작을 수행하게 하는 섹션 객체의 뷰가 생성된다. 도 1-5와 수반된 설명을 계속적으로 참조하여, 도 6에 제시된 예시적인 액세스 방법(600)이 설명될 것이다.
판정 블럭(602)에서, 액세스 방법(600)은 스캔 요청이 수신될 때까지 유휴상태로 있다. 상술된 바와 같이, 보안 서비스 어플리케이션(314)(도 3)은 컴퓨팅 장치(300)에 설치된 바이러스 방지 소프트웨어 어플리케이션에의 인터페이스로 동작한다. 바이러스 방지 소프트웨어 어플리케이션은 스캐닝 프로파일을 생성할 수 있는데, 그 스캐닝 프로파일은 바이러스 방지 소프트웨어 어플리케이션이 스캔을 수 행할 환경을 정의한다. 블럭(602)에서, 보안 서비스 어플리케이션(314)(도 3)은 바이러스 방지 소프트웨어 어플리케이션으로부터 스캔 요청을 수신한다. 두 개의 사용자 모드 어플리케이션들 간에 요청을 전달하는 것은 본 기술에 일반적으로 알려진 기술을 이용하여 구현될 수 있으므로, 여기서 이러한 기술에 대한 추가적인 설명은 제공하지 않는다.
블럭(604)에서, 하나 이상의 바이러스 방지 소프트웨어 어플리케이션이 스캐닝할 파일의 섹션 객체가 생성된다. 당업자 및 다른 사람들에게 알려진 바와 같이, 섹션 객체는 커널 및 사용자 모드 어플리케이션이 데이터를 공유하게 한다. 본 발명의 한 예시적인 실시예에서, 보안 서비스 어플리케이션(314)은 위한 일반화된 보안 필터(316)에게 스캐닝할 파일의 섹션 객체를 생성라는 요청을 한다. 도 2에 예시된 바와 같이, 파일 매핑 섹션 객체가 생성되기 전에, 오퍼레이팅 시스템(104)은 사용자 모드에서 커널 모드로 전환된다. 특히, 오퍼레이팅 시스템(104)은, 사용자 모드에서 실행되는 보안 서비스 어플리케이션(314)이 커널 모드에서 실행되는 일반화된 보안 필터(316)에게 요청을 한 후에 사용자 모드에서 커널 모드로 전환된다. 커널 모드로의 전환이 완료되면, 일반화된 보안 필터(316)는 스캐닝할 파일을 식별하고 파일 매핑 섹션 객체를 생성시키는 함수를 호출함으로써 요청에 응답한다.
블럭(606)에서, 사용자 모드 어플리케이션은 스캐닝할 파일에 액세스하는 데 필요한 정보를 이용할 수 있게 된다. 특히, 블럭(604)에서 생성된 파일 매핑 섹션 객체는 일반화된 보안 필터(316)에 의해 보안 서비스 어플리케이션(314)의 객체 테이블로 삽입된다. 당업자 및 다른 사람들에게 알려진 바와 같이, 요즘의 오퍼레이팅 시스템은 전형적으로 미리결정된 도메인 내의 프로그램을 실행시킨다. 예를 들어, 몇몇의 오퍼레이팅 시스템에서, 프로그램은 객체 테이블로 알려진 프로그램에 고유한 데이터 구조로 참조되는 객체에만 액세스할 수 있다. 블럭(604)에서 생성된 섹션 객체를 보안 서비스 어플리케이션(314)에 관련된 객체 테이블에 삽입함으로써, 블럭(604)에서 생성된 섹션 객체는 보안 서비스 어플리케이션(314)에 이용가능해진다. 도 2에 예시된 바와 같이, 파일 매핑 섹션 객체가 보안 서비스 어플리케이션(314)의 객체 테이블에 삽입된 후, 오퍼레이팅 시스템(104)은 커널 모드에서 사용자 모드로 전환된다.
판정 블럭(608)에서, 액세스 방법(600)은 유휴 상태로, 바이러스 방지 소프트웨어 어플리케이션이 파일 데이터를 요청할 것을 기다리고 있다. 상술된 바와 같이, I/O 동작이 인터셉팅되면, 하나 이상의 바이러스 방지 소프트웨어 어플리케이션은 일반 정보 모델과 상호작용하여 스캔을 스케줄링할 수 있다. 스캔을 완료하기 위해, 바이러스 방지 소프트웨어 어플리케이션은 기본 파일 시스템 동작을 수행할 필요가 있을 수 있다. 예를 들어, 전형적으로, 바이러스 방지 소프트웨어 어플리케이션은 파일 데이터를 "판독"하고 그 데이터를 알려진 멀웨어 서명과 비교할 것이다. 본 발명에 따르면, 바이러스 방지 소프트웨어 어플리케이션은 보안 서비스 어플리케이션(314)에 등록된 어플리케이션들이 이용할 수 있는 일반 정보 모델을 이용하는 기본 파일 시스템 동작을 수행할 수 있다. 본 발명의 일 실시예에서, 일반 정보 모델은 API 세트의 형태로 등록된 어플리케이션에 이용가능하다. 어떤 경우에서든, 판정 블럭(608)에서, 액세스 방법(600)은 유휴 상태로, 바이러스 방지 소프트웨어가 파일 데이터를 요청할 기다리고 있다.
판정 블럭(610)에서, 액세스 방법(600)은 스캐닝할 파일의 뷰가 보안 서비스 어플리케이션(314)의 메모리 공간으로 매핑될 필요가 있는지를 판정한다. 특히 고유한 파일의 다중 스캔이 동시에 일어날 수 있을 때, 보안 서비스 어플리케이션(314)의 가상 주소 공간을 효율적으로 이용하기 위해, 파일의 "뷰"는 어플리케이션이 파일 데이터의 일부에 액세스하게 하는 어플리케이션의 메모리 공간으로 매핑될 수 있다. 모든 파일 데이터가 동시에 어플리케이션의 메모리 공간에 로드될 수 없기 때문에, 새로운 뷰는 현재 뷰로부터 이용불가능한 데이터가 요청될 때 매핑된다. 블럭(608)에서 요청된 데이터가 보안 서비스 어플리케이션(314)의 메모리 공간에 매핑된 뷰로부터 이용불가능하면, 액세스 방법(600)은 새로운 뷰가 매핑될 필요가 있다고 판정하고 블럭(612)으로 진행된다. 반대로, 블럭(608)에서 요청된 데이터가 보안 서비스 어플리케이션(314)의 메모리 공간에 매핑된 뷰로부터 액세스가능하면, 액세스 방법(600)은 후술된 블럭(614)으로 진행된다.
블럭(612)에서, 블럭(604)에서 생성된 섹션 객체의 뷰가 매핑되고, 보안 서비스 어플리케이션(314)과 같은 사용자 모드 어플리케이션이 파일 데이터에 대한 요청을 만족시키도록 허용된다. 보안 서비스 어플리케이션(314)은 스캐닝할 파일을 식별하는 일반화된 보안 필터(316)가 제공한 데이터를 획득한다. 뷰가 이미 보안 서비스 어플리케이션(314)의 메모리 공간에 매핑되어 있으면, 액세스 방법(600)은 오퍼레이팅 시스템(104)에 대해 현재 뷰를 제거하는 API 호출을 행한다. 그 후, 보안 서비스 어플리케이션(314)은 새로운 뷰를 매핑시키는, 오퍼레이팅 시스템(104)으로의 API 호출을 생성한다. 이에 응답하여, 오퍼레이팅 시스템(104)은 요청된 데이터가 액세스될 수 있는 파일에 대한 뷰를 매핑한다. 윈도우즈 오퍼레이팅 시스템의 관점에서, 파일은 "MapViewOfFile()" 및 "UnMapViewOfFile()" API를 이용하여 어플리케이션의 메모리 공간에 매핑하고 매핑제거될 수 있다. 그러나, 여기에 제공된 예는 예시적인 것일 뿐 제한적인 것으로 해석되어서는 안된다.
블럭(614)에서, 블럭(608)에서 요청된 데이터가 그 요청을 발행한 바이러스 방지 소프트웨어 어플리케이션에게 전달된다. 필요한 뷰가 보안 서비스 어플리케이션(314)의 메모리 공간으로 매핑되면[블럭(612)], 시스템은 본 기술에 일반적으로 알려진 방법을 이용하여 요청한 바이러스 방지 소프트웨어 어플리케이션에게 데이터를 전송할 수 있다.
판정 블럭(616)에서, 액세스 방법(600)은 블럭(602)에서 수신한 스캔 요청을 생성한 바이러스 방지 소프트웨어 어플리케이션이 파일 데이터에 액세싱하는 것을 완료했는지를 판정한다. 상술된 바와 같이, 보안 서비스 어플리케이션(314)은 컴퓨팅 장치에 설치된 바이러스 방지 소프트웨어 어플리케이션에게 파일 시스템 동작의 기본 세트를 제공함으로써, 인터페이스로 동작한다. 바이러스 방지 소프트웨어 어플리케이션이 파일 스캐닝을 종료하면, 어플리케이션은 스캔이 완료됐음을 보안 서비스 어플리케이션(314)에게 알려주고, 액세스 방법(600)은 블럭(618)으로 진행되어 여기서 종료된다. 반대로, 바이러스 방지 소프트웨어 어플리케이션이 파일 스캐닝을 끝내지 못하고 파일 데이터를 계속 액세싱하면, 액세스 방법(600)은 바이 러스 방지 소프트웨어 어플리케이션이 파일 스캐닝을 끝낼 때까지 블럭(616) 내지 블럭(608)으로 진행된다.
액세스 방법(600)은 기본 파일 시스템 동작을 수행하는 매우 빠른 방식을 제공하기 위해 다른 시스템과 관련되어 이용될 수 있다. 단지 예로서, 액세스 방법(600)은 (1) 데이터를 판독하고 그것을 파일에 기록하는 암호화/복호화 어플리케이션, 및 (2) 파일 데이터를 판독하고 그 파일 데이터가 부적절한 자료를 포함하는지를 판정하는 컨텐츠 필터링 어플리케이션에 관련하여 구현될 수 있다. 그러나, 액세스 방법(600)이 기본 파일 시스템 동작을 수행하는 임의의 유형의 어플리케이션에 의해 이용될 수 있기 때문에, 여기에 제공된 예는 예시적인 것일 뿐 제한적인 것으로 해석되어서는 안된다.
본 발명의 선호되는 실시예가 예시되고 설명되었지만, 본 발명의 취지 및 영역을 벗어나지 않는 다양한 수정이 행해질 수 있음이 인식될 것이다.
본 발명은 복수의 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는 시스템, 방법 및 컴퓨터 판독가능 매체를 제공한다.

Claims (67)

  1. 프로세서 및 시스템 메모리를 포함하는 컴퓨팅 장치 - 상기 컴퓨팅 장치는 또한 I/O 시스템, 보안 서비스 어플리케이션(security service application) 및 일반화된 보안 필터(generalized security filter)를 포함하고, 상기 컴퓨팅 장치는 상기 컴퓨팅 장치에 상주하는 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션(plurality of disparate antivirus software applications)을 포함하고, 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션은 적어도 서로 상이한 제1 바이러스 방지 소프트웨어 및 제2 바이러스 방지 소프트웨어를 포함함 - 에서, 멀웨어(malware)의 실행 또는 확산을 방지하기 위해 상기 컴퓨팅 장치에서 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스(knowledge base)를 모으는(aggregating) 컴퓨터 구현 방법으로서,
    상기 방법은,
    (a) 상기 일반화된 보안 필터가 I/O 요청을 인터셉팅하는(intercepting) 단계 - 상기 I/O 요청은 상기 컴퓨팅 장치에 상주하는 사용자 어플리케이션을 대신하여(on behalf of) 상기 I/O 시스템으로부터 발행되고(issued) I/O 장치로 전달되며(directed), 상기 I/O 요청은 상기 I/O 요청이 상기 I/O 장치에 의해서 만족되기 이전에 인터셉팅됨 - ;
    (b) 상기 일반화된 보안 필터가 상기 I/O 요청과 연관된 파일 데이터를 상기 보안 서비스 어플리케이션으로 제공하는 단계;
    (c) 상기 보안 서비스 어플리케이션이, 상기 컴퓨팅 장치에 상주하는 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션 각각에 대한 스캐닝 프로파일들에 기초하여 상기 컴퓨팅 장치에 상주하는 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션 중에서 선택하여 선택된 하나 이상의 바이러스 방지 소프트웨어 어플리케이션에 대한 스캔들(scans)을 스케줄링하는(scheduling) 단계;
    (d) 상기 파일 데이터를 포함하는 파일을 또 다른 어플리케이션이 잠금한(locked) 경우에도, 상기 보안 서비스 어플리케이션이 상기 하나 이상의 바이러스 방지 소프트웨어 어플리케이션에 대해 상기 파일 데이터로의 액세스를 제공하는 단계;
    (e) 상기 하나 이상의 바이러스 방지 소프트웨어 어플리케이션 각각이 해당 파일에 멀웨어가 포함되는지를 판정하기 위해 상기 파일 데이터를 분석하는 단계;
    (f) 상기 하나 이상의 바이러스 방지 어플리케이션 중 적어도 하나가 해당 파일 데이터가 멀웨어를 포함하는 것을 감지하는 단계; 및
    (g) 멀웨어를 감지하는(detecting) 것에 응답하여 상기 I/O 요청이 만족되는 것을 방지하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 바이러스 방지 소프트웨어 어플리케이션들이 분석한 상기 파일의 상태(state)를 추적하기(tracking) 위한 데이터베이스를 생성하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  3. 제2항에 있어서, 상기 데이터베이스는 파일 색인 값(file index value)과 상기 파일의 상태를 나타내는(represents) 변수를 연관시키는, 컴퓨터 구현 방법.
  4. 제3항에 있어서, 상기 데이터베이스 내에서 상기 파일 색인 값과 변수를 연관시키는 것은,
    (a) 상기 파일 색인 값이 상기 데이터베이스에 입력되어 있는지를 판정하는 것; 및
    (b) 상기 파일 색인 값이 상기 데이터베이스 내에 없으면,
    (ⅰ) 한 볼륨(volume)상의 각각의 파일에 대한 고유한 파일 색인 값(unique file index value)을 보유하는(maintains) 데이터 구조로부터 상기 파일 색인 값을 획득하고,
    (ⅱ) 상기 데이터베이스 내에 상기 파일 색인 값을 입력하는 것
    을 포함하는, 컴퓨터 구현 방법.
  5. 제4항에 있어서,
    (a) 상기 파일이 멀웨어를 포함하면, 상기 데이터베이스 내에서 상기 파일 색인 값과 상기 파일이 멀웨어를 포함함을 나타내는 변수를 연관시키는 것; 및
    (b) 반대로, 상기 파일이 멀웨어를 포함하지 않으면, 상기 데이터베이스 내에서 상기 파일 색인 값과 상기 파일이 멀웨어를 포함하지 않음을 나타내는 변수를 연관시키는 것
    을 더 포함하는, 컴퓨터 구현 방법.
  6. 제5항에 있어서, 쿼리(query)에 응답하여 상기 파일 색인 값에 연관된 상기 변수를 반환하는(returning) 것을 더 포함하는, 컴퓨터 구현 방법.
  7. 제5항에 있어서, 상기 데이터베이스 내의 상기 파일 색인 값에 연관된 상기 변수는 두 개의 비트를 포함하는, 컴퓨터 구현 방법.
  8. 제4항에 있어서, 한 볼륨 상의 각각의 파일에 대한 고유한 파일 색인 값을 보유하는 상기 데이터 구조는 마스터 파일 테이블(master file table)인, 컴퓨터 구현 방법.
  9. 제1항에 있어서, 상기 바이러스 방지 소프트웨어 어플리케이션에 대해 상기 파일 데이터로의 액세스를 제공하는 단계는,
    (a) 상기 파일 데이터를 객체로 맵핑하는 단계 - 상기 객체는 복수의 상이한 어플리케이션에 동시에 액세스 가능하도록 구성됨 -; 및
    (b) 상기 객체를 각각의 상기 선택된 하나 이상의 바이러스 방지 소프트웨어 어플리케이션에 제공하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  10. 제9항에 있어서, 상기 보안 서비스 어플리케이션은 상기 바이러스 방지 소프트웨어 어플리케이션들에 의해 상기 객체가 액세스되기 위한 요청들을 스케줄링하는, 컴퓨터 구현 방법.
  11. 제9항에 있어서, 상기 파일 데이터를 객체로 맵핑하는 단계는
    상기 보안 서비스 어플리케이션과 연관된 객체 테이블(object table)에 상기 객체를 삽입하는(inserting) 단계를 포함하는, 컴퓨터 구현 방법.
  12. 제1항에 있어서, 상기 바이러스 방지 소프트웨어 어플리케이션들은 커넬 모드 필터(kernel mode filter)를 구현하지 않고 상기 파일 데이터를 액세스하는, 컴퓨터 구현 방법.
  13. 제1항에 있어서, 상기 바이러스 방지 소프트웨어 어플리케이션들은 파일 핸들(file handle)을 생성하지 않고 상기 파일 데이터를 액세스하는, 컴퓨터 구현 방법.
  14. 제1항에 있어서, 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션 각각은 상기 파일 데이터를 분석하기 이전에 상기 보안 서비스 어플리케이션에 등록하는, 컴퓨터 구현 방법.
  15. 제14항에 있어서, 각각의 바이러스 방지 소프트웨어 어플리케이션에 대한 상기 스캐닝 프로파일(scanning profile)은 해당 바이러스 방지 소프트웨어 어플리케이션에게 관심의 대상이 되는(of interest) 소정의 유형 또는 상태를 갖는 I/O 요청들을 정의하는, 컴퓨터 구현 방법.
  16. 멀웨어의 실행 또는 확산을 방지하기 위해 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는 컴퓨터-구현 바이러스 방지 시스템(computer-implemented anti-virus system)으로서, 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션은 상기 바이러스 방지 시스템에 상주하며, 상기 바이러스 방지 시스템은
    프로세서; 및
    상기 프로세서에 통신 가능하게 결합된(communicatively coupled) 메모리
    를 포함하고,
    상기 메모리는 상기 바이러스 방지 시스템을 구현하도록 구성된 컴퓨터 실행가능 명령어들을 저장하며, 상기 컴퓨터 실행가능 명령어들은
    (a) 상기 바이러스 방지 시스템에 상주하는 어플리케이션들을 대신하여 I/O 요청을 발행하도록 구성된 커넬 모드 I/O 시스템(kernel mode I/O system),
    (b) 상기 I/O 시스템으로부터 발행된 상기 I/O 요청들이 I/O 장치에 의해서 만족되기 이전에 상주 사용자 어플리케이션들(resident user applications)을 대신하여 상기 I/O 요청들을 인터셉트하고,
    상기 I/O 요청과 연관된 파일 데이터를 보안 서비스 어플리케이션으로 제공하도록 구성된 사용자 모드 일반화 보안 필터(user mode generalized security filter), 및
    (c) 상기 바이러스 방지 시스템에 상주하는 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션 각각에 대한 스캐닝 프로파일들에 기초하여 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션 중에서 선택하여 선택된 바이러스 방지 소프트웨어 어플리케이션에 대한 스캔들을 스케줄링하고,
    상기 파일 데이터를 포함하는 파일을 또 다른 어플리케이션이 잠금한 경우에도, 상기 선택된 바이러스 방지 소프트웨어 어플리케이션에 대해 상기 파일 데이터로의 액세스를 제공하고,
    상기 선택된 바이러스 방지 소프트웨어 어플리케이션이 멀웨어에 대한 상기 파일 데이터에 대해 분석하게 하고,
    멀웨어를 감지하는 것에 응답하여 I/O 요청들이 만족되는 것을 방지하도록 구성된 커넬 모드 보안 서비스 어플리케이션(kernel mode security service application)
    을 포함하는, 컴퓨터-구현 바이러스 방지 시스템.
  17. 제16항에 있어서, 상기 커넬 모드 보안 서비스 어플리케이션은 I/O 요청들을 인터셉트하고, 상기 바이러스 방지 소프트웨어 어플리케이션들이 상기 파일 데이터를 분석하게 하고 상기 파일이 멀웨어를 포함하는지를 판정하게 하기 위해 상기 사용자 모드 일반화 보안 필터와 통신하는, 컴퓨터-구현 바이러스 방지 시스템.
  18. 제17항에 있어서, 상기 바이러스 방지 소프트웨어 어플리케이션이 분석한 상기 파일의 상태를 추적할 수 있는 스캔 캐시(scan cache)를 더 포함하는, 컴퓨터-구현 바이러스 방지 시스템.
  19. 멀웨어의 실행 또는 확산을 방지하기 위해 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션의 지식 베이스를 모으는 컴퓨터 구현 방법으로서,
    (a) 요청을 상기 요청이 만족되기 이전에 인터셉팅하는 단계;
    (b) 복수의 커넬 모드 필터 없이 일반 정보 모델(common information model)을 통해 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션에 대한 액세스를 설정하는 단계;
    (c) 제1의 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션에 상기 요청과 연관된 파일에의 액세스를 제공하는 것과 동시에 적어도 제2의 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션에 상기 요청과 연관된 파일에의 액세스를 제공하는 단계;
    (d) 상기 제1의 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션으로 하여금 상기 파일이 멀웨어를 포함하는지를 판정하도록 상기 요청과 연관된 상기 파일을 분석하게 하고, 동시에 적어도 상기 제2의 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션으로 하여금 상기 파일이 멀웨어를 포함하는지를 판정하도록 상기 요청과 연관된 상기 파일을 분석하게 하는 단계;
    (e) 상기 요청이 만족되는 것을 방지하고, 상기 방법을 구현하는 상기 컴퓨터의 메모리에 저장된 지시자(indicator)와 상기 파일을 연관시키는 단계 - 상기 지시자는 상기 파일이 감염되었음을 나타내고, 상기 분석된 파일은 하나 이상의 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션에 의해 멀웨어를 포함하는 것으로 판정됨 - ;
    (f) 상기 요청이 만족되는 것을 허용하고, 상기 방법을 구현하는 상기 컴퓨터의 메모리에 저장된 지시자와 상기 파일을 연관시키는 단계 - 상기 지시자는 상기 파일이 감염되지 않았음을 나타내고, 상기 분석된 파일은 하나 이상의 상기 복수의 상이한 바이러스 방지 소프트웨어 어플리케이션에 의해 멀웨어를 포함하지 않는 것으로 판정됨 - ; 및
    (g) 플래그된 파일(flagged file)과 연관된 요청들을 만족시키는 것과 연관된 미래의 판정들(future determinations)에 적어도 부분적으로 지시자를 이용하는(employing) 단계
    를 포함하는, 컴퓨터 구현 방법.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
KR1020050086796A 2004-11-08 2005-09-16 바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를모으는 시스템 및 방법 KR101201118B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/984,615 US7765400B2 (en) 2004-11-08 2004-11-08 Aggregation of the knowledge base of antivirus software
US10/984,207 US7478237B2 (en) 2004-11-08 2004-11-08 System and method of allowing user mode applications with access to file data
US10/984,611 2004-11-08
US10/984,611 US7765410B2 (en) 2004-11-08 2004-11-08 System and method of aggregating the knowledge base of antivirus software applications
US10/984,207 2004-11-08
US10/984,615 2004-11-08

Publications (2)

Publication Number Publication Date
KR20060051383A KR20060051383A (ko) 2006-05-19
KR101201118B1 true KR101201118B1 (ko) 2012-11-13

Family

ID=35636878

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050086796A KR101201118B1 (ko) 2004-11-08 2005-09-16 바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를모으는 시스템 및 방법

Country Status (4)

Country Link
EP (1) EP1655682B8 (ko)
JP (1) JP4828199B2 (ko)
KR (1) KR101201118B1 (ko)
CN (1) CN101894225B (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660797B2 (en) * 2005-05-27 2010-02-09 Microsoft Corporation Scanning data in an access restricted file for malware
EP1933248A1 (de) * 2006-12-12 2008-06-18 secunet Security Networks Aktiengesellschaft Verfahren zur sicheren Datenverarbeitung auf einem Computersystem
US8104088B2 (en) * 2007-05-11 2012-01-24 Microsoft Corporation Trusted operating environment for malware detection
US9251350B2 (en) 2007-05-11 2016-02-02 Microsoft Technology Licensing, Llc Trusted operating environment for malware detection
US7853999B2 (en) * 2007-05-11 2010-12-14 Microsoft Corporation Trusted operating environment for malware detection
US8065728B2 (en) * 2007-09-10 2011-11-22 Wisconsin Alumni Research Foundation Malware prevention system monitoring kernel events
JP2009139722A (ja) * 2007-12-07 2009-06-25 Tani Electronics Corp カラーを利用した暗号化方法および暗号化装置
US8353041B2 (en) * 2008-05-16 2013-01-08 Symantec Corporation Secure application streaming
US8161556B2 (en) * 2008-12-17 2012-04-17 Symantec Corporation Context-aware real-time computer-protection systems and methods
US9721090B2 (en) 2010-04-29 2017-08-01 Safend Ltd. System and method for efficient inspection of content
US7962959B1 (en) 2010-12-01 2011-06-14 Kaspersky Lab Zao Computer resource optimization during malware detection using antivirus cache
US8424093B2 (en) 2010-11-01 2013-04-16 Kaspersky Lab Zao System and method for updating antivirus cache
EP2447859B1 (en) 2010-11-01 2015-04-08 Kaspersky Lab, ZAO System and method for acceleration of malware detection using antivirus cache
US20150020203A1 (en) 2011-09-19 2015-01-15 Beijing Qihoo Technology Company Limited Method and device for processing computer viruses
CN103034805B (zh) * 2011-09-30 2015-12-16 腾讯科技(深圳)有限公司 多引擎病毒查杀方法和装置
US9043903B2 (en) 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US9292881B2 (en) 2012-06-29 2016-03-22 Crowdstrike, Inc. Social sharing of security information in a group
CN102819709B (zh) * 2012-08-15 2016-03-30 小米科技有限责任公司 一种实现系统安全的方法及装置
WO2014057542A1 (ja) * 2012-10-10 2014-04-17 株式会社日立製作所 セキュリティシステム、および、セキュリティ監視方法
CN103699838B (zh) * 2013-12-02 2018-05-04 百度国际科技(深圳)有限公司 病毒的识别方法及设备
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks
RU2589862C1 (ru) * 2015-06-30 2016-07-10 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносного кода в оперативной памяти
US10339316B2 (en) 2015-07-28 2019-07-02 Crowdstrike, Inc. Integrity assurance through early loading in the boot phase
WO2017200942A1 (en) * 2016-05-15 2017-11-23 John Steven Systems and methods for model-based analysis of software
US10387228B2 (en) 2017-02-21 2019-08-20 Crowdstrike, Inc. Symmetric bridge component for communications between kernel mode and user mode
US10740459B2 (en) 2017-12-28 2020-08-11 Crowdstrike, Inc. Kernel- and user-level cooperative security processing
US11188657B2 (en) 2018-05-12 2021-11-30 Netgovern Inc. Method and system for managing electronic documents based on sensitivity of information
CN110826065B (zh) * 2019-10-30 2022-03-15 亚信科技(成都)有限公司 一种扫描方法、装置及系统
CN114564720A (zh) * 2022-02-18 2022-05-31 北京圣博润高新技术股份有限公司 程序文件审核方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854916A (en) 1995-09-28 1998-12-29 Symantec Corporation State-based cache for antivirus software
US6094731A (en) 1997-11-24 2000-07-25 Symantec Corporation Antivirus accelerator for computer networks
US6728964B1 (en) 1998-06-13 2004-04-27 Intel Corporation Monitoring function

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1166669A (ja) * 1997-08-08 1999-03-09 Rinku Concept:Kk コンピュータウイルス自動検出装置
US6021510A (en) * 1997-11-24 2000-02-01 Symantec Corporation Antivirus accelerator
JP4567275B2 (ja) * 2002-02-28 2010-10-20 株式会社エヌ・ティ・ティ・ドコモ 移動通信端末、情報処理装置、中継サーバ装置、情報処理システム及び情報処理方法
US7024672B2 (en) * 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
JP3979285B2 (ja) * 2002-12-17 2007-09-19 株式会社日立製作所 情報処理システム
JP2005100093A (ja) * 2003-09-25 2005-04-14 Forval Creative Inc ウイルスメール保護監視装置および方法ならびにそのプログラム、ウイルスメール保護中継装置ならびにそのプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854916A (en) 1995-09-28 1998-12-29 Symantec Corporation State-based cache for antivirus software
US6094731A (en) 1997-11-24 2000-07-25 Symantec Corporation Antivirus accelerator for computer networks
US6728964B1 (en) 1998-06-13 2004-04-27 Intel Corporation Monitoring function

Also Published As

Publication number Publication date
CN101894225B (zh) 2013-02-13
EP1655682A3 (en) 2006-05-31
JP4828199B2 (ja) 2011-11-30
EP1655682B8 (en) 2016-10-12
EP1655682A2 (en) 2006-05-10
CN101894225A (zh) 2010-11-24
JP2006134307A (ja) 2006-05-25
EP1655682B1 (en) 2016-08-17
KR20060051383A (ko) 2006-05-19

Similar Documents

Publication Publication Date Title
KR101201118B1 (ko) 바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를모으는 시스템 및 방법
US7765410B2 (en) System and method of aggregating the knowledge base of antivirus software applications
US7478237B2 (en) System and method of allowing user mode applications with access to file data
US7765400B2 (en) Aggregation of the knowledge base of antivirus software
US7660797B2 (en) Scanning data in an access restricted file for malware
US8161557B2 (en) System and method of caching decisions on when to scan for malware
US8281410B1 (en) Methods and systems for providing resource-access information
RU2468426C2 (ru) Преобразование файла в ограниченном процессе
US7676845B2 (en) System and method of selectively scanning a file on a computing device for malware
US6973577B1 (en) System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state
US8346805B2 (en) Filter driver for identifying disk files by analysis of content
US7836504B2 (en) On-access scan of memory for malware
US20110047618A1 (en) Method, System, and Computer Program Product for Malware Detection, Analysis, and Response
US20100122313A1 (en) Method and system for restricting file access in a computer system
US20070150956A1 (en) Real time lockdown
US20090171957A1 (en) Method and system of applying policy on screened files
US7251735B2 (en) Buffer overflow protection and prevention
US8201253B1 (en) Performing security functions when a process is created
US11636219B2 (en) System, method, and apparatus for enhanced whitelisting
KR20030090568A (ko) 단말기 내의 자원 보호 시스템 및 방법
US20060047727A1 (en) Method of accessing a file for editing with an application having limited access permissions
US20230038774A1 (en) System, Method, and Apparatus for Smart Whitelisting/Blacklisting
US20220188409A1 (en) System, Method, and Apparatus for Enhanced Blacklisting

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 7