KR20140090240A - 정보 흐름들을 캡쳐하기 위한 값들에서의 라벨들의 인코딩 - Google Patents

정보 흐름들을 캡쳐하기 위한 값들에서의 라벨들의 인코딩 Download PDF

Info

Publication number
KR20140090240A
KR20140090240A KR1020147015269A KR20147015269A KR20140090240A KR 20140090240 A KR20140090240 A KR 20140090240A KR 1020147015269 A KR1020147015269 A KR 1020147015269A KR 20147015269 A KR20147015269 A KR 20147015269A KR 20140090240 A KR20140090240 A KR 20140090240A
Authority
KR
South Korea
Prior art keywords
mode
labels
dynamic language
security
bits
Prior art date
Application number
KR1020147015269A
Other languages
English (en)
Other versions
KR101542335B1 (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 KR20140090240A publication Critical patent/KR20140090240A/ko
Application granted granted Critical
Publication of KR101542335B1 publication Critical patent/KR101542335B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/2113Multi-level security, e.g. mandatory access control
    • 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/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

동적 언어 값에 보안 라벨들을 인코딩하는 방법들, 서버들, 및 시스템들은, 다시 호스트 서버로 통신되는 것이 허용되는 정보의 타입들을 제한하는 동안 클라이언트 어플리케이션 내에서의 크로스 스크립트 통신들을 허용한다. 정적 분석은 컴파일 동안 수행되고, 결과들은 프로그램 실행동안 값들 (예를 들면, 자바스크립트 값들) 에 부착된 라벨들 (예를 들면, 자바스크립트 라벨들) 을 업데이트하고, 수정하고 그리고 전파하는 추가적인 코드를 생성하고 삽입하기 위해 사용된다. 다른 웹기반의 시스템들과의 강한 통합을 허용하는 대중적인 언어 특징들을 지원하기 위해, 악성 코드는 국소적으로 (에를 들면, 클라이언트 상에서) 동작들을 수행하도록 허용되고, 검출 및 방지 메커니즘은 악성 코드를 식별하고 악성 코드가 요청들 또는 수집된 정보를 네트워크를 통해 전달하는 것을 방지하여, 공격들을 무력화하고 동적 언어 코드를 임베딩하는 어플리케이션들의 보안성을 향상시키게 된다.

Description

정보 흐름들을 캡쳐하기 위한 값들에서의 라벨들의 인코딩{ENCODING LABELS IN VALUES TO CAPTURE INFORMATION FLOWS}
관련 출원
본 출원은 2011년 11월 7일자로 출원된 발명의 명칭이 "Encoding Labels in JavaScript Values to Capture Information Flows"인 미국 가출원 제61/556,658호의 이점을 청구하며, 그 전체 내용은 참조에 의해 본원에 통합된다.
최근, 동적 스크립팅 언어들 (dynamic scripting languages) (예를 들면, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비 등) 이 상당히 더 강력해졌으며, 그 결과, 온라인 및 웹기반 소프트웨어 어플리케이션들을 구현하는 데 더 널리 사용되고 있다. 동적 스크립팅 언어들은 이제, 하이레벨 소프트웨어 언어들과 통상 관련된 다수의 피쳐들, 플렉시블 타이핑 시스템, 광대한 라이브러리들의 세트, 및 다른 웹기반 시스템들과의 통합을 강하게 지원하는 다른 피쳐들을 포함한다. 이들 및 다른 이유들 때문에, 동적 스크립팅 언어들은 이제, 최신 웹 2.0 어플리케이션들에 의해 사용되며 그 대중성이 성장하고 있다.
온라인 및 웹기반 소프트웨어 개발에서의 다른 성장하는 트렌드는 클라이언트 어플리케이션 (예를 들면, 웹페이지, 브라우저 등) 으로의 써드파티 스크립트들의 임베딩 (embedding) 이다. 임베딩된 스크립트들은 써드파티 사이트들 상의 컨텐츠 및 확장가능한 코드 (예를 들면, 광고 배너들, 주식시세 표시기들 (stock tickers) 등) 를 취출하여 배치하는 데 사용될 수도 있다. 임베딩된 스크립트들은 또한, 2개 이상의 소스들로부터의 데이터, 코드, 피쳐들, 서비스들, 및/또는 기능들을 결합하여 새로운 서비스 또는 어플리케이션을 생성하는 어플리케이션들 또는 웹페이지들인 매시업들 (mashups) 을 구현하기 위해 사용될 수도 있다. 많은 동적 스크립팅 언어들은 이들 성장하는 트렌드들을 지원하는 피쳐들을 포함하고, 결과적으로, 스크립트들을 웹사이트들에 임베딩하는 데 더 자주 사용되고 있다. 이들 임베딩된 써드파티 스크립트들은, 공격자가 언어 취약점들을 이용하여 민감한 정보를 수집하고 그것을 공격자에 의해 제어되는 서버로 전송하는 것을 가능하게 하는 악성 코드를 포함할 수도 있다. 써드파티 스크립팅 언어들을 임베딩하는 어플리케이션들 및 스크립팅 언어들의 보안을 향상시키는 것은 더욱 더 중요한 설계 기준이 되고 있다.
개요
여러 양태들은, 다시 호스트 서버로 통신되는 것이 허용되는 정보의 타입들을 제한하는 동안 클라이언트 어플리케이션 내에서의 크로스 스크립트 통신들을 허용하도록 구성된 시스템들, 방법들, 및 디바이스들을 포함한다. 일 양태에서, 동적 언어 값에 보안 라벨들을 인코딩하는 방법은 인코딩된 라벨들을 저장하기 위해 상기 동적 언어 값에서의 다수의 비트들을 할당하는 단계, 보안 라벨들이 제 1의 모드에서 인코딩되는지 또는 제 2의 모드에서 인코딩되는지를 나타내기 위해, 할당된 상기 비트들에서의 한 비트를 예비하는 (reserving) 단계, 및 발신 도메인 (originating domain) 을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 (tagging) 동작으로서, 상기 보안 라벨들은 상기 제 1의 모드 또는 상기 제 2의 모드 중 어느 하나에서 인코딩되는, 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 단계를 포함할 수도 있다. 일 양태에서, 그 방법은 예비된 상기 비트가 상기 제 1의 모드가 선택된 것을 나타내는지 또는 상기 제 2의 모드가 선택된 것을 나타내는지를 결정하는 단계, 상기 제 1의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면 원-핫-비트 (one-hot-bit) 로서 인코딩되고 있는 것으로서 보안 라벨을 식별하고 비트단위 (bitwise) OR 연산을 수행하는 단계, 및 상기 제 2의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 참조인 것으로서 상기 보안 라벨을 식별하고 메모리 판독 동작들을 수행하는 단계를 더 포함할 수도 있다. 일 양태에서, 상기 발신 도메인을 식별하는 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 단계는, 다른 도메인들로부터 기원하는 스크립트들로부터의 정보에 액세스하는 스크립트들의 수가 할당된 상기 비트들의 수 미만이면 상기 제 1의 모드에서 동적 언어 라벨들을 인코딩하는 단계를 포함할 수도 있다. 일 양태에서, 인코딩된 라벨들을 저장하기 위해 동적 언어 값에서의 다수의 비트들을 할당하는 단계는, 인코딩된 라벨들을 저장하기 위해 자바스크립트 값에서의 다수의 비트들을 할당하는 단계를 포함할 수도 있다. 일 양태에서, 이 방법은, 예를 들면, 자바®, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비, 펄, 스칼라, 얼랑, 캔들, 및 닷넷 언어들을 포함하는 동적 또는 스크립팅 언어들을 사용하여 구현될 수도 있다.
다른 양태들은 인코딩된 라벨들을 저장하기 위해 상기 동적 언어 값에서의 다수의 비트들을 할당하는 수단, 보안 라벨들이 제 1의 모드에서 인코딩되는지 또는 제 2의 모드에서 인코딩되는지를 나타내기 위해, 할당된 상기 비트들에서의 한 비트를 예비하는 수단, 및 발신 도메인을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 수단으로서, 상기 보안 라벨들은 상기 제 1의 모드 또는 상기 제 2의 모드 중 어느 하나에서 인코딩되는, 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 수단을 포함하는 컴퓨팅 디바이스를 포함한다. 일 양태에서, 컴퓨팅 디바이스는 예비된 상기 비트가 상기 제 1의 모드가 선택된 것을 나타내는지 또는 상기 제 2의 모드가 선택된 것을 나타내는지를 결정하는 수단, 상기 제 1의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 원-핫-비트 (one-hot-bit) 로서 인코딩되고 있는 것으로서 보안 라벨을 식별하고 비트단위 OR 연산을 수행하는 수단, 및 상기 제 2의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 참조인 것으로서 상기 보안 라벨을 식별하고 메모리 판독 동작들을 수행하는 수단을 포함한다. 다른 양태에서, 상기 발신 도메인을 식별하는 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 수단은, 다른 도메인들로부터 기원하는 스크립트들로부터의 정보에 액세스하는 스크립트들의 수가 할당된 상기 비트들의 수 미만이면 상기 제 1의 모드에서 동적 언어 라벨들을 인코딩하는 수단을 포함할 수도 있다. 다른 양태에서, 상기 동적 언어 값에서의 다수의 비트들을 할당하는 수단은, 자바®, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비, 펄, 스칼라, 얼랑, 캔들, 및 닷넷 언어들로 구성되는 그룹에서 선택된 언어에서의 다수의 비트들을 할당하는 수단을 포함할 수도 있다.
다른 양태들은 동적 언어 값에 보안 라벨들을 인코딩하는 동작들을 수행하는 프로세서 실행가능 명령들로 구성된 프로세서를 포함하는 컴퓨팅 디바이스를 포함하는데, 상기 동작들은, 인코딩된 라벨들을 저장하기 위해 상기 동적 언어 값에서의 다수의 비트들을 할당하는 것, 보안 라벨들이 제 1의 모드에서 인코딩되는지 또는 제 2의 모드에서 인코딩되는지를 나타내기 위해, 할당된 상기 비트들에서의 한 비트를 예비하는 것, 및 발신 도메인 (originating domain) 을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것으로서, 상기 보안 라벨들은 상기 제 1의 모드 또는 상기 제 2의 모드 중 어느 하나에서 인코딩되는, 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것을 포함할 수도 있다. 일 양태에서, 상기 프로세서는, 예비된 상기 비트가 상기 제 1의 모드가 선택된 것을 나타내는지 또는 상기 제 2의 모드가 선택된 것을 나타내는지를 결정하는 것, 상기 제 1의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 원-핫-비트 (one-hot-bit) 로서 인코딩되고 있는 것으로서 보안 라벨을 식별하고 비트단위 (bitwise) OR 연산을 수행하는 것, 및 상기 제 2의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 참조인 것으로서 상기 보안 라벨을 식별하고 메모리 판독 동작들을 수행하는 것을 더 포함할 수도 있는 동작들 수행하는 프로세서 실행가능 명령들로 구성될 수도 있다. 다른 양태에서, 상기 프로세서는, 상기 발신 도메인을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 동작이, 다른 도메인들로부터 기원하는 스크립트들로부터의 정보에 액세스하는 스크립트들의 수가 할당된 상기 비트들의 수 미만이면 상기 제 1의 모드에서 동적 언어 라벨들을 인코딩하는 동작을 포함하도록 하는 프로세서 실행가능 명령들로 구성될 수도 있다. 다른 양태에서, 프로세서는, 동적 언어 값에서의 다수의 비트들을 할당하는 동작이, 자바®, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬® 루비, 펄, 스칼라, 얼랑, 캔들, 및 닷넷 언어들로 구성되는 그룹에서 선택된 언어에서의 다수의 비트들을 할당하는 동작을 포함하도록 하는 프로세서 실행가능 명령들로 구성될 수도 있다.
다른 양태들은, 프로세서로 하여금, 동적 언어 값에 보안 라벨들을 인코딩하는 동작들을 수행하게 하도록 구성된 프로세서 실행가능 소프트웨어 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체를 포함하고, 상기 동작들은, 인코딩된 라벨들을 저장하기 위해 상기 동적 언어 값에서의 다수의 비트들을 할당하는 것, 보안 라벨들이 제 1의 모드에서 인코딩되는지 또는 제 2의 모드에서 인코딩되는지를 나타내기 위해, 할당된 상기 비트들에서의 한 비트를 예비하는 것, 및 발신 도메인 (originating domain) 을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것으로서, 상기 보안 라벨들은 상기 제 1의 모드 또는 상기 제 2의 모드 중 어느 하나에서 인코딩되는, 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것을 포함한다. 일 양태에서, 저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 프로세서로 하여금, 예비된 상기 비트가 상기 제 1의 모드가 선택된 것을 나타내는지 또는 상기 제 2의 모드가 선택된 것을 나타내는지를 결정하는 것, 상기 제 1의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 원-핫-비트 (one-hot-bit) 로서 인코딩되고 있는 것으로서 보안 라벨을 식별하고 비트단위 (bitwise) OR 연산을 수행하는 것, 및 상기 제 2의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 참조인 것으로서 상기 보안 라벨을 식별하고 메모리 판독 동작들을 수행하는 것을 포함하는 동작들을 수행하게 하도록 더 구성된다. 다른 양태에서, 저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 프로세서로 하여금, 상기 발신 도메인을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것이, 다른 도메인들로부터 기원하는 스크립트들로부터의 정보에 액세스하는 스크립트들의 수가 할당된 상기 비트들의 수 미만이면 상기 제 1의 모드에서 동적 언어 라벨들을 인코딩하는 것을 포함하도록 하는 동작들을 수행하게 하도록 더 구성될 수도 있다. 다른 양태에서, 동적 언어 값에서의 다수의 비트들을 할당하는 것은, 자바®, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비, 펄, 스칼라, 얼랑, 캔들, 및 닷넷 언어들로 구성되는 그룹에서 선택된 언어에서의 다수의 비트들을 할당하는 것을 포함할 수도 있다.
본원에 통합되고 본 명세서의 일부를 구성하는 첨부의 도면들은 본 발명의 예시적인 양태들을 예시하며, 위에서 주어진 일반적인 설명 및 아래에서 주어지는 상세한 설명과 함께, 본 발명의 피쳐들을 설명하도록 기능한다.
도 1은 다수의 도메인들로부터의 스크립트들을 임베딩하는 클라이언트 어플리케이션을 갖는 예시적인 컴퓨팅 네트워크에서의 논리적 흐름들을 예시하는 컴포넌트 블록도이다.
도 2는 암시적인 정보 흐름을 사용하여 보안 변수를 빼내기 위해 사용될 수도 있는 예시적인 스크립트들의 예시이다.
도 3은 정보 플로우들을 추적하기 위한 그리고 악성 스크립트들이 원격 서버와 통신하는 것을 방지하기 위한 양태적 방법의 프로세스 흐름도이다.
도 4a 및 도 4b는, 크로스 스크립팅 동작들 (cross-scripting operations) 로부터 얻어진 정보를 통신하려고 시도하는 스크립트들이 식별될 수도 있도록 하는 동적 값들을 저장하는 태그들을 예시하는 메시지 구조도이다.
도 5는 런타임 엔진에서의 라벨들을 전파하는 양태적 방법의 프로세스 흐름도이다.
도 6은 일 양태에 따라 라벨들을 전파하는 동안 논리적 컴포넌트들에 의해 저장된 값들을 예시하는 데이터 구조도이다.
도 7은, 감염된 데이터 (tainted data) 의 서버 또는 써드파티로의 누설을 차단하기 위해, 라벨링된 다중 레벨 값들을 효율적으로 사용하기 위한 일 양태적 방법의 프로세스 흐름도이다.
도 8은 여러 양태들과 함께 사용하기에 적합한 컴퓨팅 디바이스의 컴포넌트 블록도이다.
도 9는 여러 양태들과 함께 사용하기에 적합한 예시적인 모바일 디바이스의 예시이다.
도 10은 여러 양태들과 함께 사용하기에 적합한 예시적인 퍼스널 컴퓨터의 예시이다.
상세한 설명
첨부된 도면들을 참조하여 여러 양태들을 상세히 설명할 것이다. 가능하면, 도면들 전체에 걸쳐 동일한 또는 유사한 부분들을 참조하기 위해, 동일한 도면 부호들이 사용될 것이다. 예시적인 목적들을 위해 특정 실시형태들 및 구현예들을 참조하지만 본 발명의 범위 또는 특허청구범위를 제한하기 위한 의도는 아니다.
본원에서 용어 "컴퓨팅 디바이스"는 일반적으로, 서버, 퍼스널 컴퓨터, 모바일 디바이스들, 셀룰러 전화기들, 태블릿 컴퓨터들, 랩탑 컴퓨터들, 넷북들, 팜탑 컴퓨터들, PDA들 (personal data assistants), 무선 전자 메일 수신기들 (예를 들면, Blackberry® 및 Treo® 디바이스들), 멀티미디어 인터넷 가능 셀룰러 전화기들 (예를 들면, Blackberry Storm®), GPS (Global Positioning System) 수신기들, 무선 게임용 컨트롤러들, 퍼스널 컴퓨터들, 및 프로그램 가능 프로세서를 포함하는 유사한 퍼스널 전자 디바이스들 중 임의의 것을 지칭할 수도 있다. 제한된 프로세싱 파워를 갖는 셀룰러 전화기와 같은 모바일 디바이스들에서 여러 양태들이 특히 유용하지만, 일반적으로, 그 양태들은 동적 및/또는 스크립팅 언어들로 작성된 어플리케이션들 및 스크립트들을 실행하는 임의의 컴퓨팅 디바이스에서 유용하다.
본원에서, 용어 "매시업"은, 2개 이상의 소스들로부터의 데이터, 컨텐츠, 코드, 피쳐들, 서비스들, 및/또는 기능들 (총칭하여, "컨텐츠") 을 결합하여 새로운 서비스/어플리케이션을 생성하는 웹페이지 또는 클라이언트 어플리케이션을 지칭하기 위해 사용된다. 컨텐츠는 통합된 그리고 코히어런트한 방식으로 결합될 수도 있거나, 또는 분산되고 흩어질 수도 있다. 매시업들은 서버 기반 또는 클라이언트 기반일 수도 있다. 서버측 매시업들은 일반적으로, 하나 이상의 호스트 웹 사이트들과 클라이언트 어플리케이션 (예를 들면, 브라우저) 사이에서 프록시로서 작용하는 서버 상에 컨텐츠를 통합할 수도 있다. 클라이언트측 매시업들은 컨텐츠를 클라이언트 어플리케이션 상에 직접적으로 통합한다. 매시업들은 또한 SaaS (software provided as a service) 와 함께 또는 SOA들 (service oriented architectures) 과 함께 사용될 수도 있다.
용어 "동적 언어" 및 "스크립팅 언어"는 본 출원에서 일반적으로 그리고 상호교환적으로 사용되며, 인터프리트 방식의, 컴파일 방식의, 또는 런타임에서 동적으로 번역되는 프로그램들 (이하, "스크립트들") 을 작성하기 위해 사용되는 임의의 동적 또는 스크립팅 언어들, 또는 JIT (just-in-time) 컴파일을 지원하는 임의의 언어를 지칭할 수도 있다. 이들 용어들은 또한 런타임의 가상 머신을 포함하는, 및/또는 동적으로 컴파일되는 임의의 언어를 지칭할 수도 있다. 본 출원의 범위 내의 동적 그리고 스크립팅 언어들의 예들은, 예를 들면, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비, 펄, 스칼라, 얼랑, 캔들뿐만 아니라, 자바®, 닷넷 언어들, 및 미래에 개발될 수도 있는 다른 언어들을 포함한다.
본원에서, 여러 양태들에 의해 해결되거나 또는 사용될 수도 있는 동적 언어의 편리한 예로서 자바스크립트® 및 자바스크립트 관련 용어를 사용하여 여러 양태들이 설명된다. 그러나, 자바스크립트®를 참조하는 예들, 및 자바스크립트®에 대한 다른 참조들은 예시의 목적들만을 위한 것이며, 그 설명들 또는 클레임들을 그 특정한 타입의 동적 언어로 제한하려고 의도된 것은 아님을 이해해야만 한다. 따라서, 특허청구범위의 범위는, 특허청구범위에서 구체적으로 언급되지 않는 한, 자바스크립트®를 나열하거나 요구하는 것으로 이해되어선 안된다.
많은 동적 언어들은, 클라이언트 어플리케이션들이, 많은 상이한 웹사이트들로부터 유래하는 컨텐츠 및 코드 (라이브러리들, 광고들 등) 로부터 형성되는 것을 가능하게 하고, 소프트웨어 개발에서의 성장하고 있는 트렌드는 많은 상이한 써드파티 스크립트들을 단일 웹사이트 상에 임베딩할 것이다. 이들 동적 언어들은 임베딩된 써드파티 코드가 다수의 소스들로부터 런타임으로 다운로드되는 것을 허용한다. 임베딩된 스크립트들은 호스트 웹페이지 (hosting web page) 상의 민감한 정보 (예를 들면, 쿠키들, 로케이션 바, 회사 고객 계정들 등) 에 액세스할 수도 있고, 대부분의 브라우저들은 임베딩 페이지로부터의 정보 및 변수들에 이들 스크립트들이 동적으로 액세스하여 수정하는 것을 허용한다. 악성 코드는 이들 및 다른 취약점들을 활용하여 유저로부터 민감한 정보를 수집하고, 이러한 정보를 공격자에 의해 제어되는 서버로 전송하려고 시도할 수도 있는데, 이 서버는 유저에 대한 사기행위를 영속시키도록 그 정보를 사용할 수 있다. 악성 코드는 또한 URL (universal resource locator) 스트링 변수들에 저장된 값들을 액세스/수정하여, 유저의 동의 없이 또는 유저가 알지 못하게, 그 페이지를 악성 사이트로 리다이렉팅할 수도 있다. 웹기반 보안을 제공하는 기존의 방법들은 이들 타입들의 공격들을 핸들링하기에는 부족하고 및/또는 모바일 컴퓨팅 디바이스들과 같은 제한된 컴퓨팅 환경에서 구현하기에는 너무 부담이 된다.
상기 언급된 취약점들에 추가하여, 많은 동적 언어들은, 다른 언어 피쳐들 (예를 들면, 마우스 오버 효과들) 과 연계하여 사용될 수도 있는 여러 종류들의 네트워크 요청들 (예를 들면, 이미지에 대한 GET 요청 및/또는 AJAX 요청들) 을 전송하는 DOM (document object model) 오브젝트들을 공격자가 추가 및/또는 수정하여 주입 공격 (injection attack) 을 개시하는 것을 허용한다. 주입 공격들은, 유저 경험에 인식가능하게 영향을 미치지 않으면서, 그리고 런타임 거동에서의 관측가능한 차이들 없이, 악성 액션들을 수행하는 코드를 공격자가 삽입하는 것을 허용하며, 유저들은 그들의 데이터가 빼내어진다는 것을 일반적으로 알아차리지 못한다. 또한, 많은 동적 언어들은, 그들이 전통적인 정적 분석 기법들에 저항하게 하는 플렉시블 타이핑 시스템을 지원한다. 또한, 클라이언트 어플리케이션들 (예를 들면, 웹브라우저들) 은 통상 스크립트들 및 라이브러리들이 공유 콘텍스트 및 메모리 공간 내에 동적으로 로딩되어 실행되는 것을 허용한다. 이들 피쳐들은, 악성 및 양성 양자의 저작자들이, 공격들을 개시하기 위해 사용될 수도 있는 스크립트들을 클라이언트 컴퓨팅 디바이스 상에서의 실행을 위해 전달하는 것을 허용한다. 악성 코드를 식별하고 이러한 공격들을 방지하기 위한 기존의 방법들은 일반적으로 정보 보안의 전체 검증 및/또는 복잡한 라벨링 스킴들 (schemes) 을 필요로 하고, 제한된 컴퓨팅 환경들 (예를 들면, 모바일 컴퓨팅 디바이스들 등) 에서 구현하기엔 너무 비효율적이고, 복잡하며, 비용이 많이 든다.
상기 언급된 시나리오들에 대한 보안 위반들을 방지하기 위한 기존의 해결책들은 일반적으로 2개의 대중적인 보안 모델들: 샌드박스 모델; 및 SOP (same origin policy; 동일 출처 정책) 모델 중 하나에서 구현하는 것을 포함한다. 샌드박스 모델은, 다수의 컨텐츠 소스들이 서로 상호작용하는 것을 방지하는 것에 의해 악성 코드가 유발할 수 있는 손상의 양을 클라이언트 어플리케이션들이 제한하는 것을 허용한다. 샌드박스 모델을 구현하는 시스템들은, 특정한 클라이언트 (예를 들면, 브라우저 탭, 브라우저 등) 내부의 데이터가 다른 클라이언트들 또는 로컬 시스템들로 통신되는 것이 방지되도록, 상호작용을 제한할 수도 있다. 예를 들면, 웹페이지를 방문하는 경우, 샌드박스 모델을 구현하는 클라이언트들은 호스트 컴퓨팅 디바이스 상에서의 인증되지 않은 소켓들 및/또는 파일들의 액세스 및/또는 인증되지 않은 웹사이트들과의 통신들을 방지할 수도 있다. 다른 예로서, 샌드박스 모델을 구현하는 클라이언트들은, 임베딩된 스크립트들이, 범용의 프로그래밍 작업들 (예를 들면, 파일들을 생성하고 판독하는 것 등) 이 아닌, 웹관련 액션들만을 수행할 것을 요구할 수도 있다.
SOP (same origin policy) 모델을 구현하는 클라이언트들은 일반적으로, 동일 소스로부터 기원하지 않는 정보에 대한 임베딩된 스크립트의 액세스를 제한한다. 예를 들면, 동일 출처 정책은 동일한 출처를 갖는 스크립트들이 서로의 방법들 및 오브젝트들에 액세스하는 것을 허용할 수도 있지만, 상이한 출처를 갖는 스크립트들이 서로의 방법들 및 오브젝트들에 액세스하는 것을 방지한다. 이와 같이, SOP를 구현하는 클라이언트들은 악성 스크립트들이 상이한 도메인에 속하는 정보의 기밀성 및 무결성을 파괴하는 것을 방지할 수도 있다.
이들 모델들이 보안성에서 몇몇 개선점들을 제공하지만, 현재의 구현예들은 제한된 컴퓨팅 환경에서 구현되기에는, 일반적으로 너무 제한적이고, 너무 비효과적이며, 너무 비효율적이며 및/또는 고가이다. 또한, 기존 보안 모델들 (예를 들면, 샌드박스, SOP 등) 이 일반적으로 인터 스크립트 (inter-script) 및 크로스 스크립트 통신들을 제한하기 때문에, 이들은 위에서 설명된 새롭게 도래하는 기술들 및 프로그래밍 기술들 (예를 들면, 매시업들, 원격 API 등) 에 대한 유저들에 의해 요구되는 기능성 및 보안의 레벨들을 맞추기에는 부족하다. 예를 들면, 메시업들은 기존의 보안 해결책들의 구현을 복잡하게 하는데, 그 이유는 이들이 종종 공유된 오브젝트들을 생성하는 상이한 도메인들로부터의 협력 스크립트들 (cooperating scripts) 을 포함하기 때문이다. 이들 공유된 오브젝트들의 생성을 지원하기 위해, 웹페이지는 SOP를 사용하여 코드/스크립트들을 상이한 도메인들로부터 격리할 수 없다. 공격자가 코드를 이러한 웹페이지에 어떻게 해서든 주입하면, 그 전체 페이지는 손상될 수도 있다.
여러 양태들은, 호스트 서버에 다시 통신되는 것이 허용되는 정보의 타입들을 제한하면서 클라이언트 내에서의 크로스 스크립트 통신들을 허용함으로써, 현재 보안 방법들의 이들 및 다른 제한들을 극복한다. 위에서 논의된 다른 웹기반의 시스템들과의 강한 통합을 허용하는 대중적인 언어 특징들을 지원하기 위해, 악성 코드는 국소적으로 (예를 들면, 클라이언트 상에서) 동작들을 수행하도록 허용될 수도 있다. 검출 및 방지 메커니즘은 악성 코드를 식별하고 요청들 또는 임의의 수집된 정보를 네트워크를 통해 전송하는 것을 방지할 수도 있고, 그 결과 공격들을 무력화시키고 동적 언어 코드를 임베딩하는 어플리케이션들의 보안성을 향상시키게 된다.
여러 양태들은 컴파일동안 정적 분석들을 수행하고, 그 결과들은 프로그램의 실행동안의 값들 (예를 들면, 자바스크립트 값들) 에 부착된 라벨들 (예를 들면, 자바스크립트 라벨들) 을 업데이트하고, 수정하고, 그리고 전파하는 추가적인 코드를 생성하고 삽입하는 데 사용될 수도 있다.
여러 양태들은 소프트웨어 가상 머신 내에서부터 정보 흐름들을 추적하는 추적 시스템을 제공한다. 언어 값들 (예를 들면, 자바스크립트 값들) 은 발신 도메인 (originating domain) 을 식별하는 보안 라벨들로 최초 태그가 붙을 수도 있다. 언어 값은 코드 (예를 들면, 자바스크립트 코드) 의 특정 부분이 생성 및/또는 판독할 수 있는 임의의 값일 수도 있다. 언어 라벨 (예를 들면, 자바스크립트 라벨) 은 언어 값들 (예를 들면, 자바스크립트 값들) 을 코드의 특정 조각의 발신지 (origin) 를 식별하는 도메인 값 (예를 들면, www.google.com) 과 관련시킬 수도 있다.
일 양태에서, 언어 라벨들 및 언어 값들은 다수의 레벨들에서 인코딩될 수도 있다. 다수의 레벨들의 사용은, 라벨들을 2개 이상의 모드들 (예를 들면, 패스트 모드, 슬로우 모드 등) 로 나누고, 다른 스크립트들로부터 얻어진 정보를 포함하는 언어 값들의 식별을 크게 단순화하는 것에 의해, 정보 흐름 추적을 위한 언어 값들에서의 라벨들의 인코딩을 허용한다. 그 다음, 언어 라벨들은 언어 라벨들과 일치하지 않는 사이트들로의 임의의 정보의 전송을 방지하기 위해 사용될 수도 있고, 그 결과 구현이 간단한 메커니즘을 사용하여 정보의 인증되지 않은 유출을 방지하게 된다.
도 1은, 기밀 정보가 유저로부터 악성적으로 수집되어 유저의 동의 없이 또는 유저가 모르게 외부 서버로 전송되는 예시적인 시스템에서의 컴포넌트들 및 정보 흐름들 (100) 을 예시한다. 위에서 언급된 바와 같이, 클라이언트 어플리케이션들 (예를 들면, 웹브라우저들) 은 다수의 사이트들/서버들로부터 코드 (예를 들면, 자바스크립트 스크립트들) 를 끌어와 결합할 수도 있다. 도 1의 예시된 예에서, 클라이언트 (120) 는 제 1의 서버/사이트 (예를 들면, www.good.com) (102) 및 제 2의 서버/사이트 (예를 들면, www.attacker.com) (112) 양자로부터 코드를 수신한다. 블록 104에서, 제 1의 서버 (예를 들면, www.good.com) 로부터 유래하는 코드는, 기밀 정보 (예를 들면, 패스워드들, 이메일 주소들 등) 를 포함하는 변수 (예를 들면, 핀) 를 생성할 수도 있다. 위에서 언급된 바와 같이, 동적 언어들 (예를 들면, 자바스크립트®) 는 다수의 스크립트들이 동일한 실행 콘텍스트에서 실행하는 것을 허용하고, 각각의 코드 단위는 다른 코드의 변수들 및 기능들을 수정할 수도 있다. 따라서, 블록 106에서, 제 2의 서버 (예를 들면, www.attcker.com) 로부터의 코드는 제 1의 서버에 의해 생성된 변수 (예를 들면, 핀) 를 판독할 수도 있다. 블록 108에서, 제 2의 서버 (예를 들면, www.attcker.com) 로부터의 코드는 노드를 DOM 트리에 추가하고, 이미지 (예를 들면, someimage.jpg) 를 요청하고, 블록 110에서, 클라이언트 (120) 가 빼낸 정보 (예를 들면, 핀의 값) 를 페이로드로서 제 2의 서버에 전송하게 할 수도 있다.
이 인증되지 않은 정보의 수집은 명시적으로 또는 암시적으로 발생할 수도 있다. 명시적 정보 흐름 수집은, 대입문 (assignment statement) 에서와 같이,하나의 변수의 값이 다른 변수의 값에 명시적으로 의존하는 경우에 발생한다. 암시적 정보 흐름 수집은, 취해지지 않은 제어 경로들의 지식을 사용하여 데이터를 유용하도록 공격자가 프로그램을 정렬하는 경우 발생한다.
도 2는 암시적 정보 흐름 공격을 사용하여 보안 변수를 빼내기 위해 사용될 수도 있는 예시적인 자바스크립트 스크립트들 (202, 204) 을 예시한다. 암시적 정보 흐름 공격에서, 공격자는, 비밀 값들에 대한 제어 흐름 분기들 (control flow branches) 을 포함하는 코드 (202, 204) 를 주입하고 결과로서 실행되는 부작용들 (side-effects) (또는 그 결핍) 을 관측함으로써 시스템 내의 비밀 변수들의 값들을 논리적으로 추론할 수도 있다. 이러한 접근법이 작용하기 위해, 공격자는, 코드가 주입될 시스템의 어떤 상세한 지식을 가져야만 하는데, 이것은 소스 코드가 일반적으로 유저에게 직접적으로 쉬핑되기 때문에 대부분의 웹기반 시스템들 상에서 쉽게 충족된다. 공통의 보안 설계들은, 실행되고 있는 상이한 스크립트들 사이의 통신을 보안함으로써 이러한 공격들의 방지를 꾀하고, 따라서 그것이 발생하기 전에 크로스 사이트 스크립팅의 정지를 시도한다.
여러 양태들은, 악성 자바스크립트들을 실행하고 크로스 사이트 스크립팅을 허용함으로써, 그러나 수집된 정보가 전달되는 것을 방지함으로써, 공통의 보안 설계들로부터 시작한다. 구체적으로는, 공격의 검출 및 방지는, 악성 코드가 수집된 정보를 네트워크를 통해 실제 전송을 시도할 때로 연기될 수도 있는데, 이때 검출 및 방지 메커니즘은 악성 코드에 의해 요청이 통신되는 (유출되는) 것을 방지한다.
도 3은 정보 흐름들을 추적하고 악성 코드가 원격 서버와 통신하는 것을 방지하는 일 양태적 방법 (300) 을 예시한다. 302에서, 실행 이전에, 언어 값들 (예를 들면, 자바스크립트 값들) 은 발신 도메인을 식별하는 보안 라벨들로 최초 태그가 붙을 수도 있다. 위에서 논의된 바와 같이, 언어 값은 동적 언어 코드의 특정 부분이 생성 및/또는 판독할 수 있는 임의의 값일 수도 있고, 언어 라벨 (예를 들면, 자바스크립트 라벨) 은 언어 값들 (예를 들면, 자바스크립트 값들) 을, 코드의 특정 조각의 발신지를 식별하는 도메인 값 (예를 들면, www.google.com) 과 관련시킨다.
일 양태에서, 언어 라벨들 및 값들은 다수의 레벨들에서 인코딩될 수도 있다. 다수의 레벨들의 사용은, 라벨들을 2개 이상의 모드들 (예를 들면, 패스트 모드, 슬로우 모드) 로 나누고, 다른 스크립트들로부터 얻어진 정보를 포함할 수도 있는 언어 값들의 식별을 크게 단순화시킴으로써 정보 흐름 추적을 위한 값들에서의 라벨들의 인코딩을 허용한다.
도 3으로 돌아가서, 블록 304에서, 컴파일 시 정적 분석이 수행될 수도 있고, 이것은 보안에 민감한 동작들 (예를 들면, 지정들 (assignments)) 에 대응하는 추가적인 코드를 생성/발할 (emit) 수도 있다. 일 양태에서, 생성된/발해진 코드는 흐름 분기들 및 합류를 제어하고, 모든 언어 값 (예를 들면, 자바스크립트 값) 에 대한 보안 태그들을 전파할 수도 있다. 블록들 306-310에서, 런타임으로, 가상 머신 (예를 들면, 자바사크립트 가상 머신) 은 추가적으로 생성된/발해진 코드를 실행하고, 각각의 값에 적용되는 라벨들을 관리하고, 프로그램 내에서의 정보의 흐름을 추적할 수도 있다. 블록 312에서, 검출 및 방지 메커니즘/프로세스는, 통신하는 스크립트와 동일한 도메인으로부터 기원하는 다른 스크립트들로부터 얻어진 정보의 전달 시도들을 검출하는 동작들을 수행할 수도 있다. 블록 314에서, 검출 및 방지 메커니즘/프로세스는 요청이 네트워크를 통해 전송되는 것을 방지할 수도 있다. 일 양태에서, 공격들의 검출 및 방지는, 네트워크를 통한 수집된 정보의 전송을 악성 스크립트들이 시도할 때까지 연기될 수도 있다.
도 4a 및 도 4b는, 크로스 스크립팅 동작들로부터 얻어진 정보를 전달하려고 시도하는 스크립트들이 즉각 식별되도록, 언어 값들을 저장하는 양태적 라벨링 메커니즘들/프로세스 (400, 450) 를 예시한다. 명확화를 위해, 다음의 설명은 예시적인 동적 언어로서 자바스크립트®를 사용한다. 그러나, 아주 다양한 동적 언어들이 본 출원의 범위 내에 있으며 특허청구범위는, 특허청구범위에서 그와 같이 명시적으로 언급되지 않는 한, 자바스크립트®로 제한되지 않아야 함이 이해되어야 한다.
일반적으로, 모든 언어 값은 m비트의 값 (예를 들면, 192비트의 값) 으로서 저장될 수도 있고, 이것을 자바스크립트 엔진에서 동적 값 또는 줄여서 D값이라고 부른다. 도 4a-도 4b의 예시된 예들에서, 192비트의 D값들은 24바이트들로서 표현된다. 자바스크립트 값들은, 최저 n비트들 (예를 들면, 바이트들 0-1) 이 타입 값 (스트링, 더블 등) 을 저장하고, 다음 x비트들 (예를 들면, 바이트들 2-3, 바이트들 2-5) 이 자바스크립트 값에 대한 발신 도메인 라벨을 효율적으로 인코딩하는 라벨 정보를 저장하도록 저장된다. 이와 같이, x (예를 들면, 32, 64) 개수의 상이한 도메인들이, 라벨 결합들을 위한 논리적 'OR' 연산의 사용을 허용하는 모든 자바스크립트 값에서 인코딩될 수도 있는데, 논리적 'OR' 연산은 최소 런타임 오버헤드만을 필요로 한다.
위에서 언급된 바와 같이, 일 양태에서, 라벨들 및 값들은, x비트들 중 일부가 발신 도메인 라벨 정보를 인코딩하도록, 그리고 x비트들 중 일부가 라벨 정보를 포함하는 로케이션에 대한 포인터를 저장하도록 다수의 레벨들에서 인코딩될 수도 있다. 일 양태에서, 발신 도메인 라벨 정보를 인코딩하기 위해 사용되는 x비트들의 수는 스크립트들의 수에 기초하여 조정될 수도 있다. 일 양태에서, 발신 도메인 라벨 정보를 인코딩하기 위해 사용되는 x비트들의 수는 이전 실행들로부터 얻어진 정보, 유저의 브라우징 이력, 또는 런타임에서 수집된 메트릭들에 기초하여 조정될 수도 있다.
도 4a 및 도 4b로 돌아가서, 방법들 (400 및 450) 에서, 자바스크립트 값들은, D값 구조의 y비트들 (예를 들면, 바이트들 4-11, 바이트들 6-13) 이 실제 값을 저장하고, z비트들 (예를 들면, 바이트들 12-15, 바이트들 14-15) 이 정렬 정보를 저장하고, 그리고 하이 비트들 (예를 들면, 바이트들 16-23) 이 오브젝트 포인터를 저장하도록, 저장될 수도 있다.
도 5는 일 양태에 따른 인터프리터 (예를 들면, 자바스크립트 엔지) 에서 라벨들을 전파하는 예시적인 방법 (500) 을 예시한다. 블록 502에서, 실행 이전에, 코드의 임베딩된 단위 (예를 들면, 자바스크립트 스크립트) 는 그것의 발신 도메인 (예를 들면, www.good.com) 을 도메인 레지스터에 등록할 수도 있다. 블록 504에서, 값 (예를 들면, 12) 은 실행되는 프로그램들의 모두에 걸쳐 공유되는 실행 콘텍스트에서 제 1의 변수에 할당될 수도 있다. 블록 506에서, 내부 표시 (internal representation) 는 제 1의 변수에 대해 생성될 수도 있다. 블록 508에서, 내부 표시는, 예를 들면, 값 (예를 들면, 12) 의 2진 표시 (1100) 를 상위 4 비트들에 저장함으로써 제 1의 변수에 할당된 값 (예를 들면, 12) 을 포함하도록 업데이트될 수도 있다. 블록 510에서, 도메인 (예를 들면, www.good.com) 과 관련된 라벨 (0000-0001) 은 또한 제 1의 변수에 부착될 수도 있다. 블록 512에서, 블록들 (502-510) 의 동작들은 상이한 발신 도메인 (예를 들면, www.attacker.com) 을 갖는 제 2의 변수에 대해 수행될 수도 있다. 블록 514에서, 논리적 'OR' 연산을 사용하여, 하나보다 많은 도메인과 관련된 것으로 값들을 식별하는 라벨 태그 값이 계산될 수도 있다.
도 6은, 양태적 방법 (500) 에 따라 인터프리터 (예를 들면, 자바스크립트 엔진) 에서 라벨들을 전파하는 동안 도메인 레지스터, 실행 콘텍스트 및 언어 값들의 내부 표시들의 값들을 예시하는 도면이다. 실행 이전에, 코드의 모든 단위 (예를 들면, 자바스크립트 스크립트들) 는 그것의 발신 도메인 (예를 들면, www.good.com, www.attacker.com) 을 도메인 레지스터 (602) 에 등록할 수도 있고 내부 표시 (604) 는 예시적인 변수들 (a, b 및 c) 에 대해 생성될 수도 있다. 값 (예를 들면, 12) 은, 모든 실행되는 프로그램들에 걸쳐 공유될 수도 있는 공유된 실행 콘텍스트 (604) 에서 변수 "a"에 할당될 수도 있다. 그 다음, 내부 표시는, 값 (예를 들면, 12) 의 2진 표시 (1100) 를 상위 4 비트들에서 저장함으로써 변수 "a"에 할당된 값 (예를 들면, 12) 을 포함하도록 업데이트될 수도 있다. 도메인 (예를 들면, www.good.com) 과 관련된 라벨 (0000-0001) 은 또한 변수 "a"에 부착될 수도 있다. 하위 8비트들 (0000-0101) 은 할당된 값 타입 (예를 들면, 정수, 더블 등) 을 정의할 수도 있다.
도 6의 예시된 예에서, 변수 "b"에 대한 내부 표시는 변수 "a"와 동일한 스키마들 (schemata) 을 따른다. 그러나, 변수 "c"는 도메인 www.good.com 및 www.attacker.com의 라벨들과 관련된 것으로서 값을 식별하는 라벨 태그 값 (0000-0011) 을 포함한다. 일 양태에서, 이 정보는 네트워크 요청이 정보를 전송하는 것을 허용하는지의 여부를 결정하기 위해 사용될 수도 있다.
일 양태에서, 논리적 OR 연산을 사용하여, 하나보다 많은 도메인과 관련된 것으로 값들을 식별하는 라벨 태그 값이 계산될 수도 있다. 임의의 요청이 네트워크를 통해 전송되기 이전에, 여러 양태들은 정보가 그 도메인으로 전송되는 것이 허용되는지의 여부 또는 보안 위반이 발생하는지를 체크할 수도 있다. 그 값의 라벨들은 비교될 수도 있고, 그 비교의 결과들은 전송된 요청이 허용될지의 여부를 결정하기 위해 사용될 수도 있다.
여러 양태들은 클라이언트 어플리케이션들이 정보를 누설하는 것을 방지한다. 전파 라벨들은, 모든 값이 모든 가능한 라벨들로 라벨링되는 라벨 크립 (라벨의 급격한 증가 (label explosion)) 으로 나타날 수도 있다. 일 양태에서, 라벨 크립이 발생하지 않도록 및/또는 라벨 크립이 성능에 영향을 주지 않도록, 자바스크립트®가 실행되었다. 일 양태에서, 타이밍 채널들에 기초하는 정보 누설은 무시될 수도 있다.
도 7은 서버 또는 써드파티로의 감염된 데이터의 누설을 차단하기 위해 효율적으로 라벨링된 다중 레벨 값들을 사용하는 일 양태의 방법 (700) 을 예시한다. 도 4a 및 도 4b를 참조로 위에서 논의된 바와 같이, x비트들 (예를 들면, 바이트들 2-3, 바이트들 2-5) 은 언어 값에 대한 발신 도메인 라벨 정보를 효율적으로 인코딩하는 라벨 정보를 저장할 수도 있다. 위에서 또한 논의된 바와 같이, 여러 양태들에서, 라벨들 및 값들은 다수의 레벨들에서 인코딩될 수도 있다. 다수의 레벨들의 사용은, 라벨들을 2개 이상의 모드들 (예를 들면, 패스트 모드, 슬로우 모드 등) 로 나누고, 다른 스크립트들로부터 얻어진 정보를 포함하는 언어 값들의 식별을 크게 단순화함으로써, 정보 흐름 추적을 위한 자바스크립트 값들에서의 라벨들의 인코딩을 허용한다.
도 7을 참조하면, 블록 702에서, 언어 라벨들은 2개의 모드들에서 언어 값들에 인코딩될 수도 있다: 모든 라벨들을 원-핫-비트 (one-hot-bit) 로서 값 그 자체에서 인코딩하는 패스트 모드; 및 다른 메모리 로케이션에 저장된 값에 대한 참조로서 라벨들을 인코딩하는 슬로우 모드. 블록 704에서, 제 1의 모드 (예를 들면, "패스트 모드") 가 사용될 것인지 또는 제 2의 모드 (예를 들면, "슬로우 모드") 가 사용될 것인지의 여부를 알리기 위해, 1비트가 예비될 수도 있다. 예를 들면, 라벨 정보를 저장하기 위해 16비트들 (예를 들면, 바이트 2-3) 이 예비되는 구성 (예를 들면, 도 4a) 에서, 16번째 비트는 제 1의 모드 (예를 들면, "패스트 모드") 가 사용될 것인지 또는 제 2의 모드 (예를 들면, "슬로우 모드") 가 사용될 것인지의 여부를 알리기 위해 예비될 수도 있다. 결정 블록 706에서, 패스트 모드가 선택되었음을 예비된 비트가 나타내는지의 여부가 결정된다. 패스트 모드가 선택되었다고 결정되면 (즉, 결정 블록 706="예"), 블록 708에서, 비트들의 나머지는 값 그 자체에서 인코딩되는 것으로 식별되고 그 식별 동작은 간단한 비트단위 OR 연산 (bitwise OR operation) 을 사용하여 수행될 수도 있다. 슬로우 모드가 선택되었다고 결정되면 (즉, 결정 블록 706="아니오"), 블록 710에서, 비트들의 나머지는 라벨들을 관리하는 일반적인 기술을 사용하여 인코딩되는 것으로 식별될 수도 있다. 예를 들면, 라벨 정보를 저장하기 위해 16비트들 (예를 들면, 바이트들 2-3) 이 예비되는 구성 (예를 들면, 도 4a) 에서, 16번째 스크립트가 다른 스크립트로부터의 값에 액세스하는 경우, 라벨 값들을 저장할 어떠한 공간도 더 이상 없으며 (즉, D값에 라벨 정보를 위해 예비된 비트들이 다 사용되었다) 라벨 값들은, 실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 키들로서 사용될 수도 있는 인덱스들을 저장하기 위해 슬로우 모드에서 인코딩되어야만 한다.
일 양태에서, 라벨 매니저는, 라벨이, 많은 라벨 정보를 저장하는 데 필요한 만큼 클 수도 있는 어레이로의 인덱스이도록 구성될 수도 있다. 이와 같이, 큰 수의 스크립트들이 지원될 수도 있고, 동시에, 간단한 비트단위 OR 연산을 사용하여 식별 동작들이 수행되는 것을 허용하는 슬로우 모드에서 저장될 값들에 대해 충분히 큰 수의 크로스 통신 스크립트들 (cross-communicating scripts) (예를 들면, 상기 예에서 15 스크립트들 이하) 을 포함하지 않는 각각의 자바스크립트에 대해 속도가 크게 향상된다.
여러 양태들은, 크로스 사이트 스크립팅을 정지시키도록 실행되는 상이한 스크립트들 사이에서의 보안 통신들에 일반적으로 초점을 맞춘 종래의 보안 해결책들로부터 시작한다. 여러 양태들은 악성 자바스크립트®가 로컬하게 실행되는 것을 허용하지만, 악성 코드가 정보를 호스트 사이트로 전송하는 것을 방지한다. 여러 양태들은 또한, 자바스크립트 값 자체에서 원-핫-비트로서 자바스크림트 라벨들의 인코딩을 허용하는 다수의 레벨들에서 자바스크립트 라벨들 및 값들을 인코딩함으로써 기존의 정보 흐름 추적 방법론에서 출발한다. 이것은, 유저 경험에 전혀 영향을 끼치지 않으면서, 복잡도를 크게 감소시키고, 효율을 향상시키며, 여러 양태들이 제한된 컴퓨팅 환경들에서 구현되는 것을 허용한다. 여러 양태들은 동작 복잡도, 저장 용량, 및 액세스 횟수들과 관련된 오버헤드의 균형을 맞추어 전체 성능을 크게 향상시킨다.
그 양태들은, 다기능 셀룰러 전화기들과 같은 모바일 컴퓨팅 디바이스들, 및 퍼스널 컴퓨터들과 같은 다양한 컴퓨팅 디바이스들 중 임의의 것 상에서 구현될 수도 있다. 그 양태들은 성능 절감으로부터 이익을 얻을 수도 있는 상대적으로 제한된 성능들 및/또는 리소스들 을 갖는 컴퓨팅 디바이스들에서 특히 유익할 수도 있다.
이러한 컴퓨팅 디바이스 (800) 의 예시적이며 비제한적인 양태의 예시적인 컴포넌트들 및 모듈들은 도 8에서 예시된다. 컴퓨팅 디바이스 (800) 는 전자 컴포넌트들의 회로 기판 (880) 을 포함할 수도 있으며, 전자 컴포넌트들의 전체 또는 일부는, 메모리 (802) 에 커플링된 제어 프로세서 (801) 를 포함하는 온칩 시스템에 통합될 수도 있다. 제어 프로세서 (801) 는 디지털 신호 프로세서 (811) 및/또는 아날로그 신호 프로세서 (821) 에 또한 커플링될 수도 있고, 이들은 또한 서로 커플링될 수도 있다. 몇몇 양태들에서, 제어 프로세서 (801) 및 디지털 신호 프로세서 (811) 는 동일 컴포넌트일 수도 있거나 동일한 프로세서 칩에 통합될 수도 있다. 디스플레이 컨트롤러 (833) 및 터치스크린 컨트롤러 (843) 는, 컴퓨팅 디바이스 (800) 내의 또는 컴퓨팅 디바이스 (800) 에 연결된 디스플레이 또는 터치스크린 디스플레이 (803) 에 그리고 제어 프로세서 (801) 에 커플링될 수도 있다.
제어 프로세서 (801) 는 착탈식 메모리 (removable memory; 822) (예를 들면, SD 메모리 또는 모바일 컴퓨팅 디바이스의 경우 SIM 카드) 및/또는 디스크 드라이브, CD 드라이브, 및 DVD 드라이브 중 하나 이상과 같은 외부 메모리 (804) 에 또한 커플링될 수도 있다. 제어 프로세서 (801) 는 또한, USB 포트 (814) 에 연결된 USB 컨트롤러 (812) 에 커플링될 수도 있다. 또한, 전원 (power supply; 870) 은 USB 컨트롤러 (812) 를 통해 또는 상이한 전기적 접속들을 통해 회로 기판 (880) 에 커플링되어 여러 전자적 컴포넌트들로 전력 (예를 들면, DC 전력) 을 제공할 수도 있다.
제어 프로세서 (801) 는 또한 비디오 인코더 (834), 예를 들면, PAL (phase alternating line) 인코더, SECAM (sequential color with memory) 인코더, 또는 NTSC (national television system(s) committee) 인코더에 커플링될 수도 있다. 또한, 비디오 인코더 (834) 는, 디스플레이 또는 터치스크린 디스플레이 (803) 와 비디오 인코더 (834) 에 커플링될 수도 있는 비디오 증폭기 (836) 에 커플링될 수도 있다. 또한, 비디오 포트 (838) 는, 컴퓨팅 디바이스 (800) 를 외부 모니터, 텔레비젼 또는 다른 디스플레이 (도시되지 않음) 에 연결하는 것을 가능하게 하기 위해 비디오 증폭기 (836) 에 커플링될 수도 있다.
몇몇 양태들에서, 특히 모바일 컴퓨팅 디바이스들에서, 제어 프로세서 (801) 는, 예컨대 아날로그 신호 프로세서 (821) 를 통해, 무선 주파수 (radio frequency; RF) 트랜시버 (805) 에 커플링될 수도 있다. RF 트랜시버 (805) 는 RF 신호들을 송수신하기 위한 RF 안테나 (804) 에 커플링될 수도 있다. RF 트랜시버 (805) 는, 예를 들면, 셀룰러 전화기 (예를 들면, G-3, UMTS, CDMA 등), 와이파이, 와이맥스 및 블루투스를 포함하는 하나 이상의 상이한 무선 통신 프로토콜들의 통신 신호들을 송수신하도록 구성될 수도 있다.
제어 프로세서 (801) 는, 네트워크 커넥터 (816) 및/또는 RF 트랜시버 (805) 에 커플링되고 외부 네트워크 (예를 들면, 근거리 통신망들, 인터넷, 인트라넷, 와이파이 네트워크들, 블루투스 네트워크들, PAN (personal area network) 등) 를 통한 통신들을 가능하게 하도록 구성된 네트워크 카드 (806) 에 또한 커플링될 수도 있다. 네트워크 카드 (806) 는 별개의 칩 또는 카드의 형태일 수도 있거나, 또는 풀 솔루션 통신 칩으로서 제어 프로세서 (801) 또는 RF 트랜시버 (805) (또는 양자) 의 일부로서 구현될 수도 있다.
도 8에 도시된 바와 같은 키패드 (808) 와 같은 다수의 아날로그 디바이스들이 아날로그 신호 프로세서 (821) 를 통해 제어 프로세서 (801) 에 커플링될 수도 있다. 다른 구현예들에서, 키패드 또는 키보드는 그 자신의 프로세서를 포함하여, 제어 프로세서 (801) 와의 인터페이스가 직접 접속 (도시되지 않음) 을 통하거나, 네트워크 접속을 통하거나 (예를 들면, 네트워크 카드를 통하거나), 또는 USB 포트 (814) 를 통할 수도 있다.
몇몇 구현예들에서, 디지털 카메라 (848) 는 제어 프로세서 (801) 에 커플링될 수도 있다. 예시적인 양태에서, 디지털 카메라 (848) 는 CCD (charge-coupled device) 카메라 또는 CMOS (complementary metal-oxide semiconductor) 카메라일 수도 있다. 디지털 카메라 (848) 는 컴퓨팅 디바이스 (800) 안에 내장되거나 또는 외부 케이블을 통해 컴퓨팅 디바이스에 커플링될 수도 있다.
몇몇 구현예들에서, 오디오 코덱 (850) (예를 들면, 스테레오 코덱) 은 아날로그 신호 프로세서 (821) 에 커플링될 수도 있고 사운드 신호들을 오디오 증폭기 (852) 를 통해 하나 이상의 스피커들 (854) 로 전송하도록 구성될 수도 있다. 오디오 코덱 (850) 은 (예를 들면, 마이크 잭을 통해) 마이크 (858) 에 커플링될 수도 있는 마이크 증폭기 (856) 에 또한 커플링될 수도 있다. 오디오를 헤드폰들로 출력하기 위한 헤드폰 잭 (859) 이 오디오 코덱 (850) 에 또한 커플링될 수도 있다.
몇몇 구현예들에서, 컴퓨팅 디바이스 (800) 는 브로드캐스트 무선 통신 신호들을 수신하는 안테나 (862) 에 커플링될 수도 있는 별개의 RF 수신기 회로 (860) 를 포함할 수도 있다. 수신기 회로 (860) 는 브로드캐스트 텔레비젼 신호들을 수신하도록 구성될 수도 있고 수신된 신호들을 프로세싱을 위해 DSP (811) 로 제공할 수도 있다. 몇몇 구현예들에서, 수신기 회로 (860) 는 FM 라디오 신호들을 수신하도록 구성될 수도 있고, 그 경우, 수신된 신호들은 프로세싱을 위해 오디오 코덱 (850) 으로 전달될 수도 있다.
일 양태에서, 위에서 설명된 방법의 동작들 중 하나 이상을 달성하기 위한 프로세서 실행가능 명령들은 내부 메모리 (802), 착탈식 메모리 (822) 및/또는 (예를 들면, 하드 드라이브, CD 드라이브, 또는 네트워크를 통해 액세스 가능한 다른 스토리지 상에서와 같은) 불휘발성 메모리 (804) 에 저장될 수도 있다. 이러한 프로세서 실행가능 명령들은 본원에서 설명된 방법들을 수행하기 위해 제어 프로세서 (801) 에 의해 실행될 수도 있다.
모바일 컴퓨팅 디바이스의 일 예는 도 9에 예시되며, 노트북 컴퓨터의 일 예가 도 10에 예시된다. 통상적인 모바일 컴퓨팅 디바이스들 (900) 은 도 9에 예시된 컴포넌트들을 공통으로 가질 것이다. 예를 들면, 모바일 컴퓨팅 디바이스들 (900) 은 터치 표면 입력 디바이스/디스플레이 (903) 및 내부 메모리 (902) 에 커플링된 프로세서 (901) 를 포함할 수도 있다. 터치스크린 디스플레이 (903) 은, 예컨대 저항 감지 터치스크린, 용량 감지 터치스크린, 적외선 감지 터치스크린, 음향/압전 감지 터치스크린 등이다. 여러 양태들은 임의의 특정한 타입의 터치스크린 디스플레이 (903) 또는 터치패드 기술에 제한되지 않는다. 추가적으로, 컴퓨팅 디바이스 (900) 는, 프로세서 (901) 에 커플링된 셀룰러 전화기 트랜시버 (905) 및/또는 무선 데이터 링크에 연결된, 전자기 방사를 송수신하기 위한 안테나 (904) 를 구비할 수도 있다. 컴퓨팅 디바이스들 (900) 은 또한 유저 입력들을 수신하기 위한 물리적 버튼들 (908) 을 포함할 수도 있다.
여러 양태들이 모바일 컴퓨팅 디바이스들에 대해 상당한 성능 향상을 제공할 수도 있지만, 퍼스널 컴퓨터들 및 랩탑 컴퓨터들을 포함하는 다른 형태들의 컴퓨팅 디바이스들도 또한 동적 언어 스크립트들의 사전 파싱 (pre-parsing) 으로부터 이익을 얻을 수도 있다. 통상적으로, 이러한 컴퓨팅 디바이스들은, 예시적인 퍼스널 랩탑 컴퓨터 (1000) 를 예시하는 도 10에 예시된 컴포넌트들을 포함한다. 일반적으로, 이러한 퍼스널 컴퓨터 (1000) 는 대용량 불휘발성 메모리, 예컨대 디스크 드라이브 (1003) 와 휘발성 메모리 (1002) 에 커플링된 프로세서 (1001) 를 포함한다. 컴퓨터 (1000) 는 또한 프로세서 (1001) 에 커플링된 컴팩트 디스크 (CD) 및/또는 DVD 드라이브 (1004) 를 포함할 수도 있다. 컴퓨터 디바이스 (1000) 는 또한, 프로세서 (901) 를 네트워크에 커플링하기 위한 네트워크 접속 회로 (1005) 와 같은, 데이터 접속들을 확립하거나 외부 메모리 디바이스를 수용하기 위해 프로세서 (901) 에 커플링된 다수의 커넥터 포트들을 포함할 수도 있다. 컴퓨터 (1000) 는, 컴퓨터 기술분야에서 널리 알려진 바와 같이, 키보드 (1008), 마우스 (1010) 와 같은 포인팅 디바이스, 및 디스플레이 (1009) 에 더 커플링될 수도 있다.
프로세서 (901, 1001) 는, 본원에서 설명된 여러 양태들의 기능들을 포함하는 다양한 기능들을 수행하도록 소프트웨어 명령들 (어플리케이션들) 에 의해 구성될 수도 있는 임의의 프로그램가능 마이크로프로세서, 마이크로컴퓨터 또는, 다수의 프로세서 칩 또는 칩들일 수도 있다. 몇몇 모바일 디바이스들에서, 무선 통신 기능들 전용의 한 프로세서와 다른 어플리케이션들을 동작시키기 위한 전용의 한 프로세서와 같은 다수의 프로세서들 (901, 1001) 이 제공될 수도 있다. 통상적으로, 소프트웨어 어플리케이션들은, 이들이 액세스되어 프로세서 (901, 1001) 로 로딩되기 이전에, 내부 메모리 (902, 1002) 에 저장될 수도 있다. 몇몇 모바일 디바이스들에서, 프로세서 (901, 1001) 는 어플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다. 몇몇 모바일 디바이스들에서, 보안 메모리는 프로세서 (901, 1001) 에 커플링된 별도의 메모리 칩일 수도 있다. 내부 메모리 (902, 1002) 는 휘발성 메모리 또는 플래시 메모리와 같은 불휘발성 메모리이거나, 또는 이들 양자의 혼합체일 수도 있다. 본 설명의 목적들을 위해, 메모리에 대한 일반적인 참조는, 내부 메모리 (902, 1002), 모바일 디바이스에 삽입된 착탈식 메모리, 및 프로세서 (901, 1001) 자체 내의 메모리를 포함하여, 프로세서 (901, 1001) 에 의해 액세스 가능한 모든 메모리를 지칭한다.
앞선 방법 설명들 및 프로세스 흐름도들은 단지 예증적인 예들로서 제공된 것이며, 여러 양태들의 블록들이 제시된 순서로 수행되어야 함을 필요로 하거나 의미하도록 의도된 것은 아니다. 종래기술의 당업자라면, 앞선 양태들에서의 단계들의 순서는 임의의 순서로 수행될 수도 있음을 알 수 있을 것이다. "그 후", "그 다음", "다음으로" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도된 것이 아니며; 이들 단어들은 단순히 독자가 방법들의 설명을 이해하는 것을 가이드하기 위해 사용된다. 또한, 특허청구범위 요소들에 대한 단수 형태의 임의의 참조, 예를 들면, "a", "an" 또는 "the"와 같은 관사들은 그 요소를 단수로 제한하는 것으로 이해되어선 안된다.
본원에서 개시된 양태들과 연계하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 양자 모두의 조합들로서 구현될 수도 있다. 하드웨어 및 소프트웨어의 이러한 상호 교환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들을 그들의 기능적 관점에서 일반적으로 위에서 설명하였다. 그러한 기능이 하드웨어 구현되는지 또는 소프트웨어로 구현되는지의 여부는 특정 어플리케이션 및 전체 시스템에 부과되는 설계 제약들에 따라 달라진다. 당업자라면, 상기 상술한 기능성을 각각의 특정 어플리케이션에 대해 다양한 방식으로 구현할 수도 있지만, 이러한 구현 결정은 본 발명의 범위를 벗어나게 하는 것으로 이해되어서는 안된다.
본원에서 개시된 양태들과 연계하여 설명된 다양한 예시적인 논리들, 논리 블록들, 모듈들, 및 회로들을 구현하기 위해 사용된 하드웨어는, 범용 프로세서, 디지털 신호 프로세서 (digital signal processor; DSP), 주문형 반도체 (application specific integrated circuit; ASIC), 필드 프로그래머블 게이트 어레이 (field programmable gate array; FPGA) 또는 다른 프로그래머블 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합에 의해 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안에서, 프로세서는 임의의 종래의 프로세서, 컨트롤러, 마이크로컨트롤러, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들면, DSP와 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성의 조합으로 구현될 수도 있다. 대안으로, 몇몇 단계들 또는 방법들은 주어진 기능에 특정한 회로부에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에서, 상술된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 상기 기능들은 하나 이상의 명령들 또는 코드로서 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체 상에 저장되거나 또는 이들을 통해 전송될 수도 있다. 본원에서 개시된 방법 또는 알고리즘의 단계들은, 비일시적 프로세서 판독가능 또는 컴퓨터 판독가능 저장 매체 상에 상주할 수도 있는 프로세서 실행가능 소프트웨어 모듈에서 구현될 수도 있다. 비일시적 프로세서 판독가능 및 컴퓨터 판독가능 매체는 컴퓨팅 디바이스의 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 이용가능한 저장 매체일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독 가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 요구되는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 사용된 바와 같이, 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피디스크 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 는 통상 자기적으로 데이터를 재생하고, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 비일시적 컴퓨터 판독가능 매체들의 범위 내에 또한 포함되어야 한다. 추가적으로, 방법 또는 알고리즘의 동작들은 코드들 및/또는 명령들의 하나 또는 임의의 조합 또는 세트로서 비일시적 프로세서 판독가능 매체 및/또는 비일시적 컴퓨터 판독가능 매체 상에 상주할 수도 있고, 이들은 컴퓨터 프로그램 제품에 통합될 수도 있다.
개시된 양태들의 상기 설명들은 임의의 당업자가 본 발명을 실시하거나 이용하는 것을 가능하게 하도록 하기 위해 제공된다. 이들 양태들에 대한 다양한 수정예들이 당업자에게는 자명할 것이고, 본원에서 정의된 일반적인 원칙들은 본 발명의 취지와 범위를 벗어나지 않으면서 다른 양태들 적용될 수도 있다. 따라서, 본 발명은 본원에서 보여진 양태들로 제한되도록 의도된 것은 아니며 본원의 개시된 원칙들과 신규의 특징들 및 하기의 특허청구범위와 일치하는 광의의 범위가 제공되어야 한다.

Claims (16)

  1. 동적 언어 값에 보안 라벨들을 인코딩하는 방법으로서,
    인코딩된 라벨들을 저장하기 위해 상기 동적 언어 값에서의 다수의 비트들을 할당하는 단계;
    보안 라벨들이 제 1의 모드에서 인코딩되는지 또는 제 2의 모드에서 인코딩되는지를 나타내기 위해, 할당된 상기 비트들에서의 한 비트를 예비하는 (reserving) 단계; 및
    발신 도메인 (originating domain) 을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 (tagging) 동작으로서, 상기 보안 라벨들은 상기 제 1의 모드 또는 상기 제 2의 모드 중 어느 하나에서 인코딩되는, 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 단계를 포함하는, 동적 언어 값에 보안 라벨들을 인코딩하는 방법.
  2. 제 1항에 있어서,
    예비된 상기 비트가 상기 제 1의 모드가 선택된 것을 나타내는지 또는 상기 제 2의 모드가 선택된 것을 나타내는지를 결정하는 단계;
    상기 제 1의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면 원-핫-비트 (one-hot-bit) 로서 인코딩되고 있는 것으로서 보안 라벨을 식별하고 비트단위 (bitwise) OR 연산을 수행하는 단계; 및
    상기 제 2의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면,실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 참조인 것으로서 상기 보안 라벨을 식별하고 메모리 판독 동작들을 수행하는 단계를 더 포함하는, 동적 언어 값에 보안 라벨들을 인코딩하는 방법.
  3. 제 1항에 있어서,
    상기 발신 도메인을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 단계는, 다른 도메인들로부터 기원하는 스크립트들로부터의 정보에 액세스하는 스크립트들의 수가 할당된 상기 비트들의 수 미만이면 상기 제 1의 모드에서 동적 언어 라벨들을 인코딩하는 단계를 포함하는, 동적 언어 값에 보안 라벨들을 인코딩하는 방법.
  4. 제 1항에 있어서,
    상기 방법은, 자바®, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비, 펄, 스칼라, 얼랑, 캔들, 및 닷넷 언어들로 구성되는 그룹에서 선택된 동적 또는 스크립팅 언어들을 사용하여 구현되는, 동적 언어 값에 보안 라벨들을 인코딩하는 방법.
  5. 컴퓨팅 디바이스로서,
    인코딩된 라벨들을 저장하기 위해 상기 동적 언어 값에서의 다수의 비트들을 할당하는 수단;
    보안 라벨들이 제 1의 모드에서 인코딩되는지 또는 제 2의 모드에서 인코딩되는지를 나타내기 위해, 할당된 상기 비트들에서의 한 비트를 예비하는 수단; 및
    발신 도메인을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 수단으로서, 상기 보안 라벨들은 상기 제 1의 모드 또는 상기 제 2의 모드 중 어느 하나에서 인코딩되는, 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 수단을 포함하는, 컴퓨팅 디바이스.
  6. 제 5항에 있어서,
    예비된 상기 비트가 상기 제 1의 모드가 선택된 것을 나타내는지 또는 상기 제 2의 모드가 선택된 것을 나타내는지를 결정하는 수단;
    상기 제 1의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 원-핫-비트 (one-hot-bit) 로서 인코딩되고 있는 것으로서 보안 라벨을 식별하고 비트단위 OR 연산을 수행하는 수단; 및
    상기 제 2의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 참조인 것으로서 상기 보안 라벨을 식별하고 메모리 판독 동작들을 수행하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  7. 제 5항에 있어서,
    상기 발신 도메인을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 수단은, 다른 도메인들로부터 기원하는 스크립트들로부터의 정보에 액세스하는 스크립트들의 수가 할당된 상기 비트들의 수 미만이면 상기 제 1의 모드에서 동적 언어 라벨들을 인코딩하는 수단을 포함하는, 컴퓨팅 디바이스.
  8. 제 5항에 있어서,
    상기 동적 언어 값에서의 다수의 비트들을 할당하는 수단은, 자바®, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비, 펄, 스칼라, 얼랑, 캔들, 및 닷넷 언어들로 구성되는 그룹에서 선택된 언어에서의 다수의 비트들을 할당하는 수단을 포함하는, 컴퓨팅 디바이스.
  9. 컴퓨팅 디바이스로서,
    메모리; 및
    상기 메모리에 커플링된 프로세서를 포함하고,
    상기 프로세서는 동적 언어 값에 보안 라벨들을 인코딩하는 동작들을 수행하는 프로세서 실행가능 명령들로 구성되고,
    상기 동작들은:
    인코딩된 라벨들을 저장하기 위해 상기 동적 언어 값에서의 다수의 비트들을 할당하는 것;
    보안 라벨들이 제 1의 모드에서 인코딩되는지 또는 제 2의 모드에서 인코딩되는지를 나타내기 위해, 할당된 상기 비트들에서의 한 비트를 예비하는 것; 및
    발신 도메인 (originating domain) 을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것으로서, 상기 보안 라벨들은 상기 제 1의 모드 또는 상기 제 2의 모드 중 어느 하나에서 인코딩되는, 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것을 포함하는, 컴퓨팅 디바이스.
  10. 제 9항에 있어서,
    상기 프로세서는,
    예비된 상기 비트가 상기 제 1의 모드가 선택된 것을 나타내는지 또는 상기 제 2의 모드가 선택된 것을 나타내는지를 결정하는 것;
    상기 제 1의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 원-핫-비트 (one-hot-bit) 로서 인코딩되고 있는 것으로서 보안 라벨을 식별하고 비트단위 (bitwise) OR 연산을 수행하는 것; 및
    상기 제 2의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 참조인 것으로서 상기 보안 라벨을 식별하고 메모리 판독 동작들을 수행하는 것을 더 포함하는, 컴퓨팅 디바이스.
  11. 제 9항에 있어서,
    상기 프로세서는, 상기 발신 도메인을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것이, 다른 도메인들로부터 기원하는 스크립트들로부터의 정보에 액세스하는 스크립트들의 수가 할당된 상기 비트들의 수 미만이면 상기 제 1의 모드에서 동적 언어 라벨들을 인코딩하는 것을 포함하도록 하는 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  12. 제 9항에 있어서,
    상기 프로세서는, 상기 동적 언어 값에서의 다수의 비트들을 할당하는 것이, 자바®, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비, 펄, 스칼라, 얼랑, 캔들, 및 닷넷 언어들로 구성되는 그룹에서 선택된 언어에서의 다수의 비트들을 할당하는 것을 포함하도록 하는 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  13. 프로세서로 하여금, 동적 언어 값에 보안 라벨들을 인코딩하는 동작들을 수행하게 하도록 구성된 프로세서 실행가능 소프트웨어 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 동작들은:
    인코딩된 라벨들을 저장하기 위해 상기 동적 언어 값에서의 다수의 비트들을 할당하는 것;
    보안 라벨들이 제 1의 모드에서 인코딩되는지 또는 제 2의 모드에서 인코딩되는지를 나타내기 위해, 할당된 상기 비트들에서의 한 비트를 예비하는 것; 및
    발신 도메인 (originating domain) 을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것으로서, 상기 보안 라벨들은 상기 제 1의 모드 또는 상기 제 2의 모드 중 어느 하나에서 인코딩되는, 상기 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것을 포함하는, 프로세서 실행가능 소프트웨어 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체.
  14. 제 13항에 있어서,
    저장된 상기 프로세서 실행가능 소프트웨어 명령들은,
    예비된 상기 비트가 상기 제 1의 모드가 선택된 것을 나타내는지 또는 상기 제 2의 모드가 선택된 것을 나타내는지를 결정하는 것;
    상기 제 1의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 원-핫-비트 (one-hot-bit) 로서 인코딩되고 있는 것으로서 보안 라벨을 식별하고 비트단위 (bitwise) OR 연산을 수행하는 것; 및
    상기 제 2의 모드가 선택된 것을 상기 예비된 비트가 나타낸다고 결정되면, 실제 라벨 정보를 저장하는 라벨 매니저 데이터 구조로의 참조인 것으로서 상기 보안 라벨을 식별하고 메모리 판독 동작들을 수행하는 것을 더 포함하는, 프로세서 실행가능 소프트웨어 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체.
  15. 제 13항에 있어서,
    저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 프로세서로 하여금, 상기 발신 도메인을 식별하는 보안 라벨들로 상기 동적 언어 값에 태그를 붙이는 것이, 다른 도메인들로부터 기원하는 스크립트들로부터의 정보에 액세스하는 스크립트들의 수가 할당된 상기 비트들의 수 미만이면 상기 제 1의 모드에서 동적 언어 라벨들을 인코딩하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 프로세서 실행가능 소프트웨어 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제 13항에 있어서,
    저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 프로세서로 하여금, 상기 동적 언어 값에서의 다수의 비트들을 할당하는 것이, 자바®, 자바스크립트®, 액션스크립트®, DART®, PHP, 파이썬®, 루비, 펄, 스칼라, 얼랑, 캔들, 및 닷넷 언어들로 구성되는 그룹에서 선택된 언어에서의 다수의 비트들을 할당하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 프로세서 실행가능 소프트웨어 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체.
KR1020147015269A 2011-11-07 2012-09-28 정보 흐름들을 캡쳐하기 위한 값들에서의 라벨들의 인코딩 KR101542335B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161556658P 2011-11-07 2011-11-07
US61/556,658 2011-11-07
US13/399,136 2012-02-17
US13/399,136 US8898780B2 (en) 2011-11-07 2012-02-17 Encoding labels in values to capture information flows
PCT/US2012/057682 WO2013070334A1 (en) 2011-11-07 2012-09-28 Encoding labels in values to capture information flows

Publications (2)

Publication Number Publication Date
KR20140090240A true KR20140090240A (ko) 2014-07-16
KR101542335B1 KR101542335B1 (ko) 2015-08-05

Family

ID=48224691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147015269A KR101542335B1 (ko) 2011-11-07 2012-09-28 정보 흐름들을 캡쳐하기 위한 값들에서의 라벨들의 인코딩

Country Status (9)

Country Link
US (1) US8898780B2 (ko)
EP (1) EP2776970B1 (ko)
JP (1) JP5707542B2 (ko)
KR (1) KR101542335B1 (ko)
CN (1) CN103975336B (ko)
ES (1) ES2707866T3 (ko)
HU (1) HUE041676T2 (ko)
IN (1) IN2014CN03105A (ko)
WO (1) WO2013070334A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9171028B1 (en) * 2013-06-11 2015-10-27 Google Inc. Method of maintaining a large set of taint labels
JP6114480B2 (ja) * 2014-08-11 2017-04-12 日本電信電話株式会社 構築装置、構築方法、および、構築プログラム
CN108140100B (zh) * 2015-10-28 2021-10-08 赫尔实验室有限公司 维护对象的安全标签和引用计数的系统、方法和介质
US10754944B2 (en) 2016-01-27 2020-08-25 Yuta TAKEDA Processing system, and processing method and program
US11403418B2 (en) * 2018-08-30 2022-08-02 Netskope, Inc. Enriching document metadata using contextual information
US10382518B2 (en) * 2016-03-22 2019-08-13 Google Llc Low latency applications using multiple servers
CN109213502B (zh) * 2017-06-30 2022-09-27 上海尚往网络科技有限公司 应用更新方法和装置
CN111770170B (zh) * 2020-06-29 2023-04-07 北京百度网讯科技有限公司 请求处理方法、装置、设备和计算机存储介质
CN111949950A (zh) * 2020-08-20 2020-11-17 郑州昂视信息科技有限公司 一种应用软件的异构方法及系统
US11848949B2 (en) 2021-01-30 2023-12-19 Netskope, Inc. Dynamic distribution of unified policies in a cloud-based policy enforcement system
CN113808252B (zh) * 2021-08-19 2024-02-27 广西电网有限责任公司 基于交互性标签和宏的三维模型逐级重建方法
CN114003412A (zh) * 2021-12-27 2022-02-01 支付宝(杭州)信息技术有限公司 小程序和宿主程序进行通信的方法和装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7320129B2 (en) * 2003-05-14 2008-01-15 Hewlett-Packard Development Company, L.P. Native language verification system and method
EP2538352A3 (en) * 2003-07-11 2013-03-06 Google, Inc. System and method for providing Java server page security
US20060026181A1 (en) * 2004-05-28 2006-02-02 Jeff Glickman Image processing systems and methods with tag-based communications protocol
US8732856B2 (en) * 2004-12-30 2014-05-20 Oracle International Corporation Cross-domain security for data vault
US20070006294A1 (en) * 2005-06-30 2007-01-04 Hunter G K Secure flow control for a data flow in a computer and data flow in a computer network
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
US8028908B2 (en) * 2006-05-01 2011-10-04 Patrick Shomo Systems and methods for the secure control of data within heterogeneous systems and networks
NO326590B1 (no) * 2007-04-16 2009-01-19 Kubekit As Fremgangsmate og anordning for verifikasjon av informasjonstilgang i IKT-system med flere sikkerhetsdimensjoner og sikkerhetsniva.
EP2153369B1 (en) 2007-05-18 2018-07-25 Secure Keys Pty Limited Security token and system and method for generating and decoding the security token
JP4395178B2 (ja) * 2007-05-29 2010-01-06 インターナショナル・ビジネス・マシーンズ・コーポレーション コンテンツ処理システム、方法及びプログラム
CN101662460B (zh) * 2008-08-25 2015-07-15 阿里巴巴集团控股有限公司 一种跨域通讯的方法、系统和装置
US8997217B2 (en) 2010-01-25 2015-03-31 Samsung Electronics Co., Ltd. Safely processing and presenting documents with executable text

Also Published As

Publication number Publication date
WO2013070334A1 (en) 2013-05-16
IN2014CN03105A (ko) 2015-07-03
CN103975336A (zh) 2014-08-06
KR101542335B1 (ko) 2015-08-05
HUE041676T2 (hu) 2019-05-28
US8898780B2 (en) 2014-11-25
JP2015501961A (ja) 2015-01-19
US20130117845A1 (en) 2013-05-09
CN103975336B (zh) 2016-10-26
EP2776970B1 (en) 2018-10-24
JP5707542B2 (ja) 2015-04-30
ES2707866T3 (es) 2019-04-05
EP2776970A1 (en) 2014-09-17

Similar Documents

Publication Publication Date Title
KR101542335B1 (ko) 정보 흐름들을 캡쳐하기 위한 값들에서의 라벨들의 인코딩
EP3085050B1 (en) Privileged static hosted web applications
De Keukelaere et al. Smash: secure component model for cross-domain mashups on unmodified browsers
EP2691907B1 (en) Methods and apparatus for blocking usage tracking
US11392673B2 (en) Systems and methods for obfuscating web content
WO2017101865A1 (zh) 一种数据处理方法和装置
Jackson et al. Subspace: secure cross-domain communication for web mashups
US20190089810A1 (en) Resource access method, apparatus, and system
US9195809B1 (en) Automated vulnerability and error scanner for mobile applications
US20100037317A1 (en) Mehtod and system for security monitoring of the interface between a browser and an external browser module
US11194914B2 (en) Method and apparatus to detect security vulnerabilities in a web application
CN111163095B (zh) 网络攻击分析方法、网络攻击分析装置、计算设备和介质
US11586726B2 (en) Secure web framework
Blasco et al. Automated generation of colluding apps for experimental research
Bao et al. Cross-site scripting attacks on android hybrid applications
CN111163094B (zh) 网络攻击检测方法、网络攻击检测装置、电子设备和介质
US11128639B2 (en) Dynamic injection or modification of headers to provide intelligence
KR102262480B1 (ko) 정보 리소스들 상에서의 해시 기반 동적 제한
US11689551B2 (en) Automatic identification of applications that circumvent permissions and/or obfuscate data flows
AU2013237707A1 (en) Prevention of forgery of web requests to a server
Yang et al. Risk analysis of exposed methods to javascript in hybrid apps
KR101305755B1 (ko) 주소에 기반하여 스크립트 실행을 필터링하는 장치 및 방법
Braun et al. Ghostrail: Ad hoc control-flow integrity for web applications
Zavou et al. Exploiting split browsers for efficiently protecting user data
Yang When Web Meets Mobile: Novel Security Threats and Defenses in Web/Mobile Hybrid Apps

Legal Events

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

Payment date: 20180628

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 5