KR101220014B1 - 보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체 - Google Patents

보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR101220014B1
KR101220014B1 KR1020050126090A KR20050126090A KR101220014B1 KR 101220014 B1 KR101220014 B1 KR 101220014B1 KR 1020050126090 A KR1020050126090 A KR 1020050126090A KR 20050126090 A KR20050126090 A KR 20050126090A KR 101220014 B1 KR101220014 B1 KR 101220014B1
Authority
KR
South Korea
Prior art keywords
code
security critical
data
security
methods
Prior art date
Application number
KR1020050126090A
Other languages
English (en)
Other versions
KR20060089618A (ko
Inventor
마크 에이. 알카자르
벤카타 라마 프래새드 탐마나
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060089618A publication Critical patent/KR20060089618A/ko
Application granted granted Critical
Publication of KR101220014B1 publication Critical patent/KR101220014B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6227Protecting 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
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged 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

보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및 컴퓨터 판독가능 매체{SECURITY CRITICAL DATA CONTAINERS}
도 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 체크된다:
Figure 112005074533764-pat00001
본 발명의 컨테이너는 Get 요청과 데이터에 관련된 다른 요청 사이를 구별짓는 방식을 제공한다. Get 컨테이너 내의 (C#으로 된) 코드에 대한 다음의 예를 고려하여, Get 클래스의 구현이 예시된다[도 2a에 객체(206)에 의해 나타냄]:
Figure 112005074533764-pat00002
보여진 바와 같이, 컨테이너 내의 Get 메소드는 데이터(_value)를 획득하는 것이 보안 임계적이라는 것을 나타내는 메타데이터([SecurityCritical] 태그)로 표시되며, 이에 따라 정적인 분석 툴은 신뢰적이지 않은 코드에 의해 데이터가 액세스되는 약점이 존재하는지를 탐지할 것이다. 이에 따라, 전술된 파일 핸들 예에서, 분석 툴은 오직 향상된 특권을 가진 신뢰적인 코드만이 파일 핸들의 값을 획득할 수 있다는 것을 체크할 것이다.
선언[도 2a에 블럭(210)에 의해 나타냄]:
Figure 112005074533764-pat00003
초기화[도 2a에 블럭(212)에 의해 나타냄]:
Figure 112005074533764-pat00004
임계적인 데이터를 획득하는 것에 이용[도 2a에 블럭(214)에 의해 나타냄]:
Figure 112005074533764-pat00005
데이터(값)이 아니라 Get 메소드가 보안 임계적이라고 표시되기 때문에, 체크하는 것 자체가 임계적이지 않더라도 데이터는 존재/초기화에 대해 체크될 수 있다(예를 들어, null 체크가 행해짐). 임계적이라고 표시된 메소드 개수의 감소는 보안 검토될 필요가 있는 플랫폼 코드의 개수를 현격하게 감소시킨다. 다음의 예는 null을 체크한다[도 2a에 블럭(216, 217)에 의해 나타냄]:
Figure 112005074533764-pat00006
본 발명의 또 다른 양태를 따르면, "Set" 컨테이너가 제공되는데, 이것은 코드가 허가를 향상시킬지를 나타내는 데 블리언 또는 다른 변수가 이용되는 상황을 처리하기 위한 것이다. 이러한 데이터의 값은 코드가 허가를 향상시킬지를 제어하 기 때문에, 데이터가 임계적이라고 설정된다. set 메소드를 호출하지 않는 다른 코드(예를 들어, 판독 메소드)는 값을 수정할 수 없으므로 임계적이지 않다. Set 컨테이너의 결과로서, 플랫폼 코드 내의 임계적인 메소드들의 개수도 또한 현격하게 감소한다.
대조적인 예로서, 보여질 수 있는 바와 같이, 본 발명의 임계적인 컨테이너 없이 임계 값을 설정하는 것을 고려하면, 판독은 임계적이다:
Figure 112005074533764-pat00007
본 발명의 임계적인 컨테이너 양태에 따라, Set 컨테이너 SecurityCriticalDataSetter에 대한 다음의 예를 대신 고려해보자[SCDS, 도 2b에 객체(208)에 의해 나타냄]:
Figure 112005074533764-pat00008
이 코드는 보안 임계적이라고 고려되는 값을 설정하는 메소드를 포함한다는 것을 명심하자. 그 결과, set 메소드는 [SecurityCritical] 메타데이터로 태깅(tag)된다.
SecurityCriticalDataSetter의 선언은 도 2b에 블럭(220)으로 나타난다:
Figure 112005074533764-pat00009
초기화[도 2b에 블럭(222)에 의해 나타냄];
초기화는 _isWindowsFont의 값을 설정하며 따라서 보안 임계적이라는 것을 명심하자. 이는 신뢰적이지 않은 코드가 설치된 Windows® 기초 폰트 이외의 어떤 것을 이용하지 못하게 한다:
Figure 112005074533764-pat00010
도 2b에 블럭(224)에 의해 나타난 바와 같이, 다른 플랫폼 코드는 _isWindowsFont의 값을 설정할 수 있음을 명심하자. 이러한 코드는 또한 보안 임계적이라고 표시될 필요가 있다.
isWindowsFont의 값을 판독(획득)하는 것은 임계적이라고 고려되지 않으며, 따라서 객체의 get 메소드는 보안 임계적인 메타데이터를 포함하지 않는 코드에 의해 이용될 수 있다[도 2b에 블럭(226, 227)에 의해 나타냄]:
Figure 112005074533764-pat00011
도 3은, 메소드를 통한 데이터에의 액세스가 보안 임계적인 메타데이터 태그를 통해 제한될 때, 오직 보안 임계적인 코드만이 보안 임계적인 데이터 컨테이너 내의 데이터를 이용할 수 있다는 것을 보증하기 위해, 플랫폼 코드(202)를 평가하는 분석 툴(330)을 나타낸다. 결과(332)가 보안 팀 및/또는 개발자에 의해 검토됨으로써 코드 내의 임의의 약점을 제거할 수 있다.
도 4는 신뢰적이지 않은 코드(440)로 동작하는 컴파일된 플랫폼(402)을 나타낸다. 본 발명의 다양한 양태에 따라 개발자가 Get 또는 Set 컨테이너 내에 임계적인 데이터를 적절하게 배치하면, 신뢰적이지 않은 코드(440)는 안전하게 포함된 데이터에 부적절하게 액세스할 수 없게 되어 안전하지 않은 동작을 수행할 수 없게 된다. 예를 들어, 코드, 데이터 및/또는 메소드가 임계적일 때를 나타내는 컴파일된 코드(402)로 속성 등을 유지함으로써, 안전하지 않은 동작을 실시간 체크할 수 있음을 명심하자.
상기의 설명으로부터 알 수 있는 바와 같이, 데이터를 데이터의 임계적이지 않은 이용을 제외한 임계적인 이용에 대해 보안 임계적이라고 반드시 표시되도록 하는 Get 컨테이너 및 Set 컨테이너가 제공된다. 이는 데이터 전체가 아니라 컨테이너 내의 개별적인 메소드를 이용에 독립적이라고 표시함으로써 이루어진다. 그러므로 본 발명은 검토할 필요가 있는 플랫폼 코드의 개수를 감소시키고, 플랫폼 코드 내의 임의의 보안 문제점이 발견될 가능성을 증가시킨다.
본 발명은 다양한 수정물 및 대안 구조를 수용하지만, 본원의 특정 실시예들이 도면에 도시되고 앞서 상세하게 설명됐다. 그러나, 본 발명을 개시된 특정한 형태로 제한하기 위한 것은 아니며, 반대로 본 발명의 취지 및 영역에 속하는 모든 수정물, 대안 구조, 및 등가물들을 포함하도록 의도된다는 것을 이해해야 한다.
본 발명은, 유형 안전 방식으로 데이터에의 액세스를 허용하면서, 데이터의 존재/초기화를 체크하는 것을 임계적이라고 표시하지 않고서도 "임계성"을 나타내는 메타데이터가 클래스 상의 임의의 데이터 필드에 첨부될 수 있는 시스템 및 방법을 제공한다.

Claims (19)

  1. 컴퓨터 시스템에서, 보안 문제들에 대한 체크를 단순화하도록 플랫폼 코드를 구성하기 위한 컴퓨터-구현 방법으로서,
    프로그래밍 언어 클래스가 보안 임계적(critical) 데이터를 위한 컨테이너(container)를 제공하는 단계 - 상기 프로그래밍 언어 클래스는 또한 상기 컨테이너 내의 보안 임계적 데이터와 상호작용하기 위한 복수의 메소드(methods)를 포함함 - ; 및
    set 컨테이너의 일부 메소드를 보안 임계적인 것으로 구별함으로써, 상기 보안 임계적 데이터와 어떤 상호작용이 요청되는지에 따라 상기 보안 임계적 데이터를 보안 임계적으로 취급할지를 프로세서가 선택적으로 제어하여, 상기 보안 임계적 데이터가 오직 향상된 허가(elevated permission)를 갖는 상기 메소드들을 통해서만 액세스될 수 있도록 하는 단계로서,
    상기 클래스 상의 속성을 통하여 상기 보안 임계적 데이터에 액세스하는 메소드들을 보안 임계적 메소드들이라고 표시하는 것; 및 상기 프로그래밍 언어 클래스를 가리키는 실제 필드에 액세스하는 메소드들은 보안 임계적 메소드들이 아니라고 지시하여, 상기 보안 임계적 데이터의 존재 또는 초기화가 상기 보안 임계적 데이터를 실제로 액세스하지 않고 비-임계적 방식으로 체크될 수 있도록 하는 것을 포함하는 단계
    를 포함하는, 컴퓨터-구현 방법.
  2. 제1항에 있어서, 상기 컨테이너는 get 컨테이너를 포함하고, 상기 보안 임계적 데이터는 향상된 허가들로 표시된 get 메소드를 통해서만 판독될 수 있으며, 존재/초기화 체크(existence/initialization check)는 향상된 허가들이 없는 코드에 의해 수행될 수 있는, 컴퓨터-구현 방법.
  3. 제2항에 있어서, 상기 데이터는 임계 자원에의 액세스를 제공하는 값을 포함하는, 컴퓨터-구현 방법.
  4. 제1항에 있어서, 상기 컨테이너는 set 컨테이너를 포함하고, 상기 보안 임계적 데이터는 향상된 허가들로 표시된 set 메소드를 통해서만 설정될 수 있는, 컴퓨터-구현 방법.
  5. 제4항에 있어서, get 메소드를 더 포함하며, 상기 데이터는 향상된 허가들이 없는 코드에 의해 상기 get 메소드를 통해 판독될 수 있는, 컴퓨터-구현 방법.
  6. 제5항에 있어서, 상기 데이터는 임계 자원에의 액세스를 제공하는 값을 포함하는, 컴퓨터-구현 방법.
  7. 제5항에 있어서, 상기 데이터는 특권들(privileges)이 다른 코드에 의해 향상될 수 있는지를 지시하는 값을 포함하는, 컴퓨터-구현 방법.
  8. 제1항에 있어서, 상기 컨테이너는 다운로드된 코드가 실행되도록 허용하는 플랫폼 코드(platform code)로 구현되고,
    분석 툴을 통해 상기 플랫폼 코드를 분석하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  9. 컴퓨터 시스템에서 사용하기 위한 하나 이상의 컴퓨터 판독가능 기록매체로서, 상기 하나 이상의 컴퓨터 판독가능 기록매체는 보안 문제들에 대한 체크를 단순화하도록 플랫폼 코드를 구성하기 위한 방법을 구현하기 위한 것이고, 상기 하나 이상의 컴퓨터 판독가능 기록매체에는 프로세서에서 실행되는 경우 상기 컴퓨터 시스템으로 하여금 상기 방법을 수행하도록 하는 컴퓨터-실행가능 명령어가 저장되어 있으며,
    상기 방법은,
    프로그래밍 언어 클래스가 보안 임계적 데이터를 위한 컨테이너를 제공하는 단계 - 상기 프로그래밍 언어 클래스는 또한 상기 컨테이너 내의 보안 임계적 데이터와 상호작용하기 위한 복수의 메소드를 포함함 - ; 및
    상기 컨테이너의 일부 메소드를 보안 임계적인 것으로 구별함으로써, 상기 보안 임계적 데이터와 어떤 상호작용이 요청되는지에 따라 상기 보안 임계적 데이터를 보안 임계적으로 취급할지를 선택적으로 제어하여, 상기 보안 임계적 데이터가 오직 향상된 허가를 갖는 상기 메소드들을 통해서만 액세스될 수 있도록 하는 단계로서,
    상기 클래스 상의 속성을 통하여 상기 보안 임계적 데이터에 액세스하는 메소드들을 보안 임계적 메소드들이라고 표시하는 것; 및 상기 프로그래밍 언어 클래스를 가리키는 실제 필드에 액세스하는 메소드들은 보안 임계적 메소드들이 아니라고 지시하여, 상기 보안 임계적 데이터의 존재 또는 초기화가 상기 보안 임계적 데이터를 실제로 액세스하지 않고 비-임계적 방식으로 체크될 수 있도록 하는 것을 포함하는 단계
    를 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  10. 컴퓨터 시스템에서 사용하기 위한 하나 이상의 컴퓨터 판독가능 기록매체로서, 상기 하나 이상의 컴퓨터 판독가능 기록매체는 보안 문제들에 대한 체크를 단순화하도록 플랫폼 코드를 구성하기 위한 방법을 구현하기 위한 것이고, 상기 하나 이상의 컴퓨터 판독가능 기록매체에는 프로세서에서 실행되는 경우 상기 컴퓨터 시스템으로 하여금 상기 방법을 수행하도록 하는 컴퓨터-실행가능 명령어가 저장되어 있으며,
    상기 방법은,
    프로그래밍 언어 클래스가 보안 임계적 데이터를 위한 set 컨테이너를 제공하는 단계 - 상기 프로그래밍 언어 클래스는 또한 상기 set 컨테이너 내의 보안 임계적 데이터와 상호작용하기 위한 복수의 메소드를 포함하고, 상기 복수의 메소드는 set 메소드 및 get 메소드를 포함함 - ; 및
    상기 set 컨테이너의 일부 메소드를 보안 임계적인 것으로 구별함으로써, 상기 보안 임계적 데이터와 어떤 상호작용이 요청되는지에 따라 상기 보안 임계적 데이터를 보안 임계적으로 취급할지를 선택적으로 제어하여, 상기 보안 임계적 데이터가 오직 향상된 허가를 갖는 상기 메소드들을 통해서만 액세스될 수 있도록 하는 단계로서,
    상기 set 메소드를 보안 임계적 메소드로 표시하는 것; 및 상기 get 메소드가 보안 임계적인 메소드가 아니라고 지시하여, 상기 보안 임계적 데이터는 향상된 허가들이 없는 코드에 의해 상기 get 메소드를 통해 판독될 수 있고 상기 보안 임계적 데이터는 상기 set 메소드를 통해 향상된 허가들을 갖는 코드에 의해서만 설정될 수 있도록 하는 것을 포함하는 단계
    를 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  11. 제10항에 있어서, 상기 보안 임계적 데이터는 임계 자원에의 액세스를 제공하는 값을 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  12. 제10항에 있어서, 상기 보안 임계적 데이터는 특권이 다른 코드에 의해 향상될 수 있는지를 지시하는 값을 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  13. 제10항에 있어서,
    향상된 허가들을 갖는 코드로부터 상기 보안 임계적 데이터에 대한 값을 설정하기 위한 요청을 수신하고, 상기 값을 설정하는 것을 더 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  14. 제10항에 있어서,
    향상된 허가들이 없는 코드로부터 상기 보안 임계적 데이터를 판독하기 위한 요청을 수신하고, 상기 요청에 대한 응답으로 상기 보안 임계적 데이터를 반환하는 것을 더 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  15. 제10항에 있어서, 상기 set 컨테이너는 다운로드된 코드가 실행되도록 하는 플랫폼 코드로 구현되고,
    분석 툴을 통해 상기 플랫폼 코드를 분석하는 것을 더 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  16. 컴퓨터 시스템에서 사용하기 위한 하나 이상의 컴퓨터 판독가능 기록매체로서, 상기 하나 이상의 컴퓨터 판독가능 기록매체는 보안 문제들에 대한 체크를 단순화하도록 플랫폼 코드를 구성하기 위한 방법을 구현하기 위한 것이고, 상기 하나 이상의 컴퓨터 판독가능 기록매체에는 프로세서에서 실행되는 경우 상기 컴퓨터 시스템으로 하여금 상기 방법을 수행하도록 하는 컴퓨터-실행가능 명령어가 저장되어 있으며,
    상기 방법은,
    프로그래밍 언어 클래스가 보안 임계적 데이터를 위한 get 컨테이너를 제공하는 단계 - 상기 프로그래밍 언어 클래스는 또한 set 컨테이너 내의 보안 임계적 데이터와 상호작용하기 위한 복수의 메소드를 포함하고, 상기 복수의 메소드는 get 메소드를 포함함 - ; 및
    상기 get 메소드를 보안 임계적인 것으로 구별함으로써, 상기 보안 임계적 데이터와 어떤 상호작용이 요청되는지에 따라 상기 보안 임계적 데이터를 보안 임계적으로 취급할지를 선택적으로 제어하여, 상기 보안 임계적 데이터가 오직 향상된 허가를 갖는 상기 메소드들을 통해서만 액세스될 수 있도록 하는 단계로서,
    상기 get 메소드를 보안 임계적 메소드로 표시하는 것; 및 상기 프로그래밍 언어 클래스를 가리키는 실제 필드에 액세스하는 하나 이상의 다른 메소드는 보안 임계적 메소드들이 아니라고 지시하여, 상기 보안 임계적 데이터는 상기 get 메소드를 통해 향상된 허가들을 갖는 코드에 의해서만 판독될 수 있고 존재/초기화 체크는 향상된 허가들이 없는 코드에 의해서 수행될 수 있도록 하는 것을 포함하는 단계
    를 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  17. 제16항에 있어서, 상기 보안 임계적 데이터는 임계 자원에의 액세스를 제공하는 값을 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  18. 제16항에 있어서,
    향상된 허가들을 갖는 코드로부터 상기 보안 임계적 데이터에 대한 값을 획득하기 위한 요청을 수신하고, 상기 값에 대응하는 데이터를 반환하는 것을 더 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
  19. 제16항에 있어서, 상기 get 컨테이너는 다운로드된 코드가 실행되도록 하는 플랫폼 코드로 구현되고,
    분석 툴을 통해 상기 플랫폼 코드를 분석하는 것을 더 포함하는, 하나 이상의 컴퓨터 판독가능 기록매체.
KR1020050126090A 2005-02-04 2005-12-20 보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체 KR101220014B1 (ko)

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 KR20060089618A (ko) 2006-08-09
KR101220014B1 true 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)

* Cited by examiner, † Cited by third party
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5335346A (en) 1989-05-15 1994-08-02 International Business Machines Corporation Access control policies for an object oriented database, including access control lists which span across object boundaries
WO2004107647A1 (en) 2003-05-17 2004-12-09 Microsoft Corporation Mechanism for evaluating security risks

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 ソフトウェア開発支援装置とコンピュータプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5335346A (en) 1989-05-15 1994-08-02 International Business Machines Corporation Access control policies for an object oriented database, including access control lists which span across object boundaries
WO2004107647A1 (en) 2003-05-17 2004-12-09 Microsoft Corporation Mechanism for evaluating security risks

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
논문1:IEEE *
카달로그1:INTERNET ARTICLE *

Also Published As

Publication number Publication date
KR20060089618A (ko) 2006-08-09
CN1815483A (zh) 2006-08-09
US20060179482A1 (en) 2006-08-10
JP5208367B2 (ja) 2013-06-12
US7600256B2 (en) 2009-10-06
CN1815483B (zh) 2012-10-10
EP1688856A3 (en) 2006-09-06
EP1688856A2 (en) 2006-08-09
JP2006216038A (ja) 2006-08-17

Similar Documents

Publication Publication Date Title
US7237236B2 (en) Method and apparatus for automatically determining optimum placement of privileged code locations in existing code
US20190310834A1 (en) Determining based on static compiler analysis that execution of compiler code would result in unacceptable program behavior
JP5420734B2 (ja) オブジェクトへの制御されたアクセスを有するソフトウェアシステム
US9213843B2 (en) Analyzing access control configurations
KR101143154B1 (ko) 보안 가상 기기를 통하여 보안 정책을 시행하는 방법 및시스템
US7908640B2 (en) Data handling apparatus and methods
US8924928B1 (en) Rule-based, run-time-alterable, client-agnostic client-server system
Tuncay et al. Draco: A system for uniform and fine-grained access control for web code on android
US8375423B2 (en) Authenticating a source of a scripted code
US8661555B2 (en) Role-based access control over instructions in software code
US8069450B2 (en) Computer operating system data management
JPH1139157A (ja) 機密保護を提供する方法およびシステム
US7155703B2 (en) Virtual method protection
KR20060083918A (ko) 운영 체제에 연관된 애플리케이션을 관리하는 방법
RU2701111C2 (ru) Предоставление возможности классификации и управления правами доступа к информации в программных приложениях
US8190673B2 (en) Enforcement of object permissions in enterprise resource planning software
US9715372B2 (en) Executable guidance experiences based on implicitly generated guidance models
KR101220014B1 (ko) 보안 임계적인 데이터 컨테이너를 제공하기 위한 방법 및컴퓨터 판독가능 매체
Hadavi et al. Software security; a vulnerability activity revisit
US7926105B2 (en) Using security-related attributes
Dann et al. ModGuard: Identifying Integrity & Confidentiality Violations in Java Modules
US11805125B2 (en) Task based access rights control
US20230367564A1 (en) Rules processing systems and methods with just-in-time compilation for endpoint protection in kernel mode
US20230401332A1 (en) Controlling application access to sensitive data
Shirazi et al. Vulnerability Prevention in Software Development Process

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