KR101757697B1 - 실행 가능 텍스트를 갖는 문서의 표시 장치 및 방법 - Google Patents

실행 가능 텍스트를 갖는 문서의 표시 장치 및 방법 Download PDF

Info

Publication number
KR101757697B1
KR101757697B1 KR1020100060175A KR20100060175A KR101757697B1 KR 101757697 B1 KR101757697 B1 KR 101757697B1 KR 1020100060175 A KR1020100060175 A KR 1020100060175A KR 20100060175 A KR20100060175 A KR 20100060175A KR 101757697 B1 KR101757697 B1 KR 101757697B1
Authority
KR
South Korea
Prior art keywords
text
document
untrusted
executable
computing system
Prior art date
Application number
KR1020100060175A
Other languages
English (en)
Other versions
KR20110087195A (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 KR20110087195A publication Critical patent/KR20110087195A/ko
Application granted granted Critical
Publication of KR101757697B1 publication Critical patent/KR101757697B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/106Display of layout of documents; Previewing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2119Authenticating web pages, e.g. with suspicious links

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Virology (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

컴퓨팅 장치에서 실행되며 실행 가능 텍스트(executable text)를 포함하는 문서를 처리하는 방법이 제공된다. 본 발명의 일 양상에 따라 문서 처리 방법은 문서가 처리되는 경우 또는 문서가 처리중인 경우, 문서 내의 실행 가능 텍스트가 신뢰할 수 없는 컨텐츠를 포함하는 비신뢰 컨텐츠(untrusted content)로부터 유래된 것인지 및/또는 비신뢰 컨텐츠에 의해 영향을 받는지 여부를 결정하는 단계, 및 실행 가능 텍스트가 비신뢰 컨텐츠로부터 유래되거나 비신뢰 컨텐츠에 의해 영향을 받는 경우, 실행 가능 텍스트를 비신뢰 컨텐츠로 확인하는 단계를 포함할 수 있다.

Description

실행 가능 텍스트를 갖는 문서의 표시 장치 및 방법{Apparatus and Method for marking documents with executable text}
실행 가능 텍스트(executable text)를 처리하기 위한 기술과 관련된다.
개념적으로, 컴퓨팅 시스템(예컨대, 컴퓨팅 디바이스, 개인용 컴퓨터, 랩탑, 스마트폰, 모바일폰)은 컨텐츠 또는 데이터와 같은 정보를 수용하고 수용된 정보를 어떻게 처리할지를 설명한 명령어 시퀀스 또는 컴퓨터 프로그램을 기반으로 그것을 조작하여 어떤 결과를 획득한다. 전형적으로, 정보는 바이너리 형태로 컴퓨터 판독 가능한 매체에 저장된다. 더 복잡한 컴퓨팅 시스템은 컴퓨터 프로그램 자체를 포함하는 컨텐츠를 저장할 수도 있다. 컴퓨터 프로그램은 변하지 아니할 수 있다. 또한 컴퓨터 프로그램은 마이크로프로세서 또는 컴퓨터 칩으로 제공되는 논리 회로와 같은 컴퓨터 장치에 설치될 수 있다. 오늘날, 범용 컴퓨터는 두 종류의 프로그래밍을 가질 수 있다. 컨텐츠 저장 또는 정보의 보유는 컴퓨팅 디바이스의 주요 기능 중 하나이다. 오늘날, 다양한 종류의 컴퓨팅 디바이스들이 사용된다. 이러한 컴퓨팅 디바이스는 크기, 가격, 저장 능력, 및 프로세싱 파워 등에 있어서 매우 다양하다. 컴퓨팅 디바이스는 고가의 파워풀한 서버, 저가의 개인용 PC, 및 저장 장치, 차량 및 가정 기기 등에 탑재되는 마이크로프로세서 등을 포함한다.
오늘날, 인터넷은 다양한 어플리케이션을 위해 사용되고 있고 일반 대중은 이 인터넷을 통해 컨텐츠에 접근하는 것에 익숙해져 있다. 특히 상업 및 공공 웹 사이트는 수 년간 이용 가능하게 되었다. 전형적으로, 웹 브라우저(예컨대, 인터넷 익스플로어, 모질라 파이어폭스)는 인터넷과 상호작용하기 위해 사용된다. 웹 브라우저는, 예컨대, 월드 와이드 웹(World Wide Web) 상에서 정보 자원을 검색하고, 제시하고, 트래버스하기 위한 소프트웨어 어플리케이션으로써 제공될 수 있다. 웹 사이트와 같은 정보 자원은 URL(Uniform Resource Identifier)에 의해 식별될 수 있다. 정보 자원은, 예컨대, 이미지, 비디오, 텍스트 및 다른 형태의 컨텐츠를 포함할 수 있다. 하이퍼링크는 현재 자원이 될 수도 있고 사용자가 쉽게 브라우저를 관련 자원을 찾게 만들어 줄 수도 있다.
HTML(Hyper Text Markup Language)는 웹 페이지를 위한 주된 마크업(markup) 언어이다. HTML은 텍스트, 링크, 인용 및 다른 항목 등에 대한 구조적 의미를 나타내서 구조화된 문서를 생성할 수 있다. HTML은 또한 이미지 및 오브젝트가 인터렉티브 형태를 생성하도록 만들 수도 있다. 전형적으로, 웹 페이지는 HTML 형태로 쓰여지는데 HTML 요소는 웹 페이지 컨텐츠 내의 앵글 브라켓(angle bracket)에 의해 둘러싸인 "태그들"로 구성될 수 있다.
일반적인 웹 브라우저는 정적이고 비교적 간단하게 하이퍼링크로 문서를 랜더링하도록 고안된다. 이후, 자바 스크립트(JavaScript)와 같은 스크립팅 프로토콜(scripting protocols)이 개발되면서 스크립트가 사용자 인터렉션 및 애니메이션 메뉴를 지원하기 위한 동적 기능을 제공하기 위해 자원 내에 포함되는 것도 가능해졌다.
AJAX(Asynchronous JavaScript and Extensible Markup Language)는 인터렉티브 웹 어플리케이션 개발을 위해 클라이언트 측에서 사용되는 상호 웹 개발 기술의 그룹으로 고려될 수 있다. AJAX 기술의 사용은 웹 페이지의 인터렉티브 또는 다이너믹 인터페이스를 급격하게 증가시켜주는 것으로 알려져 있다. 오늘날, AJAX 어플리케이션은 속도 및 성능 면에서 데스크탑 어플리케이션의 라이벌이 될 수도 있다.
오늘날, 실행 가능한 코드(예컨대, 자바 스크립트)를 갖는 웹 페이지를 처리하는 것은 비교적 복잡하고 그 결과 수 년간 더 복잡한 웹 브라우저가 개발되었다. 도 1a는 전형적인 웹 브라우저의 간단한 동작을 도시한다. 도 1a를 참조하면, 자원(예컨대, 웹 페이지)은 웹 서버(10)로부터 다운로드 된다. 웹 페이지로부터의 이미지는 이미지 분리기(12)에 의해 분리된다. 그리고 웹 페이지는 DOM(document object model) 파서(14)로 입력된다. DOM 파서(14)는 웹 페이지를 DOM 데이터 구조(16)(예컨대, DOM 트리)로 파싱한다. DOM 데이터 구조(16)는 문서의 구문 트리를 나타낼 수 있다. 웹 페이지에 의해 참조되는 컨텐츠는 웹 서버(10)로부터 패치(fetch)되고, DOM에 인-라인(in-lined)된다. 페이지 표시에 필요한 컨텐츠가 다운로드되고 압축복원됨에 따라 웹 페이지는 이용 가능하게 된다. 전형적으로, 웹 페이지 레이아웃은 점진적으로 풀어지고 표시된다. 레이아웃 모듈(18)은 이미지 디코더(11)의 디코딩에 따라 웹 페이지 구성의 레이아웃을 수행한다. 렌더링 모듈(20)은 웹 페이지를 브라우저 윈도우에 렌더링한다.
최초 페이지가 로드된 이후에, 스크립트(15)는 사용자 입력 또는 서버 메시지에 의해 생성된 이벤트에 응답한다. 이때, 스크립트(15)는 이벤트에 기반하여 DOM 데이터 구조(16)를 덮어쓸 수도 있다. 이러한 경우, 페이지 레이아웃은 다시 계산되고 다시 그려진다.
일반적으로, HTML 페이지의 로딩은 연속적인 이벤트를 야기시킬 수 있다. 즉 HTML 페이지는 스캔되고, 파싱되고, 또한 문서의 구문 트리를 나타내는 DOM으로 컴파일될 수 있다. URL에 의해 참조되는 컨텐츠는 패치되고 DOM에 인라인될 수 있다. 페이지 표시를 위해 필요한 컨텐츠가 이용 가능하게 됨에 따라 페이지 레이아웃은 점진적으로 풀어지고 스크린에 표시된다. HTML 페이지의 초기 로딩 이후에, 스크립트는 생성된 이벤트에 응답하는데, 이에 다라 DOM이 수정되고 HTML 페이지 레이아웃이 다시 계산되고 다시 그려질 수 있다.
오늘날, 웹 페이지는 대부분 HTML 언어로 쓰여진다. 간단한 HTML 페이지의 예를 살펴보면 아래와 같다.
<HTML>
<HEAD>
<TITLE>My first HTML document</TITLE>
</HEAD>
<BODY>
<P>Hello world!
</BODY>
</HTML>
브라우저가 웹 서버로부터 이러한 HTML 페이지를 휙득하면, 브라우저는 페이지를 토큰화(tokenize)한다. 어떤 "lexer/tokenizer"는 페이지를 처리하고 페이지의 토큰을 추출할 수 있다. 위 예에서 토큰은 "<HTML>", "<HEAD>", "<TITLE>", "My first HTML document", "</TITLE>", "</HEAD>", "<BODY>", "<P>", "Hello world!", "</BODY>" 및 </HTML>"이다. 파서(parser)는 이러한 토큰을 사용해서 DOM 트리를 구성하고 푸쉬 다운(push-down) 기법을 기반으로 문서의 유효성을 체크한다. 더 구체적으로, HTML 페이지의 DOM 트리의 구조의 예는 도 1b와 같다.
실행 가능한 콘텐츠 및 실행 불가능한 콘텐츠를 포함하는 웹 페이지 및 문서의 대중성은 일상 생활에서의 그 사용의 증가에 의해 증명된다. 따라서 웹 페이지 및 문서를 처리하기 위한 개선된 기술은 더 유용할 것이다.
실행 가능한 콘텐츠 및 실행 불가능한 콘텐츠를 포함하는 웹 페이지 및 문서를 처리하기 위한 장치 및 방법이 제공된다.
본 발명의 일 양상에 따른 방법은, 문서 내의 실행 가능 텍스트(executable text)를 처리 및 실행할 수 있는 컴퓨팅 시스템에 기초하여 상기 문서를 유지 또는 관리하는 방법으로써, 제 1 컴퓨팅 시스템이, 문서 내의 신뢰할 수 없는 텍스트를 지시하도록 문서 내의 텍스트를 비신뢰 텍스트(untrusted text)로 표시하고 제 2 컴퓨팅 시스템이 문서에 기반하여 문서 내의 비신뢰 텍스트를 확인하도록 하는 단계를 포함한다.
본 발명의 일 양상에 따른 장치는, 문서 내의 신뢰할 수 없는 텍스트를 지시하도록 상기 문서 내의 텍스트를 비신뢰 텍스트(untrusted text)로 표시하고, 제 2 컴퓨팅 시스템이 상기 문서에 기반하여 상기 문서 내의 비신뢰 텍스트를 확인하도록 하는 제 1 컴퓨팅 시스템을 포함한다.
본 발명의 일 양상에 따른 컴퓨터로 판독 가능한 저장매체는, 문서 내의 실행 가능 텍스트(executable text)를 처리 및 실행할 수 있는 컴퓨팅 시스템에 기초하여 상기 문서를 유지 또는 관리하기 위한 컴퓨터 코드가 저장된 컴퓨터로 판독 가능한 저장 매체로써, 문서 내의 신뢰할 수 없는 텍스트를 지시하도록 문서 내의 텍스트를 비신뢰 텍스트(untrusted text)로 표시하고, 제 2 컴퓨팅 시스템이 문서에 기반하여 문서 내의 비신뢰 텍스트를 확인하도록 하는 실행 가능 컴퓨터 코드를 포함한다.
개시된 내용에 의하면, 의심스러운 실행 가능 텍스트를 표시하고 이를 전파하기 때문에 문서 처리에 있어서 외부로부터의 공격을 차단하고 안전하게 문서를 처리할 수가 있다.
도 1a은 일반적인 웹 프라우저의 동작을 도시한다.
도 1b는 HTML 페이지의 DOM 트리의 구조의 예를 도시한다.
도 2a는 본 발명의 일 실시예에 따른 컴퓨팅 환경을 도시한다.
도 2b는 본 발명의 일 실시예에 따라 문서 내의 실행 가능한 텍스트의 실행을 제어하기 위한 컴퓨터 구현 방법을 도시한다.
도 3a는 본 발명의 다른 실시예에 따라 컴퓨팅 시스템에 제공되는 실행 모니터 시스템(EMS)을 도시한다.
도 3b는 본 발명의 일 실시예에 따른 문서의 처리 방법을 도시한다.
도 4는 브라우저의 한 부분으로 제공되는 실행 모니터 시스템(EMS)을 도시한다.
도 5a는 본 발명의 일 실시예에 따른 통신 환경 내의 제 1 컴퓨팅 시스템을 도시한다.
도 5b는 본 발명의 일 실시예에 따른 문서의 유지 또는 관리하는 방법을 도시한다.
도 6a는 "uName" 파라미터와 같은 입력 파라미터를 이용하여 웹 페이지를 생성할 수 있는 웹 어플리케이션의 일 예를 도시한다.
도 6b는 본 발명의 일 실시예에 따른 웹 어플리케이션 내의 새로운 HTML 태그 및 길이 속성의 사용을 도시한다.
전술하였듯이, 실행 가능한 컨텐츠 및 실행 불가능한 컨텐츠를 모두 포함하는 형태로 컨텐츠를 제공하는 것은 매우 유용하다. 오늘날, 웹 페이지는 스크립트(예컨대, JavaScrip)의 형태로 실행 가능한 코드 외에 실행 불가능한 컨텐츠를 다양한 형태로 제공하고 있다.
웹 페이지 처리와 관련하여, 자바 스크립트 및 DOM의 사용은 불법적인 그리고 종종 악의적인 스크립 형태의 실행 파일을 인터넷을 통해 클라이언트 컴퓨터로 전달한다. 예를 들어, 일반적인 자바 스크립트 관련 보안 문제로 공격자가 HTML 코드 또는 클라이언트 스크립트 코드를 다수의 희생자에 의해 보여지는 웹 페이지에 주입하는 XSS(cross-site scripting)가 있다. 주입된 코드는 현재 브라우저에서 실행 중인 보안 정책을 우회하기 위하여 타겟 페이지의 동일한 도메인 내에서 실행될 수 있다. 따라서 공격자는 희생자로부터 정보를 훔치기 위해 특정한 코드를 실행하거나 어떤 액션을 수행하는 것이 가능하다.
오늘날, 3가지 종류의 XSS 공격이 알려져있다.
a) Persistent attacks : 공격자는 악의적인 코드를 서버 측의 웹 어플리케이션에 주입하고 그 웹 어플리케이션을 사용하는 모든 사용자에게 영향을 줄 수 있다. 공공 인터넷 포럼 또는 위키 유사 사이트가 전형적인 예이다. 공격자는 일반 텍스트 또는 합법적인 HTML 코드인 자바 스크립트 콘텐츠를 웹 서버 및 모든 사용자 브라우저에 제출한다.
b) Reflective attacks : 사용자 데이터는 동일 사용자에게 보내어지는 임시 페이지를 생성하기 위해 사용될 수 있다. 만약 사용자가 무해한 부분이 적절히 제거되지 아니한 데이터를 제공하고 그 데이터가 악의적인 자바 스크립트 코드를 포함하고 있는 경우, 사용자는 reflective XSS 공격의 대상이 될 수 있다. 간단한 공격 시나리오에 있어서, 공격자는 희생자의 웹 페이지에 전달될 수 있는 악의적인 페이로드를 갖는 URL을 클릭하도록 할 수 있다.
c) DOM-based attacks : 이 종류의 공격은 reflective attack과 유사하다. 서버 측 로직에 의해 악의적인 페이지가 생성되는 것 대신에 공격자는 공격 코드를 전달해서 클라이언트 측 로직에 영향을 준다.
이와 같이 심각한 보안 상의 위협 관점에 있어서, 웹 페이지 처리에 관한 개선된 기술은 매우 유용할 수 있다. 더 일반적으로, 문서 처리에 관한 개선된 기술이 필요할 수 있는데, 이 문서는 실행 가능한 콘텐츠 및 실행 불가능한 콘텐츠 모두를 포함할 수 있다.
실행 가능한 컨텐츠 및 실행 불가능한 컨텐츠를 모두 포함할 수 있는 문서를 처리하기 위한 개선된 기술이 개시된다. 이 기술은 인터넷 사용자에게 심각한 위협을 야기하는 XSS 공격을 효과적으로 다룰 수 있다.
본 발명의 일 양상에 따라, 어떤 문서가 만들어지기 전에 신뢰할 수 없다고 간주되는(deemed not to be trusted or not fully trusted) 컨텐츠가, 실행 가능한 텍스트를 포함할 수 있는 문서 내에서 표시될 수 있다. 문서의 표시는, 신뢰할 수 없는 텍스트가 문서에 기반하여 단독으로 식별될 수 있도록 해준다. 신뢰할 수 없는 텍스트로 표시된 실행 가능한 텍스트의 실행을 허용하지 않는 것을 포함하여 어떤 치료 동작이 행해질 수도 있다. 또한, 표시된 문서가 처리되는 경우, 신뢰할 수 없는 컨텐츠에 의해 제공되거나, 또는 신뢰할 수 없는 컨텐츠에 의해 영향을 받는 코드를 확인하기 위해 신뢰할 수 없다고 간주되는 컨텐츠가 모니터링 될 수 있다. 일 예로써, 문서가 처리되는 경우 또는 문서가 처리 중인 경우, 웹 페이지에 있어서 오염된 것으로 표시된 텍스트에 의해 제공되거나 이러한 텍스트에 의해 영향을 받는 실행 가능한 텍스트(예컨대, 스크립트) 역시 "오염된(tainted)" 것으로 확인될 수 있다.
예를 들어, 본 발명의 일 양상에 따라, 문서는 제 1 컴퓨팅 시스템(예컨대, 서버 장치)에 의해 표시될 수 있다. 특히 신뢰할 수 없는 텍스트가, 실행 가능한 텍스트를 포함할 수 있는 문서 내에서 "신뢰할 수 없는 것(untrusted)"으로 표시될 수 있고, 이것에 의해 제 2 컴퓨팅 시스템이 표시된 문서에 기반하여 비신뢰(untrusted) 텍스트를 확인하는 것이 가능하다.
제 2 컴퓨팅 시스템은, 문서 내의 실행 가능한 텍스트가, 문서 내의 비신뢰 컨텐츠(untrusted content)로부터 유래되거나 그 비신뢰 컨텐츠(untrusted content)에 의해 영향을 받은 것인지 여부를 결정하는 것에 의하여 문서를 처리할 수 있다. 결과적으로, 실행 가능한 텍스트가 비신뢰 텍스트(untrusted text)로부터 유래되거나 그 비신뢰 텍스트(untrusted text)에 의해 영향을 받는다고 결정되는 경우, 실행 가능한 텍스트는 비신뢰 컨텐츠(untrusted content)로 확인될 수 있다. 제 2 컴퓨팅 시스템은 비신뢰 텍스트(untrusted text)로 확인된 실행 가능한 텍스트의 실행을 거부하는 것이 가능하다.
다른 예로써, 컴퓨터로 판독 가능한 저장 매체는 전술한 방법을 수행할 수 있는 컴퓨터 실행 코드를 저장하는 것도 가능하다.
또 다른 예로써, 본 발명의 일 양상에 따라, 통신 환경 또는 컴퓨팅 환경이 제공되는 것이 가능하다. 이러한 환경에 있어서, 제 1 컴퓨팅 시스템(예컨대, 서버)은 비신뢰 텍스트를 확인하고 적절한 동작을 취할 수 있는 제 2 컴퓨팅 시스템(예컨대, 클라이언트)가 문서를 사용하기 전에 문서 내의 텍스트를 비신뢰 텍스트로 표시하는 것이 가능하다. 또한 문서가 처리되는 경우, 제 2 컴퓨팅 시스템이 비신뢰 텍스트를 추적하고 비신뢰 텍스트로부터 유래되거나 비신뢰 텍스트에 의해 영향을 받는 컨텐츠를 확인할 수도 있다.
문서는 웹 페이지가 될 수 있다. 웹 페이지는 인터넷을 통해 클라이언트 장치에 의해 획득될 수 있다. 웹 페이지의 텍스트는 서버 장치에 의해 오염된(tainted) 것으로 표시될 수 있다. 예를 들어, 의심스러운 입력 또는 의심스러운 다른 소스와 관련된 텍스트가, 오염된(tained) 텍스트로 표시될 수 있다. 클라이언트 장치는 웹 페이지를 획득하고 오로지 문서에 기반하여(즉 외부 정보를 요청함이 없이) 오염된(tainted) 텍스트로 표시된 의심스러운(suspicious) 텍스트를 확인할 수 있다. 또한 클라이언트 장치는 효과적으로 오염된 텍스트를 추적할 수 있고 오염된 텍스트로부터 유래되거나 오염된 텍스트에 의해 영향을 받는 어떤 실행 가능한 텍스트를 표시할 수 있다. 예컨대, 텍스트가 할당 연산, 산술 또는 논리 연산, 펑션 콜, 및/또는 제어 플로우 연산 등의 결과로 오염된 텍스트로부터 유래되거나 오염된 텍스트에 의해 영향을 받는 경우 텍스트는 오염된 것으로 간주될 수 있다. 그리고 오염되었다는 표시는 오염된 데이터에 의해 이루어질 수 있는 수정을 추적하기 위해 DOM 트리에 저장 및 추적될 수 있다.
또한 전술한 예들은 DOM 기반의 XSS 공격을 포함하는 XSS 공격에 효과적일 수 있다.
이하 본 발명의 구체적인 실시예들을 도 2a 내지 도 6b를 참조하여 설명한다. 이하에서 설명될 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.
도 2a는 본 발명의 일 실시예에 따른 컴퓨팅 환경(100)을 도시한다. 도 2a를 참조하면, 컴퓨팅 시스템(101)은 데이터(또는 컨텐츠)(102)를 입력(또는 입력 데이터)으로서 처리할 수 있다. 여기서 데이터(102)의 처리란 컴퓨팅 시스템(101)의 디스플레이(104) 상에 실행 불가능한(non-executable) 컨텐츠(102a)를 레이아웃, 랜더링, 및/또는 디스플레이하는 것을 포함할 수 있다. 또한 데이터(102)의 처리란 실행 가능한(executable) 코드(예컨대, 실행 가능한 텍스트, 스크립트 등)(102b)를 실행하는 것을 포함할 수 있다. 컴퓨팅 시스템(101)에 의해 입력 데이터(102)가 처리되는 경우, 실행 불가능한 컨텐츠(102a)는 디스플레이(104) 상에 표시 또는 랜더링되고 실행 가능한 코드(102b)는 실행될 수 있다. 예를 들어, 데이터(102)는 웹 페이지와 같은 문서가 될 수 있으며 실행 불가능한 컨텐츠와 실행 가능한 코드를 모두 포함할 수 있다.
일반적인 기술을 사용한 데이터(102)의 처리는 불법적인 실행 코드(illegitimate executable code)의 실행을 야기할 수도 있다. 예컨대, 데이터(102)가 웹 페이지인 경우, 불법적인 스크립트가 XSS 공격에 따라 데이터(102)에 주입될 수 있다. 또한 실행 가능한 컨텐츠에 꼭 필요하지 아니한 불법적인 컨텐츠의 주입에 따라 데이터(102)를 처리하는 도중에 불법적인 스크립트가 생성될 수도 있다. 이것은 데이터(102)를 처리하는 동안에 불법적인 실행 코드가 적법한 또는 실행 불가능한 컨텐츠와 교체될 수 있음을 의미한다. 다시 말해, 데이터(102)의 처리는 불법적이고 잠재적으로 해로운 실행 코드의 주입을 수반할 수 있게 되는 것이다. 오늘날, 이러한 종류의 코드 주입은 스크립트 형태의 실행 가능한 텍스트, 표시는 가능하지만 실행될 수 없는 컨텐츠 등을 포함할 수 있는 웹 페이지와 같은 문서의 컨텐츠에 널리 퍼져있다. 따라서 컴퓨팅 환경(100)은 실행 가능한 텍스트 및 실행 불가능한 컨텐츠(예컨대, 실행 불가능한 텍스트, 그래픽)를 포함할 수 있는 문서로서 제공되는 입력 데이터(102)의 컨텐츠에 대하여 더 자세하게 논의되어야 할 것이다.
다시 도 2a에서, 데이터(102)는 다른 개체(entitiy)(예컨대, 조직, 회사, 개인 등)(112)에 의해 문서(102)로서 제공될 수 있다. 이 문서(102)는 개체(112)와 연관된 컴퓨팅 시스템(101) 또는 장치(112a)를 통해 컴퓨터 네트워크(111)(예컨대, 인터넷)을 경유하여 다양한 컴퓨팅 시스템에 의해 이용 및 접속될 수 있다. 따라서 문서가 컴퓨팅 시스템(101)에서 실행될 때 불법적인 코드가 이 문서(102)에 주입되고 실행될 수 있다. 컴퓨팅 시스템(101)은, 예컨대, 하나 이상의 프로세서 또는 프로세싱 코어를 갖는 퍼스널 컴퓨터 또는 스마트 폰, 휘발성 및 비휘발성 메모리를 포함하는 컴퓨터 저장 매체 등이 될 수 있다.
실행 감시 시스템(Executable Monitoring System, EMS)(110)은 문서(102) 내의 실행 가능한 코드의 실행을 감시할 수 있다. 예를 들어, 실행 감시 시스템(110)은 신뢰할 수 없는 컨텐츠에 의해 유래되거나 영향을 받을 수 있는 실행 가능한 텍스트를 확인하기 위해 신뢰할 수 없는 문서(102) 내의 컨텐츠를 감시 및/또는 추적하는 것이 가능하다. 문서(102)의 컨텐츠는 문서(102)의 처리 전에 신뢰할 수 없는 컨텐츠로 확인되거나 표시될 수 있다. 실행 감시 시스템(110) 및/또는 컴퓨팅 시스템(101)은 문서(102) 내에서 비신뢰(untrusted) 컨텐츠를 확인 및 표시할 수 있다. 또한 선택적으로 비신뢰(untrusted) 컨텐츠는 후술될 다른 엔티티(112)에 의해 미리 표시될 수도 있다.
도 2a에서, 비신뢰 컨텐츠(120u1)는 문서(120A) 내에서 표시(또는 사전에 표시)된다. 문서(120A)가 처리 중인 경우, 실행 감시 시스템(110)은 문서(120) 내의 다른 컨텐츠가 비신뢰 컨텐츠(120u1)로부터 유발되거나 신뢰할 수 없는 컨텐츠(120u1)로부터 영향을 받는지 여부를 결정할 수 있다. 결과적으로, 문서(120A)가 실행되는 동안, 실행 감시 시스템(110)은 문서(120A) 내의 다른 컨텐츠(120u2)를 비신뢰 컨텐츠로 표시할 수 있다. 그 결과 문서는 도 2a에서 120B와 같이 나타낼 수 있다. 실행 가능한 텍스트의 실행 이전에, 실행 감시 시스템(110)은 문서(120) 내에서 실행 가능한 텍스트가 신뢰할 수 없는 것으로 표시되었는지 여부를 결정하고 그에 따라 적절한 행동을 취할 수 있다. 예를 들어, 실행 감시 시스템(110)은 신뢰할 수 없다고 표시된 실행 가능한 텍스트의 실행을 허락하지 아니할 수 있다. 따라서, 실행 감시 시스템(110)은 비신뢰 컨텐츠(120u1)(120u2)와 연관된 실행 가능한 텍스트의 실행을 허용하지 아니할 수 있다.
도 2b는 본 발명의 일 실시예에 따른 실행 가능한 텍스트의 실행을 조절하는 컴퓨터 구현 방법을 도시한다. 도 2b에서 문서는 실행 불가능한 컨텐츠(예컨대, 실행 불가능한 텍스트 및 이미지)와 실행 가능한 텍스트(예컨대, 스크립트)를 포함할 수 있으며, 도시된 방법(150)은 실행 감시 시스템(110)에 의해 수행될 수 있다.
도 2b를 참조하면, 먼저 문서 내의 실행 가능한 텍스트가 신뢰할 수 없는 컨텐츠로부터 유래하거나 신뢰할 수 없는 컨텐츠에 의해 영향을 받는지 여부를 결정한다(152). 이 결정(152)은 문서가 처리되었거나 처리 중인 경우 실행될 수 있다. 만약 문서 내의 실행 가능한 텍스트가 신뢰할 수 없는 컨텐츠로부터 유래하지 않거나 신뢰할 수 없는 컨텐츠에 의해 영향을 받지 아니하면 본 실시예에 따른 방법(150)은 종료될 수 있다.
그렇지만 문서 내의 실행 가능한 텍스트가 신뢰할 수 없는 컨텐츠로부터 유래된 것이거나 신뢰할 수 없는 컨텐츠에 의해 영향을 받은 경우, 실행 가능한 텍스트는 신뢰할 수 없는 것으로 확인되고(154), 실행 가능한 텍스트의 실행에 대한 치료 동작(remedial action)이 취해질 수 있는지 여부를 결정할 수 있다(156). 이 결정(156)은, 예컨대, 설계상 선택을 나타낼 수도 있고 사용자의 선호도 등과 같은 다양한 기준에 따라 만들어질 수도 있다. 따라서 치료 동작이 가능한 경우, 신뢰할 수 없는 것으로 확인된 실행 가능한 텍스트에 대하여 치료 동작이 취해질 수 있다(158). 치료 동작은, 예컨대, 실행 가능한 텍스트의 실행을 허용하지 아니하거나, 실행 가능한 텍스트를 표시하지 아니하거나, 또는 실행 가능한 텍스트의 실행 대신에 공간을 표시하거나 하는 것 등을 포함할 수 있다. 본 실시예에 따른 방법(150)은 치료 동작이 취해진 후에 종료될 수 있다. 또는 치료 동작을 하지 않기로 결정된 경우 치료 동작 없이 종료될 수도 있다.
위에서 살펴본 것과 같이, 실행 가능한 코드 및 실행 불가능한 컨텐츠는 문서의 형태로 존재할 수 있다. 이러한 문서의 예로는 실행 불가능한 텍스트와 실행 가능한 텍스트(예컨대, 스크립트)를 가질 수 있는 웹 페이지가 있다. 이러한 웹 페이지는 다양한 컴퓨팅 환경 및 시스템에 널리 퍼져있기 때문에 실행 감시 시스템(EMS)은 문서를 처리하는 컴퓨팅 환경에 적합할 수 있다.
도 3a는 본 발명의 일 실시예에 따른 실행 감시 시스템(EMS)(202)을 도시한다. 도 3a를 참조하면, 컴퓨팅 시스템(200)은 문서(204)를 처리할 수 있다. 문서(204)는 실행 불가능한 텍스트와 실행 가능한 텍스트를 포함할 수 있다. 문서 처리 코어부(206)는 문서(204)를 처리할 수 있으며 문서에서 제공되는 실행 불가능한 텍스트를 포함하는 컨텐츠가 소정의 디스플레이에 표시되도록 만들 수 있다. 또한, 텍스트 실행부(208)는 문서(204)가 처리되는 동안에 문서(202) 내의 실행 가능한 텍스트를 실행할 수 있다. 개념적으로, 실행 감시 시스템(202)은 표시부(202a), 추적부(202b) 및 텍스트 실행 인터페이스부(202c) 중 적어도 하나 이상을 포함할 수 있다. 표시부(202a)는 신뢰할 수 없는 문서(204) 내의 텍스트를 오염된 텍스트(204t)로 확인 및 표시할 수 있다. 표시부(202a)는 문서(204) 안에서 변경될 수 있는 텍스트를 포함하는 컨텐츠를 오염된 텍스트로 확인 및 표시할 수 있다. 예를 들어, 입력(예컨대, 사용자 입력)에 대응되는 텍스트는 공격자에 의해 쉽게 변경될 수 있는 텍스트로 확인될 수 있다.
또한 문서(204)는 오염된 텍스트(204t)로 미리 표시될 수도 있다. 즉 실행 감시 시스템(202)은 표시부(202a) 없이도 사용될 수 있다. 또한 표시부(202a)는 텍스트를 오염된 텍스트(204t)로 확인 및 표시하는 것을 보충 또는 증가시키는 데에 사용될 수도 있다. 오염된 텍스트(204t)는 정적인 문서 또는 영구적 방식에 따라 표시될 필요가 없다. 표시부(202a)는 오염된 텍스트(204t)를 동적 방식 및/또는 임시적 방식에 따라 표시할 수 있다. 예를 들어, 웹 어플리케이션은 처음에 오염된 텍스트를 포함하지 아니할 수 있으나 사용자가 다운로드 받아서 사용을 하면 사용자는 웹 어플리케이션에 입력으로서 텍스트를 타이핑할 수 있다. 표시부(202a)는 오리지널 문서(204)가 어떤 오염된 텍스트를 포함하지 않더라도 사용자에 의해 제공되는 입력을 오염된 텍스트로 표시할 수 있다. 이러한 경우, 오염된 텍스트(204t)는 영구적 방식으로 메모리에 상주할 필요가 없고 문서(204)의 영구적인 부분이 될 필요도 없다. 결과적으로, 동일한 웹 어플리케이션이 다시 열리는 경우 사용자 입력에 대응되는 오염된 텍스트(204t)는 존재하지 아니할 수 있다.
추적부(202b)는 오염된 텍스트(204t)와의 상호작용의 결과로서 문서 내의 다른 텍스트에게 오염된 텍스트(204t)의 오염된 표시(또는 표식)를 전파할 수 있다. 특히 데이터(예컨대, 변수, 파라미터, 값)를 나타내는 다른 텍스트가 오염된 텍스트(204t)로부터 유래되거나 오염된 텍스트(204t)에 의해 영향을 받는지 또는 오염된 텍스트(204t)와의 상호작용의 결과로 오염되었는지 여부를 결정할 수 있다. 예를 들어, 오염된 변수, 파라미터 및/또는 값(value)를 나타내는 오염된 텍스트를 포함하는 할당의 결과로서 변수, 파라미터 및/또는 값을 나타내는 데이터가 유래될 수 있다. 텍스트 실행 인터페이스부(202c)는 텍스트 실행부(204)가 실행 가능한 텍스트를 실행하기 전에 오염된 것으로 표시된 실행 가능한 텍스트를 확인하기 위해 텍스트 실행부(208)에 인터페이스를 제공할 수 있다. 또한 텍스트 실행 인터페이스부(202c)는 오염된 텍스트(204t)에 대한 치료 동작의 실행 여부를 결정할 수도 있다. 예를 들어, 텍스트 실행 인터페이스부(202c)는 오염된 실행 가능한 텍스트(204t)가 실행 불가능한 텍스트로 표시되도록 결정할 수 있다. 또한 텍스트 실행 인터페이스부(202c)는 텍스트 실행부(208)가 오염된 실행 가능한 텍스트를 실행하는 것을 허용하는 대신에 오염된 실행 가능한 텍스트(204t)가 표시되도록 문서 처리 코어부(206)와 통신을 하는 것도 가능하다. 실행 감시 시스템(202)의 구성요소는 문서 처리 코어부(206)와 텍스트 실행부(208) 사이에서 적절하게 배치될 수 있다.
도 3b는 본 발명의 일 실시예에 따른 문서 처리 방법(250)을 도시한다. 도 3b를 참조하면, 처음에 실행 가능한 텍스트와 실행 불가능한 텍스트를 모두 포함하는 문서가 획득된다(252). 그리고 문서 내에 오염된 텍스트로 표시될 텍스트를 확인할지 여부를 결정한다(254). 이 결정(254)은 예컨대, 설계상 선택을 나타낼 수도 있고 사용자의 선호도 등과 같은 다양한 기준에 따라 만들어질 수도 있다. 만약 확인하지 아니할 것으로 결정되면 문서가 이미 오염된 텍스트로 표시된 텍스트를 포함하고 있는지 여부를 결정한다(256). 문서가 오염된 텍스트를 포함하고 있지 아니하다고 결정되면, 일반적인 방식에 따라 문서가 처리되고(258), 본 실시예에 따른 방법(250)이 종료된다.
그렇지만 문서 내에서 오염된 텍스트로 표시될 텍스트를 확인하는 것으로 결정되는 경우, 텍스트의 실행을 허용하기 전에 문서의 하나 이상의 본문 부분이 오염된 텍스트로 표시되고(260) 오염된 텍스트의 추적이 개시될 수 있다(262). 그리고 오염된 텍스트 또는 이와 연관된 데이터가 오염되지 아니한 텍스트 또는 이 오염되지 아니한 텍스트와 연관된 데이터와 상호작용을 했는지 여부를 결정한다(264). 결과적으로, 문서에서 하나 이상의 본문 부분 또는 그것과 연관된 데이터가 오염된 텍스트 또는 데이터로 표시될 수 있다(266).
문서를 처리하는 동안에, 실행 가능한 텍스트가 실행될 것인지 여부가 결정될 수 있다(268). 그러나 실행 가능한 텍스트가 오염된 것으로 표시되는 경우, 실행 가능한 텍스트는 실행이 허용되지 아니하고(272), 추가적 동작의 실행이 결정되면(274), 추가적 동작이 행해질 수 있다(276). 예를 들어, 실행 가능한 텍스트는 표시되거나 접속될 수 있다. 오염된 것으로 표시되지 아니한 실행 가능한 텍스트는 실행이 허용될 수 있다(278). 본 실시예에 따른 방법(250)은 문서를 처리하는 것을 끝내도록 결정(208)할 때까지 문서 처리를 계속할 수 있다.
오늘날 다양한 컴퓨팅 시스템에 있어서 웹 페이지, 자바 스크립트 및 브라우저가 널리 퍼져있기 때문에 실행 감시 시스템(EMS)은 실행 가능한 텍스트로서 자바 스크립트를 포함하는 웹 페이지를 처리하는 컴퓨팅 환경에 적합할 수 있다. 도 4는 본 발명의 일 실시예에 따라 브라우저(300)의 일 구성으로 제공되는 실행 감시 시스템(302)의 일 예를 도시한다. 실행 감시 시스템(302)은 브라우저(300)의 다양한 구성요소 사이에 분포할 수 있으며, 브라우저(300)는 웹 코어(304) 및 자바 스크립트 엔진(306)을 포함할 수 있다. 실행 감시 시스템(302)을 위한 실행 가능한 컴퓨터 코드는 다양한 구성 요소 사이에 분포할 수 있으며 브라우저(300)의 모듈이 될 수도 있다.
도 4를 참조하면, 실행 감시 시스템(EMS)(302)은 302a, 302b 및 302c와 같이 브라우저(300)의 다양한 부분에 포함될 수 있다. 또한 선택적으로, 실행 감시 시스템(EMS)(302)은 별도의 독립적인 구성요소(302)로 제공될 수도 있다. 브라우저(300)는 웹 키트에 기초하여 구현될 수 있다. 웹 키트는 웹 코어(304)와 자바 스크립트 엔진(306)을 포함할 수 있다. 웹 코어(304)는 HTML, 렉싱/파싱(lexing/parsing), 문서 객체 모델(DOM) 관리, 레이아웃 등을 포함하는 웹 페이지의 처리와 관련된 다양한 태스크를 다룰 수 있다. 자바 스크립트 엔진(306)은 자바 스크립트 파싱 및 자바 스크립트의 실행을 다룰 수 있다.
자바 스크립트는 하나 이상의 HTML 페이지에 삽입되거나 포함될 수 있는 함수(예컨대, <script>와 </script> 태그들 사이에 삽입되는 함수)를 기록하고 페이지의 문서 객체 모델(DOM)과 상호작용하는 데에 사용될 수 있다. 그 용도의 예는 다음과 같다.
- 새 윈도우의 크기, 위치, 및 속성에 걸쳐서 프로그램적인 조절을 수반하는 새 윈도우의 오프닝(opening) 또는 팝업(popping up)(즉 메뉴, 툴바 등이 보여지는지 아닌지)
- 웹 형태 입력 값(web form input values)이 서버로 제출되기 전에 승인을 보장하기 위한 웹 형태 입력 값의 확인
- 그래픽 요소로 표시되는 사용자의 주목을 끄는 중요한 링크를 그리기 위해 마우스 커서가 이동과 같은 이미지 변환
자바 스크립트 코드는 원격 서버에서 실행되기 보다는 사용자의 브라우저에서 국지적으로 실행될 수 있기 때문에, 사용자 동작을 처리하는 즉각적인 수단으로 사용될 수 있으며, 그것에 의해 어플리케이션은 더 즉각적으로 느껴질 수 있다. 나아가 자바 스크립트 코드는 HTML 단독으로 할 수 없는 사용자 동작, 예컨대, 개별적인 키보드 터치 등을 검출할 수 있다. 예를 들어, "Gmail" 어플리케이션은 자바 스크립트 코드를 이용해서 사용자 인터페이스 로직의 중요한 부분을 제공할 수 있으며 자바 스크립트를 이용하여 정보에 대한 요청을 서버로 전달할 수 있다. 자바 스크립트 엔진(306)은 자바 스크립트 해석기 또는 자바 스크립트 도구로 제공될 수 있는데, 이것은 자바 스크립트 소스 코드를 해석하고 그 스크립트를 실행하는 것이 가능하다. 자바 스크립트 상의 공통적인 호스트 환경에 있어서, 웹 브라우저(300)는 공공 API를 사용해서 DOM을 자바 스크립트에 반영하는 것에 원인이 되는 "호스트 객체"를 생성할 수 있다.
브라우저(300)가 새로운 웹 페이지를 원격 서버(310)로부터 요청하면, 입력 페이지가 웹 코어(304) 내의 HTML 파서(304a)로 전달된다. 이어서 HTML 파서(304a)는 입력 페이지에 대한 파싱을 시작하고 입력 페이지로부터 DOM 트리를 구성하는 데에 필요한 동작을 개시한다. 만약 이 동작 중에 HTML 파서(304a)가 자바 스크립트 코드를 검출하는 경우, 자바 스크립트 코드는 자바 스크립트 파서(306a)로 전달된다. 자바 스크립트 파서(306a)는 코드를 파싱하고 자바 스크립트 런타임(306b)을 통해 그 실행을 개시한다. 이 실행 동안, 자바 스크립트 코드는 DOM 트리의 수정을 시도할 수 있는데, 이러한 경우 이것을 DOM API 함수라 부를 수 있다. 또한 자바 스크립트 코드는 "Document.write()" 함수를 호출함으로써 HTML 페이지를 수정할 수도 있다. 이러한 경우 수정은 HTML 파서로 전달될 수 있다. HTML 파서(304a)가 HTML 페이지를 수정하는 시도로서 자바 스크립트 엔진(306)으로부터 입력을 획득하는 경우, 이 입력을 다른 페이지의 일 부분으로서 처리한다. "<script>" 및 </script> 태그 사이에 제공되는 자바 스크립트 코드가 검출되는 경우, 이 입력은 웹 코어(304)가 새로운 DOM 노드를 생성하게 하거나 자바 스크립트 파서(306a)를 작동시킬 수 있다. 다시 말해, 자바 스크립트 코드는 새로운 자바 스크립트 코드들을 HTML 페이지에 기록할 수 있고, HTML 파서는 새롭게 생성된 자바 스크립트 코드를 실행을 위해 자바 스크립트 엔진(306a)으로 보낼 수 있다. 기존의 자바 스크립트 엔진(306a)은 새롭게 생성된 자바 스크립트 코드를 원래의 페이지 상의 자바 스크립트 코드와 구별 할 수가 없다.
그렇지만 본 실시예에 따른 실행 감시 시스템(302)은 오염된 텍스트를 감시함으로써 페이지 내의 오염된 텍스트로부터 유래된 자바 스크립트 코드를 효과적으로 검출할 수 있다. 이것은 브라우저(300)가 의심스러운 소스로부터 유래된 오염 데이터에 효과적으로 작동될 수 있고 오염 정보를 원래의 데이터와 함께 저장할 수 있음을 의미한다. 나아가 브라우저(300)는 오염 정보를 웹 페이지의 다른 처리 및 수정을 통해 효과적으로 전파할 수 있다. 예를 들어, 오염된 데이터에 기초하여 DOM 트리 내에서 새로운 노드가 생성되거나 존재하던 노드가 수정되는 경우, 새로운 노드 또는 수정된 노드는 오염된 것으로 표시될 수 있다. 또 다른 예로, 자바 스크립트 변수가 오염된 데이터로부터 계산되는 경우, 자바 스크립트 변수 역시 오염된 것으로 간주될 수 있다. 오늘날 XSS 공격이 심각한 문제로 제기되고 있기 때문에 XSS 공격에 적합한 오염 추적 메커니즘에 대해 살펴본다.
XSS 공격에 있어서, 웹 어플리케이션에 삽입된 코드는 공격자의 조절 하에 있을 수 있다. DOM 기반의 XSS에 대하여, 공격자가 쉽게 영향을 줄 수 있는 데이터 소스를 취약한 웹 어플리케이션이 사용하는 것이 그 전제조건이다. 운 나쁘게도 이러한 데이터 소스는 좀처럼 실행 가능한 스크립트를 포함하지 아니한다. 따라서 데이터 소스의 컨텐츠 실행을 방해하는 것에 의해 DOM 기반 XSS 공격이 중요한 방식으로 다루어질 수 있다. 이를 위해 브라우저(300) 내에서 사용되는 데이터를 추적할 수 있는 메커니즘은 공격자(또는 의심스러운 소스)에 의해 쉽게 교체될 수 있는 데이터 소스를 확인할 수 있다. 의심스러운 소스는 "Document.URL", "Document.URLUnencoded", "Document.location" 중 적어도 하나와 연관된 데이터 소스를 포함할 수 있다. 그리고 하나 이상의 의심스러운 소스는 웹 코어(304) 내에서 하드코딩되거나 구성 파일로부터 독출될 수도 있다.
실행 감시 시스템(EMS)(302)은, 데이터가 접근 되었을 때, 웹 브라우저(300) 내의 의심스러운 소스로부터 오염된 모든 데이터에 사용될 수 있다. 특히 자바 스크립트 엔진(306) 안에서 의심스러운 소스에 대응되는 변수는 오염될 수 있고 그 오염 정보는 실행 경로를 따라 전파될 수 있다. 이것은 웹 키트 내에서 데이터 구조 분류를 확장시키는 것과, 객체가 오염되었는지 여부를 확인하기 위해 부울 변수를 부가하는 것과 taint() 및 isTainted() 함수를 각 데이터 구조 분류에 부가하는 것에 의해 달성될 수 있다.
- 첫 번째 함수 taint()는 부울 값을 true로 셋팅한다. 즉 이 함수는 객체를 오염시킨다.
- 두 번째 함수 isTaint()는 부울 값을 반환한다. 즉 객체의 오염 여부를 알린다.
전술한 바와 같이, 오염 정보는 실행 경로를 따라 전파될 수 있다. 예를 들어, 자바 스트립트 내의 "Strings"은 "JSString" 클래스에 기초하여 관리될 수 있는데 이것은 "JSCell" 클래스의 서브 클래스이다. 만약 자바 스크립트 코드가 URL을 바꾸려고 시도하는 경우, 그 실행 경로는 다른 클래스로부터의 다수의 함수를 포함하고 다수의 다른 클래스 객체를 건들이게 된다. 구체적으로, 자바 스크립트 엔진(306)의 "JSString", "JSCell", "JSValue" 및 "UString" 클래스들, 그리고 웹 코어(304)의 "SegmentedString", "KURL" 및 "Node" 클래스들이 이 과정에 역할을 맡을 수 있다. 따라서 초기 데이터 객체가 오염되는 경우, 이 오염은 전체 경로로 전파될 수 있다. 이러한 전파는 클래스 객체 및 연관된 함수의 가벼운 수정을 요구할 수 있으며, 함수는 오퍼랜드가 오염되었는지 여부를 확인하는 것을 필요로 할 수 있고 오퍼랜드가 오염되는 경우 그것의 결과를 오염시킬 수 있다.
오염 정보를 전파하는 자바 스크립트의 오퍼레이션에는 다음과 같은 예가 있다.
(i) 할당(assignment) : 오른쪽 오퍼랜드가 오염되면 왼쪽 오퍼랜드가 오염됨
(ii) 산술 논리 연산 : 오퍼랜드가 오염되면 계산 결과가 오염됨
(iii) 함수 호출 : 자바 스크립트는 참조(reference)에 의해 인자(argument)를 지나가기 때문에 함수의 바디(body)는 중요하게 다루어질 필요가 없음. 오염 정보는 객체에 저장될 수 있으며 할당 및 산술/논리 연산이 고려되는 동안에 함수의 바디 내부에서 자동으로 전파될 수 있음
(iv) 제어 플로우(control flow) : 일부의 경우, 어떤 진술(statements)은 오염된 변수의 값에 의존함. 예컨대, 오염된 변수는"IF" 진술로 평가될 값임. 그러나 DOM 기반 XSS는 의심스러운 소스의 오염 정보가 정확하게 전하되는 한 제어 플로우에 대한 특별한 고려는 필요하지 아니할 수 있음.
오염 정보의 전파는 웹 페이지에 대한 DOM의 구성 또는 수정으로 생각될 수 있다. 일 예로써, 오염된 변수는 DOM 트리의 노드에 할당될 수 있고 그 노드는 자바 스크립트에 의해 접근되어 결과적으로 수정될 수 있다. 이러한 경우 DOM 노드는 정보 플로우 경로가 보존되는 것을 보장하기 위해 오염될 수 있다.
이러한 기준들은 웹 페이지가 처리될 때 불법적이고 잠재적으로 해로운 스크립트의 실행을 막을 수 있다. 다시 도 4를 참조하면, HTML 파서(304a)는 불법적인 스크립트가 자바 스크립트 파서(306b)로 전달되는 것을 막을 수 있다. HTML 파서(304a)는 어떤 데이터를 자바 스크립트 파서로 보내기 전에 그 스크립트의 오염된 데이터를 확인할 수 있다. 만약 데이터가 오염되었다면 웹 코어(304a)는 치료 동작을 취할 수 있다. 예컨대, 스크립트를 스크립트 대신에 보통의 텍스트 값으로 취급하거나, 화이트 스페이스(whitespace)를 표시하거나, 스크립트를 로깅하거나, 스크립트를 무시할 수 있다. 그리고 스크립트가 오염되지 아니한 경우, HTML 파서(304a)는 그 실행을 위해 스크립트를 자바 스크립트 엔진(306)으로 보낼 수 있다. 전술하였듯이, 실행 감시 시스템(302)은 웹 코어(304)의 구성요소로 제공될 수 있다.
또한 문서(예컨대, 웹 페이지)는, 그 문서가 신뢰할 수 없는 표시를 추적 및 전파할 수 있는 컴퓨팅 시스템에 의해 획득되었을 때, 신뢰할 수 없는 데이터(예컨대, 오염된 데이터)로 사전에 표시될 수도 있다. 웹 페이지의 경우, 웹 서버는 데이터를 신뢰할 수 없다고 표시할 수 있고, 클라이언트 장치가 신뢰할 수 없는 컨텐츠를 추적하고 이를 전파할 수도 있다. 이것은 XSS에 대한 보다 효율적인 보호를 위해 클라이언트 측과 서버 측의 혼합적인 접근이 될 수 있다. 다음으로 비신뢰(untrusted) 데이터를 표시하기 위한 구체적인 기술을 살펴본다.
신뢰할 수 없는 컨텐츠(content that is not trusted or not fully trusted)는 비신뢰(untrusted) 컨텐츠로 표시될 수 있다. 예를 들어, 컴퓨터 시스템은, 문서가 실행 가능한 텍스트를 포함할 수 있는 경우, 웹 페이지와 같은 문서 내의 텍스트 또는 텍스트 형 컨텐츠를 오염된(tainted) 텍스트로 표시하는 것이 가능하다.
도 5a는 본 발명의 일 실시예에 따른 통신 환경(400)의 제 1 컴퓨팅 시스템(402)을 도시한다. 도 5a를 참조하면, 제 1 컴퓨팅 시스템(402)은, 데이터(또는 컨텐츠)(404)가 처리되는 경우, 실행 불가 컨텐츠(non-executable content) 및 실행 가능 컨텐츠(executable content)를 포함하는 데이터(또는 컨텐츠)(404)를 실질적으로 관리하는 것이 가능하다. 오늘날, 데이터(404)는 웹 페이지와 같은 문서 형태로 제공되며 그 문서는 실행 가능 텍스트(executable text)를 포함할 수 있다.
도 5a에서, 제 1 컴퓨팅 시스템(402)은 표시된 문서(406)로 제공될 수 있는 표시된 데이터(406) 내의 신뢰할 수 없다고 생각되는 텍스트(text deemed not trusted or not fully trusted)를 비신뢰(untrusted) 컨텐츠(406u)로 표시하는 것이 가능하다. 또한 제 1 컴퓨팅 시스템(402)은 구성 데이터(408) 및/또는 사용자 입력(410)을 획득할 수도 있다. 예를 들어, 구성 데이터(408)는 어떤 컨텐츠를 비신뢰 컨텐츠(406u)로 표시하기 위한 그 컨텐츠의 일반적인 또는 특징적인 카테고리를 확인하는 것이 가능하다. 신뢰할 수 없다고 생각되는 컨텐츠의 카테고리는, 예컨대, 사용자에 의해 제공되는 데이터 및 외부 소스(예컨대, 외부 데이터 베이스 또는 웹 사이트)로부터 얻어지는 데이터를 포함할 수 있다. 다른 예로써, 문서(404)가 어떤 개체(entity)에 의해 소유 또는 관리되는 웹 페이지인 경우, 그 개체(entity)에 의해 직접적으로 제공되지 않는 모든 컨텐츠를 의심스러운 것으로 보고 비신뢰 데이터라고 표시하는 것이 가능하다. 제 1 컴퓨팅 시스템(402)은 사용자 입력(401)을 요구함이 없이 비신뢰 컨텐츠(406u)를 확인할 수 있다. 이에 따라 제 1 컴퓨팅 시스템(402)은, 사용자 입력(410)과 같은 어떤 추가적인 외부 입력 없이도 비신뢰 컨텐츠(406u)를 확인할 수 있도록, 자동으로 문서(404)를 검색하고 구성 데이터(408)를 사용할 수 있게 프로그램될 수 있다. 그러나, 제 1 컴퓨팅 시스템(402)은 사용자 인터페이스(예컨대, 키보드 및 디스플레이)를 통해 어떤 사용자(예컨대, 웹 사이트 관리자)에 의해 제공될 수 있는 사용자 입력(410)를 포함하는 어떤 입력에ㅔ 기반해서 비신뢰 컨텐츠(406u)를 확인하는 것도 가능하다.
제 1 컴퓨팅 시스템(402)은 문서(404) 내의 비신뢰 컨텐츠를 확인할 수 있고 표시된 문서(406) 내의 비신뢰 컨텐츠(406u)를 표시하는 것이 가능하며, 이것에 의해 다른 컴퓨팅 시스템이 오로지 문서(404)의 컨텐츠만에 기초하여 비신뢰 컨텐츠(406u)를 확인할 수 있도록 해 주는 것이 가능하다. 이에 따라, 비신뢰 컨텐츠(406u)는 제 2 컴퓨팅 시스템(420)에 의해 확인될 수 있다. 도 5a에서, 제 2 컴퓨팅 시스템(420)은, 예컨대, 인터넷과 같은 네트워크(412)를 통해 표시된 문서(406)를 획득할 수 있다. 이에 따라, 제 2 컴퓨팅 시스템(420)은, 예컨대, 표시된 문서(406)를 로딩하는 클라리언트 장치가 될 수 있다. 또한 제 1 컴퓨팅 시스템(402)은 웹 페이지에서 비신뢰 컨텐츠(406u)를 표시하고 네트워크(412)를 통해 이용 가능한 웹 페이지를 만드는 서버 장치가 될 수 있다. 여기서는 제 1 컴퓨팅 시스템(402)과 제 2 컴퓨팅 시스템(420)이 서버 및 클라이언트와 같이 별도로 형성된 것을 예시하였으나 반드시 이에 한정되는 것은 아니다. 즉 제 1 컴퓨팅 시스템(402) 및 제 2 컴퓨팅 시스템(420)은 동일한 컴퓨팅 시스템 상에서 각각 동작하는 어플리케이션 또는 프로세스가 될 수도 있다. 이것은 제 1 프로세스 또는 제 1 어플리케이션이, 동일 장치 내에서 이용될 수 있는 제 2 프로세스 또는 제 2 어플리케이션을 위해 문서(404)를 표시하는 것을 의미할 수 있다. 이러한 장치의 예로는, 웹 서버 및 브라우저를 포함하는 personal computer, consumer electronic device 등이 있다.
표시된 비신뢰 컨텐츠(406u)는, 오로지 표시된 문서(406) 그 자체에 기반하여, 제 2 컴퓨팅 시스템(420)이 신뢰할 수 없다고 표시된 문서(406)에서 컨텐츠를 확인할 수 있게 해준다. 다시 말해, 제 1 컴퓨팅 시스템(402)은 외부 데이터(예컨대, 독립된 구성 파일)를 요구함이 없이 표시된 문서(406)만을 이용해서 비신뢰 컨텐츠를 확인하는 것이 가능하다. 표시된 문서(406)를 처리하는 동안에, 제 2 컴퓨팅 시스템(420)은 문서(406)에서 비신뢰 컨텐츠(406u)로 표시된 실행 가능 컨텐츠(예컨대, 스크립트 형태의 실행 가능 텍스트)를 확인하고 적절한 동작을 취할 수 있다. 결과적으로, 제 2 컴퓨팅 시스템(420)은 비신뢰 컨텐츠(406)로 표시된 실행 가능 코드를 포함하는 실행 가능 컨텐츠의 실행을 거부할 수 있다. 또한, 비신뢰 컨텐츠(406u)로 표시된 실행 가능 코드(executable code)는 실행 불가 텍스트(non-executable text)로 취급될 수도 있다. 나아가, 비신뢰 컨텐츠(406u)의 일부로써 제공되는 어떠한 형태의 포맷 및 태그들 역시 실질적으로 무시될 수 있다. 제 2 컴퓨팅 시스템(420)은 비신뢰 컨텐츠(406u)로 표시된 컨텐츠를 확인하고 문서 처리에 적절한 소정의 동작을 취할 수 있다. 이에 따라, 제 2 컴퓨팅 시스템(420)은, 사용자에 의해 제공되는 정적 선호도(static preferences) 및 인터렉티브 입력(interactive input)을 포함하는 입력 및/또는 표시된 문서(406)의 종류 또는 성질에 기초하여 취해질 동작을 결정하고 그 동작을 취하도록 프로그래밍되는 것이 가능하다.
실행 감시 시스템(EMS)을 갖는 컴퓨팅 시스템 또한, 표시된 문서(406)를 획득하고 전술한 바와 같이 문서를 처리하는 것이 가능하다. 예를 들어, 도 2a 및 5a를 참조하면, 실행 감시 시스템(EMS)(110)을 갖는 컴퓨팅 시스템(101)은 표시된 문서(406)로써 비신뢰 컨텐츠(406u)로 표시된 텍스트 형식의 컨텐츠를 갖는 웹 페이지를 획득할 수 있다. 전술한 바와 같이, 문서(406a)를 처리하는 동안에, 컴퓨팅 시스템(101)은 문서(406)의 다른 컨텐츠를 표시할 수 있다. 이 때 문서(406)는 비신뢰 컨텐츠(406u)로부터 유래되거나 비신뢰 컨텐츠(406u)에 의해 영향을 받을 수가 있다. 예를 들어, 문서(406)에서 비신뢰 컨텐츠(406u)로 표시된 텍스트는 오염된(tainted) 텍스트로 간주될 수 있다. 이에 따라, 문서(406)가 처리되는 동안에 오염되었다는 표시(또는 표식)가 비신뢰 컨텐츠(406u)로부터 유래되거나 비신뢰 컨텐츠(406u)에 의해 영향을 받는다고 결정된 다른 텍스트 형 컨텐츠로 전파되는 것이 가능하다.
일 실시예에 따라, 비신뢰 컨텐츠는, 문서의 컨텐츠를 기술하거나 기록하는 데에 사용되는 특정한 확장으로써 제공되는 지시자(예컨대, 언어 확장자, language extender)에 의해 표시될 수 있다. 예를 들어, 새로운 HTML 태그가 웹 페이지의 비신뢰 텍스트를 표시하기 위해 제공될 수 있다. 게다가 비신뢰 컨텐츠에 관한 하나 이상의 속성(attributes) 또는 파라미터(parameter)가 제공될 수도 있다. 하나 이상의 속성은 문서에서 신뢰할 수 없음을 나타내는 언어 확장자와 관련되서 제공되는 것도 가능하다.
예를 들어, 길이 속성(length attribute)은 웹 페이지에서 새로운 HTML 태그를 이용하여 표시된 비신뢰 텍스트의 길이를 나타낼 수 있다. 또한, 보전 특성(integrity attribute)이 새로운 HTML 태그와 관련된 비신뢰 컨텐츠의 보전 값(integrity value)(예컨대, checksum, digest)으로 제공될 수도 있다. 하나 이상의 속성은 문서에서 비신뢰 컨텐츠로 표시된 컨텐츠에 대한 문서 내에서 제공될 수 있고, 이것에 의해 신뢰할 수 없는 컨텐츠를 숨기거나 변경하는 것을 더 어렵게 만들 수 있다.
도 5b는 본 발명의 일 실시예에 따라 문서를 유지 또는 관리하는 방법(450)을 도시한다. 도시된 방법(450)은 도 5a의 제 1 컴퓨팅 시스템(402)에 의해 수행될 수 있다. 본 실시예에 따라, 문서는 도시된 방법(405)이 개시되기 전에 접근할 수 없거나 접근할 수 없는 형태로 만들어진다. 도 5b를 참조하면, 처음에, 문서 내의 텍스트가 신뢰할 수 없는 텍스트로 확인되는지 여부가 결정된다(452). 따라서, 신뢰할 수 없다고 생각되는 데이터를 확인하기 위해 문서를 서치하는 방법 등에 의해 문서 내의 텍스트가 확인된다(454). 그러나, 예컨대, 텍스트가 사용자 입력과 같은 입력에 기초하여 직접 확인되는 경우, 비신뢰 텍스트로 표시될 텍스트가 확인되지 아니할 수 있다. 신뢰할 수 없다고 생각되는 텍스트는 비신뢰 텍스트로 표시된다(456). 결과적으로, 문서의 하나 이상의 텍스트에 대응되는 부분이 표시될 수 있다. 그리고, 비신뢰 텍스트로 표시된 부분과 관련된 속성이 제공될 수 있는지 여부가 결정된다(458). 본 실시예에 따른 결정 과정들은 문서, 컨텐츠, 사용자 선호도, 사용자 입력의 종류에 따라 다양하게 설계 변경될 수 있음은 물론이다. 비신뢰 텍스트에 대한 속성이 제공 가능하면, 하나 이상의 속성(예컨대, 길이 속성, 보존 속성)이 비신뢰 텍스트로 표시된 부분에 각각에 대하여 문서에 삽입된다. 그리고 표시된 문서는 접근할 수 있도록 만들어진다(462). 그러나 비신뢰 컨텐츠로 텍스트롤 표시하는 것은 재평가될 수도 있다. 즉 문서에서 비신뢰 텍스트의 표시를 갱신하는 것으로 결정되면(464), 표시된 문서는 접근할 수 없는 형태로 만들어질 수 있다(468). 이후 본 실시예에 따른 방법(450)은 문서가 다시 접근 가능한 형태로 만들어지기 전에 전술한 과정을 반복한다.
전술한 본 실시예에 따른 장치 및 방법들은 웹 페이지를 제공하고 처리하는 데에 효과적으로 적용된다. 언어 확장자(language extender)를 비신뢰 컨텐츠에 관한 하나 이상의 속성에 제공하는 것은 웹 페이지 처리에 있어서 특히 적합하다. 도 6a는 본 발명의 일 실시예에 따른 웹 어플리케이션을 도시한다. 이 웹 어플리케이션은 입력 파라미터, 즉 "uName" 파라미터를 이용하여 웹 페이지를 생성하는 것이 가능하다. 양호한(benign) "uName" 값(예컨대, "Alan")에 대하여, 웹 어플리케이션은 어떤 불법적인 스크립트의 실행 없이 웹 페이지를 안전하게 생성할 수 있다. 그러나 공격자는 "uName" 값을 악성의 실행 가능 스크립트로 다음과 같이 변경할 수 있다.
"<script>evil();</script."
도 6에서, 결과 페이지는 입력 파라미터 "uName"을 갖는 실제 페이지(real page)로 설명된다. 이러한 취약성은 전통적인 웹 브라우저들이 웹 페이지를 처리하는 동안에 마주치게 되는 불법적인 스크립트와 합법적인 스크립트를 구별할 수 없다는 것에 부분적으로 기인한다.
웹 브라우저들은 서버로부터 웹 페이지를 얻기 위하여 클라이언트 상에서 구동되는 것이 일반적이다. 본 발명의 일 실시예에 따라, HTML 확장자는 서버 측 어플리케이션이 필요한 정보를 클라리언트 측으로 전달하는 것을 가능하게 해준다. 특히 새로운 HTML 태그(예컨대, "<userinput>" HTML 태그)는 HTML 태그들의 세트에 추가될 수 있다. 예를 들어, 이 새로운 HTML 태그는 웹 서버를 대신하여 서버가 비신뢰 컨텐츠를 표시하는 데에 사용될 수 있다. 또한, 길이 속성(예컨대, "userinput length")은 이러한 HTML 태그가 비신뢰 컨텐츠의 실이를 표시하는 것을 제공할 수 있다. 그 길이 속성은 새로운 HTML 태그의 의도하는 기능이 우회되는 것을 피할 수 있게 해준다. 또한 새로운 HTML 태그의 의도하는 기능은 종결 태그(예컨대, "</userinput>")의 배치에 의해 우회될 수도 있다.
도 6b는 본 발명의 일 실시예에 따라, 웹 어플리케이션의 HTML 태그 및 길이 속성의 사용을 도시한다. 도 6b를 참조하면, 비신뢰 텍스트 형 컨텐츠(untrusted textual content)의 길이는 비신뢰 텍스트 형 컨텐츠를 나타내는 HTML 태그 "<userinput>"의 길이 속성("userinput length")으로써, 몇 개의 문자, 즉 24개의 문자에 할당될 수 있다. "<userinput>" 태그 및 길이 속성은 더 짧은 열로 교체될 수 있고 종단 </userinput>은 오버헤드를 더 줄이기 위해 삭제될 수도 있다. 또한, 태그 및 길이 속성은 Unicode Character Database로부터 바이트 값을 이용하여 인코딩되는 것이 가능하다. 바이트 값의 세트가 현존하는 브라우저의 여백(whitespace)으로 주어지는 경우, 새로운 HTML 태그 및 속성의 구현은, 본 실시예에 따라 제공되는 HTML 태그 또는 속성을 인식하도록 설계되지 아니한 브라우저의 동작에 부정적인 영향을 끼치지 아니할 것이다. 예를 들어, 서버는 비신뢰 사용자 입력을 지시하기 위해, 태그 "<userinput length=24>"를 어떤 고정된 시퀀스의 UCD 바이트 값(예컨대, 4개 내지 5개의 문자)로 인코딩할 수 있고, 바이트 값의 세트를 이용하여 binary 또는 octal 포맷의 24개의 숫자를 인코딩할 수도 있다.
일반적으로, 서버는 의심스러운 데이터와 관련된 하나 이상의 속성을 갖는 새로운 HTML 태그를 이용하여 의심스러운 데이터를 표시할 수 있다. 예를 들어, 공격자에 의해 어떤 데이터베이스가 악성 데이터를 삽입하는 데에 사용될 수 있는 경우, 서버는 그 데이터베이스로부터 독출된 데이터를 표시할 수 있다. 그리고 서버는 서버가 제공한 웹 페이지의 일부로써 독출된 데이터의 일부를 보고할 수 있다. 이러한 데이터는, 예컨대, <"userinput>" HTML 태그를 이용하여 서버에 의해 표시될 수 있다. 더 강화된 보안을 위하여, 서버는 외부 데이터(즉, 웹 페이지의 템플릿에 속하지 않는 데이터)의 모든 부분을 실질적으로 표시하는 것도 가능하다.
클라이언트 측에 있어서, 브라우저가 신뢰할 수 없는 것으로 표시된 어떤 컨텐츠를 갖는 웹 페이지를 획득하는 경우, 브라우저는 비신뢰 실행 가능 텍스트(untrusted executable text)를 실행 불가 텍스트(non-executable text) 또는 단순한 텍스트로 취급하는 것이 가능하다. 결과적으로, 브라우저는 비신뢰 실행 가능 텍스트, RTS(rich formatting), 또는 태그 인식의 실행을 허용하지 아니할 수 있다. 이를 위해, 브라우저 파서는, 비신뢰 데이터를 나타내는 태그(예컨대, "<userinput>" HTML 태그)를 마주칠 때마다, DOM 구조에서 leaf node를 생성할 수 있다. 또한 브라우저는 표시된 데이터의 parsing/lexing 없이 표시된 데이터를 직접 복사하는 것이 가능하다. 또 다른 예로써, 사용자 생성 입력 내의 리치 컨텐츠(rich content)(예컨대, <i> 및 <b>와 같은 태그들)이 처리될 수 있고, 컨텐츠 스크립팅의 처리가 허용되지 아니할 수 있다. 이에 따라, HTML 파서는 웹 페이지를 획득하는 경우, 그 파서는 "<userinput>" 태그에 포함된 데이터에 의해 생성되거나 영향을 받는 DOM node를 표시하고, 표시된 DOM node로부터 유래하는 모든 스크립트의 실행을 허용하지 아니할 수 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서 본 발명의 실시를 위한 구체적인 예를 살펴보았다. 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (22)

  1. 문서 내의 실행 가능 텍스트(executable text)를 처리 및 실행할 수 있는 컴퓨팅 시스템에 기초하여 상기 문서를 유지 또는 관리하는 방법으로써,
    제 1 컴퓨팅 시스템이, 상기 문서 내의 신뢰할 수 없는 텍스트를 지시하도록 상기 문서 내의 텍스트를 비신뢰 텍스트(untrusted text)로 표시하는 단계; 및
    제 2 컴퓨팅 시스템이 상기 문서에 기반하여 상기 문서 내의 비신뢰 텍스트를 확인하도록 하는 단계; 를 포함하고,
    상기 표시된 문서는
    상기 비신뢰 텍스트의 길이 속성 및 상기 표시된 문서의 무결성 중 어느 하나 이상을 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 방법은
    상기 제 2 컴퓨팅 시스템이 상기 문서 내의 텍스트를 상기 비신뢰 텍스트로 확인하는 단계; 를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 비신뢰 텍스트로 확인하는 단계는
    상기 제2 컴퓨팅 시스템이 상기 신뢰할 수 없는 텍스트를 상기 비신뢰 텍스트로 결정하는 단계; 및
    입력 데이터에 기초하여 상기 비신뢰 텍스트를 결정하는 단계; 중 어느 하나이상의 단계를 포함하며,
    상기 입력 데이터는 구성 데이터, 사용자 입력, 및 사용자 선호도 중 적어도 하나를 포함하는 방법.
  4. 제 1 항에 있어서, 상기 비신뢰 텍스트는
    상기 제 2 컴퓨팅 시스템에 의해 상기 문서가 처리되거나 처리 중인 경우, 상기 제 2 컴퓨팅 시스템에 의해 실행될 수 있는 제 2 실행 가능 텍스트 부분에 의해 실질적으로 교체될 수 있는 실행 가능 텍스트 부분 및/또는 실행 불가 텍스트 부분을 포함하는 방법.
  5. 제 1 항에 있어서, 상기 제 2 컴퓨팅 시스템이,
    상기 문서를 획득하는 단계; 및
    상기 문서 내에서 상기 비신뢰 텍스트로 표시된 실행 가능 텍스트를 실행하지 않는 단계; 를 더 포함하는 방법.
  6. 제 5 항에 있어서, 상기 제 2 컴퓨팅 시스템이,
    실행 가능 텍스트를 실행 불가 텍스트로 처리하는 단계;
    실행 가능 텍스트의 리치 포맷팅(rich formatting)을 허용하지 않는 단계; 및
    실행 가능 텍스트의 태그를 처리 하지 않는 단계; 를 더 포함하는 방법.
  7. 제 1 항에 있어서, 상기 표시하는 단계는
    상기 제 2 컴퓨팅 시스템에 의해 획득될 상기 문서의 접근이 허용되기 전에 상기 비신뢰 텍스트를 표시하는 방법.
  8. 제 1 항에 있어서, 상기 비신뢰 텍스트는
    다른 컴퓨팅 시스템에 의해 제공되거나 다른 컴퓨팅 시스템으로부터 수신되는 텍스트 및 사용자 입력과 연관된 텍스트 중 적어도 하나를 포함하는 방법.
  9. 제 1 항에 있어서, 상기 표시하는 단계는
    상기 문서 내의 텍스트를 제공하기 위해 사용되는 언어의 언어 확장자(language extension)에 기초하여 상기 비신뢰 텍스트를 표시하는 방법.
  10. 제 8 항에 있어서, 상기 표시하는 단계는
    상기 비신뢰 텍스트의 적어도 하나의 속성을 제공하는 과정을 포함하는 방법.
  11. 제 9 항에 있어서, 상기 문서는
    웹 페이지를 포함하며, 상기 언어 확장자는 상기 비신뢰 텍스트의 길이를 지시하는 길이 속성을 갖는 HTML 확장자인 방법.
  12. 제 1 항에 있어서, 상기 제 2 컴퓨팅 시스템이,
    상기 문서 내의 실행 가능 텍스트가 상기 문서 내에 표시된 비신뢰 텍스트로부터 유래한 것인지 또는 상기 비신뢰 텍스트에 의해 영향을 받는지 여부를 판단하는 단계; 및
    상기 문서 내의 실행 가능 텍스트가 상기 문서 내에 표시된 비신뢰 텍스트로부터 유래한 것이거나 상기 비신뢰 텍스트에 의해 영향을 받는 경우, 상기 실행 가능 텍스트를 신뢰할 수 없는 비신뢰 텍스트로 확인하는 단계; 를 더 포함하는 방법.
  13. 제 1 항에 있어서, 상기 제 2 컴퓨팅 시스템이,
    상기 문서를 처리하는 동안에, 상기 문서 내에 표시된 비신뢰 텍스트를 실질적으로 추적하는 단계; 및
    상기 비신뢰 텍스트의 추적에 기초하여, 문서 내의 다른 컨텐츠를 비신뢰 텍스트로 표시하는 단계; 를 더 포함하는 방법.
  14. 문서 내의 신뢰할 수 없는 텍스트를 지시하도록 상기 문서 내의 텍스트를 비신뢰 텍스트(untrusted text)로 표시하고, 제 2 컴퓨팅 시스템이 상기 표시된 문서에 기반하여 상기 문서 내의 비신뢰 텍스트를 확인하도록 하는 제 1 컴퓨팅 시스템; 을 포함하고,
    상기 표시된 문서는
    상기 비신뢰 텍스트의 길이 속성 및 상기 표시된 문서의 무결성 중 어느 하나 이상을 포함하는 비신뢰 텍스트의 속성을 포함하는 것을 특징으로 하는 장치.
  15. 제 14 항에 있어서,
    상기 문서를 획득하고, 상기 비신뢰 텍스트로 표시된 실행 가능 텍스트를 실행하지 않는 제 2 컴퓨팅 시스템; 을 더 포함하는 장치.
  16. 제 14 항에 있어서,
    상기 문서는 웹 페이지를 포함하고,
    상기 제 1 컴퓨팅 시스템은 서버를 포함하고,
    상기 제 2 컴퓨팅 시스템은 클라이언트를 포함하는 장치.
  17. 제 14 항에 있어서, 상기 제 2 컴퓨팅 장치는
    상기 문서 내의 실행 가능 텍스트가 상기 문서 내에 표시된 비신뢰 텍스트로부터 유래한 것인지 또는 상기 비신뢰 텍스트에 의해 영향을 받는지 여부를 판단하고,
    상기 문서 내의 실행 가능 텍스트가 상기 문서 내에 표시된 비신뢰 텍스트로부터 유래한 것이거나 상기 비신뢰 텍스트에 의해 영향을 받는 경우, 상기 실행 가능 텍스트를 신뢰할 수 없는 비신뢰 텍스트로 확인하는 장치.
  18. 제 14 항에 있어서, 상기 문서의 표시는
    상기 문서 내의 텍스트를 제공하기 위해 사용되는 언어의 언어 확장자(language extension)에 기초하여 상기 비신뢰 텍스트를 표시하는 것을 특징으로 하는 장치.
  19. 문서 내의 실행 가능 텍스트(executable text)를 처리 및 실행할 수 있는 컴퓨팅 시스템에 기초하여 상기 문서를 유지 또는 관리하기 위한 컴퓨터 코드가 포함된 컴퓨터로 판독 가능한 기록 매체로써,
    상기 문서 내의 신뢰할 수 없는 텍스트를 지시하도록 상기 문서 내의 텍스트를 비신뢰 텍스트(untrusted text)로 표시하고, 제 2 컴퓨팅 시스템이 상기 비신뢰 텍스트로 표시된 문서에 기반하여 상기 문서 내의 비신뢰 텍스트를 확인하도록 하는 실행 가능 컴퓨터 코드; 를 포함하고,
    상기 비신뢰 텍스트로 표시된 문서는
    상기 비신뢰 텍스트의 길이 속성 및 상기 문서의 무결성 중 어느 하나 이상을 포함하는 비신뢰 텍스트의 속성이 포함되는 것을 특징으로 하는 기록 매체.
  20. 제 19 항에 있어서,
    상기 문서 내의 실행 가능 텍스트가 상기 문서 내에 표시된 비신뢰 텍스트로부터 유래한 것인지 또는 상기 비신뢰 텍스트에 의해 영향을 받는지 여부를 판단하는 실행 가능 컴퓨터 코드; 및
    상기 문서 내의 실행 가능 텍스트가 상기 문서 내에 표시된 비신뢰 텍스트로부터 유래한 것이거나 상기 비신뢰 텍스트에 의해 영향을 받는 경우, 상기 실행 가능 텍스트를 신뢰할 수 없는 비신뢰 텍스트로 확인하는 실행 가능 컴퓨터 코드; 를 더 포함하는 기록 매체.
  21. 제 20 항에 있어서,
    상기 텍스트를 표시하기 위한 코드는 제 1 어플리케이션 또는 제 1 프로세스에 대한 실행 가능 컴퓨터 코드로써 제공되고,
    상기 비신뢰 텍스트를 확인하기 위한 코드는 제 2 어플리케이션 또는 제 2 프로세스에 대한 실행 가능 컴퓨터 코드로써 제공되고,
    상기 제 1 및 제 2 어플리케이션 또는 상기 제 1 및 제 2 프로세스는 동일한 컴퓨팅 시스템 또는 장치에서 구동되는 기록 매체.
  22. 컴퓨팅 시스템 장치에 있어서,
    신뢰할 수 없는 텍스트임을 나타내는 비신뢰 텍스트로 표시된 텍스트를 포함하는 문서를 획득하고, 상기 문서에 기반하여 상기 문서 내의 비신뢰 텍스트를 확인하고,
    상기 문서는
    상기 비신뢰 텍스트의 길이 속성 및 상기 문서의 무결성 중 어느 하나 이상을 포함하는 비신뢰 텍스트의 속성이 포함되는 것을 특징으로 하는 장치.
KR1020100060175A 2010-01-25 2010-06-24 실행 가능 텍스트를 갖는 문서의 표시 장치 및 방법 KR101757697B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/693,168 2010-01-25
US12/693,168 US9058489B2 (en) 2010-01-25 2010-01-25 Marking documents with executable text for processing by computing systems

Publications (2)

Publication Number Publication Date
KR20110087195A KR20110087195A (ko) 2011-08-02
KR101757697B1 true KR101757697B1 (ko) 2017-07-26

Family

ID=44309911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100060175A KR101757697B1 (ko) 2010-01-25 2010-06-24 실행 가능 텍스트를 갖는 문서의 표시 장치 및 방법

Country Status (2)

Country Link
US (1) US9058489B2 (ko)
KR (1) KR101757697B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190031701A (ko) 2017-09-18 2019-03-27 삼성에스디에스 주식회사 파일 속성 관리 방법 및 그 장치

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8997217B2 (en) 2010-01-25 2015-03-31 Samsung Electronics Co., Ltd. Safely processing and presenting documents with executable text
US8997239B2 (en) * 2011-03-31 2015-03-31 Infosys Limited Detecting code injections through cryptographic methods
US8683596B2 (en) * 2011-10-28 2014-03-25 International Business Machines Corporation Detection of DOM-based cross-site scripting vulnerabilities
US20130174058A1 (en) * 2012-01-04 2013-07-04 Sprylogics International Corp. System and Method to Automatically Aggregate and Extract Key Concepts Within a Conversation by Semantically Identifying Key Topics
US20130185623A1 (en) * 2012-01-12 2013-07-18 International Business Machines Corporation Instructing web clients to ignore scripts in specified portions of web pages
CN102681850B (zh) 2012-05-07 2015-05-20 北京奇虎科技有限公司 一种基于Webkit内核提供网页浏览的方法及装置
CN103546513B (zh) * 2012-07-13 2016-12-21 阿里巴巴集团控股有限公司 一种客户端页面间通信的方法及装置
US20140053064A1 (en) 2012-08-16 2014-02-20 Qualcomm Incorporated Predicting the usage of document resources
US20140053056A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
US9898445B2 (en) 2012-08-16 2018-02-20 Qualcomm Incorporated Resource prefetching via sandboxed execution
CN104008331A (zh) * 2013-02-21 2014-08-27 腾讯科技(深圳)有限公司 一种恶意网站的访问方法、装置和系统
US8887291B1 (en) * 2013-03-01 2014-11-11 Symantec Corporation Systems and methods for data loss prevention for text fields
CN104065632B (zh) * 2013-04-08 2015-07-29 腾讯科技(深圳)有限公司 分享内容的处理方法、服务器、客户端及系统
US10015191B2 (en) * 2013-09-18 2018-07-03 Paypal, Inc. Detection of man in the browser style malware using namespace inspection
US9154492B2 (en) * 2013-09-27 2015-10-06 The University Of North Carolina At Charlotte Moving target defense against cross-site scripting
PT3130123T (pt) * 2014-04-11 2021-10-15 Hdiv Security S L Deteção de manipulação de aplicações
KR102086731B1 (ko) * 2014-06-25 2020-04-14 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 제공 방법, 이를 위한 장치 및 시스템, 그리고 이를 위한 클라우드 스트리밍용 스크립트 코드를 기록한 컴퓨터 판독 가능한 기록매체
US10686230B2 (en) 2016-03-25 2020-06-16 Rocco John Colasacco Backup battery system
US10129285B2 (en) * 2016-04-27 2018-11-13 Sap Se End-to-end taint tracking for detection and mitigation of injection vulnerabilities in web applications
US10275596B1 (en) * 2016-12-15 2019-04-30 Symantec Corporation Activating malicious actions within electronic documents
EP3961452A1 (en) * 2018-05-04 2022-03-02 Google LLC Detecting injection vulnerabilities of client-side templating systems
US11947677B2 (en) * 2020-09-03 2024-04-02 Oracle International Corporation Dynamic taint tracking in abstract syntax tree interpreters

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6345278B1 (en) * 1998-06-04 2002-02-05 Collegenet, Inc. Universal forms engine
US7343626B1 (en) * 2002-11-12 2008-03-11 Microsoft Corporation Automated detection of cross site scripting vulnerabilities
US7607010B2 (en) * 2003-04-12 2009-10-20 Deep Nines, Inc. System and method for network edge data protection
US8280819B2 (en) * 2004-07-09 2012-10-02 Ebay Inc. Method and apparatus for securely displaying and communicating trusted and untrusted internet content
US7711835B2 (en) * 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
US7779399B2 (en) * 2005-05-16 2010-08-17 Armorize Technologies, Inc. System and method for securing web application code and verifying correctness of software
WO2007025279A2 (en) * 2005-08-25 2007-03-01 Fortify Software, Inc. Apparatus and method for analyzing and supplementing a program to provide security
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
US8484232B2 (en) * 2005-11-22 2013-07-09 International Business Machines Corporation Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value
US7934253B2 (en) * 2006-07-20 2011-04-26 Trustwave Holdings, Inc. System and method of securing web applications across an enterprise
US8656495B2 (en) * 2006-11-17 2014-02-18 Hewlett-Packard Development Company, L.P. Web application assessment based on intelligent generation of attack strings
US7899757B1 (en) * 2007-01-30 2011-03-01 Intuit Inc. Mechanism for indicating and resolving the trust level of information
US20090119769A1 (en) * 2007-11-05 2009-05-07 Microsoft Corporation Cross-site scripting filter
US7530107B1 (en) * 2007-12-19 2009-05-05 International Business Machines Corporation Systems, methods and computer program products for string analysis with security labels for vulnerability detection
US8997217B2 (en) * 2010-01-25 2015-03-31 Samsung Electronics Co., Ltd. Safely processing and presenting documents with executable text
GB2496107C (en) * 2011-10-26 2022-07-27 Cliquecloud Ltd A method and apparatus for preventing unwanted code execution

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Trevor Jim외 2, Defeating Script Injection Attacks with Browser Enforced*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190031701A (ko) 2017-09-18 2019-03-27 삼성에스디에스 주식회사 파일 속성 관리 방법 및 그 장치

Also Published As

Publication number Publication date
US9058489B2 (en) 2015-06-16
US20110185271A1 (en) 2011-07-28
KR20110087195A (ko) 2011-08-02

Similar Documents

Publication Publication Date Title
KR101757697B1 (ko) 실행 가능 텍스트를 갖는 문서의 표시 장치 및 방법
US8997217B2 (en) Safely processing and presenting documents with executable text
Lekies et al. 25 million flows later: large-scale detection of DOM-based XSS
JP4934722B2 (ja) 文書内の組み込みスクリプトの挙動を制約するためのプログラム計装の方法及び装置
Stock et al. Precise client-side protection against {DOM-based}{Cross-Site} scripting
Bates et al. Regular expressions considered harmful in client-side XSS filters
CN101356535B (zh) 一种检测和防止java脚本程序中不安全行为的方法和装置
US10678910B2 (en) Modifying web page code to include code to protect output
Vogt et al. Cross site scripting prevention with dynamic data tainting and static analysis.
US8812959B2 (en) Method and system for delivering digital content
US20100037317A1 (en) Mehtod and system for security monitoring of the interface between a browser and an external browser module
US8112799B1 (en) Method, system, and computer program product for avoiding cross-site scripting attacks
KR20110009675A (ko) 웹 브라우저 상의 광고 표시를 선택적으로 보장하는 방법 및 시스템
Tang et al. Fortifying web-based applications automatically
US20110030060A1 (en) Method for detecting malicious javascript
WO2009094384A2 (en) A method and apparatus for constructing security policies for web content instrumentation against browser-based attacks
US11586726B2 (en) Secure web framework
Chen et al. An analysis of browser domain-isolation bugs and a light-weight transparent defense mechanism
Gupta et al. Evaluation and monitoring of XSS defensive solutions: a survey, open research issues and future directions
Johns et al. SMask: preventing injection attacks in web applications by approximating automatic data/code separation
Kerschbaumer et al. Towards precise and efficient information flow control in web browsers
Johns et al. Tamper-resistant likejacking protection
CN112287349A (zh) 安全漏洞检测方法及服务端
Wagner et al. A security analysis of the Combex DarpaBrowser architecture
Sayed et al. Detection and mitigation of malicious JavaScript using information flow control

Legal Events

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