KR20080096518A - 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을용이하게 하는 컴퓨터 구현 방법, 컴퓨터 프로그램 제품,및 컴퓨팅 시스템 - Google Patents

해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을용이하게 하는 컴퓨터 구현 방법, 컴퓨터 프로그램 제품,및 컴퓨팅 시스템 Download PDF

Info

Publication number
KR20080096518A
KR20080096518A KR1020087018287A KR20087018287A KR20080096518A KR 20080096518 A KR20080096518 A KR 20080096518A KR 1020087018287 A KR1020087018287 A KR 1020087018287A KR 20087018287 A KR20087018287 A KR 20087018287A KR 20080096518 A KR20080096518 A KR 20080096518A
Authority
KR
South Korea
Prior art keywords
command unit
code
interpretable
interpretable code
command
Prior art date
Application number
KR1020087018287A
Other languages
English (en)
Inventor
제프리 피. 스노버
브루스 지. 파예트
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080096518A publication Critical patent/KR20080096518A/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
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 컴퓨터화하여 용이하게 한다. 해석가능한 코드는 평가 하에서 구문분석되어 해석가능한 코드 내의 커맨드 유닛을 식별한다. 그 후, 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소가, 구문분석된 코드를 사용하여 식별된다. 식별된 연관된 하나 이상의 위험 요소와 함께 해석가능한 코드에서 발견된 커맨드 유닛의 식별(ID;identification)을 포함하는 보고서가 만들어진다. 따라서, 사용자가 해석가능한 코드 자체를 판독 및 평가할 필요는 없지만, 대신에 훨씬 덜 복잡한 보고서를 검토하여 해석가능한 코드를 실행시키는 것과 연관된 위험을 평가할 수 있다.
Figure P1020087018287
해석가능한 코드, 보고서, 평가, 커맨드, 구문분석

Description

해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 용이하게 하는 컴퓨터 구현 방법, 컴퓨터 프로그램 제품, 및 컴퓨팅 시스템{ANALYZING INTERPRETABLE CODE FOR HARM POTENTIAL}
컴퓨팅 시스템은 우리가 작업하고 즐기는 방식을 변화시켰다. 컴퓨팅 시스템은 랩톱 컴퓨터, 데스크톱 컴퓨터, PDA(personal digital assistant), 전화기, 및 심지어 종래에는 컴퓨팅 시스템과 관련이 없었던, 예컨대 냉장고 및 자동차 등의 장치들을 포함하는 매우 다양한 형태로 나타난다. 컴퓨팅 시스템은 심지어 네트워크를 통해 상호연결된 다수의 컴퓨팅 시스템을 구성요소로서 포함할 수 있다. 따라서, 일부 컴퓨팅 시스템은 손바닥 안에 들어올 만큼 충분히 소형일 수 있지만, 반면에 다른 컴퓨팅 시스템은 세계 여러 곳에 걸쳐 퍼져 있다.
컴퓨팅 시스템의 물리적 형태에 관계없이, 컴퓨팅 시스템은 하드웨어 및 소프트웨어로 이루어진다. 하드웨어는 가장 기본적으로 적어도 하나의 프로세서 및 메모리를 포함한다. 소프트웨어는, 메모리 또는 저장 장치에 구현될 수 있고 프로세서(들)에 의해 액세스 및 실행되어 컴퓨팅 시스템의 전체 기능(functionality)을 지시(direct)하는 명령어들을 포함한다. 따라서, 소프트웨어는 컴퓨팅 시스템의 기능을 인에이블(enable) 및 지시하는 데 있어 매우 중요하다.
소프트웨어를 구성하기 위해서, 프로그래머인 인간은 먼저 인간에 의해 판독 가능하고 인간에 의해 직관적으로 이해가능한 구문론(syntax) 및 의미론(sematics)을 포함하는 프로그래밍 언어에 따라 코드를 기입한다. 이러한 코드를 "소스 코드(source code)"라 한다. 소스 코드는, 소스 코드에 뒤따르는 프로그래밍 언어에 대해 적절히 교육받은 프로그래머에게는 직관적이지만, 소스 코드가 컴퓨팅 시스템의 프로세서에 의해 직접 이해되는 것은 아니다. 대신에, 소스 코드는, 실행에 의해 프로세서(들)로 하여금 소스 코드에 규정된 기능을 지시하는 방식으로, 프로세서(들)에 의해 직접 실행될 수 있는 컴퓨터 실행가능 명령어들로서 변환(transform)되어야 한다.
스크립트 또는 해석가능한 바이너리(a interpretable binary) 등의 해석가능한 코드의 경우에, 이런 변환은 "인터프리터(interpreter)"라고 하는 컴포넌트를 사용하여 런-타임 시에 달성된다. 해석가능한 코드의 사용은 널리 보급되고, 대부분의 정보 기술(IT) 작업의 중요한 요소이다. 예를 들어, 특정의 수리(a certain fix)가 요구되면, 스크립트 또는 기타 해석가능한 코드를 생성하여 수리할 수 있다. 스크립트는 스크립트 언어에 친숙한 사람이면 누구든지 쉽게 생성할 수 있다. 이에 의해 많은 수의 스크립트가 배포되어 널리 이용될 수 있게 된다.
종종, 스크립트는, 스크립트가 무엇을 달성하는지에 대한 설명과 함께 발행(publish)된다. 불행하게도, 스크립트는 광고 기능 외에 및/또는 광고 기능 대신에 유해한 기능을 수행할 수 있다. 스크립트가 너무 쉽게 생성되고 널리 배포되기 때문에, 신중하게 스크립트가 스크립트의 작성자에 의해 우연히 또는 심지어 악의적으로 야기되는 유해한 영향을 주는지의 여부를 주의 깊게 고려하는 것이 필요 하다. 따라서, 스크립트를 실행하기 전에 스크립트가 무엇을 행하는가를 이해하기 위해서는 스크립트 자체를 조사하는 것이 중요하다.
하지만, 임의의 유해한 동작을 식별하기 위해 스크립트를 평가할 수 없는 사람들이 많이 존재한다. 심지어 스크립트 언어에 친숙한 사람들 조차도, 스크립트가 수천 라인 길이가 될 수 있기 때문에 스크립트를 다 읽어내어 임의의 잠재적으로 유해한 동작을 찾아내는 데에는 시간이 걸린다. 또한, 유해한 스크립트를 통하여 손해를 입히고자 하는 사람들은, 심지어 숙련된 관찰자(viewer)이더라도 유해한 코드를 찾아낼 수 없는 방식으로 유해한 코드를 보이지 않게 숨긴다(occlude). 최종적으로, 유해한 코드는 해석가능한 바이너리 내에 내장될 수 있어, 비상한 노력 없이는 인간에 의해 판독 불가능하다.
[간략한 요약]
본 발명의 실시예들은 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 컴퓨터화하여 용이하게 하는 것에 관한 것이다(a computerized facilitation of an assessment of risk associated with running interpretable code). 해석가능한 코드는 평가 하에서(under evaluation) 구문분석(parse)되어 해석가능한 코드 내의 커맨드 유닛(command unit)을 식별한다. 그 후, 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소(risk factor)가 구문분석된 코드를 사용하여 식별된다. 그런 다음, 식별된 연관된 하나 이상의 위험 요소와 함께 해석가능한 코드에서 발견된 커맨드 유닛의 식별(ID;identification)을 포함하는 보고서가 만들어진다. 따라서, 사용자가 해석가능한 코드 자체를 판독 및 평가해야할 필요가 없고, 대신에 훨씬 덜 복잡하고 더 직관적인 보고서를 검토하여 해석가능한 코드를 실행시키는 것과 연관된 위험을 평가할 수 있다.
이 요약은 이하의 상세한 설명에서 더 기술되는 몇몇 개념을 간단화된 형태로 소개하기 위해 제공된다. 이 요약은 청구 대상의 주요 특징 또는 필수적인 특징을 확인하기 위한 것이 아니며, 청구 대상의 범위를 정하는 데 보조 수단으로서 사용하기 위한 것도 아니다.
본 발명의 상기 열거된 장점 및 특징, 및 다른 장점 및 특징을 획득할 수 있는 방식을 기술하기 위하여, 간략하게 전술된 본 발명에 대한 보다 구체적인 설명이 첨부된 도면에 도시된 특정한 실시예들을 참조하여 이루어질 것이다. 이들 도면은 단지 본 발명의 통상적인 실시예들일 뿐이며, 따라서 본 발명의 범위를 제한하는 것으로 인식되지 않는다는 것을 이해해야 하며, 본 발명은 첨부된 도면을 사용하여 보충적으로 특정하여 상세하게 기술 및 설명될 것이다.
도 1은 본 발명의 특징을 구현할 수 있는 적합한 컴퓨팅 환경을 개략적으로 나타낸다.
도 2는 본 발명의 원리의 일 양상에 따른 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 용이하게 하도록 각종 컴포넌트들이 동작하는 처리 흐름을 개략적으로 나타낸다.
도 3은 본 발명의 원리의 일 양상에 따른 해석가능한 코드를 실행시키는 것 과 연관된 위험의 사정을 용이하게 하는 방법의 흐름도를 나타낸다.
본 발명의 실시예들은 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 컴퓨터화하여 용이하게 하는 것으로 확장된다. 해석가능한 코드는 평가 하에서 구문분석되어 해석가능한 코드 내의 커맨드 유닛을 식별한다. 그 후, 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소가 구문분석된 코드를 사용하여 식별된다. 그런 다음, 식별된 연관된 하나 이상의 위험 요소와 함께 해석가능한 코드에서 발견된 커맨드 유닛의 식별(ID;identification)을 포함하는 보고서가 만들어진다. 먼저, 본 발명의 특징이 동작할 수 있는 예시적 컴퓨터 시스템을 도 1과 관련하여 기술할 것이다. 그 후, 본 발명의 실시예들을 도 2 및 도 3과 관련하여 보다 상세히 기술할 것이다.
본 발명의 실시예들은, 하기의 보다 상세히 기술되어 있는 바와 같이, 다양한 컴퓨터 하드웨어를 포함하는 특수 목적의 또는 범용 컴퓨터를 포함할 수 있다. 도 1은 본 발명의 특징을 구현하는 데 사용될 수 있는 예시적 컴퓨팅 시스템(100)의 개략도를 도시한다. 기술된 컴퓨팅 시스템은 이러한 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 본 발명은 도 1에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
컴퓨팅 시스템은 오늘날 점점 더 다양한 형태를 취하고 있다. 컴퓨터 시스 템은, 예를 들어, 핸드헬드 장치, 가전제품, 랩톱 컴퓨터, 데스크톱 컴퓨터, 메인프레임, 분산 컴퓨팅 시스템 또는 심지어 종래에는 컴퓨팅 시스템으로 여겨지지 않았던 장치들일 수 있다. 이 상세한 설명 및 청구 범위에서, "컴퓨팅 시스템"이라는 용어는, 적어도 하나의 프로세서, 및 프로세서에 의해 실행될 수 있는 컴퓨터 실행가능 명령어들을 가질 수 있는 메모리를 포함하는 임의의 장치 또는 시스템(또는 이들의 조합)을 포함하는 것으로 광범위하게 정의된다. 메모리는 임의의 형태를 취할 수 있고, 컴퓨팅 시스템의 특성 및 형태에 따를 수 있다. 컴퓨팅 시스템은 네트워크 환경에 걸쳐 분산될 수 있고, 다수의 컴퓨팅 시스템을 구성요소로서 포함할 수 있다.
도 1을 참조해 보면, 그 가장 기본 구성에서, 컴퓨팅 시스템(100)은 통상적으로 적어도 하나의 처리 장치(processing unit)(102) 및 메모리(104)를 포함한다. 메모리(104)는 휘발성, 비휘발성, 또는 이 둘의 일부 조합일 수 있는 시스템 메모리일 수 있다. 휘발성 메모리의 예는 랜덤 액세스 메모리(RAM)를 포함한다. 비휘발성 메모리의 예는 판독 전용 메모리(ROM), 플래시 메모리, 또는 기타 등등을 포함한다. 또한 "메모리"라는 용어는 본원에서 물리적 저장 매체 등의 비휘발성 대용량 저장 장치를 지칭하는 데 사용될 수 있다. 이런 저장 장치는 이동식 또는 비이동식일 수 있고, PCMCIA 카드, 자기 및 광 디스크, 자기 테이프, 및 기타 등등을 포함할 수 있다(하지만 이에 제한되는 것은 아님).
본원에 사용된, "모듈" 또는 "컴포넌트"라는 용어는 컴퓨팅 시스템상에서 실행되는 소프트웨어 개체(object) 또는 루틴을 지칭할 수 있다. 본원에 기술된 여 러 가지 컴포넌트, 모듈, 엔진, 및 서비스는 컴퓨팅 시스템상에서 실행되는 개체 또는 프로세스로서(예컨대, 개별적인 쓰레드(thread)로서) 구현될 수 있다. 본원에 기술된 시스템 및 방법은 소프트웨어로 구현될 수 있지만, 하드웨어의 구현물 및 소프트웨어와 하드웨어의 조합의 구현물 또한 가능하다고 여겨진다.
이하의 설명에서, 본 발명의 실시예들은 하나 이상의 컴퓨팅 시스템에 의해 수행되는 동작에 관련하여 기술된다. 이들 동작이 소프트웨어로 구현되는 경우, 동작을 수행하는 연관된 컴퓨팅 시스템의 하나 이상의 프로세서는, 컴퓨터 실행가능 명령어들을 실행시키는 것에 응답하여 컴퓨팅 시스템의 동작을 지시한다. 이런 동작의 예는 데이터의 조작을 필요로 한다. 컴퓨터 실행가능 명령어(및 조작된 데이터)는 컴퓨팅 시스템(100)의 메모리(104)에 저장될 수 있다.
컴퓨팅 시스템(100)은, 또한 컴퓨팅 시스템(100)이 예컨대, 네트워크(110)를 통하여 다른 컴퓨팅 시스템과 통신하게 하는 통신 채널(108)을 포함할 수 있다. 통신 채널(108)은 통신 매체의 예이다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 본원에 사용된 컴퓨터 판독가능 매체는 저장 매체와 통신 매체 둘 다를 포함한다.
본 발명의 범위 내의 실시예들은 또한 컴퓨터 실행가능 명령어 또는 데이터 구조가 저장되어 있는 컴퓨터 판독가능 매체를 포함한다. 이런 컴퓨터 판독가능 매체는 범용 또는 특수 목적의 컴퓨터에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있다. 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장 장치, 자기 디스크 저장 장치 또는 기타 자기 저장 장치를 포함할 수 있거나, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장 또는 전달(carry)하거나, 범용 또는 특수 목적의 컴퓨터에 의해 액세스될 수 있는 임의의 기타 매체를 포함할 수 있지만 이에 제한되는 것은 아니다. 네트워크 또는 다른 통신 접속(하드웨어, 무선, 또는 하드웨어 또는 무선의 조합 중 어느 하나)를 통하여 정보가 컴퓨터에 전달 또는 제공될 경우, 컴퓨터는 당연히 그 접속을 컴퓨터 판독가능 매체로서 본다. 따라서, 임의의 이러한 접속을 당연히 컴퓨터 판독가능 매체라고 칭한다. 상기 것들의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
컴퓨터 실행가능 명령어는 예컨대, 범용 컴퓨터, 특수 목적의 컴퓨터, 또는 특수 목적의 처리 장치가 소정의 기능 또는 한 그룹의 기능을 수행하게 하는 명령어 및 데이터를 포함한다. 청구 대상이 구조적인 특징 및/또는 방법론적인 동작에 특정한 언어로 기술되었지만, 첨부된 청구항들에 정의된 청구 대상은 전술된 특정한 특징 또는 동작에 반드시 제한되는 것이 아님을 이해해야 한다. 오히려, 전술된 특정한 특징 및 동작은 청구항들을 구현하는 예시적 형태로서 개시되어 있다.
도 2는 해석가능한 코드(201)와 같은 해석가능한 코드를 실행시키는 것과 연 관된 위험에 대한 사정(assessment)을 용이하게 하도록 각종 컴포넌트들이 동작하는 일반적 흐름도(200)를 나타낸다. 해석가능한 코드는 하나 이상의 커맨드 유닛을 포함할 수 있다. 예를 들어, 도 2의 해석가능한 코드(201)는 2개의 커맨드 유닛(202A 및 202B)을 포함하는 것으로 도시되어 있으나, 해석가능한 코드(201)는, 생략 부호(202C)에 의해 표현된 바와 같이, 다른 개수의 커맨드 유닛을 마찬가지로 포함할 수 있다. 실제로, 해석가능한 코드는 수백 또는 심지어 수천의 커맨드를 포함할 수 있다. 하지만, 이러한 복잡한 예의 사용은 본 발명의 원리를 불필요하게 불명확하게 한다. 따라서, 도 2의 예에서, 해석가능한 코드는 단지 2개의 커맨드 유닛만을 포함하는 것으로 도시되어 있다.
해석가능한 코드는 스크립트와 같은 해석가능한 텍스트(text) 코드이거나, 또는 해석가능한 비-텍스트(non-text) 코드일 수 있다. 커맨드 유닛은 하나 이상의 연관 매개변수를 갖거나 또는 갖지 않는 단일 커맨드일 수 있다. 예를 들어, 커맨드 유닛은, 삭제할 파일의 유형(예컨대, 텍스트 파일, 컨피규레이션 파일, 실행가능 파일)을 나타내는 매개변수를 선택적으로 갖는, 파일을 삭제하라(delete a file)는 단일 커맨드를 포함할 수 있다. 다른 대안으로서, 커맨드 유닛은 커맨드의 시퀀스(a sequence of commands)일 수 있다. 예를 들어, 파일 A를 생성하라, 그런 다음 파일 A를 삭제하라(create file A, then delete file A)는 이러한 시퀀스 중 하나일 것이다. 시퀀스에서 커맨드 각각은 하나 이상의 연관된 매개변수를 포함할 수 있다.
도 3은 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 용이하게 하기 위한 컴퓨터 구현 방법(300)의 흐름도를 나타낸다. 본 방법(300)은 도 2의 일반적 처리 흐름도(200)를 사용하여 수행될 수 있기 때문에, 도 2의 남은 부분은 이제 빈번히 도 3과 관련하여 기술될 것이다.
구문분석 컴포넌트(210)는 해석가능한 코드를 수신하고, 해석가능한 코드 전체에 걸쳐 구문분석하여 해석가능한 코드 내에서 하나 이상의 커맨드 유닛을 식별한다(단계(310)). 소프트웨어로 구현되는 경우, 구문분석 컴포넌트(210)는 컴퓨터 프로그램 제품의 일부일 수 있다. 컴퓨터 프로그램 제품은, 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때 컴퓨팅 시스템으로 하여금 구문분석 컴포넌트(210)를 인스턴스화(instantiate)하여 동작시키는 컴퓨터 실행가능 명령어들을 갖는 이상의 컴퓨터 판독가능 매체를 가질 수 있다.
일 실시예에서, 구문분석 컴포넌트는 구문분석 트리(211)에서 커맨드 유닛을 식별한다. 해석가능한 코드 전체에 걸쳐 구문분석하여 구문분석 트리를 생성하기 위한 메커니즘은 본 기술분야에서 공지된 것이며, 따라서 본원에서는 상세히 설명하지 않을 것이다.
분석기(analyzer)(220)는 하나 이상의 커맨드 유닛을 식별하기 위해 구문분석 트리(211)에 액세스한다. 분석기(220)는 또한, 소프트웨어로 구현되는 경우, 구문분석 컴포넌트(210)와 동일한 컴퓨터 프로그램 제품의 일부일 수 있다. 다른 대안으로서, 구문분석 컴포넌트(210)와 분석기(220)는 서로 다른 컴퓨터 프로그램 제품에 존재할 수 있다.
해석가능한 코드(201) 내에 있는 것으로 식별된 적어도 하나의 커맨드 유닛 각각에 대하여, 분석기(220)의 위험 분석기 컴포넌트(221)는 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소를 구문분석된 코드를 사용하여 식별한다(단계(act)(320)). 이것은 커맨드 데이터에 액세스함으로써(단계(321)), 커맨드 데이터에서 커맨드 유닛과 연관된 커맨드 엔트리에 액세스함으로써(단계(322)), 커맨드 엔트리로부터 하나 이상의 위험 요소에 액세스함으로써(단계(323)), 하나 이상의 위험 요소를 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소인 것으로 식별함으로써(단계(324)) 달성될 수 있다. 위험 요소는 커맨드 유닛의 일반적 카테고리, 커맨드 유닛의 기능적 설명, 및/또는 커맨드 유닛과 연관된 위험의 레벨을 포함할 수 있다.
분석기(220)는 또한 식별된 연관된 하나 이상의 위험 요소와 함께 해석가능한 코드에서 발견된 커맨드 유닛의 식별(ID;identification)을 보고하기 위한 보고 컴포넌트(reporting component)(222)를 포함한다(단계(330)). 예를 들어, 보고 컴포넌트(222)는 각 커맨드 유닛에 대한 커맨드 유닛의 식별(ID;identification)(233)뿐만 아니라 커맨드 유닛과 연관된 위험 요소(들)(234)도 포함할 수 있는 보고서(232)를 생성할 수 있다. 또한, 보고 컴포넌트(222)는 커맨드 유닛이 나타나는 해석가능한 코드에서의 위치를 보고할 수 있다(단계(331)).
하기에는 본 발명의 원리에 따라 생성될 수 있는 보고서의 특정한 예가 있다.
Script foo.msh performs the following operations:
File Operations
Delete-File (occurs at lines: 5234, 3242)
Process Operations
Get-Process (occurs at lines: 55, 66, 88, 234)
Get-Service (occurs at lines: 934, 1235, 392)
이 예에서는 스크립트가 프로세스 및 서비스를 관리하기 위한 스크립트로서 광고되었다고 가정한다. 해당 컨텍스트(context)에서, 프로세스 동작 "Get-Process" 및 "Get-Service"는 적절하며 해롭지 않은 것으로 보일 수 있다. 하지만, 이런 보고서를 수신할 때, 사용자는 스크립트가 파일 동작 "Delete-File"을 왜 수행하는가를 알길 원할 수 있다. 따라서, 사용자는, 스크립트의 지정된 위치(예컨대, 라인 5234 및 3242)로 가서, 스크립트의 다른 컨텍스트가 파일 삭제 동작이 해로운지의 여부를 판정하는 것에 관한 생각을 제공하는지(if the other context of the script provides any light to a decision on whether the delete file operation is harmful)를 알아 볼 수 있다. 예를 들어, 동작이 시스템에서 기존의 컨피규레이션 파일을 삭제하는 것이면, 동작은 스크립트의 실행이 실제로 위험을 초래할 가능성이 높다는 것을 제시한다. 한편, 스크립트가, 자신이 이전에 생성했던 임시 파일을 단순히 삭제하는 경우, 문제가 존재할 가능성이 낮다고 보일 것이다.
이 예에서는, "Delete-File", "Get-Process", 및 "Get-Service"로 나타내어진 3개의 커맨드 유닛이 존재하며, 커맨드 유닛 각각은 하나의 커맨드만을 가지며 매개변수를 갖지 않는다. 하지만, "Delete-File" 대신에, 보고서는 "Delete-File FileType:Executable"이라고 기술(state)할 수 있다. 매개변수 "FileType: Executable"는 사용자가 스크립트가 유해한지의 여부를 판정하는 데에 관련될 수 있다. 다른 커맨드도 마찬가지로 매개변수가 보고되게 할 수 있다. 또한, 커맨드 유닛의 커맨드 시퀀스가 보고될 수 있다. 예를 들어, "Delete-File"의 발생에 대해 보고하는 대신에, 보고서는 파일이 "Create-File"에 의해 생성되었고 그 후에 파일이 "Delete-File"에 의해 삭제되는 경우에 대해 보고할 수 있어, 파일이 스크립트에 의해 생성 및 삭제되었다는 것을 나타냄으로써, 삭제 동작으로 인한 손해가 덜하다는 것을 암시한다. 상기 예에서의 위험 요소는 본질적으로 예컨대 "파일 동작(File Operations)" 및 "프로세스 동작(Process Operations)"으로의 메소드의 카테고리화(the categorization of the methods)일 수 있다.
하기는 보고서가 생성될 수 있는 다른 예이다.
Script foo.msh performs the following types of operations:
Very dangerous
Invoke-Command (occurs at lines 423, 64)
Dangerous
Delete-File (occurs at lines: 5234, 3242)
Probably Benign
Get-Process (occurs at lines: 55, 66, 88, 234)
Get-Service (occurs at lines: 934, 1235, 392)
이 경우에, 위험 요소는 커맨드와 연관된 위험의 실제 예비적인 추정을 필요로 한다. 물론, 사용자는 스크립트 내의 그 컨텍스트에서 커맨드를 검토한 후에 위험에 대한 상이한 최종 추정에 도달할 수 있다.
따라서, 본 발명의 원리는 스크립트를 실행시키는 데 있어 허용될 수 있는 위험도가 낮은 해로움(low risk of harm)인지의 여부에 대한 평가를 행하기 위해서 사용자가 스크립트 코드 자체를 검토하게 하는 것보다 직관적인 대안을 제시한다. 구체적으로, 사용자는 대신에 스크립트에 제공된 다양한 커맨드와 연관된 위험 요소의 판독가능한 표현을 제공하는 보다 직관적인 보고서를 단순히 검토할 수 있다. 또한, 보고서는, 사용자가 프로그래밍 컨텍스트의 관점에서 커맨드의 위험에 대한 보다 상세한 평가를 수행하길 원하는 경우에, 스크립트에서의 커맨드의 위치를 나타낼 수 있다.
본 발명은 본 발명의 사상 또는 본질적 특성에서 벗어남 없이 다른 특정한 형태로 구현될 수 있다. 기술된 실시예들은 모든 면에서 예시적일 뿐이며 제한하는 것으로 간주되지 않는다. 따라서, 본 발명의 범위는 전술된 설명에 의해서라기 보다는 첨부된 청구항들에 의해 나타내진다. 청구항들과 동등한 의미 및 영역 내에 속하는 모든 변경들이 청구항들의 영역 내에 포함될 것이다.

Claims (20)

  1. 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정(an assessment of risk)을 용이하게 하는 컴퓨터 구현 방법으로서,
    해석가능한 코드를 구문분석(parsing)하여 상기 해석가능한 코드 내의 커맨드 유닛(command unit)을 식별하는 단계(act);
    상기 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소를 상기 구문분석된 코드를 사용하여 식별하는 단계; 및
    상기 식별된 연관된 하나 이상의 위험 요소와 함께 상기 해석가능한 코드에서 발견된 상기 커맨드 유닛의 식별(ID;identification)을 보고하는 단계
    를 포함하는 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 용이하게 하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 해석가능한 코드는 해석가능한 텍스트(text) 코드인 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 해석가능한 코드는 해석가능한 비-텍스트(non-text) 코드인 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 커맨드 유닛은 단일 커맨드를 포함하는 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 커맨드 유닛은 하나 이상의 연관된 매개변수를 갖는 커맨드를 포함하는 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 커맨드 유닛은 복수의 커맨드를 포함하는 컴퓨터 구현 방법.
  7. 제6항에 있어서,
    상기 복수의 커맨드 중 적어도 하나의 커맨드는 하나 이상의 연관된 매개변수를 갖는 컴퓨터 구현 방법.
  8. 제1항에 있어서,
    상기 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소를 식별하는 단계는,
    커맨드 데이터에 액세스하는 단계;
    상기 커맨드 데이터에서 상기 커맨드 유닛과 연관된 커맨드 엔트리(command entry)에 액세스하는 단계;
    상기 커맨드 엔트리로부터 하나 이상의 위험 요소에 액세스하는 단계; 및
    상기 하나 이상의 위험 요소를 상기 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소인 것으로 식별하는 단계
    를 포함하는 컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 보고 단계는 상기 커맨드 유닛이 나타나는 상기 해석가능한 코드에서의 위치를 보고하는 단계를 더 포함하는 컴퓨터 구현 방법.
  10. 제1항에 있어서,
    상기 하나 이상의 위험 요소는 상기 커맨드 유닛과 연관된 위험의 레벨을 포함하는 컴퓨터 구현 방법.
  11. 제1항에 있어서,
    상기 커맨드 유닛은 제1 커맨드 유닛이고, 상기 해석가능한 코드를 구문분석하는 단계는 해석가능한 코드를 구문분석하여 상기 해석가능한 코드 내에서 제2 커맨드 유닛을 식별하는 단계를 더 포함하고,
    상기 식별된 제2 커맨드 유닛과 연관된 하나 이상의 위험 요소를 상기 구문분석된 코드를 사용하여 식별하는 단계; 및
    상기 제2 커맨드 유닛과 연관된 상기 식별된 하나 이상의 위험 요소와 함께 발견된 상기 제2 커맨드 유닛의 식별(ID;identification)을 보고하는 단계
    를 포함하는 컴퓨터 구현 방법.
  12. 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템으로 하여금 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 용이하게 하는 방법을 수행하도록 하는 컴퓨터 실행가능 명령어들을 갖는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 실행가능 명령어들은,
    해석가능한 코드를 해석하여 상기 해석가능한 코드 내의 커맨드 유닛을 식별하는 구문분석 컴포넌트;
    상기 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소를 상기 구문분석된 코드를 사용하여 식별하는 위험 분석기 컴포넌트; 및
    상기 식별된 연관된 하나 이상의 위험 요소와 함께 상기 해석가능한 코드에서 발견된 상기 커맨드 유닛의 식별(ID;identification)을 보고하는 보고 컴포넌트
    를 포함하는 컴퓨터 프로그램 제품.
  13. 제12항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 각각 물리적 저장 장치 및/또는 메모리 매체인 컴퓨터 프로그램 제품.
  14. 제12항에 있어서,
    상기 해석가능한 코드는 해석가능한 텍스트 코드인 컴퓨터 프로그램 제품.
  15. 제12항에 있어서,
    상기 해석가능한 코드는 해석가능한 비-텍스트 코드인 컴퓨터 프로그램 제품.
  16. 제12항에 있어서,
    상기 커맨드 유닛은 하나 이상의 연관된 매개변수들을 갖거나, 또는 갖지 않는 단일 커맨드를 포함하는 컴퓨터 프로그램 제품.
  17. 제12항에 있어서,
    상기 커맨드 유닛은 하나 이상의 연관된 매개변수들을 갖는 커맨드를 포함하는 컴퓨터 프로그램 제품.
  18. 제12항에 있어서,
    상기 커맨드 유닛은 복수의 커맨드를 포함하는 컴퓨터 프로그램 제품.
  19. 하나 이상의 프로세서; 및
    컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스 템으로 하여금 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을 용이하게 하는 방법을 수행하도록 하는 컴퓨터 실행가능 명령어들을 갖는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품을 포함하는 컴퓨팅 시스템으로서,
    상기 컴퓨터 실행가능 명령어들은,
    해석가능한 코드를 해석하여 상기 해석가능한 코드 내의 커맨드 유닛을 식별하는 구문분석 컴포넌트;
    상기 식별된 커맨드 유닛과 연관된 하나 이상의 위험 요소를 상기 구문분석된 코드를 사용하여 식별하는 위험 분석기 컴포넌트; 및
    상기 식별된 연관된 하나 이상의 위험 요소와 함께 상기 해석가능한 코드 내에서 발견된 상기 커맨드 유닛의 식별(ID;identification)을 보고하는 보고 컴포넌트를 포함하는 컴퓨팅 시스템.
  20. 제19항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 각각 물리적 저장 장치 및/또는 메모리 매체인 컴퓨팅 시스템.
KR1020087018287A 2006-01-25 2006-12-28 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을용이하게 하는 컴퓨터 구현 방법, 컴퓨터 프로그램 제품,및 컴퓨팅 시스템 KR20080096518A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/339,397 2006-01-25
US11/339,397 US7802089B2 (en) 2006-01-25 2006-01-25 Analyzing interpretable code for harm potential

Publications (1)

Publication Number Publication Date
KR20080096518A true KR20080096518A (ko) 2008-10-30

Family

ID=38309542

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087018287A KR20080096518A (ko) 2006-01-25 2006-12-28 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을용이하게 하는 컴퓨터 구현 방법, 컴퓨터 프로그램 제품,및 컴퓨팅 시스템

Country Status (5)

Country Link
US (1) US7802089B2 (ko)
EP (1) EP1977342A4 (ko)
KR (1) KR20080096518A (ko)
CN (1) CN101336432A (ko)
WO (1) WO2007087073A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101479516B1 (ko) * 2014-03-05 2015-01-07 소프트포럼 주식회사 소스코드 보안 약점 탐지 장치 및 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291377B2 (en) * 2006-01-25 2012-10-16 Microsoft Corporation External configuration of processing content for script
US8402547B2 (en) * 2010-03-14 2013-03-19 Virtual Forge GmbH Apparatus and method for detecting, prioritizing and fixing security defects and compliance violations in SAP® ABAP™ code
US10025688B2 (en) 2010-03-14 2018-07-17 Virtual Forge GmbH System and method for detecting data extrusion in software applications
US9507940B2 (en) 2010-08-10 2016-11-29 Salesforce.Com, Inc. Adapting a security tool for performing security analysis on a software application
US8701198B2 (en) * 2010-08-10 2014-04-15 Salesforce.Com, Inc. Performing security analysis on a software application
US8904541B2 (en) * 2010-08-26 2014-12-02 Salesforce.Com, Inc. Performing security assessments in an online services system
DE102012008988A1 (de) * 2012-05-04 2013-11-07 Giesecke & Devrient Gmbh Portabler Datenträger

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5983348A (en) * 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
US7636945B2 (en) 2000-07-14 2009-12-22 Computer Associates Think, Inc. Detection of polymorphic script language viruses by data driven lexical analysis
US7069589B2 (en) 2000-07-14 2006-06-27 Computer Associates Think, Inc.. Detection of a class of viral code
US7234164B2 (en) 2001-11-30 2007-06-19 Computer Associates Think, Inc. Method and system for blocking execution of malicious code
US7437760B2 (en) * 2002-10-10 2008-10-14 International Business Machines Corporation Antiviral network system
TW200416542A (en) 2003-02-26 2004-09-01 Osaka Ind Promotion Org Determination method of improper processing, data processing device, computer program and recording media (II)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101479516B1 (ko) * 2014-03-05 2015-01-07 소프트포럼 주식회사 소스코드 보안 약점 탐지 장치 및 방법

Also Published As

Publication number Publication date
CN101336432A (zh) 2008-12-31
EP1977342A1 (en) 2008-10-08
EP1977342A4 (en) 2009-05-27
US20070180531A1 (en) 2007-08-02
US7802089B2 (en) 2010-09-21
WO2007087073A1 (en) 2007-08-02

Similar Documents

Publication Publication Date Title
US7860842B2 (en) Mechanism to detect and analyze SQL injection threats
US8776239B2 (en) In-development vulnerability response management
KR20080096518A (ko) 해석가능한 코드를 실행시키는 것과 연관된 위험의 사정을용이하게 하는 컴퓨터 구현 방법, 컴퓨터 프로그램 제품,및 컴퓨팅 시스템
US9069574B2 (en) Code analysis for simulation efficiency improvement
Alhuzali et al. Chainsaw: Chained automated workflow-based exploit generation
US9690946B2 (en) Security analysis using relational abstraction of data structures
US20150278511A1 (en) Monitoring an application in a process virtual machine
US9355002B2 (en) Capturing trace information using annotated trace output
CN103559447B (zh) 一种基于病毒样本特征的检测方法、检测装置及检测系统
US10084819B1 (en) System for detecting source code security flaws through analysis of code history
US9471790B2 (en) Remediation of security vulnerabilities in computer software
CN110069929B (zh) 漏洞处置分析方法及其分析模型的构建方法和装置
US11868465B2 (en) Binary image stack cookie protection
US10275596B1 (en) Activating malicious actions within electronic documents
KR101461051B1 (ko) 웹 기능 분석을 통한 악성 코드 탐지방법 및 그 기록매체
EP3807799A1 (en) Binary risk evaluation
US10146529B2 (en) Monitoring rules declaration and automatic configuration of the monitoring rules
US9473523B1 (en) Execution of test inputs with applications in computer security assessment
Lathar et al. Stacy-static code analysis for enhanced vulnerability detection
Zhao Toward the flow-centric detection of browser fingerprinting
US20190129828A1 (en) Gathering coverage metrics for static program analysis tools
CN112182558A (zh) 一种进程保护方法、标记方法、装置及设备
CN115391781A (zh) 恶意攻击识别方法、系统、设备及存储介质
CN114721787A (zh) 操作事件处理方法、装置、电子设备以及存储介质

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid