KR20060089618A - 보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체 - Google Patents
보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체 Download PDFInfo
- Publication number
- KR20060089618A KR20060089618A KR1020050126090A KR20050126090A KR20060089618A KR 20060089618 A KR20060089618 A KR 20060089618A KR 1020050126090 A KR1020050126090 A KR 1020050126090A KR 20050126090 A KR20050126090 A KR 20050126090A KR 20060089618 A KR20060089618 A KR 20060089618A
- Authority
- KR
- South Korea
- Prior art keywords
- code
- data
- critical
- container
- enhanced
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99939—Privileged access
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Automatic Analysis And Handling Materials Therefor (AREA)
Abstract
데이터의 임계적 이용을 위해서는 데이터를 보안 임계적이라고 표시하고 임계적이지 않은 이용을 위해서는 데이터에 표시하지 않은 채로 남겨두는 Get 컨테이너(Get container) 및 Set 컨테이너를 포함하는, 플랫폼 코드에 대한 보안 임계적인 데이터 컨테이너가 설명된다. 코드 내의 임계적인 메소드(method)들의 개수가 감소되면, 코드 분석이 보다 용이 해진다. 메소드를 통해서만 데이터가 액세스되면, 컨테이너의 메소드는 보안 임계적이라고 표시될 수 있다. Get 컨테이너를 위한 일반 클래스(generic class)를 이용함으로써, 임계적인 데이터에의 액세스는 임계적이라하다고 표시된 클래스 상의 속성을 통해서만 일어날 수 있다. 일반 클래스 인스턴스(instance)를 가리키고 있는 필드는 임계적일 필요가 없으며, 이에 따라 초기화 또는 존재(initialization or existence)를 체크하는 것은 임계적이지 않다. Set 컨테이너는 코드가 허가를 향상시킬 수 있는지를 제어하는 데이터와 같은 보안 임계적인 상황을 처리하며, 다른 메소드들이 임계적이지 않은 코드에 의해 액세스될 수 있으면, set 메소드는 임계적이라고 표시된다.
컨테이너, 코드, 메소드, 일반 클래스, 임계적인 데이터
Description
도 1은 본 발명이 통합될 수 있는 컴퓨팅 환경을 일반적으로 나타내는 블럭도.
도 2a 및 2b는 본 발명의 다양한 양태에 따른, set 및 get 컨테이너(container)를 포함하는 플랫폼 코드(platform code)를 나타내는 도면.
도 3은 본 발명의 다양한 양태에 따른, 보안 임계적인 데이터 컨테이너(security critical data container)를 갖는 플랫폼 코드를 분석하는 코드 분석 툴(code analysis tool)을 나타내는 블럭도.
도 4는 본 발명의 다양한 양태에 따라, 보안 임계적인 데이터 컨테이너를 갖는 코드에 기초하여 컴파일된 플랫폼 코드 상에서 동작하는 신뢰적이지 않은 코드를 나타내는 블럭도.
<도면의 주요 부분에 대한 부호의 설명>
204: 보안 임계적인 get 컨테이너
205: 임계적이지 않은 코드
207: 보안 임계적인 set 컨테이너
216: (Bar의) null 체크
217: (Bar의) 신뢰적이지 않은 null 체크
본 발명은 일반적으로 컴퓨터 시스템에 관한 것이며, 보다 구체적으로 컴퓨터 시스템 보안에 관한 것이다.
현대 컴퓨팅에서, 컴퓨터 애플리케이션 프로그램 및 다른 코드는 인터넷으로부터 다운로드되고 설치될 수 있다. 잘 모르거나 신뢰적이지 않은 소스(source)로부터 다운로드할 경우, 이러한 코드는 고의로 악의적이거나 다른 한편으로 중요한 데이터를 해치거나 그 데이터에의 허가되지 않은 액세스를 제공할 수 있다. 그러나, 수많은 경우에, 컴퓨터 사용자들이 프롬프팅(prompting)하지 않고 코드를 다운로드하고 실행시킬 수 있는 능력으로부터 이익을 얻을 수 있기 때문에, 다운로드를 완전히 금지하는 것은 이 문제점에 대한 실용적인 해결법이 아니다.
마이크로소프트사의 .NET 기술에 기초하는 것 등의 몇몇 환경들은 코드가 동작을 수행하기 위한 허가를 제한함으로써 잘 모르거나 신뢰적이지 않은 코드를 실행시키는 것에 대한 문제점을 해결하려고 한다. 예를 들어, 기반 플랫폼은 그것의 호출자가 특정한 허가를 가질 것을 요청할 수 있으며, 코드가 실행에 필요한 허가를 요청할 수 있는 한편, 런타임(runtime)은 코드가 얼마나 신뢰적인지를 평가하는 정책에 기초하여 코드에 대한 허가를 수여할 것이다. 이러한 허가는 파일 및 데이터베이스에 액세스하고, 인터넷에 접속하고, 사용자 인터페이스를 통해 사용자와 상호작용하고, 관리되지 않은 코드로 호출하는 등을 위한 능력과 같은 것을 포함한다. 코드가 이러한 허가를 요청할 때 사용자에게 프롬프팅하는 것은 하나의 정책 기반 해결법이지만, 전형적인 사용자는 프롬프팅될 때 적절한 보안을 결정하도록 갖춰져 있지 않은 경우가 많기 때문에 매우 바람직하지 않다.
애플리케이션이 프롬프팅 없이 인터넷으로부터 다운로드되고 설치되게 하는 플랫폼에 대한 보안 코드를 작성하는 것은 매우 어려운 문제이다. 이는 플랫폼이 올바르게 동작하기 위한 향상된 특권(elevated privilege)을 가질 필요가 있기 때문이다. 플랫폼 코드의 임의의 부분이 향상된 특권을 갖는 신뢰적이지 않은 코드를 실행시키기 위한 내부 방식을 부주의하게 노출시키도록 작성되어, 이에 따라 신뢰적이지 않은 코드가 안전하지 않은 동작을 수행할 수 있게 되면, 보안 약점이 존재할 수 있다. 예를 들어, 플랫폼 코드가 윈도우 상에 텍스트를 렌더링(rendering)하는 것과 같은 시스템 서비스를 동작시키기 위한 관리되지 않는 코드를 호출할 수 있게 될 필요가 있는 한편, 즉 신뢰적이지 않은 코드는 그렇지 못하게 되어야 하지만, 신뢰적이지 않는 코드가 플랫폼 코드의 내부 메소드에의 호출을 통해 관리되지 않는 코드를 호출할 수 있도록 플랫폼 코드가 부주의하게 작성되면, 보안 약점이 존재하게 된다.
플랫폼 코드가 안전하게 작성될 가능성을 증가시키기 위한 한가지 방법은, 개발자가 실행을 위해 향상된 허가를 요청하거나 향상된 허가가 실행될 수 있는지 여부를 제어하는 플랫폼 코드의 임의의 부분을 (예를 들어, 메타데이터를 이용해) 표시하게 하는 것이며, 여기서 메타데이터는 플랫폼 코드가 불안전한 동작을 수행 하게 하는 "임계" 코드라는 것을 나타낸다. 그 후 보안 팀 및 정적인 코드 분석 툴(예를 들어, FxCop는 .NET 관리된 코드 어셈블리(assembly)를 체크하는 하나의 이러한 코드 분석 툴임)은 메타데이터를 인식하고, 이에 의하여 플랫폼 특징은, 플랫폼 코드가 향상된 특권을 갖고 동작하는 신뢰적이지 않는 코드에 노출될 가능성이 급격하게 감소하도록 개발될 수 있다.
그러나, 이러한 코드 및 데이터를 임계적이라고 표시하는 것이 매우 가치있긴 하지만, 코드를 검토할 필요가 있는 수많은 임계적인 메소드를 보안 팀에 부과하는 복잡한 코드-검토 프로세스를 유발시킨다. 덜 복잡한 검토가 플랫폼 코드 내의 임의의 보안 문제가 발견될 가능성을 증가시키므로, "임계성"에 대해 검토될 필요가 있는 메소드들의 개수를 감소시키기 위한 안전한 방식이 필요하다.
요약적으로, 본 발명은, 유형 안전 방식(type-safe manner)으로 데이터에의 액세스를 여전히 허용하면서도, 데이터의 존재/초기화를 체크하는 것을 임계적이라고 표시하지 않고서도 "임계성(criticality)"를 나타내는 메타데이터가 클래스 상의 임의의 데이터 필드에 첨부될 수 있는 시스템 및 방법에 관한 것이다. 또한, 향상된 허가를 제어하는 임계적인 데이터에 대해서, 데이터 자체는 그렇지 않지만 데이터 값을 설정하는 메소드를 임계적이라고 표시함으로써 데이터는 set 컨테이너 내에서 임계적이라고 취급될 수 있다. 이에 따라, 값이 잘 이용(획득)되지 않는 다른 코드는 임계적일 필요가 없다. 결과적으로, 검토될 필요가 있는 플랫폼 코드 내의 임계적인 메소드 및 데이터 필드들의 개수는 보안을 손상시키지 않으면서 급 격히 감소한다.
일 구현에서, 일반 기반 클래스(generic-based class)[일반이란 C++ 템플릿(template)과 유사한 .NET 프레임워크 언어 구조임]는 임계적인 데이터를 위한 컨테이너를 제공한다. 일반 클래스를 이용하는 것은 임계적인 데이터에의 Get 액세스가 임계적이라고 표시된 클래스 상의 속성을 통해서만 일어날 수 있다는 것을 의미한다. 그러나, 일반 클래스 인스턴스를 가리키는 실제 필드가 임계적일 필요는 없으므로, 투명한 방식으로 코드를 안전하게 체크할 수 있다. 그러므로 본 발명은, 데이터의 초기화 또는 존재에 대한 체크가 임계적이지 않더라도 임계적이라고 표식된 데이터의 콘텐츠에 액세스할 수 있게 한다.
따라서, 본 발명은 임계적인 데이터(데이터는 임계 자원에의 액세스, 예를 들어 임계 자원에의 파일 핸들을 제공함)에 액세스할 수 있는 "Get" 컨테이너를 제공한다. 컨테이너 내의 데이터 값을 검색하기 위한 get 메소드는 보안상 임계적이라는 것을 나타내는 메타데이터로 표시되고, 이에 따라 정적인 분석 툴은 신뢰적이지 않은 코드에 의한 데이터에의 액세스를 허용하는 프로그램 약점이 있는지를 탐지할 것이다. 그러나, get 메소드가 표시되어 있기 때문에, 데이터는 체크하는 것이 임계적이지 않더라도 존재/초기화에 대해서 체크될 수 있다(예를 들어, null 체크가 행해질 수 있음). 결과적으로, 체크하는 코드가 임계적이라고 표시될 필요가 없으므로, 보안상 검토될 필요가 있는 플랫폼 코드의 개수가 현격하게 감소된다.
본 발명은 또한 블리언(Boolean) 또는 다른 변수가 코드가 허가를 향상시킬지를 나타내는 데 이용되는 상황을 처리하기 위한 "Set" 컨테이너를 제공한다. 이 러한 데이터는 코드가 허가를 향상시킬지를 제어하기 때문에, 데이터를 설정하는 것은 임계적으로 되며, 그렇지 않다면 신뢰적이지 않은 코드로부터의 호출이 허가를 향상시킬 수 있다. 값이 올바르게 설정되었으면 허가를 실제로 향상시키는 코드와 같이, set 메소드를 호출하지 않는 다른 코드는 (예를 들어, get 메소드를 통해) 값을 획득할 필요만 있으므로, 임계적인 코드일 필요는 없다. Set 컨테이너의 결과로서, 플랫폼 코드 내의 임계적인 메소드들의 개수도 또한 현격하게 감소한다.
다른 이점들은 도면에 관련하여 취해질 때 다음의 상세한 설명으로부터 명확해질 것이다.
예시적인 운영 환경
명령어는 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 나타낸다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며, 본 발명의 이용 또는 기능의 범위에 임의의 제한을 제시하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 운영 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 그들의 조합에 관하여 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명은 수많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작한다. 본 발명과 함께 이용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 태블릿 장치(tablet device), 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 탑 박스(set top box), 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함될 수 있지만, 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 문맥으로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 태스크가 수행되는 분산형 컴퓨팅 환경에서 구현될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬(local) 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 포함하는 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로 컬 버스, 및 메자닌(Mezzanine) 버스로도 알려진 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 디스크 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장장치, 또는 원하는 정보를 저장하는 데 이용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 다른 전송 메커니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하는 방식으로 하나 또는 그 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중 임의의 것의 조 합도 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고/있거나 프로세싱 유닛(120)에 의해 현재 동작되는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하지만, 이에 한정되지 않는다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 다른 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 예시되어 있다. 예시적인 운영 환경에서 이용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만, 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브 (151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 설명되고 도 1에 예시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 다른 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 예시된다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 그들이 상이한 복사본임을 나타내기 위해 상이한 번호를 부여하였다. 사용자는 태블릿, 전자 디지타이저(electronic digitizer, 164), 마이크로폰(163), 키보드(162), 및 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리는 포인팅 장치(161)와 같은 입력 장치를 통해 컴퓨터(110)에 코맨드(command) 및 정보를 입력할 수 있다. 도 1에 나타내지 않은 다른 입력 장치는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 다른 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버 스(121)에 접속된다. 모니터(191)는 또한 터치 스크린 패널 등에 통합될 수 있다. 모니터 및/또는 터치 스크린 패널은 태블릿형 개인용 컴퓨터처럼 컴퓨팅 장치(110)가 통합된 하우징(housing)에 물리적으로 연결될 수 있다. 모니터 외에도, 컴퓨팅 장치(110)와 같은 컴퓨터는 또한 출력 주변 인터페이스(194) 등을 통해 접속될 수 있는 스피커(195) 및 프린터(196) 등의 다른 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 다른 일반 네트워크 노드일 수 있으며, 비록 도 1에는 메모리 저장 장치(181)만이 예시되어 있지만, 일반적으로 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 포함할 수 있다. 도 1에 나타낸 논리적 접속은 LAN(171) 및 WAN(173)을 포함하지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 기업 광역 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(110)에 관련하여 나타낸 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예 로서 (한정하고자 하는 것은 아님), 도 1은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 예시한다. 나타낸 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 다른 수단이 이용될 수 있다.
보안 임계적인 데이터 컨테이너
본 발명은 일반적으로, 데이터의 존재/초기화를 체크하는 것을 임계적이게 만들지 않으면서 "임계성"을 나타내는 메타데이터를 데이터에 첨부하는 시스템 및 방법에 관한 것이다. 이해될 바와 같이, 본 발명은 우선 플랫폼 코드에서 이용할 C# 코드 예를 이용하여 일반(C++템플릿과 유사한 .NET 프레임워크 언어 구조) 클래스 컨테이너를 참조하여 설명된다. 그럼에도 불구하고, 이들은 단지 예일 뿐이며, 본 발명은 본원에 나타낸 .NET, C#, 플랫폼 코드 또는 임의의 예들에 제한된 것은 아니다. 본 발명이 본원에 이용된 특정한 예들 중 임의의 것에 한정되기보다는, 일반적으로 컴퓨팅의 이점 및 장점을 제공하는 다양한 방식으로 이용될 수 있는 것과 같은 본 발명을 구현하기 위한 다양한 방식들이 대안적으로 이용된다.
도 2a 및 2b는 신뢰적이지 않은 코드를 포함하는, 다른 코드에 의해 호출될 수 있는 내부 메소드를 포함하는 다양한 객체(204-208)들을 갖는 플랫폼 코드(202)를 도시한다. 객체(204, 206-208)를 통해 나타낸 바와 같이 다른 코드들은 보안 임계적일 수 있는 반면, 몇몇의 코드는 객체(205)를 통해 나타낸 바와 같이 임계적이지 않을 수 있다. 쉽게 인식될 수 있는 바와 같이, 내부 메소드가 임계적이지 않은 코드(205)에의 호출로 인해 객체(208) 내의 코드의 서브세트와 같은 보안 임계적인 코드를 호출하는 것을 부주의하게 허용되는 것 등에 의해 임계성 규칙을 직 접 또는 간접적으로 위반하지 못하게 해야 한다.
본 발명의 양태에 따르면, 임계적인 데이터를 위한 컨테이너가 제공되는데, 여기서 메소드 또는 메소드들은 무엇이 호출자에 의해 요청되는지에 따라 데이터가 임계적이게 되어야하는지를 선택적으로 제어한다. 하나의 이러한 컨테이너는 get 컨테이너이고 임계적이라고 표시될 수 있는 get 메소드를 포함하여, 이에 따라 신뢰적이지 않은 코드가 데이터 값을 획득하지 못하도록 코드가 체크될 것이다.
보다 구체적으로, get 컨테이너를 위한 일반 클래스를 이용함으로써, 임계적인 데이터에의 액세스는 임계적이라고 표시된, 클래스 상의 속성을 통해서만 일어날 수 있다. 그러나, 일반 클래스 인스턴스를 가리키는 실제 필드는 임계적일 필요가 없기 때문에, 데이터의 존재/초기화는 임계적이지 않은 방식으로 코드로부터, 즉, 애플리케이션 프로그램의 허가으로 동작하는 코드에 의해 안전하게 체크될 수 있다. 본 발명은, 데이터의 초기화 또는 존재를 임계적이지 않게 체크하면서, 데이터의 컨텐츠에의 액세스를 임계적이라고 표식할 수 있다.
예를 들어, 임계 자원에의 액세스를 제공하는 데이터와 같은 임계적인 데이터를 고려해보자. 신뢰적이지 않은 프로그램이 이 데이터를 획득할 수 있으면, 임계 규칙이 위반된다. 그러나, 데이터를 임계적이라고 표시하는 것은 분석 툴이 임계적인 데이터에 관련된 모든 동작들도 임계적이게 될 필요 있게 될 것을 요청할 것이란 것을 의미하며, 이에 따라 다른 동작들이 데이터 자체를 요청하기보다는 오히려 데이터가 존재하는지를 체크(예를 들어, null 체크)하기만 하더라도 복잡도가 높아진다. 본 발명의 임계적인 컨테이너 없이 값을 획득하기 위한 코드에 대한 다 음의 예를 고려해보면, 보여진 바와 같이, 변수_bar는 임계적이기 때문에, null 체크된다:
본 발명의 컨테이너는 Get 요청과 데이터에 관련된 다른 요청 사이를 구별짓는 방식을 제공한다. Get 컨테이너 내의 (C#으로 된) 코드에 대한 다음의 예를 고려하여, Get 클래스의 구현이 예시된다[도 2a에 객체(206)에 의해 나타냄]:
보여진 바와 같이, 컨테이너 내의 Get 메소드는 데이터(_value)를 획득하는 것이 보안 임계적이라는 것을 나타내는 메타데이터([SecurityCritical] 태그)로 표시되며, 이에 따라 정적인 분석 툴은 신뢰적이지 않은 코드에 의해 데이터가 액세스되는 약점이 존재하는지를 탐지할 것이다. 이에 따라, 전술된 파일 핸들 예에서, 분석 툴은 오직 향상된 특권을 가진 신뢰적인 코드만이 파일 핸들의 값을 획득할 수 있다는 것을 체크할 것이다.
선언[도 2a에 블럭(210)에 의해 나타냄]:
초기화[도 2a에 블럭(212)에 의해 나타냄]:
임계적인 데이터를 획득하는 것에 이용[도 2a에 블럭(214)에 의해 나타냄]:
데이터(값)이 아니라 Get 메소드가 보안 임계적이라고 표시되기 때문에, 체크하는 것 자체가 임계적이지 않더라도 데이터는 존재/초기화에 대해 체크될 수 있다(예를 들어, null 체크가 행해짐). 임계적이라고 표시된 메소드 개수의 감소는 보안 검토될 필요가 있는 플랫폼 코드의 개수를 현격하게 감소시킨다. 다음의 예는 null을 체크한다[도 2a에 블럭(216, 217)에 의해 나타냄]:
본 발명의 또 다른 양태를 따르면, "Set" 컨테이너가 제공되는데, 이것은 코드가 허가를 향상시킬지를 나타내는 데 블리언 또는 다른 변수가 이용되는 상황을 처리하기 위한 것이다. 이러한 데이터의 값은 코드가 허가를 향상시킬지를 제어하 기 때문에, 데이터가 임계적이라고 설정된다. set 메소드를 호출하지 않는 다른 코드(예를 들어, 판독 메소드)는 값을 수정할 수 없으므로 임계적이지 않다. Set 컨테이너의 결과로서, 플랫폼 코드 내의 임계적인 메소드들의 개수도 또한 현격하게 감소한다.
대조적인 예로서, 보여질 수 있는 바와 같이, 본 발명의 임계적인 컨테이너 없이 임계 값을 설정하는 것을 고려하면, 판독은 임계적이다:
본 발명의 임계적인 컨테이너 양태에 따라, Set 컨테이너 SecurityCriticalDataSetter에 대한 다음의 예를 대신 고려해보자[SCDS, 도 2b에 객체(208)에 의해 나타냄]:
이 코드는 보안 임계적이라고 고려되는 값을 설정하는 메소드를 포함한다는 것을 명심하자. 그 결과, set 메소드는 [SecurityCritical] 메타데이터로 태깅(tag)된다.
SecurityCriticalDataSetter의 선언은 도 2b에 블럭(220)으로 나타난다:
초기화[도 2b에 블럭(222)에 의해 나타냄];
초기화는 _isWindowsFont의 값을 설정하며 따라서 보안 임계적이라는 것을 명심하자. 이는 신뢰적이지 않은 코드가 설치된 Windows® 기초 폰트 이외의 어떤 것을 이용하지 못하게 한다:
도 2b에 블럭(224)에 의해 나타난 바와 같이, 다른 플랫폼 코드는 _isWindowsFont의 값을 설정할 수 있음을 명심하자. 이러한 코드는 또한 보안 임계적이라고 표시될 필요가 있다.
isWindowsFont의 값을 판독(획득)하는 것은 임계적이라고 고려되지 않으며, 따라서 객체의 get 메소드는 보안 임계적인 메타데이터를 포함하지 않는 코드에 의해 이용될 수 있다[도 2b에 블럭(226, 227)에 의해 나타냄]:
도 3은, 메소드를 통한 데이터에의 액세스가 보안 임계적인 메타데이터 태그를 통해 제한될 때, 오직 보안 임계적인 코드만이 보안 임계적인 데이터 컨테이너 내의 데이터를 이용할 수 있다는 것을 보증하기 위해, 플랫폼 코드(202)를 평가하는 분석 툴(330)을 나타낸다. 결과(332)가 보안 팀 및/또는 개발자에 의해 검토됨으로써 코드 내의 임의의 약점을 제거할 수 있다.
도 4는 신뢰적이지 않은 코드(440)로 동작하는 컴파일된 플랫폼(402)을 나타낸다. 본 발명의 다양한 양태에 따라 개발자가 Get 또는 Set 컨테이너 내에 임계적인 데이터를 적절하게 배치하면, 신뢰적이지 않은 코드(440)는 안전하게 포함된 데이터에 부적절하게 액세스할 수 없게 되어 안전하지 않은 동작을 수행할 수 없게 된다. 예를 들어, 코드, 데이터 및/또는 메소드가 임계적일 때를 나타내는 컴파일된 코드(402)로 속성 등을 유지함으로써, 안전하지 않은 동작을 실시간 체크할 수 있음을 명심하자.
상기의 설명으로부터 알 수 있는 바와 같이, 데이터를 데이터의 임계적이지 않은 이용을 제외한 임계적인 이용에 대해 보안 임계적이라고 반드시 표시되도록 하는 Get 컨테이너 및 Set 컨테이너가 제공된다. 이는 데이터 전체가 아니라 컨테이너 내의 개별적인 메소드를 이용에 독립적이라고 표시함으로써 이루어진다. 그러므로 본 발명은 검토할 필요가 있는 플랫폼 코드의 개수를 감소시키고, 플랫폼 코드 내의 임의의 보안 문제점이 발견될 가능성을 증가시킨다.
본 발명은 다양한 수정물 및 대안 구조를 수용하지만, 본원의 특정 실시예들이 도면에 도시되고 앞서 상세하게 설명됐다. 그러나, 본 발명을 개시된 특정한 형태로 제한하기 위한 것은 아니며, 반대로 본 발명의 취지 및 영역에 속하는 모든 수정물, 대안 구조, 및 등가물들을 포함하도록 의도된다는 것을 이해해야 한다.
본 발명은, 유형 안전 방식으로 데이터에의 액세스를 허용하면서, 데이터의 존재/초기화를 체크하는 것을 임계적이라고 표시하지 않고서도 "임계성"을 나타내는 메타데이터가 클래스 상의 임의의 데이터 필드에 첨부될 수 있는 시스템 및 방법을 제공한다.
Claims (19)
- 컴퓨팅 환경에서,컨테이너(container)를 제공하는 단계; 및상기 컨테이너의 특정한 메소드(method)에 관련된 데이터가 오직 향상된 허가(elevated permission)를 갖는 코드에 의해 상기 특정한 메소드를 통해서만 액세스될 수 있도록, 정보가 상기 데이터를 보안 임계적(critical)인 것으로 식별할 수 있게 하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 컨테이너는 get 컨테이너를 포함하고, 상기 메소드는 get 메소드를 포함하며, 상기 데이터는 향상된 허가들을 갖는 코드에 의해 상기 get 메소드를 통해서만 판독될 수 있고, 존재/초기화 체크(existence/initialization check)들은 향상된 허가가 없는 코드에 의해 수행될 수 있는 방법.
- 제2항에 있어서, 상기 데이터는 임계 자원에의 액세스를 제공하는 값을 포함하는 방법.
- 제1항에 있어서, 상기 컨테이너는 set 컨테이너를 포함하고, 상기 특정한 메 소드는 set 메소드를 포함하며, 상기 데이터는 향상된 허가를 갖는 코드에 의해 상기 set 메소드를 통해서만 설정될 수 있는 방법.
- 제4항에 있어서, 상기 메소드는 get 메소드를 더 포함하며, 상기 데이터는 향상된 허가가 없는 코드에 의해 상기 get 메소드를 통해 판독될 수 있는 방법.
- 제5항에 있어서, 상기 데이터는 임계 자원에의 액세스를 제공하는 값을 포함하는 방법.
- 제5항에 있어서, 상기 데이터는 특권(privilege)이 다른 코드에 의해 향상될 수 있는지를 나타내는 값을 포함하는 방법.
- 제1항에 있어서, 상기 컨테이너는 다운로드된 코드가 실행되도록 하는 플랫폼 코드(platform code)로 구현되고,분석 툴을 통해 상기 플랫폼 코드를 분석하는 단계를 더 포함하는 방법.
- 실행될 때 제1항의 방법을 수행하는 컴퓨터 실행가능 명령어들을 갖는 적어도 하나의 컴퓨터 판독가능 매체.
- 데이터 구조가 저장된 컴퓨터 판독가능 매체에 있어서,set 메소드 및 get 메소드를 포함하는 set 컨테이너; 및상기 set 메소드에 관련된 데이터는 보안 임계적이고, 상기 get 메소드에 관련된 데이터는 보안 임계적이지 않다고 식별하는 정보를 포함하며,이에 의해, 상기 데이터는 상기 get 메소드를 통해 향상된 허가가 없는 코드에 의해 판독될 수 있고, 또한 오직 상기 set 메소드를 통해 향상된 허가를 갖는 코드에 의해서만 설정될 수 있게 되는 컴퓨터 판독가능 매체.
- 제10항에 있어서, 상기 데이터는 임계 자원에의 액세스를 제공하는 값을 포함하는 컴퓨터 판독가능 매체.
- 제10항에 있어서, 상기 데이터는 특권이 다른 코드에 의해 향상될 수 있는지를 나타내는 값을 포함하는 컴퓨터 판독가능 매체.
- 제10항에 있어서,향상된 허가를 갖는 코드로부터 상기 값을 설정하기 위한 요청을 수신하고, 상기 값을 설정하는 것을 더 포함하는 컴퓨터 판독가능 매체.
- 제10항에 있어서,향상된 허가가 없는 코드로부터 상기 값을 판독하기 위한 요청을 수신하고, 상기 값에 대응하는 데이터를 반환하는 것을 더 포함하는 컴퓨터 판독가능 매체.
- 제10항에 있어서, 상기 set 컨테이너는 다운로드된 코드가 실행되도록 하는 플랫폼 코드로 구현되고,분석 툴을 통해 상기 플랫폼 코드를 분석하는 것을 더 포함하는 컴퓨터 판독가능 매체.
- 데이터 구조가 저장된 컴퓨터 판독가능 매체에 있어서,get 메소드를 포함하는 get 컨테이너; 및상기 get 메소드에 관련된 데이터가 보안 임계적이라고 나타내는 정보를 포함하며,이에 의해, 상기 데이터는 오직 상기 get 메소드를 통해 향상된 허가를 갖는 코드에 의해서만 판독될 수 있고, 존재/초기화 체크들은 향상된 허가가 없는 코드에 의해 수행될 수 있게 되는 컴퓨터 판독가능 매체.
- 제16항에 있어서, 상기 데이터는 임계 자원에의 액세스를 제공하는 값을 포함하는 컴퓨터 판독가능 매체.
- 제16항에 있어서,향상된 허가를 갖는 코드로부터 상기 값을 획득하기 위한 요청을 수신하고, 상기 값에 대응하는 데이터를 반환하는 것을 더 포함하는 컴퓨터 판독가능 매체.
- 제16항에 있어서, 상기 set 컨테이너는 다운로드된 코드가 실행되도록 하는 플랫폼 코드로 구현되고,분석 툴을 통해 상기 플랫폼 코드를 분석하는 것을 더 포함하는 컴퓨터 판독가능 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/051,808 US7600256B2 (en) | 2005-02-04 | 2005-02-04 | Security critical data containers |
US11/051,808 | 2005-02-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060089618A true KR20060089618A (ko) | 2006-08-09 |
KR101220014B1 KR101220014B1 (ko) | 2013-01-09 |
Family
ID=36642771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050126090A KR101220014B1 (ko) | 2005-02-04 | 2005-12-20 | 보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7600256B2 (ko) |
EP (1) | EP1688856A3 (ko) |
JP (1) | JP5208367B2 (ko) |
KR (1) | KR101220014B1 (ko) |
CN (1) | CN1815483B (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996866B2 (en) * | 2009-12-22 | 2015-03-31 | Microsoft Technology Licensing, Llc | Unobtrusive assurance of authentic user intent |
US10025688B2 (en) | 2010-03-14 | 2018-07-17 | Virtual Forge GmbH | System and method for detecting data extrusion in software applications |
US9659041B2 (en) * | 2012-01-30 | 2017-05-23 | Oracle International Corporation | Model for capturing audit trail data with reduced probability of loss of critical data |
EP2709033B1 (en) * | 2012-09-17 | 2017-01-04 | Virtual Forge GmbH | System and method for detecting data extrusion in software applications |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69031191T2 (de) * | 1989-05-15 | 1998-02-12 | Ibm | System zur Steuerung von Zugriffsprivilegien |
GB9003112D0 (en) | 1990-02-12 | 1990-04-11 | Int Computers Ltd | Access control mechanism |
US5765152A (en) * | 1995-10-13 | 1998-06-09 | Trustees Of Dartmouth College | System and method for managing copyrighted electronic media |
US6047377A (en) * | 1997-12-11 | 2000-04-04 | Sun Microsystems, Inc. | Typed, parameterized, and extensible access control permissions |
US6226618B1 (en) * | 1998-08-13 | 2001-05-01 | International Business Machines Corporation | Electronic content delivery system |
US6938164B1 (en) * | 2000-11-22 | 2005-08-30 | Microsoft Corporation | Method and system for allowing code to be securely initialized in a computer |
US20030037237A1 (en) * | 2001-04-09 | 2003-02-20 | Jean-Paul Abgrall | Systems and methods for computer device authentication |
JP2004110415A (ja) * | 2002-09-18 | 2004-04-08 | Toshiba Solutions Corp | ソフトウェア開発支援装置とコンピュータプログラム |
AU2003233574B9 (en) | 2003-05-17 | 2010-03-25 | Microsoft Corporation | Mechanism for evaluating security risks |
-
2005
- 2005-02-04 US US11/051,808 patent/US7600256B2/en active Active
- 2005-12-20 KR KR1020050126090A patent/KR101220014B1/ko active IP Right Grant
-
2006
- 2006-01-02 EP EP06000038A patent/EP1688856A3/en not_active Ceased
- 2006-01-04 CN CN2006100025786A patent/CN1815483B/zh not_active Expired - Fee Related
- 2006-01-27 JP JP2006019144A patent/JP5208367B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7600256B2 (en) | 2009-10-06 |
KR101220014B1 (ko) | 2013-01-09 |
EP1688856A2 (en) | 2006-08-09 |
EP1688856A3 (en) | 2006-09-06 |
CN1815483A (zh) | 2006-08-09 |
JP5208367B2 (ja) | 2013-06-12 |
JP2006216038A (ja) | 2006-08-17 |
CN1815483B (zh) | 2012-10-10 |
US20060179482A1 (en) | 2006-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7237236B2 (en) | Method and apparatus for automatically determining optimum placement of privileged code locations in existing code | |
US7930738B1 (en) | Method and apparatus for secure execution of code | |
JP5420734B2 (ja) | オブジェクトへの制御されたアクセスを有するソフトウェアシステム | |
KR101143154B1 (ko) | 보안 가상 기기를 통하여 보안 정책을 시행하는 방법 및시스템 | |
US7849509B2 (en) | Detection of security vulnerabilities in computer programs | |
Tuncay et al. | Draco: A system for uniform and fine-grained access control for web code on android | |
US8661555B2 (en) | Role-based access control over instructions in software code | |
US8375423B2 (en) | Authenticating a source of a scripted code | |
US8069450B2 (en) | Computer operating system data management | |
US7155703B2 (en) | Virtual method protection | |
JPH1139157A (ja) | 機密保護を提供する方法およびシステム | |
Hedin et al. | Information-flow security for JavaScript and its APIs | |
US8190673B2 (en) | Enforcement of object permissions in enterprise resource planning software | |
Tromer et al. | Droiddisintegrator: Intra-application information flow control in android apps | |
RU2701111C2 (ru) | Предоставление возможности классификации и управления правами доступа к информации в программных приложениях | |
US9715372B2 (en) | Executable guidance experiences based on implicitly generated guidance models | |
KR101220014B1 (ko) | 보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체 | |
US20050289358A1 (en) | Method and system for sensitive information protection in structured documents | |
US7926105B2 (en) | Using security-related attributes | |
WO2023239526A1 (en) | Controlling application access to sensitive data | |
Dann et al. | Modguard: Identifying integrity & confidentiality violations in Java modules | |
Okhravi et al. | One giant leap for computer security | |
US20220385665A1 (en) | Task Based Access Rights Control | |
Kerschbaumer et al. | Hardening firefox against injection attacks | |
US20230367564A1 (en) | Rules processing systems and methods with just-in-time compilation for endpoint protection in kernel mode |
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: 20151217 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161220 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20171219 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20181226 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20191217 Year of fee payment: 8 |