KR20080104155A - 문서들에 임베디드된 스크립트의 거동을 제한하는 프로그램인스트루멘테이션 방법 및 장치 - Google Patents

문서들에 임베디드된 스크립트의 거동을 제한하는 프로그램인스트루멘테이션 방법 및 장치 Download PDF

Info

Publication number
KR20080104155A
KR20080104155A KR1020087023285A KR20087023285A KR20080104155A KR 20080104155 A KR20080104155 A KR 20080104155A KR 1020087023285 A KR1020087023285 A KR 1020087023285A KR 20087023285 A KR20087023285 A KR 20087023285A KR 20080104155 A KR20080104155 A KR 20080104155A
Authority
KR
South Korea
Prior art keywords
script
policy
document
script program
code
Prior art date
Application number
KR1020087023285A
Other languages
English (en)
Other versions
KR101019938B1 (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 KR20080104155A publication Critical patent/KR20080104155A/ko
Application granted granted Critical
Publication of KR101019938B1 publication Critical patent/KR101019938B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1483Countermeasures against malicious traffic service impersonation, e.g. phishing, pharming or web spoofing

Abstract

프로그램 인스트루멘테이션을 이용하여 문서에 임베디드된 스크립트의 거동을 제한하는 방법 및 장치가 본 명세서에서 개시된다. 일 실시형태에서, 방법은 스크립트 프로그램이 임베디드된 문서를 다운로딩하는 단계, 스크립트 프로그램을 검사하는 단계; 및 스크립트 프로그램의 실행으로부터 유발된 거동이 안전 및 보안을 규정하는 하나 이상의 정책들에 일치하도록 스크립트 프로그램을 재기록하는 단계를 포함한다. 스크립트 프로그램은 자기 수정 코드 (예를 들어, 동적으로 생성된 스크립트) 를 포함한다.
자바 스크립트, 브라우저, 코드, 프로그램

Description

문서들에 임베디드된 스크립트의 거동을 제한하는 프로그램 인스트루멘테이션 방법 및 장치{PROGRAM INSTRUMENTATION METHOD AND APPARATUS FOR CONSTRAINING THE BEHAVIOR OF EMBEDDED SCRIPT IN DOCUMENTS}
우선권
본 발명은 2006 년 6 월 26 일에 출원되고 발명의 명칭이 "HTML 문서들에 임베디드된 스크립트의 거동을 제한하는 프로그램 인스트루멘테이션 방법 및 장치 (Program Instrumentation Method and Apparatus for Constraining the Behavior of Embedded Script in HTML Documents)" 인 대응하는 미국 가 특허 출원 번호 60/816,679 에 대해 우선권을 주장하며 참조로서 포함한다.
발명의 분야
본 발명은 컴퓨터 프로그래밍의 분야에 관한 것이고, 더욱 상세하게는 문서 (예를 들어, HTML 문서) 에 임베디드된 스크립트의 거동을 제어 (예를 들어, 제한) 하는 것에 관한 것이다.
발명의 배경
자바 스크립트는 웹 페이지를 구축하는데 있어서 대중적 수단이 되었다. 자바 스크립트 프로그램들은 필수적으로 HTML 문서들에 임베디드된 이동 코드의 형태이고 클라이언트 머신들에서 실행된다. 문서 객체 모델 (DOM) 및 다른 브라우저 특징의 도움으로, 자바 스크립트 프로그램들은 클라이언트 시스템으로의 제한 된 액세스를 획득하고 웹 페이지의 기능 및 외관을 개선할 수 있다.
다른 형태의 이동 코드의 경우와 같이, 자바 스크립트 프로그램들은 악의로 이용하려는 무리들에 대해 잠재적 보안 취약점 및 허점을 보인다. 간단한 예로서, 자바 스크립트는 종종 클라이언트에게 새로운 윈도우를 공개하기 위해 이용된다. 이러한 특징은, 평범한 HTML 만에 의해 제공된 제어보다 더한 제어의 정도를 제공하여 새로운 윈도우가 맞춰진 사이즈, 위치, 및 콤포넌트 (예를 들어, 메뉴, 툴바, 상태바) 를 갖도록 허용한다. 불행하게도, 이러한 특징들은 심각하게 이용되어 바람직하지 않은 컨텐츠의 성가신 팝업을 생성하며, 이들 중 일부는 웹 사용자의 관점에서 "제어" 하기 어렵다 (예를 들어, 스크린 경계 밖의 제어 버튼들, 닫는 즉시 다시 나타남). 더욱 심각하게는, 이러한 특징은 또한 피싱 공격 (phishing attack) 을 착수하는데 이용되어, 웹 페이지의 오리진에 대한 키 정보가 사용자로부터 숨겨지고 (예를 들어, 숨겨진 위치 바), 잘못된 정보가 수집되어 사용자가 악성 컨텐츠를 믿도록 속인다 (예를 들어, 속이는 위치 바).
또 다른 예로서, 자바 스크립트는 종종 "쿠키" 로서 클라이언트 머신에서 유용한 정보 (예를 들어, 웹 서비스에 대한 패스워드) 를 저장하고 회수하는데 이용된다. 이러한 정보는 때때로 민감하고, 따라서, 브라우저는 웹 페이지들의 오리진에 기초하여 쿠키로의 액세스를 제한한다. 예를 들어, attacker.com 으로부터의 자바 스크립트는 mybank.com 에 의해 세팅된 쿠키를 판독할 수 없을 것이다. 불행하게도, 다수의 웹 애플리케이션은 XSS 취약점을 노출하여, 스크립트의 악성 조각은 취약한 애플리케이션에 의해 제공된 웹 페이지로 주입될 수 있다. 브라우저는 주입된 스크립트가 마치 동일한 애플리케이션에 의해 의도된 것처럼 해석한다. 결과적으로, 브라우저의 오리진-기반 보호가 방해되어, 악성 스크립트는 취약한 애플리케이션에 의해 세팅된 쿠키로의 액세스를 획득할 수도 있다.
그 결과, 일반적으로, 자바 스크립트는 광범위한 공격을 취하도록 이용되었다. 사용자는 웹 페이지를 로딩하는 것이 신뢰할 수 없는 코드의 실행을 수반한다는 것을 인식하지 못할 수도 있기 때문에, 상황은 애플리케이션 다운로딩과 같은 다른 형태의 이동 코드보다 잠재적으로 더 나쁘다.
자바 스크립트, DOM, 및 웹 브라우저는 몇몇 기본적인 보안 보호를 제공한다. 통상적으로 사용되는 것 중에는, 샌드박싱 (sandboxing), 동일한-오리진 정책 (same-origin policy), 및 서명된 스크립팅 (signed scripting) 이 존재한다. 이들은 제한된 (대 단위 (coarse-grainde)) 보호만을 제공한다. 이들 보호들이 완전히 구현되는 경우에도, 공격의 기회가 다수 존재한다. 이들에 의해 방지되지 못하는 대표적 예시적인 공격들은 XSS, 피싱, 및 자원 소모를 포함한다.
팝업 블로커 (pop-up blocker) 및 스푸프가드 (SpoofGuard) 와 같은, 개발된 몇몇 별개의 보안 브라우저 툴들이 존재한다. 이들 별개의 솔루션들은 공격들의 특정 카테고리에 대한 보호만을 제공한다. 실제적으로, 다수의 솔루션들을 모두 함께 개발하는 것은 때때로 어렵다. 또한, 존재하는 툴들의 보호의 범위 밖의 다수의 공격들이 존재한다. 그러나, 이들 툴들에서 이용된 아이디어들 및 발전적 학습들이 인스트루멘테이션을 위한 유용한 보안 정책들을 구성하는데 도움이 될 수 있다.
자바 스크립트에 기록된 악성 이동 코드를 포함하는, 악성 이동 코드에 대한 클라이언트측 보호의 문맥에서의 몇몇 방식들이 제안되었다. 이것들은 다운로딩된 코드 (예를 들어, 적대적으로 다운로딩가능한 것들, 신뢰할만한 URL 및 신뢰할 수 없는 URL, 및 수상한 코드 패턴에 기초함) 의 보안 프로파일에 대한 몇몇 체크를 수행하고, 체크가 실패하면 코드의 실행을 방지함으로써 대단위 보호만을 제공한다. 몇몇은 규칙 세트에 기초하여 잠재적인 이용에 대한 코드의 컨텐츠를 스캔한다. 이들 우선적인 보호 방법들 중 어느것도 코드를 재기록하지 않는다. 본 발명의 실시형태에 의해 제공된 보호는, 이 방법은 정책을 고려하도록 그 거동에 대한 코드를 검사하고 코드를 재기록하기 때문에 더욱 소단위 (fine-grained) 이다.
전술한 메카니즘 모두는 클라이언트측에서 이용된다. 또한 서버측 보안이 특히 명령 주입 공격들의 문맥에서 논의되었다. 그들은 능숙한 프로그래머들이 특정 취약점이 없는 웹 애플리케이션을 구축하도록 돕지만, 브라우저 기반 공격들을 통한 클라이언트를 해하는 것으로부터 악성 코드를 방지할 수 없다.
자바 스크립트를 공인하는 기존의 학술적 작업은, 악성 사용을 방지하는 것에 대조적으로, 프로그래머들이 양호한 코드를 기록하도록 돕는 것에 집중한다. 기술적인 면에서, 프로그래머들은 HTML 문서들에 임베디드된 개별적인 프래그먼트들 보다는, 종래 프로그램 실행 모델을 이용하여 자바 스크립트 프로그램들을 다룬다. 프로그래머들은, 정적으로 직접 이용가능하지 않는 이용가능한 자바 스크립트 코드보다는, 자바 스크립트 프로그램 실행 동안 동적으로 생성된 자바 스크립 트 코드의 형태인 고 차원 스크립트 (higher-order script) 로 어드레싱되지 않는다.
프로그램 인스트루멘테이션이 공지되었다. 그러나, 이들 이전의 기술들은 메모리 안전, 디버깅 및 테스팅, 및 데이터 수집을 포함하는 특정 문제를 해결한다. 이전의 기술들은 브라우저 안전 및 보안 문제를 해결하지 못한다. 또한, 이전의 기술들은 HTML 문서들에 임베디드된 자바 스크립트의 거동을 정규화하는데 충분하지 않다.
발명의 요약
프로그램 인스트루멘테이션을 이용하여 문서에 임베디드된 스크립트의 거동을 제한하는 방법 및 장치가 본 명세서에서 개시된다. 일 실시형태에서, 이 방법은 스크립트 프로그램이 임베디드된 문서를 다운로딩하는 단계, 스크립트 프로그램을 검사하는 단계, 및 스크립트 프로그램을 재기록하여, 스크립트의 실행으로부터 유발된 거동을 안전 및 보안을 규정하는 하나 이상의 정책에 합치하는 단계를 포함한다. 스크립트 프로그램은 자기 수정 (self-modifying) 코드 (예를 들어, 동적으로 생성된 스크립트) 를 포함한다.
본 발명은 이하 주어진 상세한 설명 및 본 발명의 다양한 실시형태의 첨부된 도면으로부터 더욱 완전히 이해될 것이지만, 특정 실시형태에 본 발명이 제한되는 것이 아닌, 설명 및 이해를 위해서만 취급되어야 한다.
도면의 간단한 설명
도 1 은 HTML 문서에 임베디드된 스크립트의 일 예를 도시한다.
도 2 는 고 차원의 스크립트의 실행의 일 예를 도시한다.
도 3 은 문서에 임베디드된 스크립트 프로그램을 인스트루멘테이션하는 프로세스의 일 실시형태의 흐름도이다.
도 3b 는 고 차원의 스크립트의 인스트루멘테이션을 수행하는 프로세스의 일 실시형태를 도시한다.
도 4 는 코어 스크립트 구문의 일 실시형태를 도시한다.
도 5 는 코어 스크립트의 일 실시형태의 동작 평가 및 표현식 (expression) 을 도시한다.
도 6 은 코어 스크립트의 일 실시형태에서의 월드 실행 (world execution) 을 도시한다.
도 7 은 코어 스크립트의 일 실시형태에서의 코어 스크립트 의미론들의 도움 함수들 (helper functions) 이다.
도 8 은 코어 스크립트의 일 실시형태로 이용을 위한 동작 편집 및 정책 만족을 도시한다.
도 9 는 편집 오토마톤들 (automata) 의 일 실시형태를 도시한다.
도 10 은 팝업 정책에 대한 오토마톤의 일 예를 도시한다.
도 11 은 쿠키 정책에 대한 오토마톤의 일 예를 도시한다.
도 12 는 구문 제어형 (syntax-directed) 재기록의 일 실시형태를 도시한다.
도 13 은 정책 모듈로 확장된 코어 스크립트의 일 실시형태에서의 월드 실행을 도시한다.
도 14 는 예시적인 구현 구조를 도시한다. 그리고
도 15 는 컴퓨터 시스템의 일 예의 블록도이다.
발명의 상세한 설명
문서에 임베디드된 스크립트의 거동을 제한하는 프로그램 인스트루멘테이션을 이용하는 방법 및 장치가 개시된다. 일 실시형태에서, 문서는 HTML 문서를 포함한다. 본 발명은 자바 스크립트의 특정 실행 모델의 취급, 임베디드된 스크립트의 자기 수정 능력, 및 일부 실제적인 정책 이슈를 포함하지만 이에 한정되지 않는 몇몇 양태들에서 현존하는 프로그램 인스트루멘테이션과 상이하다.
일 실시형태에서, 프로그램 인스트루멘테이션을 이용한 대화 경고 및 삽입된 보안 체크들은 잠재적으로 악성인 거동을 식별하여 사용자에게 공개하도록 이용된다. 자바 스크립트 프로그램들은 통상적으로 대단히 작은 사이즈이고, 성능이 대부분의 웹 페이지들의 주요한 고려사항이 아니기 때문에, 여분의 연산 오버헤드가 일반적으로 허용될 수 있다.
다음의 설명에서, 본 발명의 더욱 완전한 설명을 제공하기 위해 다수의 세부사항들이 주어진다. 그러나, 당업자에게는 본 발명이 이들 특정 세부사항들 없이 수행될 수도 있음이 명백할 것이다. 다른 예들에서, 본 발명을 모호하게 하는 것을 방지하기 위해, 공지의 구조 및 디바이스가 자세하지 않은 블록도 형태로 도시된다.
다음의 상세한 설명의 일부 부분은 컴퓨터 메모리 내의 데이터 비트들 상의 동작의 기호적 표현들 및 알고리즘들의 관점에서 제공된다. 이들 알고리즘적 설명들 및 표현들은 다른 당업자에게 작업의 내용을 가장 효과적으로 전달하기 위해 데이터 프로세싱 분야의 당업자에 의해 이용되는 수단들이다. 알고리즘은 여기서 일반적으로, 소망하는 결과를 유도하는 자체 모순없는 (self-consistent) 일련의 단계들로 이해된다. 단계들은 물리량들의 물리적 취급을 요구하는 것들이다. 필수적이지는 않지만, 일반적으로, 이들 양들은 저장, 전송, 결합, 비교, 및 달리 취급될 수 있는 전기적 또는 자기적 신호들의 형태를 취한다. 이론적으로 통상적인 사용의 이유로 인해, 이들 신호들은 비트, 값, 엘리먼트, 기호, 문자, 용어, 숫자 등을 지칭하는 것이 때때로 편리하다는 것이 증명되었다.
그러나, 이들 및 유사한 용어들은 적절한 물리량들과 관련되고, 이들 양들에 적용되는 편리한 라벨뿐이라는 것을 명심해야 한다. 다음의 설명으로부터 달리 특별히 명백히 언급되지 않는다면, 상세한 설명 전반에서, "프로세싱" 또는 "연산" 또는 "계산" 또는 "결정" 또는 "디스플레이" 등은, 컴퓨터 시스템, 또는 컴퓨터 시스템의 레지스터 내의 물리 (전기적) 량들로서 표현된 데이터를, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장, 송신 또는 디스플레이 디바이스 내의 물리량들로서 유사하게 표현된 다른 데이터로 변환하고 취급하는 유사한 전기적 연산 디바이스의 동작 및 프로세스를 지칭한다.
또한, 본 발명은 본 명세서의 동작들을 수행하는 장치에 관한 것이다. 이 장치는 요구된 목적을 위해 특별히 구성되고, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수도 있다. 이러한 컴퓨터 프로그램은, 플로피 디스크, 광 디스크, CD-ROM, 및 자기적 광 디스크, 판독 전용 메모리 (ROM), 랜덤 액세스 메모리 (RAM), EPROM, EEPROM, 자기적 또는 광 카드, 또는 전기적 명령들을 저장하고 컴퓨터 시스템 버스에 각각 커플링된 적합한 임의의 유형의 매체를 포함하는 임의의 유형의 디스크와 같지만, 이에 한정되지 않는 컴퓨터 판독가능 저장 매체에 저장될 수도 있다.
본 명세서에서 표현된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관한 것이 아니다. 다양한 범용 시스템들이 본 명세서의 교시들과 일치하는 프로그램들와 함께 이용되고, 또는 요구된 방법 단계를을 수행하는 더 많은 특별화된 장치들을 구축하는 것이 편리한 것으로 증명될 수도 있다. 이들 시스템들의 다양함에 대한 요구된 구조가 이하의 설명으로부터 나타날 것이다. 또한, 본 발명은 임의의 특정 프로그래밍 언어에 참조로서 설명되지 않는다. 프로그래밍 언어의 다양함은 본 명세서에서 개시된 바와 같이 본 발명의 교시들을 구현하도록 이용될 수도 있다.
머신-판독가능 매체는 정보를 머신 (예를 들어, 컴퓨터) 에 의해 판독가능한 형태로 저장 또는 송신하는 임의의 메카니즘를 포함한다. 예를 들어, 머신-판독가능 매체는 판독 전용 메모리 ("ROM"); 랜덤 액세스 메모리 ("RAM"); 자기적 디스크 저장 매체; 광 저장 매체; 플래시 메모리 디바이스; 전기적, 광, 음향, 또는 다른 형태의 전파 신호들 (예를 들어, 캐리어 파, 적외선 신호, 디지털 신호 등) 등을 포함한다.
자바 스크립트 실행 모델의 개관
자바 스크립트의 실행 모델은 다른 프로그래밍 언어들과는 매우 상이하다. 통상적인 프로그래밍 언어는 입력을 받아들여 출력을 생성하며, 이 실행 동안 몇몇 부수적 효과가 발생할 수 있다. 자바 스크립트의 경우에, 이 프로그램 자체는 연산되는 "출력" 내부에 임베디드된다. 도 1 은 HTML 문서들에 임베디드된 스크립트의 조각의 일 예를 도시한다. 이 스크립트는 함수 parseName (정의 미도시) 를 사용하여 쿠키 (document.cookie) 로부터 사용자 이름을 획득하고, 그 후, DOM API document.write 를 호출하여 몇몇 텍스트와 함께 스크립트 노드를 업데이트한다.
본 명세서에서 개시된 기술들은 이 실행 모델을 반영한다. 일 실시형태에서, 스크립트는 HTML 문서에 대응하는 몇몇 트리 구조 문서들에 수록되는 것으로 취급된다. 동작적인 의미에서, 스크립트 조각들이 해석되어, 생성된 문서 조각들로 대체된다. 문서 전체에서 어떠한 스크립트도 제공되지 않는 경우, 해석은 중단된다. 필수적으로, 이 실행 모델은 자기 수정 코드의 특정 실시형태이다.
프로그램 인스트루멘테이션의 개관
도 3a 는 문서에 임베디드된 스크립트 프로그램들을 인스트루멘테이션하는 프로세스의 일 실시형태의 흐름도이다. 프로세스는 하드웨어 (예를 들어, 회로, 전용 로직), (범용 컴퓨터 시스템 또는 전용 머신 상에서 동작하는 바와 같은) 소프트웨어, 또는 이 둘의 조합을 포함할 수도 있는 로직을 프로세싱함으로써 수행된다.
도 3a 를 참조하면, 스크립트 프로그램이 임베디드된 문서를 다운로딩하는 프로세싱 로직에 의해 시작한다 (프로세싱 블록 301). 일 실시형태에서, 문서를 다운로딩하는 것은 클라이언트의 브라우저에 의해 수행된다. 일 실시형태에서, 문서는 HTML 문서이다. 일 실시형태에서, 스크립트 프로그램은 자바 스크립트이다. 또 다른 실시형태에서, 스크립트 프로그램은 ECMA 스크립트 기반 프로그램이다. 일 실시형태에서, 스크립트 프로그램은 자기 수정 코드를 포함한다. 자기 수정 스크립트 코드는 동적으로 생성된 자바 스크립트를 포함할 수도 있다.
문서를 다운로딩한 후, 프로세싱 로직은 문서에서 스크립트 프로그램을 검사한다 (프로세싱 블록 302).
검사의 결과에 기초하여, 프로세싱 로직은, 스크립트 프로그램을 재기록하여, 스크립트의 실행으로부터 유발된 거동을, 안전 및 보안을 규정하는 하나 이상의 정책에 합치시킨다 (프로세싱 블록 303). 일 실시형태에서, 스크립트 프로그램을 재기록하는 것은 요구시 구문 중심 재기록을 수행하는 것을 포함한다.
일 실시형태에서, 스크립트 프로그램을 재기록하는 것은 런타임 (run-time) 체크를 스크립트 프로그램에 삽입하는 것을 포함한다. 일 실시형태에서, 런타임 체크는 보안 체크를 포함한다. 일 실시형태에서, 런타임 체크는 사용자 경고를 포함한다. 일 실시형태에서, 런타임 체크는, 런타임에서 실행시, 인스트루멘테이션 프로세스에 대한 호출로 하여금 문서의 평가 동작을 수행하는 것에 응답하여, 스크립트 프로그램을 인스트루멘테이션하게 하는 코드를 포함한다.
일 실시형태에서, 스크립트 프로그램을 재기록하는 것은 런타임 실행 동안 정책 모듈을 통해 동작을 리다이렉트하도록 코드를 부가하는 것을 포함한다. 일 실시형태에서, 프로세스는 런타임에서 동작에 대해 대체 동작을 수행하는 정책 모듈을 옵션적으로 포함하고, 코드는 정책 모듈을 통해 동작을 리다이렉트하도록 부가되었다.
일 실시형태에서, 스크립트 프로그램을 재기록하는 것은 문서를 추상 구문 트리 (abstract syntax tree) 들로 분석하는 것, 추상 구문 트리들상에서 재기록을 수행하는 것, 및 추상 구문 트리들로부터 인스트루멘테이션된 문서 및 인스트루멘테이션된 스크립트 코드를 생성하는 것을 포함한다.
일 실시형태에서, 하나 이상의 정책들이 동적으로 수정될 수 있다. 일 실시형태에서, 하나 이상의 정책들은 편집 오토마톤들로서 표현된다. 일 실시형태에서, 적어도 하나의 정책은 스크립트 프로그램의 제 1 동작 시퀀스를, 제 1 동작 시퀀스와는 다른 제 2 동작 시퀀스로 전달한다. 일 실시형태에서, 정책들은 다수의 정책들을 하나의 정책으로 결합시키는 정책을 포함한다.
일 실시형태에서, 프로세스는 현재 상태 및 완전한 천이 함수를 포함하는 정책의 편집 오토마톤에 관한 상태들을 보유하는 단계, 및 동작상에서 체크 함수를 호출하고, 이에 응답하여 오토마톤의 상태를 진행하여 동작에 대한 대체 동작을 제공하는 단계를 더 포함한다.
고 차원 스크립트
"런타임" 에서 자바 스크립트에 의해 생성된 문서 조각들에서, 문서에 임베디드된 자바 스크립트 코드가 더 존재할 수 있다. 이것은 본 명세서에서 고 차 원 스크립트 (다른 스크립트를 생성하는 스크립트에서와 같음) 로 지칭되는 자기 수정 코드의 형태를 발생한다. 예를 들어, 상위 DOM API document.write 는 평범한 텍스트 아규먼트 (argument) 들 뿐만 아니라, 스크립트 노드들을 포함할 수 있는 임의의 HTML 문서 아규먼트들을 허용한다. 이들 "런타임"-생성된 스크립트 노드들은, 해석시, 차례로 더 많은 "런타임" 생성된 스크립트 노드들을 생성할 수도 있다. 사실상, 스크립트 생성의 무한적인 반복이 프로그램될 수 있다.
고 차원 스크립트를 갖는 HTML 문서의 거동은 때때로 이해하기 힘들다. 예를 들어, 도 2 의 코드 프레그멘트의 2 개의 조각들은 유사해 보이지만, 상이한 결과들을 생성한다. 이 예에서, 정수들로부터 문자열들까지 암시적 변환이 존재하고, + 는 문자열 연결이고, 임베디드된 스크립트의 닫음 태그 </script> 는 의도적으로 분리되어, 분석자가 외부 스크립트 프레그멘트를 닫는 것으로 오해하지 않을 것이다. 고 차원 스크립트의 평가 및 실행 순서는 언어 규격에서 명백히 특정되지 않는다. 따라서, 본 명세서에서 개시된 연산 의미론들에서 제공되는 바와 같은 엄격한 계정을 갖는 것이 유용하다.
더욱 중요하게, 인스트루멘테이션 프로세스가 코드의 실행 이전에 모든 관련 동작들 - 일부 동작들은, 연산 결과들, 사용자 입력, 및 URL 로부터 로딩된 문서들을 포함하는, "런타임" 때까지 나타나지 않는 문자열 아규먼트들에 수록될 수도 있음 - 을 효과적으로 식별할 수 없기 때문에, 고 차원 스크립트는 현존하는 프로그램 인스트루멘테이션을 포괄하도록 이용될 수 있다. 또한, 예를 들어, 일부 태그 기호들의 특별 인코딩에 의한, 분석 및 필터링에 대해 이러한 임베디드된 스크 립트를 모호하게 하는 다수의 방법들이 존재한다.
일 실시형태에서, 재기록된 스크립트 프로그램은 문서의 인스트루멘테이션된 버전의 일부이고, 문서의 인스트루멘테이션된 버전은 숨겨진 스크립트를 포함하고, 숨겨진 스크립트는 숨겨진 스크립트가 런타임 동안 생성되는 경우 재기록된다. 일 실시형태에서, 고 차원 스크립트의 인스트루멘테이션은 도 3b 에 도시된 바와 같이, 간접적인 여분의 레벨을 통해 취급된다. 인스트루멘테이션 동안, load(url) 과 같은 명백한 보안 이벤트들은 (safe-load(url) 에 의해 추상화된) 관련 보안 체크들 및 사용자 경고들을 수행하는 코드로 직접 재기록된다. 그러나, 더 많은 이벤트들이 생성된 스크립트 doc 에 숨겨질 수도 있다. doc 의 내용의 정적으로 어려운 검사없이, doc 는 몇몇 특정 코드 instr 에 그대로 피드된다. 특정 코드는, "런타임" 에서 실행시, 인스트루멘테이션 프로세스를 다시 호출하여 doc 의 평가 결과에 필요한 검사를 수행한다.
이러한 취급은 필수적으로 "런타임" 때까지 인스트루멘테이션 태스크의 일부를 지연시키고, 수요시 발생한다. 인스트루멘테이션의 코드 및 다른 콤포넌트들은 브라우저의 자바 스크립트 해석기를 변경함으로써 또는 포함될 수 없거나 미사용된 주의깊게 기록된 (그러나 정규의) 자바 스크립트 코드를 이용함으로써 또 다른 실시형태들에서 구현될 수 있다.
자바 스크립트 프로그램들의 경우에, 방해들을 정확히 특정짓는 것은 때때로 어렵다. 예를 들어, 웹 페이지가 상이한 도메인으로부터 문서의 로딩을 시도하는 것을 가정한다. 이것은 XSS 공격들의 예상된 리다이렉션 또는 징조 중 하나 일 수도 있다. 이러한 상황에서, 사용자에게 그들의 판단을 위해 적절한 정보를 제공하는 것이 일반적으로 바람직하다.
일 실시형태에서, 실행을 즉시 중단하는 것과 대조적으로, 스크립트가 수정되어 의심적인 거동들에 대해 사용자를 경각시킨다. 적절한 경우 (예를 들어, 경계 윈도우를 벗어남), 코드의 의미들이 (예를 들어, 위치 아규먼트들을 "래핑 (wrapping)" 함으로써) 변경된다. 일 실시형태에서, (보안 오토마톤들보다 더욱 표현적인) 편집 오토마톤들이 이용되어 이러한 정책들을 제공하고, 본 명세서에서 개시된 인스트루멘테이션 방법은 편집 오토마톤들의 형태로 정책들을 시행하도록 설계된다.
자바 스크립트의 광범위한 이용으로 인해, 고정된 정책들 세트를 모든 상황에 제공하는 것은 어렵다. 맞춰진 정책들은 더욱 바람직하여, 새로운 정책을 수용하는 경우 메카니즘을 재기록하는 변화가 없다. 일 실시형태에서, 정책들의 특성에 관계없이 동일한 종류의 재기록이 수행된다. 일 실시형태에서, 재기록은 고정된 정책 인터페이스를 통해 정책을 나타내는 코드를 생성한다.
또한, 자바 스크립트 및 브라우저 보안은 다수의 느슨하게 결합된 질문의 혼합이다. 따라서, 유용한 정책은 통상적으로 다수의 콤포넌트 정책들의 조합이다.
일 실시형태에서, 더 높은 자원의 스크립트를 취급하는 특정 코드의 경우와 유사하게, 정책 관리의 구현은 자바 스크립트 해석기를 변경함으로써 또는 정규 자바 스크립트 코드를 이용함으로써 수행된다. 후자의 경우, 구현이 잘못 이용될 수 없거나 방해될 수 없는 것을 보장하도록 특별한 주의가 주어질 수도 있다.
코어 스크립트
일 실시형태에서, 추상 언어 코어 스크립트는 문서에 임베디드된 스크립트 프로그램들의 거동을 제한하도록 이용된다. 코어 스크립트는 자바 스크립트의 추상 버전의 모델이다. 자바 스크립트의 구현의 일 실시형태가 아래에 주어진다.
더욱 상세하게, 아래의 인스트루멘테이션 방법의 세부사항을 설명하는 방법을 제공한다. 특히, 연산 의미론들은 고 차원 스크립트 및 이의 문서에서의 수록에 집중하는 코어 스크립트에 주어진다. 본 발명을 모호하게 하는 것을 방지하기 위해, 객체들은, 그것이 오소고날 (orthogonal) 하기 때문에, 이 모델로부터 생략된다. 객체를 부가하는 것은 인스트루멘테이션에 새로운 난점을 제공하지 않는다.
코어 스크립트의 구문의 일 실시형태가 도 4 에 도시된다. 도 4 를 참조하면, 기호 [] 는 코어 스크립트 구문의 일부이기 보다는 메타 언어 (meta language) 의 괄호로서 이용된다.
일 실시형태에서, 구문은 다음과 같이 도시된다. 완전한 "월드" W 는 4 개 한벌 (∑, χ, B, C) 이다.
제 1 엘리먼트 ∑ 인 문서 뱅크는 URL 들 l 로부터 문서들 D 로의 맵핑이다. 일 실시형태에서, 문서 뱅크는 인터넷에 대응한다. 제 2 엘리먼트 χ 는 가 변 뱅크이고, 형식 파라미터
Figure 112008067029703-PCT00001
로, 함수 f 를 스크립트 프로그램들 P 로, 전역 변수 (global variables) x 를 문서들 D 로 맵핑한다. 제 3 엘리먼트 B 인 브라우저는 다수의 윈도우들로 구성될 수 있으며, 각각의 윈도우는 참조의 용이함을 위해 핸들 h, 컨텐츠로서의 문서 D, 및 문서의 오리진을 마킹하는 도메인 이름 d 를 갖는다. 제 4 엘리먼트 C 인 쿠키 뱅크는 도메인 이름을 문서들의 형태로 쿠키에 맵핑한다 (각각의 도메인은 자신의 쿠키를 갖는다). 일 실시형태에서, 문자열들은 도메인 이름들 d, 경로들 p, 핸들들 h 를 모델링하도록 이용된다. URL l 은 도메인 이름 d 와 경로 p 의 쌍이다. URL 들과 문자열들 사이의 (이 분야에 공지되고, 본 발명을 모호하게 하지 않기 위해 암시적으로 이루어진) 암시적 변환이 가정된다.
일 실시형태에서, 문서들 D 는 HTML 문서들에 대응한다. 자바 스크립트에서는, 모든 종류의 문서들이 <script> 및 <em> 과 같은 HTML 을 이용하여 문자열로서 임베디드된다. 즉, 문서들은 프로그램 구조들에 의해 문자열로서 균일하게 취급되지만, 해석시에는 평범한 문자열과는 상이하게 파싱된다. 코어 스크립트의 문서들은, 상이한 종류의 문서들이 통어적으로 상이한 것을 제외하고, 파싱을 암시적이 되게 하며 이를 반영한다. 일 실시형태에서, 문서는 3 개의 통어적인 형태들 : 평범한 문자열 (string), 스크립트 조각 (js P), 또는 서브-문서들의 벡터로 이루어진 포맷된 문서 (
Figure 112008067029703-PCT00002
) 중 하나로 존재한다. 밸류 도큐먼트들 (value documents)
Figure 112008067029703-PCT00003
는 스크립트를 포함하지 않는 문서들이다. 구문에서의 새로운 공통 HTML 포맷 태그들이 F 로서 리스트되고, 몇몇 태그 jux 가 도입되어 다수의 문서들의 병치를 나타낸다 (이것은 의미론들의 표현을 간단히한다).
일 실시형태에서, 스크립트 프로그램들 P 는 대부분, no-op, 할당, 시퀀싱, 조건문 (conditional), 와일 루프 (while-loop), 함수 호출을 포함하는 공통 제어 명령들로 이루어진다. 또한, 일 실시형태에서, 동작들 act(A) 는 본 명세서에서 개시된 인스트루멘테이션 프로세스에 의해 식별되어 재기록될 보안 관련 연산들이다. 또한, 고 차원 스크립트는 write(E) 를 이용하여 지원되고, 여기서 E 는 추가적인 스크립트를 포함할 수도 있는 문서로의 "런타임" 에서 평가한다.
식 E 는 변수 x, 문서들 D, 및 다른 연산들 op (
Figure 112008067029703-PCT00004
) 를 포함한다. 일 실시형태에서, 추상 op 구성은 문자열 연결 및 비교와 같은 부작용이 없는 공통 연산들을 커버하도록 이용된다. 일 실시형태에서, 불 (boolean) 은 명백히 모델링되지 않고, 그 대신 불은 특별 문서들(문자열들) false 및 true 로 시뮬레이팅된다.
몇몇의 동작 A 가 증명의 목적을 위해 명백히 모델링된다. 동작 newWin(χ,E) 는 컨텐츠 문서로서 E 와 함께 새로운 윈도우를 생성하고, 프레쉬 핸들이 새로운 윈도우에 할당되어 χ 에 저장된다. 동작 closeWin(E) 는 핸들 E 를 갖는 윈도우를 닫는다. 동작 loadURL(E) 는 현재 윈도우가 URL E 로부터 새로운 문서를 로딩하도록 다이렉트한다. 동작 readCki(χ) 은 현재 도메인의 쿠키를 χ 로 판독한다. 동작 writeCki(E) 는 E 를 현재 도메인의 쿠키에 기록한 다. 모든 다른 잠재적 동작들은 고유의 secOp (
Figure 112008067029703-PCT00005
) 로서 추상화될 수도 있다. 값 동작들
Figure 112008067029703-PCT00006
은 문서 아규먼트들만으로 동작한다. 동작하는 몇몇 아규먼트들은 윈도우 핸들들 또는 쿠키 컨텐츠들과 같은 결과를 저장하는 변수들이다. 이러한 아규먼트들은 인스트루멘테이션에 영향을 미치지 않기 때문에, 값 동작들에서 표기 "_" 로 대체된다.
도 5 는 큰 단계 스타일로의 표현식의 의미의 일 실시형태이다. "런타임" 시, 표현식은 문서들에 대해 평가하지만, "밸류 도큐먼트들" 은 필수적으로 평가하지는 않는다. 도 5 를 참조하면, 도시된 규칙의 넘버가 존재한다. 규칙 (2) 가 도시한 바와 같이, 표현식 평가 동안 임베디드된 스크립트에 대해 D 가 검사된다. 규칙 (3) 에서,
Figure 112008067029703-PCT00007
는 op 의 대응 메타-레벨 연산을 의미하도록 이용된다.
도 5 에 도시된 바와 같이, 동작들이 값 동작들에 대해 평가된다. 특히, 규칙 (9) 는, 임베디드된 스크립트와 함께 문서를 포함하는 임의의 문서 D 로 쿠키가 기록될 수도 있음을 나타낸다. 따라서, 프로그램은 임베디드된 스크립트를 나중의 이용을 위해 쿠키에 저장할 수도 있다. 아래의 주어진 인스트루멘테이션은 이러한 거동하에서 바람직할 것이다.
도 6 은 작은 단계 스타일로 월드의 실행의 일 실시형태를 도시한다. 이것은 그들의 인스트루멘테이션뿐만 아니라, 실행과 함께 수행된 보안 동작을 고려하는 경우 더욱 직관적이다.
도 6 을 참조하면, 규칙 (11) 및 규칙 (12) 는 실행 동안 월드가 어떻게 전개하는지를 설명하는 다수의 단계의 관계를 규정한다. 규칙 (11) 및 규칙 (12) 는 단일의 단계 관계의 반사적이고 추이적인 폐쇄로서 규정된다. 규칙 (13) 에 의해 규정된 단일의 단계 관계는 단일의 단계에서 월드가 어떻게 전개하는지를 설명한다. 임의의 윈도우가 자신의 컨텐츠 문서를 언제라도 진행시킬 수 있다는 것을 고려하면, 단일의 단계 관계는 비 결정론적 (non-deterministic) 이다. 마지막으로, 규칙 (14) 은, 도 7 에서 규정된 몇몇의 매크로를 이용하여, 핸들 h 의 윈도우에서 문서를 균일하게 진행한다.
매크로 focus 는 실행의 포커스를 식별한다. 매크로 focus 는 문서를 횡단하고 최좌단 스크립트 콤포넌트를 검색한다. 매크로 stepDoc 는, 아규먼트 문서의 포커스가 실행될 것임을 가정한 경우, 다음 단계를 위해 적절한 문서를 연산한다. 밸류 도큐먼트들 (예를 들어, 문자열들) 상의 focusstepDoc 케이스들은 규정되지 않는다. 이것은 밸류 도큐먼트들에서의 어떤 것도 실행되지 않음을 나타낸다. 전체 문서에서 어떤 것도 실행되지 않는 경우, 실행은 종료한다.
매크로 step 은 월드들 상에서의 단계 변환을 연산한다. 월드 W 는 윈도우 h 에서 문서를 진행함으로써 단계 천이를 하고 있는 것을 가정하고, 윈도우 h 에서 문서의 포커스 연산은 P 임을 가정한다. 단계 천이 이후의 결과 월드는 step(P,h,W) 이다. step 을 규정하는 경우, 핼퍼 ad ν(B,h,χ) 는 stepDoc 를 이용하여 윈도우 h 에서 문서를 진행한다.
의미들은 고 차원 스크립트에 대한 평가 순서를 나타내고, 그 결과 도 2 의 2 개의 예가 자연히 설명된다. 예로서 write(op(
Figure 112008067029703-PCT00008
));P 를 취한다. 코어 스크립트는, 도 2 의 제 1 스크립트 프레그멘트의 거동을 설명하며, 문서들 중 임의의 문서에 임베디드된 스크립트를 실행하기 전 모든 E i 를 평가한다. P 는 제 2 스크립트 프레그멘트를 설명하며, write(op(
Figure 112008067029703-PCT00009
)) 에 의해 생성된 스크립트가 실행을 종료한 이후 실행된다.
보안 정책들
다양한 보안 정책들이 브라우저 기반 공격들을 카운팅하기 위해 설계될 수 있다. 예를 들어, 이들 공격들은 제한없는 수의 윈도우들 (예를 들어, 팝업들) 의 공개를 포함할 수도 있고 신뢰할 수 없는 파티들 (예를 들어, XSS) 에 민감한 쿠키를 전송할 수도 있다.
일 실시형태에서, 정책 관리 및 코드 재기록이 2 개의 개별 모듈들에 의해 수행된다. 이러한 방법에서, 정책들은 프로세스 재기록의 지식없이 설계될 수 있다. 정책 설계자는 정책들이 소망하는 보호들을 충분히 반영하는 것을 보장한다. 실행의 면에서, 재기록 프로세스는 정책 인터페이스를 통해 정책에 액세스한다. 동일한 종류의 재기록이 모든 정책들에 대해 이용된다.
재기록 방법이 이용하는 실시형태들 정책 인터페이스 및 정책 프레임워크의 일 실시형태가 이하 주어진다.
정책 표현
일 실시형태에서, 정책들 Π 는 편집 오토마톤들로서 표현낸다. 일 실시형태에서, 편집 오토마톤은 트리플 (
Figure 112008067029703-PCT00010
) 이며, 여기서
Figure 112008067029703-PCT00011
는 상태들의 셀 수 없는 무한 세트일 수 있고,
Figure 112008067029703-PCT00012
는 초기 상태 (또는 현재 상태) 이며,
Figure 112008067029703-PCT00013
Figure 112008067029703-PCT00014
(심볼 A 는 여기서 재이용되어, 코어 스크립트에서의 동작들의 세트를 나타냄) 의 형태를 갖는 완전 천이 함수이다. 천이 함수
Figure 112008067029703-PCT00015
는 동작의 삽입, 대체, 억압을 특정할 수도 있고, 여기서 억압은 입력 동작을 폐기하고 ε 의 출력 동작을 생성함으로써 핸들링된다. 일 실시형태에서, 정책들이 결정론적이도록
Figure 112008067029703-PCT00016
Figure 112008067029703-PCT00017
이다.
도 8 은 정책 만족 (동작 시퀀스가 허용되는지 여부) 및 동작 편집 (동작 시퀀스를 어떻게 재기록하는지) 의 관점에서 일 실시형태에 대한 정책의 의미를 규정한다. 도 8 을 참조하면, 규칙 (15) 및 규칙 (16) 은 동작 시퀀스
Figure 112008067029703-PCT00018
상의 정책 Π 의 만족을 규정한다. 직관적으로,
Figure 112008067029703-PCT00019
, 즉
Figure 112008067029703-PCT00020
를 Π 의 오토마톤으로 피드하는 경우 및 이러한 경우만이라면, 오토마톤은 동작들에 어떠한 수정을 수행하지 않고, 수용을 시그널링하는 상태로 동작 시퀀스의 종료에서 중단한다. 이하, 모든 상태는 간단함을 위해 "수용 (accept)" 상태임을 가정하지만, 이러한 가정을 완화하는 것은 트리비얼 (trivial) 하다.
규칙 (17) 및 규칙 (18) 은 정책 Π 가 어떻게 동작 시퀀스
Figure 112008067029703-PCT00021
를 또 다른 동작 시퀀스
Figure 112008067029703-PCT00022
로 변환하는지를 규정한다. 직관적으로,
Figure 112008067029703-PCT00023
즉,
Figure 112008067029703-PCT00024
를 Π 의 오토마톤으로 피드하는 경우 및 이러한 경우만이라면, 오토마톤은
Figure 112008067029703-PCT00025
를 생성한다.
모든 편집 오토마톤들이 감지가능한 정책들을 나타내는 것이 아니기 때문에, 정책들의 일치를 규정하는 것이 유용하다. 예를 들어, 편집 오토마톤은 동작
Figure 112008067029703-PCT00026
Figure 112008067029703-PCT00027
로,
Figure 112008067029703-PCT00028
Figure 112008067029703-PCT00029
로 변환할 수도 있다. 심지어 추천된 대체 동작이 정책을 만족시키지 못하기 때문에, 인스트루멘테이션 메카니즘이 이러한 정책 하에서 어떻게 동작할지는 불명확하다. 그 결과, 일치는 편집 오토마톤들을 제어하기 위해 이용된다.
규정 1 (정책 일치)
Figure 112008067029703-PCT00030
이 임의의
Figure 112008067029703-PCT00031
Figure 112008067029703-PCT00032
에 대해
Figure 112008067029703-PCT00033
을 의미하는 경우 및 이러한 경우만이라면 정책
Figure 112008067029703-PCT00034
은 일치한다..
이론 1 (바람직한 충고) Π 가 일치함을 가정한다.
Figure 112008067029703-PCT00035
이면,
Figure 112008067029703-PCT00036
이다.
불일치 정책은 정책 설계에서의 에러를 반영한다. 통어적으로, 일 실시형태에서, 불일치 정책은 일치 정책으로 변환되어, 정책이 상태 하에서 입력 동작
Figure 112008067029703-PCT00037
에 대해 대체 동작
Figure 112008067029703-PCT00038
를 제안하는 경우, 정책은 업데이트되어 또한 상태 하에서 동작
Figure 112008067029703-PCT00039
를 수용한다. 더욱 정확하게는,
Figure 112008067029703-PCT00040
인 경우, 정책은
Figure 112008067029703-PCT00041
을 보장함으로써 획득될 수도 있다. 그러나, 의미 론적으로, 정책 설계자는, 특히 모순되는 업데이트들의 경우에 업데이트된 정책이 의도된 정책인지 여부를 결정한다. 예를 들어, 상기 예에서, 불일치 정책은 이미
Figure 112008067029703-PCT00042
를 규정했을 수도 있다.
일 실시형태에서, 일치 정책들은 본 명세서에서 설명된 인스트루멘테이션을 가이드하기 위해 이용되고, 정책 일치는 본 명세서에서 개시된 정확한 이론의 가정으로서 작용한다. 내부적으로, 정책 모듈은 현재의 상태 및 완전한 천이 함수를 포함하는, 정책의 편집 오토마톤과 관련된 모든 상태들을 보유한다. 외부적으로, 동일한 정책 모듈은 재기록 프로세스에 다음의 인터페이스
Figure 112008067029703-PCT00043
동작 리뷰 :
Figure 112008067029703-PCT00044
를 노출시킨다.
이러한 동작 리뷰 인터페이스는 입력 동작을 아규먼트로서 취급하고, 오토마톤의 내부 상태를 진행하며, 천이 함수에 따라 대체 동작을 수행한다.
전술한 정책 프레임워크는 실제적인 자바 스크립트를 식별하여 사용자에게 유용한 피드백을 제공하는 데 있어서 효과적이다. 스크립트 공격들의 식별 및 유용한 피드백의 제공을 나타내는 예들이 이하 주어진다.
판독의 용이함을 위해, 도 9 가 편집 오토마톤들을 다이어그램으로 표현한다. 편집 오토마톤으로부터 다이어그램을 구축하기 위해, 우선 상태 세트의 각각의 엘리먼트에 대해 노드가 생성된다. 시작 상태를 나타내는 노드는, 이 노드로의 특별 에지로 마킹된다. 상태 천이 함수는
Figure 112008067029703-PCT00045
Figure 112008067029703-PCT00046
로 맵핑시키고,
Figure 112008067029703-PCT00047
의 노드로부터
Figure 112008067029703-PCT00048
의 노드로의 에지가 부가되어, 에지가
Figure 112008067029703-PCT00049
로 마킹된 다. 간결함을 위해,
Figure 112008067029703-PCT00050
Figure 112008067029703-PCT00051
의 속기로서 작용하도록 이용된다. 상태 천이가 트리비얼한 경우 (상태 및 동작의 입력 쌍에 어떠한 변화도 수행하지 않는 경우), 에지가 생략될 수도 있다. 대조적으로, 다이어그램이 동작
Figure 112008067029703-PCT00052
로 상태
Figure 112008067029703-PCT00053
로부터 에지를 명백히 특정하지 않는 경우,
Figure 112008067029703-PCT00054
의 노드로부터 그 자신으로
Figure 112008067029703-PCT00055
를 갖는 암시적 에지가 존재한다.
도 10 은 팝업 윈도우들의 수를 제한하는 정책을 제공한다. 시작 상태는
Figure 112008067029703-PCT00056
(1000) 이다.
Figure 112008067029703-PCT00057
상의 상태 천이는 트리비얼 (암시적) 하다.
Figure 112008067029703-PCT00058
Figure 112008067029703-PCT00059
이외의 동작들을 갖는 상태로부터의 상태 천이는 또한 트리비얼 (암시적) 하다. 이러한 정책은, 이미 2 개의 팝업들이 존재하는 경우, 상태 (1002) 로 복귀하는 화살표 (1001) 로 도시된 새로운 윈도우 공개 동작들을 필수적으로 무시한다.
도 11 은 쿠키 정보의 (잠재적) 송신을 제한하는 정책을 제공한다. 시작 상태 (1101) 는 send - to - any 이다. 상태 send - to - origin (1102) 에서, 네트워크 요청들은 safe - loadURL 로 지칭되는 로딩 액션의 안전 버전으로 취급된다. 이러한 정책에서, (send - to - any , loadURL(l)), (send - to - any, safe - loadURL), (send-to-origin, readCookie), (send - to - origin, safe - loadURL) 상의 상태 천이는 트리비얼 (암시적) 하다. 판독, 로딩, 및 안전 로딩 이외의 동작들을 갖는 상태로부터의 상태 천이들은 또한 트리비얼 (암시적) 하다. 필수적으로, 이것은 쿠키가 판독되기 이전에 로딩에 어떠한 제한도 두지 않지만, 결국 안전 로딩만을 허용한다.
안전 로딩 safe - loadURL 의 구현은 URL 의 도메인상에 필수적인 체크들을 수행하고, URL 의 도메인이 문서의 오리진과 매치하지 않는 경우, 사용자에게 로딩으로 진행할지 여부를 묻는다. 바람직한 경우, 일 실시형태에서, safe - loadURL 과 같은 대체 동작은 오토마톤의 현재 상태로부터 정보를 획득하고, 특별화된 보안 체크들 및 사용자 프롬프트를 수행한다. 이 구현은 정책 모듈의 일부이며, 따라서, 재기록 프로세스에 영향을 미치지 않는다. 안전 동작의 구현은 신뢰할 수 있고 방해될 수 없는 것 - 안전 동작들이 정확하게 구현되어, 악성 스크립트는 구현을 겹쳐쓸 수 없는 것으로 이해된다.
실제로, 다수의 상이한 종류의 공격들이 존재한다. 일 실시형태에서, 각각 하나의 종류의 공격에 대해 보호하는 다수의 상이한 정책들이 존재한다. 일 실시형태에서, 다수의 (일반성을 잃지 않고, 2 개의) 정책들이, 재기록 프로세스를 차례로 가이드하는 하나의 정책으로 결합된다.
중요하게 될 정책 결합
Figure 112008067029703-PCT00060
에 대해, 다음의 2 개의 조건
1. 안전 결합 :
Figure 112008067029703-PCT00061
Figure 112008067029703-PCT00062
이 일치함을 가정한다. 모든
Figure 112008067029703-PCT00063
에 대해,
Figure 112008067029703-PCT00064
Figure 112008067029703-PCT00065
인 경우 및 이러한 경우만이라면
Figure 112008067029703-PCT00066
이다.
2. 일치 결합 :
Figure 112008067029703-PCT00067
Figure 112008067029703-PCT00068
이 일치하는 경우,
Figure 112008067029703-PCT00069
는 일치한다는 조건을 요구하는 것은 바람직하다.
이들 요건들을 고려하는 정책 결합의 규정은;
2 개의 오토마톤들
Figure 112008067029703-PCT00070
Figure 112008067029703-PCT00071
이 주어진 경우,
Figure 112008067029703-PCT00072
이고,
여기서,
Figure 112008067029703-PCT00073
Figure 112008067029703-PCT00074
Figure 112008067029703-PCT00075
인 경우,
Figure 112008067029703-PCT00076
이고,
Figure 112008067029703-PCT00077
Figure 112008067029703-PCT00078
인 경우,
Figure 112008067029703-PCT00079
이며,
그 이외의 경우,
Figure 112008067029703-PCT00080
과 같다.
직관적으로, 일 실시형태에서, 결합된 정책은 콤포넌트 2 개의 정책들을 동시에 모두 시뮬레이팅한다. 제 1 정책이 제 2 정책에 의해 동의된 동작을 제안하는 경우, 결합된 정책이 동작을 취한다. 그렇지 않은 경우, 제 1 정책은 제 2 정책의 제안이 제 1 정책에 의해 동의되었는지 알기를 시도한다. 더욱 악화된 경우인, 상기 2 개의 정책들이 모두 홀드되지 않는 경우, 결합된 정책은 동작을 억압한다. 결합 이후에 상태의 수에 있어서 결합의 증가가 존재한다. 일 실시형태에서, 이것은, 정책 모듈이 정책 표현에서의 선형 증가를 산출하는, 콤포넌트 정책들에 대한 개별적인 상태 변수들 및 천이 함수들을 보유하기 때문에, 구현에 대한 문제를 부과하지 않는다.
이러한 결합의 규정이 상기 안전 및 일치 요구들을 만족한다는 것을 체크하는 것은 어렵다. 그러나, 동일한 요구들을 또한 만족시키는 결합의 다른 바람 직한 규정이 존재한다. 예를 들어, 상기 규정은 제 2 정책 상위의 제 1 정책을 "선호한다". 유사한 규정은 제 2 정책이 또한 바람직함을 말한다. 또한, 상기 결합은 제 1 시도 이후 간단히 포기하는 데 반해, 더욱 정교한 결합은 제안된 동작들을 오토마톤들에 반복적으로 피드함으로써 모순들을 해결하기 위해 시도할 수도 있다. 일 실시형태에서, "안전 결합" 의 요구는 대체 동작들이 아닌, 수용가능한 동작 시퀀스들에 대해서만 이야기한다.
코어 스크립트 인스트루멘테이션
전술한 정책 모듈 및 정책 모듈의 인터페이스를 고려하면, 코어 스크립트의 인스트루멘테이션은 구문 제어형 재기록 프로세스가 된다.
재기록 프로세스의 태스크는 문서 트리를 횡단하고 정책 모듈을 통해 모든 동작들을 리다이렉트한다. 동작
Figure 112008067029703-PCT00081
이 식별되는 경우마다, 동작은 동작 모듈이 "런타임" 시에 적절한 대체 동작을 수행하는 것을 신뢰하는, 동작 인터페이스
Figure 112008067029703-PCT00082
로 리다이렉트된다. 고 차원 스크립트
Figure 112008067029703-PCT00083
를 수신시, 특별 인터페이스
Figure 112008067029703-PCT00084
의 축어 (verbatim) 인 아규먼트 E 가 문서에 피드되어, 그 구현은 E 가 평가된 후 "런타임" 시에 재기록 프로세스로 다시 호출한다.
일 실시형태에서, 상기 2 개의 인터페이스는 이용을 위한 재기록 프로세스에 대한 2 개의 새로운 코어 스크립트 명령들로서 조직된다. 특히, 코어 스크립트의 구문은,
Figure 112008067029703-PCT00085
과 같이 확장된다.
도 12 는 재기록 프로세스의 세부사항을 도시한다. 이러한 프로세스에서, 2 개의 새로운 명령들의 구현 또는 의미에 대해 어떠한 지식도 요구되지 않는다. 트리비얼하지 않은 태스크가 규칙 (19) 및 규칙 (20) 에 의해 수행되고, 새로운 명령들이 "런타임" 코드 생성 및 동작들을 대체하기 위해 이용된다. 모든 다른 규칙들이 재기록 결과를 전파한다. 2 개의 새로운 명령들에 대한 재기록 경우들이 규칙 (24) 에서 주어지고, 이것은 재기록이 2 개의 인터페이스를 호출하는 코드상에서 작동하도록 허용한다. 월드 WW 의 4 개의 콤포넌트들 상의 재기록이 또한 규정된다. 일 실시형태에서, 몇몇 콤포넌트들 (예를 들어, 문서 뱅크 ∑) 이 요구시에 (예를 들어 로딩된 경우) 인스트루멘테이션될 것이다.
2 개의 새로운 명령들의 의미론들이 인스트루멘테이션의 정확성에 대한 이유로 인해 주어진다.
Figure 112008067029703-PCT00086
에 대해, 목적은 스크립트 생성을 마킹하는 것과 "런타임" 때까지 인스트루멘테이션을 지연시키는 것이다. 따라서, 그 연산 의미론들은 아규먼트 표현식을 평가하고 재기록을 통해 아규먼트 표현식을 피드한다. 다음의 정의,
Figure 112008067029703-PCT00087
Figure 112008067029703-PCT00088
여기서
Figure 112008067029703-PCT00089
Figure 112008067029703-PCT00090
가 이를 캡쳐한다.
adv 를 리콜하는 것이 도 7 에 규정된다. 다른 언어 구조들에 대한 연산 의미론들 규칙들이 instr 하에서 동일하게 유지된다. 상기 규정된 focusstep 함수 케이스는 규칙 (14) 에 잘 맞으며, 주어진 문서상의 단계를 특정 윈도우 핸들이 되게 한다.
규칙 (33) 을 검사하면, 재기록 프로세스
Figure 112008067029703-PCT00091
D 에 대한 E 를 평가한 이후 런타임시에 호출된다. 일 실시형태에서,
Figure 112008067029703-PCT00092
의 실행은 언제나 인스트루멘테이션된 문서의 생성을 종료한다. 이 인스트루멘테이션된 문서에, 추가 instr 에 의해 마킹된 잠재적인 추가 숨겨진 스크립트가 존재한다. 이러한 숨겨진 스크립트는, 생성되는 경우, 나중에 재기록될 것이다.
Figure 112008067029703-PCT00093
의 의미들이 다음의 규정,
Figure 112008067029703-PCT00094
Figure 112008067029703-PCT00095
Figure 112008067029703-PCT00096
규정되지 않음
을 이용하여 유사한 방식으로 규정된다.
Figure 112008067029703-PCT00097
focus 케이스는 그 자체로 트리비얼하게
Figure 112008067029703-PCT00098
이다.
Figure 112008067029703-PCT00099
의 실행은
Figure 112008067029703-PCT00100
를 전부 소모하여 다음 단계를 위한 어떠한 추가 문서 조각들을 남기지 않고, 따라서, stepDoc 케이스가 된다. 업데이트된 연산 의미론들에서 이러한 케이스를 언급하지 않기 때문에, step 케이스는 규정되지 않는다.
check 의 부가와 함께, 프로그램 실행이 정책 모듈에 접속된다. 따라서, 업데이트된 연산 의미론들에서, 정책 모듈의 내부 상태 (편집 오토마톤의 상태) 가 고려된다. 일 실시형태에서, 도 13 의 코어 스크립트의 감소 관계가 확장되고, 감소 관계의 새로운 형성들이 오토마톤 천이 함수 (δ) 및 오토마톤 상태들 (
Figure 112008067029703-PCT00101
Figure 112008067029703-PCT00102
) 을 명백히 특정한다. 이전의 의미들과 유사하게, 규칙 (35) 및 규칙 (36) 에 의해 규정된 다수의 단계 관계는 규칙 (37) 에 의해 규정된 결정적이지 않은 단계 관계의 반사적이고 추이적인 폐쇄이다. 이 결정적이지 않은 단계 관계는 본 명세서에서 "문서 진행 (ducument advance)" 로서 지칭되는 결정적인 단계 관계의 도움으로 규정된다.
문서 진행은 규칙 (38) 및 규칙 (39) 에 의해 규정된다. 문서의 포커스가 check 로의 호출이 아닌 경우, (규칙 (14) 에서 규정된) 기존의 문서 진행 관계가 이용되어, 오토마톤 상태가 변하지 않고 유지된다. 포커스가 check 로의 호출인 경우, 오토마톤 상태는 업데이트되고 대체 동작이 천이 함수에 따라 생성되며, 대체 동작
Figure 112008067029703-PCT00103
이 오리지널 동작
Figure 112008067029703-PCT00104
대신에 수행되기 때문에, 월드 콤포넌트들은
Figure 112008067029703-PCT00105
의 단계 케이스를 이용하여 업데이트된다.
그 결과, 정책 예는 프로그램 실행과 나란히 실행되어, 정책 예의 현재 상태가 프로그램의 동작들에 대응하여 업데이트된다.
코어 스크립트 구체화
일 실시형태에서, 코어 스크립트는 클라이언트 측 스크립팅에 대한 코어 언어로서 모델링된다. 이 코어 스크립트의 특징들은 문서에서의 스크립트의 수 록, "런타임" 시 새로운 스크립트의 생성, 및 보안 관련 동작들을 포함한다. 전술한 아이디어들은 다른 브라우저 기반 스크립팅 언어들에 또한 적용 가능하다.
첫째, 코어 스크립트는 js 노드들을 이용하여 문서 트리에 코드의 수록을 지원한다. 이러한 취급은 자바 스크립트 (도 1 이 예를 제공함) 에서 <script> 태그들의 이용으로부터 적용된다. <script> 태그들 상위에, HTML 문서에 스크립트를 수록하는 다수의 다른 방법들이 존재한다. 스크립트가 발생할 수 있는 몇몇의 공통 장소는 이미지들 (예를 들어, <IMG SRC=...>), 프레임들 (예를 들어, <IFRAME SRC=...>), 테이블들 (예를 들어, <TABLE BACKGROUND=...>) 을 포함한다. 더욱이, 스크립트는 또한 많은 수의 이벤트 핸들러 (예를 들어, onActivate(), onClick(), onLoad(), onUnload(),...) 에 수록될 수도 있다. 일 실시형태에서, 이러한 임베디드된 스크립트는 또한 식별되어 재기록된다.
둘째, 코어 스크립트는 write(E) 를 이용하여 "런타임" 시 스크립트를 생성한다. 이것은, 자바 스크립트 코어 언어에서의 eval 및 DOM 에서의 window.execScript, document.write, document.writeln 를 포함하는, 몇몇 관련된 함수들상의 통합된 뷰 (view) 이다. 이들 함수 모두는 문자열 아규먼트들을 취한다. 함수 eval 은 자바 스크립트 문장 또는 표현식으로서 문자열을 평가하여 결과를 리턴한다. 함수 window.execScript 는 하나 이상의 스크립트 문장들을 실행하지만, 어떠한 결과도 리턴하지 않는다. 고 차원 스크립트상의 코어 스크립트의 취급은 이들 2 개의 함수에 대해 충분히 표현적이다.
그러나, 함수들 document.write 및 document.writeln 은 더욱 매력적이다. 이들 2 개의 함수들은 문자열들을 그들의 윈도우에서 디스플레이될 문서 프레그멘트들로서 전송하고, 문서 프레그멘트들은 임베디드된 스크립트를 가질 수 있다. 이들 문서들은 완전한 문서 트리 노드들일 필요는 없으나, 그 대신, 다른 문자열들과 함께 단편화되어, 다음의 예
Figure 112008067029703-PCT00106
에서 나타난 바와 같이, 완전한 노드를 형성할 수 있다.
상기 write 함수들 각각은
Figure 112008067029703-PCT00107
필터에 해가 없는 텍스트를 생성하도록 나타난다. 코어 스크립트 인스트루멘테이션을 적용하는 경우 이러한 허점들을 방지하기 위해, 일 실시형태에서, 생성된 문서 프레그멘트들은 다음 스테이지의 재기록 프로세스로 피드되기 이전에 함께 단편화된다. 이것은 코드 (도 3 리콜) 의 의미들을 변화시키는 것을 방지하기 위해 주의 깊게 이루어진다. 잘 의도된 프로그램들에서, 조각난 (broken-up) 프레그멘트들로서 새로운 스크립트의 생성의 표현이 유용하지 않을 것처럼 관찰되면, 더 양호한 해결책이 문법에 어긋난 스크립트 조각들의 생성을 간단히 방지할 수도 있다.
일 실시형태에서, write(E) 노드는 문서 트리에서 정확히 동일한 위치에서 위치될 새로운 노드를 생성하기 때문에, 코어 스크립트는 임의의 방법들로 문서의 컨텐츠를 수정하는 방법을 제공하지 않는다. DOM 은 문서를 수정하는 다른 방법들을 제공한다. 예를 들어, 문서는 임의의 엘리먼트의 innerHTML, innerText, outerHTML, outerText, 및 nodeValue 특성들을 통해 수정될 수 있다. 일 실시형태에서, 이들은 코어 스크립트 모델에서 커버된다. 그러나, 확장이 고려될 수 있고, "런타임" 스크립트 생성에 대한 메카니즘이 문서 트리에서의 어느 노드가 업데이트될지를 특정한다. 생성된 스크립트가 정책 인터페이스를 통해 진행하기 위해 적절히 재기록되는 한, 어느 장소에 위치되는지는 중요하지 않기 때문에, 인스트루멘테이션 방법은 동일하게 유지된다.
마지막으로, 일 실시형태에서, 코어 스크립트는 설명의 목적을 위해 간단한 동작들을 포함한다. 실현은 공격들 및 보호들과 관련된 다수의 다른 동작들을 수용한다. 일부 관련 DOM API 들은 쿠키들, 윈도우들, 네트워크 이용, 클립보드, 및 사용자 인터페이스 엘리먼트들을 조작하는 동작들을 포함한다. 또한, 몇몇 이벤트 핸들러들에 대해 암시적 동작들을 도입하는 것이 유용하다. 예를 들어,
Figure 112008067029703-PCT00108
인 "언데드 윈도우 (undead window)" 는 onUnload 이벤트 내부에서 윈도우 공개를 허용하지 않음으로써 방지될 수 있다.
예시적인 구현 구조
도 14 는 구현 구조의 일 예를 도시한다. 각각의 모듈은 하드웨어 (회로, 전용 로직 등), (범용 컴퓨터 시스템 전용 메카니즘 상에서 동작하는 바와 같은) 소프트웨어, 또는 이 둘의 조합을 포함할 수도 있다.
도 14 를 참조하면, 구현은 3 개의 작은 모듈 - 통어적 코드 재기록 (
Figure 112008067029703-PCT00109
) 을 위한 모듈 (1401), 특별 명령 (instr) 을 해석하는 모듈 (1402), 보안 정책 (Π) 을 구현하는 모듈 (1404) 로 함께 브라우저를 확장할 수도 있다. 일 실시형태에서, 브라우저 (1403) 는 문서 D 를 직접 해석하지 않는다. 대신, 브라우저 (1403) 는 재기록 모듈에 의해 생성된 재기록 버전
Figure 112008067029703-PCT00110
(D) 을 해석한다. 특별 명령 instr(E) 상에서, instr 의 구현은 표현식 E 를 평가하여, 결과 문서
Figure 112008067029703-PCT00111
를 재기록 모듈 (1401) 을 통해 전송한다. 재기록
Figure 112008067029703-PCT00112
의 결과는 추가적인 해석을 위해 브라우저 (1403) 로 다시 향한다. 정책 인터페이스 check(A) 에 대한 호출 상에서, 정책 모듈 (1404) 은 오토마톤의 상태를 진행시켜 대체 동작
Figure 112008067029703-PCT00113
을 제공한다.
일 실시형태에서, 재기록 모듈 (1401) 은 자바 스크립트 코드를 분석하는 ANTLR 의 도움으로 자바에서 구현된다. ANTLR 에 대한 더 많은 정보를 위해, T. Parr 및 다른 ANTLR 참조 메뉴얼 (2005 년 1월 http://www.antlr.org/ 에서 이용가능함) 을 참조한다. 이 모듈은 HTML 문서들을 추상 구문 트리 (AST; abstract syntax tree) 로 파싱하고, AST 상에서 재기록을 수행하며, AST 로부터 인스트루멘테이션된 자바 스크립트 코드 및 HTML 문서들을 생성한다. 일 실시형태에서, 브라우저 (1403) 는 모든 HTTP 요청들에 대해 프록시로서 재기록 모듈 (1401) 을 이용하도록 셋업된다.
일 실시형태에서, 특별 명령은 상기 주어진 규칙 (33) 에 의해 주어진 연산 의미론에 따라 브라우저 (1403) 에서 자바 스크립트 해석기를 수정함으로써 구현될 수 있다. 해석기가 (규칙 (33) 에서 평가 관계에 의해 요약된) 문자열 아규먼트로부터 문서 조각을 파싱한 후, 재기록 모듈 (1401) 은 스크립트의 재기록을 수행하기 위해 호출된다. 해석은 나중에 재기록된 문서 조각과 함께 재시작한다.
전술한 것들은 수월하지만, 이는 브라우저 구현의 변경을 요구한다. 또한, 자바 스크립트 자체 내에서 구현을 선택할 수도 있고, instr 는 자바 스크립트 함수로서 구현된다. 자바 스크립트 함수들의 호출-바이-값 (call-by-value) 특성은 함수 바디 (function body) 를 실행하기 전에 아규먼트 표현식을 평가하며, 이는 본질적으로 기대된 의미론을 제공한다. 예를 들어, 일 실시형태에서, XMLHttpRequest 객체 (2006 년 http://www.w3.org/TR/XMLHttpRequest/ 에서 이용가능한 W3C 워킹 드래프트이며 A. van Kesteren 및 D. Jackson 저인, XMLHttpRequest 객체)(Ajax 어프로치의 일부로서 대중적으로 공지됨) 가 자바 스크립트 코드 내부로부터 재기록 모듈의 자바 프로그램을 호출하도록 이용된다.
편리하지만, 이 어프로치는, 악성 사용에 대해 더욱 취약하기 때문에, 자바 스크립트 해석기를 수정하는 어프로치만큼 견실하지 못하다. 전술한 바와 같이, 자바 스크립트는 예를 들어, innerHTML 을 통한 자기 수정 코드의 몇몇 형태를 제공한다. 이것은, instr 가 자바 스크립트에서 구현되고 인가되는 문서들과 함께 해석되는 경우, instr 의 구현을 겹쳐쓰는 악성 스크립트에 대한 가능성을 제공한다. 추가적인 코드 검사가 이러한 사용들을 방지하도록 필요하여, 구현을 자바 스크립트 언어의 몇몇 특성에 의존하게 한다. 따라서, 상이한 트레이드 오프에 직면하는 경우, 해석기를 수정하는 것이 더욱 바람직할 수도 있다.
유사한 구현 선택들이 정책 모듈에 적용된다. 예를 들어, 예상된 정책 인터페이스로 브라우저에 대한 애드 온 (add-on) 으로서 정책 모듈을 구현할 수 있다. 일 실시형태에서, 정책 모듈은 또한 정규 자바 스크립트에서 구현되어, check 는 정규 자바 스크립트 함수로서 구현되고, check 에 대한 호출들은 검사되는 동작들을 반영하는 적절히 인코딩된 아규먼트들을 갖는 정규 함수 호출들이다. check 함수의 바디는 체크된 아규먼트들 및/또는 사용자 프롬프트들을 갖는 통상적인 오리지널 동작들인 대체 동작들을 수행한다. 자기 수정 코드를 통한 악성 익스플로잇에 대한 instr 에 대한 상기 보호가 또한 여기서 적용된다.
일 실시형태에서, 정책들이 "문서 클러스터 (document cluster)" 에 대해 적용된다. 브라우저는 다수의 윈도우들을 동시에 홀딩하고, 이들 윈도우들 중 몇몇은 서로 통신하며 (예를 들어, 팝업이 동일한 오리진으로부터 문서를 홀딩하는 경우, 윈도우와 윈도우의 팝업), 이들은 본 명세서에서 동일한 클러스터에 존재하는 것으로 언급된다. 일 실시형태에서, 각각의 클러스터에 클러스터 자신의 정책 인스턴스가 자바 스크립트 객체의 형태로 주어지고, 동일한 클러스터에서의 모든 윈도우들에 클러스터의 정책 인스턴스의 참조가 주어지며, 이는 윈도우들이 생성되거나 문서들이 로딩되는 경우 적절히 셋업된다. 이것은 인스트루멘테이션의 본질에 영향을 미치지 않는다. 클러스터당 (per-cluster) 실행은 실질적인 정책들을 표현하는데 필수적이다. 한편으로는, 일 실시형태에서, 상이한 클러스터들로부터의 문서들은 동일한 정책 인스턴스를 공유하지 않아, 하나의 문서의 거동은, 관련없는 문서가 예를 들어, 2 개의 관련없는 윈도우들이 그들 각각의 팝업들의 할당 (auota) 을 가질 수도 있도록 허용되는 것에 영향을 미치지 않는다. 한편, 동일한 클러스터로부터의 문서들은 동일한 정책 인스턴스를 공유하여 악성 사용 (예를 들어, 공격은 동일한 클러스터에서 개별 문서들에서의 관련 동작들을 수행할 수도 있음) 을 방지한다.
방법의 정확성
본 명세서에서의 목적을 위해, 인스트루멘테이션의 정확성이 2 개의 이론 - 안전 및 투명성으로서 제공된다. 안전은 인스트루멘테이션된 코드가 정책을 고려할 것임을 말한다. 투명성은 인스트루멘테이션이 이미 정책을 고려한 거동에 영향을 미치지 않을 것임을 말한다. 본 명세서에서 개시된 인스트루멘테이션은 제안들을 위해 정책 모듈을 통해 모든 동작들을 피드하기 때문에, 이들 정확성 이론들 하의 직관은 직접적이다. 제안된 동작들이 정책 일치로 인해 정책을 만족시키기 때문에, 안전이 유지된다. 입력 동작들이 이미 정책을 만족시킨 경우, 제안된 동작들이 입력 동작들에 일치하기 때문에, 투명성이 유지된다. 이하에서, 이들 2 개의 이론들이 주제의 순서로 확립된다.
첫째, 오소독시 (orthodoxy) 의 개념이 소개된다.
규정 2 ( 오소독시 ) W (또는 ∑,χ,B,C,D,P) 는 act(A) 또는 write(E) 이 발생하지 않는 경우 정설이다.
일 실시형태에서, 본 명세서에서 개시된 인스트루멘테이션이 다음의 주제에서와 같이 오소독스 결과들을 생성한다.
주제 1 ( 인스트루멘테이션 정설)
Figure 112008067029703-PCT00114
Figure 112008067029703-PCT00115
이 오소독스이다.
프루프 스케치 : PD 의 구조상에서의 동시 인덕션 (induction) 에 의함 C, B, χ, ∑, 및 W 의 구조상에서의 케이스 분석에 의함.
정설은 다음에 도시된 방과 같이 단계 관계에 의해 보존된다.
주제 2 ( 오소독시 보존) W 가 정설이고
Figure 112008067029703-PCT00116
인 경우,
Figure 112008067029703-PCT00117
는 정설이다.
프루프 스케치 : 문서들의 구조상의 인덕션으로, 단계 관계
Figure 112008067029703-PCT00118
의 규정에 의함. W 가 정설이기 때문에 write(E) 를 실행하는 케이스는 불가능하다. instr(E) 를 실행하는 케이스에서, 연산 의미론들은 인스트루멘테이션된 문서를 생성하여 포커스 노드를 대체한다. 그 결과, 오소독시는 주제 1 을 따른다. 다른 모든 케이스에서, 연산 의미론들은 가정에 의해 정설인, 다른 프로그램 콤포넌트들로부터 문서 조각들을 획득할 수도 있다.
오소독스 월드의 실행은 아래에 연관된 바와 같이 정책을 고려한다.
주제 3 (정책 만족)
Figure 112008067029703-PCT00119
가 일치임을 가정한다. W 가 오소독스이고
Figure 112008067029703-PCT00120
인 경우,
Figure 112008067029703-PCT00121
이다.
프루프 스케치 : 단계 관계
Figure 112008067029703-PCT00122
상의 케이스 분석에 의함. check(A) 를 실행하는 케이스에서, 규칙 (39) 의 역에 의해,
Figure 112008067029703-PCT00123
이다. 예상된 결과
Figure 112008067029703-PCT00124
=
Figure 112008067029703-PCT00125
는 정책 일치의 규정으로부터 직접 따른다. 모든 다른 케이스에서, 규칙 (38) 의 역에 의해,
Figure 112008067029703-PCT00126
이다. 규칙 (14) 상의 추가적인 역에 의해,
Figure 112008067029703-PCT00127
(act(A) 를 실행하는 케이스는 W 가 오소독스이기 때문에 불가능함). 정책들상의 결정적인 요구로 인해,
Figure 112008067029703-PCT00128
이다.
안전 이론은 이들 주제로부터 본질적으로 따른다.
이론 2 (안전)
Figure 112008067029703-PCT00129
가 일치함을 가정한다. W 가 오소독스이고
Figure 112008067029703-PCT00130
Figure 112008067029703-PCT00131
인 경우,
Figure 112008067029703-PCT00132
이다.
프루프 스케치 : 멀티 단계 관계
Figure 112008067029703-PCT00133
상의 구조적 인덕션에 의함. 빈 (empty) 출력 동작 및 0 단계의 기본 케이스는 트리비얼하다. 인덕티브 (inductive) 케이스에서,
Figure 112008067029703-PCT00134
,
Figure 112008067029703-PCT00135
, 및
Figure 112008067029703-PCT00136
가 존재하여,
Figure 112008067029703-PCT00137
:
Figure 112008067029703-PCT00138
:, 및
Figure 112008067029703-PCT00139
이고,
Figure 112008067029703-PCT00140
Figure 112008067029703-PCT00141
이다. 주제 3 에 의해,
Figure 112008067029703-PCT00142
이다.
Figure 112008067029703-PCT00143
는 정책 일치의 규정 및 가정에 의해 일치한다.
Figure 112008067029703-PCT00144
은 주제 2 에 의해 오소독스이다. 인덕션 가설에 의해,
Figure 112008067029703-PCT00145
이다. 정책 만족의 규정에 의해,
Figure 112008067029703-PCT00146
이다.
인스트루멘테이션의 관점으로부터, 임의의 W 에 대해
Figure 112008067029703-PCT00147
가 안전함을 확립하는 것이 바람직하다. 이것은
Figure 112008067029703-PCT00148
가 주제 1 에 의해 오소독스이기 때문에, 주제 2 의 결론과 같이 따른다.
투명성 이론을 공식화하기 위해, 상기 규정된 멀티 단계 관계가 인스트루멘테이션 확장 이전에 이용된다. 이것은 인가하는 스크립트가 정책 모듈에 대한 지식없이 민감한 코어 스크립트 (또는 자바 스크립트) 프로그램이 되어야 한다는 직관을 반영한다. 로킹된 (lock) 단계 주제는, 오리지널 코드가 정책을 만족시키는 케이스에서, 인스트루멘테이션된 코드의 단일의 단계 실행을 오리지널 코드의 단일의 단계 실행과 관련시키기 위해 도입된다.
주제 4 ( 로킹된 단계)
Figure 112008067029703-PCT00149
이고
Figure 112008067029703-PCT00150
인 경우,
Figure 112008067029703-PCT00151
,
Figure 112008067029703-PCT00152
이다.
프루프 스케치 : 문서들의 구조상의 인덕션으로, 단계 관계
Figure 112008067029703-PCT00153
의 규정에 의함.
Figure 112008067029703-PCT00154
의 포커스은 W 의 포커스에 대응하여 트리 노드를 말한다.
write(E) 가 W 의 포커스인 케이스에서, instr(E) 는
Figure 112008067029703-PCT00155
의 포커스가 될 것이다. instr(E) 가 가변 환경을 이용하고 인스트루멘테이션된 결과 문서를 리턴하는 것을 제외하고, write 및 instr 의 연산 의미들은 아규먼트 E 상에 유사한 평가를 수행한다. 출력 동작
Figure 112008067029703-PCT00156
는 양 케이스에서
Figure 112008067029703-PCT00157
이다. (ⅰ) 규칙 (37) 를 따르고
Figure 112008067029703-PCT00158
을 획득하기 위해 이용된 것과 동일한 핸들 h 를 선택함으로써, (ⅱ) 다시 기존의 단일 단계 관계
Figure 112008067029703-PCT00159
Figure 112008067029703-PCT00160
을 말하는 규칙 (38) 을 따름으로써, 그 후, (ⅲ) 인스트루멘테이션된 버전으로 대체된 다양한 콤포넌트들로
Figure 112008067029703-PCT00161
을 획득하기 위해 이용된
Figure 112008067029703-PCT00162
의 유도를 따름으로써
Figure 112008067029703-PCT00163
Figure 112008067029703-PCT00164
유도를 수행할 수 있다.
act(A) 가 W 의 포커스인 케이스에서, check(A) 는 의 포커스가 될 것이다. act 및 check 모두 빈 문자열을 생성하여 포커스 트리 노드를 대체한다. act(A) 의 연산 의미론들은
Figure 112008067029703-PCT00166
에 대한
Figure 112008067029703-PCT00167
를 평가한다 (규칙 (14)). check(A) 의 연산 의미론들은
Figure 112008067029703-PCT00168
에 대한
Figure 112008067029703-PCT00169
를 평가하고 정책에
Figure 112008067029703-PCT00170
를 피드한다 (규칙 (39)). 가정에 의해,
Figure 112008067029703-PCT00171
이다. 따라서, 일 실시형태에서, 이러한 케이스에서 act 및 check 는 동일한 출력 동작을 생성한다. check(A) 의 연산 의미론들은 매크로 step
Figure 112008067029703-PCT00172
에 추가적으로 적용하여 월드 콤포넌트들을 업데이트한다. 따라서, 2 개의 감소들의 추가적인 유도들은 동일한 구조를 따른다.
모든 다른 케이스에서,
Figure 112008067029703-PCT00173
Figure 112008067029703-PCT00174
가 동일한 명령들을 실행한다. 인스트루멘테이션된 감소의 유도는 오리지널 감소의 유도를 따른다. 투명성 이론은 로킹 단계 주제로부터 본질적으로 따른다.
이론 3 (투명성)
Figure 112008067029703-PCT00175
이고
Figure 112008067029703-PCT00176
인 경우,
Figure 112008067029703-PCT00177
Figure 112008067029703-PCT00178
이다.
프루프 스케치 : 멀티 단계 관계
Figure 112008067029703-PCT00179
상의 구조적 인덕션에 의함. 빈 출력 동작 및 0 단계의 기본 케이스는 트리비얼하다. 인덕티브한 케이스에서,
Figure 112008067029703-PCT00180
Figure 112008067029703-PCT00181
가 존재하여
Figure 112008067029703-PCT00182
Figure 112008067029703-PCT00183
이다. 가정
Figure 112008067029703-PCT00184
Figure 112008067029703-PCT00185
및 정책 만족의 규정에 의해,
Figure 112008067029703-PCT00186
이 존재하여,
Figure 112008067029703-PCT00187
Figure 112008067029703-PCT00188
이다. 주제 4 에 의해,
Figure 112008067029703-PCT00189
이다. 인덕션 가설에 의해,
Figure 112008067029703-PCT00190
이다. 규칙 (36) 에 의해,
Figure 112008067029703-PCT00191
Figure 112008067029703-PCT00192
이다.
상기 투명성 이론에서, 오리지널 월드 W 는, 인가하는 스크립트가 정규 자바 스크립트에서 재기록되는 것을 반영하는, 인스트루멘테이션 및 정책 인터페이스들을 말하지 않는다. 투명성 이론의 변수는,
이론 4 (확장된 투명성)
Figure 112008067029703-PCT00193
Figure 112008067029703-PCT00194
인 경우,
Figure 112008067029703-PCT00195
과 같이, 인스트루멘테이션 및 정책 인터페이스들을 의미하는 인가하는 스크립트를 허용하도록 공식화될 수 있다.
이 이론은 W 가 언오소독스 (unothodox) 가 되도록 허용하여, W 가 write, act, instr 및 check 의 조합을 포함할 수도 있다. 이 이론의 프루프는 유사하게 확장된 엄밀한 주제를 요구한다. 이 이론 (instr 및 check) 에 의해 허용된 2 개의 새로운 케이스들상에서 재기록은 필수적으로 식별 함수이기 때문에, 프루프 확장은 직접적이다.
컴퓨터 시스템의 일 예
도 15 는 본 명세서에서 개시된 동작들 중 하나 이상을 수행할 수도 있는 예시적인 컴퓨터 시스템의 블록도이다. 도 15 를 참조하면, 컴퓨터 시스템 (1500) 은 예시적인 클라이언트 또는 서버 컴퓨터 시스템을 포함할 수도 있다. 컴퓨터 시스템 (1500) 은 정보를 통신하는 버스 (1511) 또는 통신 메카니즘, 및 정보를 프로세싱하는 버스 (1511) 와 커플링된 프로세서 (1512) 를 포함한다. 프로세서 (1512) 는 마이크로 프로세서를 포함하지만, 예를 들어, PentiumTM, PowerPCTM, AlphaTM 등과 같은 마이크로 프로세서에 한정되지 않는다.
시스템 (1500) 은 랜덤 액세스 메모리 (RAM), 또는 프로세서 (1512) 에 의해 실행될 정보 및 명령들을 저장하는, 버스 (1511) 에 커플링된 다른 동적 저장 디바이스 (1504; 메인 메모리로서 지칭됨) 를 더 포함한다. 메인 메모리 (1504) 는 또한, 프로세서 (1512) 에 의한 명령들의 실행 동안 일시적인 변수들 또는 다른 중간 정보를 저장하기 위해 이용될 수도 있다.
컴퓨터 시스템 (1500) 은 판독 전용 메모리 (ROM) 및/또는 프로세서 (1512) 에 대한 정적 정보 및 명령들을 저장하는, 버스 (1511) 에 커플링된 정적 저장 디바이스 (1506), 및 자기 디스크 또는 광 디스크 및 이의 대응 디스크 드라이브와 같은 데이터 저장 디바이스 (1507) 를 포함한다. 정보 및 명령들을 저장하는 데이터 저장 디바이스 (1507) 가 버스 (1511) 에 커플링된다.
컴퓨터 시스템 (1500) 은 또한 컴퓨터 사용자에게 정보를 디스플레이하는, 버스 (1511) 에 커플링된 음극선관 (CRT) 또는 액정 디스플레이 (LCD) 와 같은 디스플레이 디바이스 (1521) 에 커플링될 수도 있다. 숫자 및 다른 키들을 포함하는 숫자 입력 디바이스 (1522) 는 프로세서 (1512) 에 정보 및 명령 선택을 통신하기 위해 버스 (1511) 에 커플링될 수도 있다. 추가적인 사용자 입력 디바이스는, 프로세서 (1512) 에 방향 정보 및 명령 선택을 통신하고, 디스플레이 (1521) 상에 커서 이동을 제어하기 위해 버스 (1511) 에 커플링된, 마우스, 트랙볼, 트랙패드, 스타일러스, 또는 커서 방향 키들과 같은 커서 제어 (1523) 이다.
버스 (1511) 에 커플링될 수도 있는 또 다른 디바이스는, 종이, 필름, 또는 유사한 유형의 매체와 같은 매체 상에 정보를 마킹하기 위해 이용될 수도 있는 하드 복사 디바이스 (1524) 이다. 버스 (1511) 에 커플링될 수도 있는 또 다른 디바이스는, 전화기 또는 휴대용 팜 (palm) 디바이스에 통신하는 유/무선 통신 용량 (1525) 이다.
시스템 (1500) 의 임의의 또는 모든 콤포넌트들 및 관련 하드웨어는 본 발명에서 이용될 수도 있다. 그러나, 컴퓨터 시스템의 다른 구성들은 이 디바이스들의 일부 또는 모두를 포함할 수도 있다.
본 발명의 다수의 변경들 및 수정들이 앞선 설명을 읽은 후 당업자에게 의심 없이 명백해질 것이지만, 설명의 방법에 의해 개시되고 도시된 임의의 특정 실시형태는 제한하는 것으로 의도되지 않는다. 따라서, 다양한 실시형태들의 세부사항에 대한 참조는, 특허 청구범위 자체에서 본 발명에 필수적인 것으로 간주된 이들 특징들만을 인용하는 특허 청구범위의 범위를 제한하도록 의도되지 않는다.

Claims (3)

  1. 자기 수정 코드 (self-modifying code) 를 포함한 스크립트 프로그램이 임베디드된 문서를 다운로딩하는 단계,
    상기 스크립트 프로그램을 검사하는 단계; 및
    상기 스크립트 프로그램의 실행으로부터 유발된 거동이 안전 및 보안을 규정하는 하나 이상의 정책들에 합치하도록 상기 스크립트 프로그램을 재기록하는 단계를 포함하는, 방법.
  2. 보안 정책을 구현하는 정책 관리 모듈;
    상기 보안 정책에 기반하여 문서에 임베디드된 스크립트 프로그램을 재기록하는 재기록 프로세스를 수행하는 재기록 모듈로서, 상기 스크립트 프로그램은 자기 수정 코드를 포함하고, 상기 재기록 프로세스는, 상기 스크립트 프로그램의 실행으로부터 유발된 거동이 안전 및 보안 요건들에 합치하도록, 상기 문서에서의 스크립트 프로그램을 제어하기 위해 하나 이상의 정책들에 기반하여 상기 문서를 인스트루멘테이션하는, 상기 재기록 모듈; 및
    재기록 동안 상기 스크립트 프로그램에 부가된 명령들을 해석하는 해석 모듈을 포함하는, 프록시.
  3. 명령들을 저장하는 하나 이상의 머신 판독가능 매체를 갖는 제품으로서, 상 기 명령들은, 머신에 의해 실행되는 경우, 상기 머신으로 하여금,
    자기 수정 코드 (self-modifying code) 를 포함한 스크립트 프로그램이 임베디드된 문서를 다운로딩하게 하고;
    상기 스크립트 프로그램을 검사하게 하며; 그리고,
    상기 스크립트 프로그램의 실행으로부터 유발된 거동이 안전 및 보안을 규정하는 하나 이상의 정책들에 합치하도록 상기 스크립트 프로그램을 재기록하게 하는, 하나 이상의 머신 판독가능 매체를 갖는 제품.
KR1020087023285A 2006-06-26 2007-06-21 문서들에 임베디드된 스크립트의 거동을 제한하는 프로그램인스트루멘테이션 방법 및 장치 KR101019938B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US81667906P 2006-06-26 2006-06-26
US60/816,679 2006-06-26
US11/765,918 US20080083012A1 (en) 2006-06-26 2007-06-20 Program instrumentation method and apparatus for constraining the behavior of embedded script in documents
US11/765,918 2007-06-20

Publications (2)

Publication Number Publication Date
KR20080104155A true KR20080104155A (ko) 2008-12-01
KR101019938B1 KR101019938B1 (ko) 2011-03-09

Family

ID=38752368

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087023285A KR101019938B1 (ko) 2006-06-26 2007-06-21 문서들에 임베디드된 스크립트의 거동을 제한하는 프로그램인스트루멘테이션 방법 및 장치

Country Status (5)

Country Link
US (1) US20080083012A1 (ko)
EP (1) EP2035996B1 (ko)
JP (1) JP4934722B2 (ko)
KR (1) KR101019938B1 (ko)
WO (1) WO2008002456A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210049308A (ko) * 2019-10-25 2021-05-06 소프트캠프 주식회사 문서 파일에 구성된 매크로의 악성코드 감염 확인 방법과 시스템

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
EP1950900A4 (en) * 2005-10-28 2010-01-20 Sharp Kk TRANSMITTER, COMMUNICATION SYSTEM AND TRANSMISSION METHOD
US7823164B2 (en) * 2007-06-01 2010-10-26 Microsoft Corporation Automated generation of different script versions
US10019570B2 (en) 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US9906549B2 (en) * 2007-09-06 2018-02-27 Microsoft Technology Licensing, Llc Proxy engine for custom handling of web content
US8560938B2 (en) 2008-02-12 2013-10-15 Oracle International Corporation Multi-layer XML customization
US9686288B2 (en) * 2008-01-25 2017-06-20 Ntt Docomo, Inc. Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks
US8966465B2 (en) 2008-02-12 2015-02-24 Oracle International Corporation Customization creation and update for multi-layer XML customization
US8538998B2 (en) 2008-02-12 2013-09-17 Oracle International Corporation Caching and memory optimizations for multi-layer XML customization
US8875306B2 (en) * 2008-02-12 2014-10-28 Oracle International Corporation Customization restrictions for multi-layer XML customization
US8788542B2 (en) * 2008-02-12 2014-07-22 Oracle International Corporation Customization syntax for multi-layer XML customization
US8782604B2 (en) * 2008-04-11 2014-07-15 Oracle International Corporation Sandbox support for metadata in running applications
US8667031B2 (en) * 2008-06-13 2014-03-04 Oracle International Corporation Reuse of shared metadata across applications via URL protocol
KR101027928B1 (ko) * 2008-07-23 2011-04-12 한국전자통신연구원 난독화된 악성 웹페이지 탐지 방법 및 장치
US8522200B2 (en) 2008-08-28 2013-08-27 Microsoft Corporation Detouring in scripting systems
US8996658B2 (en) * 2008-09-03 2015-03-31 Oracle International Corporation System and method for integration of browser-based thin client applications within desktop rich client architecture
US8799319B2 (en) 2008-09-19 2014-08-05 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US9122520B2 (en) 2008-09-17 2015-09-01 Oracle International Corporation Generic wait service: pausing a BPEL process
EP2350865A4 (en) * 2008-09-30 2014-12-31 Avfinity Llc COMPUTER-READABLE MEDIUM FOR TRANSLATING PROTOCOLS
US8332654B2 (en) * 2008-12-08 2012-12-11 Oracle International Corporation Secure framework for invoking server-side APIs using AJAX
US8856737B2 (en) 2009-11-18 2014-10-07 Oracle International Corporation Techniques for displaying customizations for composite applications
US8819817B2 (en) * 2011-05-25 2014-08-26 Apple Inc. Methods and apparatus for blocking usage tracking
US8949992B2 (en) * 2011-05-31 2015-02-03 International Business Machines Corporation Detecting persistent vulnerabilities in web applications
US8943476B2 (en) * 2011-06-14 2015-01-27 Google Inc. System and method to in-line script dependencies
WO2013028438A1 (en) * 2011-08-22 2013-02-28 Decoteau Don System and method for dynamically assembling an application on a client device
US8954942B2 (en) 2011-09-30 2015-02-10 Oracle International Corporation Optimizations using a BPEL compiler
US10025928B2 (en) * 2011-10-03 2018-07-17 Webroot Inc. Proactive browser content analysis
US8806574B2 (en) * 2011-10-05 2014-08-12 Hewlett-Packard Development Company, L.P. System and method for policy conformance in a web application
GB2496107C (en) * 2011-10-26 2022-07-27 Cliquecloud Ltd A method and apparatus for preventing unwanted code execution
US9246947B2 (en) * 2013-04-03 2016-01-26 Crimson Corporation Method and apparatus for protecting access to corporate applications from a mobile device
WO2015041578A1 (en) * 2013-09-18 2015-03-26 Telefonaktiebolaget L M Ericsson (Publ) Handling digital advertisements in a communication network
WO2016056054A1 (ja) * 2014-10-06 2016-04-14 株式会社シンメトリック Webページの表示のためのプログラム、端末装置、およびサーバ装置
US10394530B1 (en) 2014-10-13 2019-08-27 Tilden Tech Holdings LLC Computer readable medium for translating protocols with autonomous script writer
US9390285B1 (en) * 2015-06-09 2016-07-12 Hortonworks, Inc. Identifying inconsistent security policies in a computer cluster
US10033747B1 (en) * 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US10909186B2 (en) 2015-09-30 2021-02-02 Oracle International Corporation Multi-tenant customizable composites
RU2634171C1 (ru) * 2016-12-12 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ выполнения кода интерпретатором
US10275596B1 (en) * 2016-12-15 2019-04-30 Symantec Corporation Activating malicious actions within electronic documents
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11178112B2 (en) * 2019-07-23 2021-11-16 Microsoft Technology Licensing, Llc Enforcing security policies on client-side generated content in cloud application communications
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11947677B2 (en) * 2020-09-03 2024-04-02 Oracle International Corporation Dynamic taint tracking in abstract syntax tree interpreters
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11456914B2 (en) * 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US8225408B2 (en) * 1997-11-06 2012-07-17 Finjan, Inc. Method and system for adaptive rule-based content scanners
US6311327B1 (en) * 1998-03-02 2001-10-30 Applied Microsystems Corp. Method and apparatus for analyzing software in a language-independent manner
US6249907B1 (en) 1998-03-24 2001-06-19 International Business Machines Corporation Method system and article of manufacture for debugging a computer program by encoding user specified breakpoint types at multiple locations in the computer program
US6931631B2 (en) 2001-06-27 2005-08-16 International Business Machines Corporation Low impact breakpoint for multi-user debugging
US7315903B1 (en) * 2001-07-20 2008-01-01 Palladia Systems, Inc. Self-configuring server and server network
US20030097378A1 (en) * 2001-11-20 2003-05-22 Khai Pham Method and system for removing text-based viruses
US20030101381A1 (en) * 2001-11-29 2003-05-29 Nikolay Mateev System and method for virus checking software
JP4232431B2 (ja) * 2002-10-18 2009-03-04 株式会社日立製作所 ブラウザー関連のセキュリティチェックプログラム
US7107580B2 (en) * 2003-01-07 2006-09-12 Intel Corporation Binary translation of self-modifying code
US7401323B2 (en) * 2003-04-21 2008-07-15 Microsoft Corporation Just-My-Code debugging
JP4789933B2 (ja) * 2004-06-04 2011-10-12 フォーティファイ ソフトウェア, エルエルシー セキュアーソフトウェアを開発し、テストし、監視するための装置および方法
US8555061B2 (en) * 2005-05-13 2013-10-08 Microsoft Corporation Transparent code
US8225392B2 (en) * 2005-07-15 2012-07-17 Microsoft Corporation Immunizing HTML browsers and extensions from known vulnerabilities
US20070107057A1 (en) * 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
US7752613B2 (en) * 2006-12-05 2010-07-06 Intel Corporation Disambiguation in dynamic binary translation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210049308A (ko) * 2019-10-25 2021-05-06 소프트캠프 주식회사 문서 파일에 구성된 매크로의 악성코드 감염 확인 방법과 시스템

Also Published As

Publication number Publication date
JP4934722B2 (ja) 2012-05-16
WO2008002456A3 (en) 2008-03-13
EP2035996B1 (en) 2012-03-21
WO2008002456A2 (en) 2008-01-03
KR101019938B1 (ko) 2011-03-09
EP2035996A2 (en) 2009-03-18
US20080083012A1 (en) 2008-04-03
JP2009541898A (ja) 2009-11-26

Similar Documents

Publication Publication Date Title
KR101019938B1 (ko) 문서들에 임베디드된 스크립트의 거동을 제한하는 프로그램인스트루멘테이션 방법 및 장치
JP5478513B2 (ja) ブラウザベースのアタックに対するウェブコンテンツインスツルメンテーションのためのセキュリティポリシーを構築する方法及び装置
US9058489B2 (en) Marking documents with executable text for processing by computing systems
Guha et al. Verified security for browser extensions
EP2092424B1 (en) Locating security vulnerabilities in source code
US7757282B2 (en) System and method for distinguishing safe and potentially unsafe data during runtime processing
US8869106B2 (en) Language service provider management using application context
US7730455B2 (en) Method and apparatus for enforcing safety properties of computer programs by generating and solving constraints
US20110185427A1 (en) Safely processing and presenting documents with executable text
EP1627303A2 (en) Method ans system for detecting vulnerabilities in source code
US6951014B1 (en) Method and apparatus for representation of a JavaScript program for execution by a JavaScript interpreter
Prokhorenko et al. Context-oriented web application protection model
D'antoni et al. Fast: A transducer-based language for tree manipulation
Ter Louw et al. SafeScript: JavaScript transformation for policy enforcement
Almashfi et al. Static taint analysis for javascript programs
Hallé et al. Exhaustive exploration of ajax web applications with selective jumping
Al-Turki Rewriting-based formal modeling, analysis and implementation of real-time distributed services
Eckmann et al. STATL definition
Rojas et al. Custom Elements
Johnson Verifying security properties using type-qualifier inference
Fischer et al. Privacy from untrusted web servers
Tateishi et al. Secure behavior of web browsers to prevent information leakages
Dhawan Rethinking web platform extensibility
Lester Verifying information flow and metaprogramming in dynamically typed languages
Burdette The JavaScript Pocket Guide

Legal Events

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

Payment date: 20140204

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee