KR20160099672A - 트랜잭셔널 메모리를 사용한 비인가 메모리 수정 및 액세스의 검출 - Google Patents

트랜잭셔널 메모리를 사용한 비인가 메모리 수정 및 액세스의 검출 Download PDF

Info

Publication number
KR20160099672A
KR20160099672A KR1020167019185A KR20167019185A KR20160099672A KR 20160099672 A KR20160099672 A KR 20160099672A KR 1020167019185 A KR1020167019185 A KR 1020167019185A KR 20167019185 A KR20167019185 A KR 20167019185A KR 20160099672 A KR20160099672 A KR 20160099672A
Authority
KR
South Korea
Prior art keywords
computing device
transactional
code segment
cancellation
security
Prior art date
Application number
KR1020167019185A
Other languages
English (en)
Other versions
KR101835250B1 (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 KR20160099672A publication Critical patent/KR20160099672A/ko
Application granted granted Critical
Publication of KR101835250B1 publication Critical patent/KR101835250B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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
    • 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/54Monitoring 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 adding security routines or objects to programs
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

비인가 메모리 액세스를 검출하기 위한 기술은 트랜잭셔널 메모리 지원을 갖는 컴퓨팅 디바이스를 포함한다. 컴퓨팅 디바이스는 의심스러운 것으로 식별된 코드 세그먼트를 실행하고 코드 세그먼트의 실행 동안에 트랜잭셔널 취소를 검출한다. 컴퓨팅 디바이스는 코드 세그먼트와 동시에 보안 지원 쓰레드를 실행할 수 있는데 그것은 하나 이상의 모니터링되는 메모리 위치를 읽는다. 보안 지원 쓰레드의 읽기가 코드 세그먼트로부터의 쓰기와 충돌하는 것에 의해 트랜잭셔널 취소가 야기될 수 있다. 컴퓨팅 디바이스는 코드 세그먼트 내에 중단점을 설정할 수 있고, 코드 세그먼트의 실행이 중단점에 도달하는 것에 의해 트랜잭셔널 취소가 야기될 수 있다. 취소 핸들러는 보안 이벤트가 발생하였는지를 판정하고 보안 이벤트를 보고한다. 취소 핸들러는 트랜잭셔널 취소의 원인에 기반하여 보안 이벤트가 발생하였는지를 판정할 수 있다. 다른 실시예들이 기술되고 청구된다.

Description

트랜잭셔널 메모리를 사용한 비인가 메모리 수정 및 액세스의 검출{DETECTION OF UNAUTHORIZED MEMORY MODIFICATION AND ACCESS USING TRANSACTIONAL MEMORY}
컴퓨터 보안(computer security)의 일 측면은 "멀웨어"(malware)로도 알려진 악성 소프트웨어(malicious software)로부터 컴퓨터 시스템을 보호하는 것을 수반한다. 멀웨어는 여러 형태로 되어 있지만, 여러 흔한 종류의 멀웨어는 컴퓨터 메모리 내의 비인가(unauthorized) 위치에의 쓰기(write) 또는 다른 액세스(access)를 수행한다. 예컨대, 어떤 멀웨어는 컴퓨터에 대한 제어권을 얻기 위해 중대한 메모리 내부(in-memory) 시스템 데이터 구조를 수정한다. 그러한 공격의 하나는 멀웨어에 의해 지원되는 코드가 하나 이상의 시스템 호출(system call) 대신에 실행되도록 시스템 호출 표(system call table)를 덮어쓰는 것(overwriting)을 수반한다. 그러한 공격은 이른바 "루트킷"(rootkit)에 의해 시스템의 제어권을 얻고 검출을 피하는 데에 사용될 수 있다. 다른 예로서, 어떤 멀웨어는 시스템으로 하여금 비인가 메모리 세그먼트(unauthorized memory segment), 예를 들어 시스템 스택(stack) 또는 데이터 세그먼트로부터 코드를 실행하게 한다. 예컨대, 버퍼 오버플로우(buffer overflow) 익스플로잇(exploit), 리턴 지향 프로그래밍(Return-Oriented Programming: ROP) 개짓(gadget), 그리고 유사한 익스플로잇은 시스템으로 하여금 정상적으로는 실행되지 말아야 하는 시스템 스택 또는 힙(heap)으로부터의 (또는 이에 의해 구동되는) 코드를 실행하게 한다. 멀웨어는 이른바 "쉘코드"(shellcode) 공격을 실행하기 위해, 즉 컴퓨터 시스템 상에서 (보통 원격 위치로부터 도입되는) 임의적인 코드를 실행하기 위해, 그러한 공격을 수행할 수 있다.
전형적인 컴퓨터 보안 시스템은 잠재적으로 악성인 코드를 구분하기 위해 코드 분석을 적용함으로써 멀웨어를 검출하려고 시도한다. 예컨대, 컴퓨터 보안 시스템은 잘 알려진 멀웨어 시그니처(signature)를 찾아 검색하기 위해 코드의 정적 분석(static analysis)을 수행할 수 있다. 몇몇 시스템은 또한 코드 실행의 동적 분석(dynamic analysis)을 수행할 수 있다. 하이퍼바이저(hypervisor)를 사용하는 단일 단계별 실행(single-stepping execution)과 같은 전형적인 동적 모니터링(dynamic monitoring)은, 시스템 성능에 커다란 부정적 영향을 준다.
몇몇 컴퓨터 프로세서는 하드웨어 트랜잭셔널 메모리(hardware transactional memory)에 대한 지원을 제공한다. 트랜잭셔널 메모리(transactional memory)는 프로그래머(programmer)로 하여금 독립적으로(independently) 그리고 원자적으로(atomically) 실행할 "트랜잭션"(transaction)으로 불리는 코드의 세그먼트(segment of code)를 명시할 수 있게 한다. 즉, 트랜잭션 내에서 일어나는 메모리 동작은 트랜잭션이 성공적으로 커밋될(committed) 때까지 컴퓨팅 시스템 상에서 실행되는 다른 트랜잭션이나 쓰레드(thread)에게 가시적이지(visible) 않다. 성공적인 커밋(commit) 후에, 트랜잭션 동안에 행해진 모든 메모리 변화는 시스템 상의 다른 쓰레드에게 즉각적으로 이용가능한(available) 것이다. 트랜잭셔널 메모리는 트랜잭션을 추론적으로 실행하는 것(speculatively executing), 트랜잭션의 실행 동안에 일어나는 임의의 메모리 충돌을 검출하는 것, 그리고 이후 메모리 충돌에 응답하여 트랜잭션을 취소하는 것(aborting)과 롤백하는 것(rolling back)에 의해 구현될 수 있다. 메모리 충돌은, 예컨대, 트랜잭션이 다른 트랜잭션에 의해 이미 읽기나 쓰기가 된 메모리 위치에 쓰려고 시도하는 것을 포함한다. 트랜잭셔널 메모리는 병렬 컴퓨팅(parallel computing)을 위한 프로그래밍 모델(programming model)을 단순화할 수 있다. 하드웨어 트랜잭셔널 메모리 지원의 하나의 상업적으로 이용가능한 예는 인텔 사(Intel® Corporation)에 의해 제조된 어떤 프로세서 상에서 이용가능한 Transactional Synchronization Extensions(Intel® TSX)이다.
본 문서에 기술된 개념은 첨부된 도면에서 한정으로서가 아니고 예로서 보여진다. 예시의 단순성 및 명료성을 위해, 도면에 예시된 구성요소는 반드시 축척에 맞게 그려지지 않는다. 적절하다고 여겨지는 경우에, 참조 라벨은 대응하거나 비슷한 구성요소를 나타내도록 도면들 중에서 반복되었다.
도 1은 비인가 메모리 액세스(unauthorized memory access)의 검출을 위한 컴퓨팅 디바이스의 적어도 하나의 실시예의 단순화된 블록도이고,
도 2는 도 1의 컴퓨팅 디바이스의 환경의 적어도 하나의 실시예의 단순화된 블록도이며,
도 3은 도 1 및 도 2의 컴퓨팅 디바이스에 의해 실행될 수 있는 비인가 메모리 액세스를 검출하기 위한 방법의 적어도 하나의 실시예의 단순화된 흐름도이고,
도 4는 도 1 및 도 2의 컴퓨팅 디바이스에 의해 실행될 수 있는 트랜잭셔널 취소(transactional abort)를 검출하고 처리하기 위한 방법의 적어도 하나의 실시예의 단순화된 흐름도이며,
도 5는 도 1 및 도 2의 컴퓨팅 디바이스를 위한 트랜잭셔널 취소를 야기할 수 있는 잠재적인 데이터 충돌을 예시하는 개략도이다.
본 개시의 개념은 다양한 수정 및 대안적인 형태의 여지가 있으나, 이의 구체적인 실시예가 도면에서 예로서 도시되었고 본 문서에서 상세히 기술될 것이다. 그러나, 본 개시의 개념을 개시된 특정한 형태로 한정하려는 의도는 전혀 없고, 반대로, 본 개시 및 부기된 청구항과 부합하는 모든 수정, 균등물 및 대안을 포함하려는 의도임이 이해되어야 한다.
명세서 내에서 "하나의 실시예", "일 실시예", "예시적 실시예" 등등에 대한 언급은, 기술된 실시예가 특정한 특징, 구조 또는 특성을 포함할 수 있음을 나타내지만, 모든 실시예가 그 특정한 특징, 구조 또는 특성을 포함할 수 있거나 반드시 포함하지 않을 수는 있다. 더욱이, 그러한 문구는 반드시 동일한 실시예를 나타내고 있는 것은 아니다. 또한, 특정한 특징, 구조 또는 특성이 일 실시예와 관련하여 기술되는 경우, 명시적으로 기술되든 또는 그렇지 않든 다른 실시예와 관련하여 그러한 특징, 구조 또는 특성을 유발하는 것은 당업자의 지식 내에 있다고 제론된다. 추가적으로, "A, B 및 C 적어도 하나"의 형태로 리스트(list) 내에 포함된 아이템은, (A); (B); (C); (A 및 B); (A 및 C); (B 및 C); 또는 (A, B 및 C)를 의미할 수 있음이 인식되어야 한다. 유사하게, "A, B 또는 C 중 적어도 하나"의 형태로 열거된(listed) 아이템은, (A); (B); (C); (A 및 B); (A 및 C); (B 및 C); 또는 (A, B 및 C)를 의미할 수 있다.
개시된 실시예는, 몇몇 경우에, 하드웨어, 펌웨어, 소프트웨어, 또는 이의 임의의 조합으로 구현될 수 있다. 개시된 실시예는 하나 이상의 프로세서에 의해 판독되고 실행될 수 있는 하나 이상의 일시적(transitory) 또는 비일시적(non-transitory) 머신 판독가능(machine-readable)(가령, 컴퓨터 판독가능) 저장 매체에 의해 전달되거나 이에 저장되는 명령어로서 또한 구현될 수 있다. 머신 판독가능 저장 매체는 머신에 의해 판독가능한 형태로 정보를 저장하거나 송신하기 위한 임의의 저장 디바이스, 메커니즘 또는 다른 물리적 구조로서 실체화될(embodied) 수 있다(가령, 휘발성(volatile) 또는 비휘발성(non-volatile) 메모리, 매체 디스크(media disc), 또는 다른 매체 디바이스(media device)).
도면에서, 몇몇 구조적 또는 방법 특징은 특정 배열 및/또는 순서로 도시될 수 있다. 그러나, 그러한 특정 배열 및/또는 순서는 요구되지 않을 수 있음이 인식되어야 한다. 오히려, 몇몇 실시예에서, 그러한 특징은 예시적인 도면 내에 도시된 것과는 상이한 방식 및/또는 순서로 배열될 수 있다. 추가적으로, 특정한 도면 내에의 구조적 또는 방법 특징의 포함은 그러한 특징이 모든 실시예에서 요구됨을 암시하도록 의도된 것이 아니고, 몇몇 실시예에서, 포함되지 않을 수 있거나 다른 특징과 조합될 수 있다.
이제 도 1을 참조하면, 예시적인 컴퓨팅 디바이스(100)가 비인가 메모리 액세스(unauthorized memory access)의 검출을 위해 사용될 수 있다. 컴퓨팅 디바이스(100)는 멀웨어를 포함할 수 있는 의심스러운 코드(suspicious code)의 세그먼트(segment)를 식별할 수 있다. 의심스러운 코드를 실행하기 전에, 컴퓨팅 디바이스(100)는 트랜잭셔널 엔빌로프(transactional envelope) 내에 의심스러운 코드를 래핑한다(wrap). 추가적으로, 컴퓨팅 디바이스(100)는 의심스러운 코드 내의 특정한 위치에 중단점(breakpoint)을 설정할 수 있다. 컴퓨팅 디바이스(100)는 이어서 트랜잭셔널 엔빌로프를 실행하고, 만약 의심스러운 코드가 특정한 메모리 영역(memory region)에 쓰기 또는 (예컨대, 의심 가는(suspected) 쉘코드 내에 또는 리턴 지향 프로그래밍 개짓들의 시퀀스(sequence) 내에서나 점프 지향 프로그래밍(jump-oriented programming) 개짓들의 체인(chain) 내에서 사용되는 의심 가는 개짓 내에 놓인) 중단점에서 코드를 실행하기와 같은 비인가 메모리 액세스를 수행하는 경우, 트랜잭션은 취소되고(aborted) 롤백된다(rolled back). 만약 트랜잭션이 성공적으로 완료되면, 컴퓨팅 디바이스(100)는 비인가 메모리 액세스가 발생하지도 않았고 실행이 중단점에 도달하지도 않았음을 판정한다. 의심스러운 코드의 트랜잭셔널 실행(transactional execution)은 컴퓨팅 디바이스(100)로 하여금 성능에 상당히 부정적으로 영향을 끼치지 않고서 의심스러운 코드의 가동(behavior)을 동적으로 모니터링할 수 있게 한다. 멀웨어 검출의 성능을 상당히 개선함으로써, 컴퓨터 보안이 개선될 수 있다. 추가적으로, 트랜잭셔널 실행은 컴퓨팅 디바이스(100)의 하드웨어에 의해 관리될 수 있고 따라서 멀웨어가 액세스할 수 없을 수 있어, 멀웨어 검출 프로세스 자체를 멀웨어로부터 보호한다.
컴퓨팅 디바이스(100)는 본 문서에 기술된 기능을 수행하기 위한 임의의 유형의 디바이스로서 실체화될 수 있다. 예컨대, 컴퓨팅 디바이스(100)는, 한정함 없이, 데스크톱 컴퓨터(desktop computer), 서버 컴퓨터(server computer), 워크스테이션(workstation), 랩톱 컴퓨터(laptop computer), 노트북 컴퓨터(notebook computer), 모바일 컴퓨팅 디바이스(mobile computing device), 스마트폰(smart phone), 태블릿 컴퓨터(tablet computer), 셀룰러 전화(cellular telephone), 핸드셋(handset), 메시징 디바이스(messaging device), 착용가능 컴퓨팅 디바이스(wearable computing device), 차량 텔레매틱스 디바이스(vehicle telematics device), 분산 컴퓨팅 시스템(distributed computing system), 다중프로세서 시스템(multiprocessor system), 가전 디바이스(consumer electronic device), 내장형 제어기(embedded controller), 그리고/또는 본 문서에 기술된 기능을 수행하도록 구성된 임의의 다른 컴퓨팅 디바이스로서 실체화될 수 있다. 도 1에 도시된 바와 같이, 예시적인 컴퓨팅 디바이스(100)는 프로세서(processor)(120), 입력/출력 서브시스템(input/output subsystem)(126), 메모리(memory)(128) 및 데이터 저장 디바이스(data storage device)(134)를 포함한다. 물론, 다른 실시예에서, 컴퓨팅 디바이스(100)는 다른 또는 추가적인 컴포넌트, 예를 들어 데스크톱 컴퓨터 내에서 흔히 발견되는 것(가령, 다양한 입력/출력 디바이스)을 포함할 수 있다. 추가적으로, 몇몇 실시예에서, 예시적인 컴포넌트 중 하나 이상은 다른 컴포넌트 내에 포함되거나, 그렇지 않으면 이의 일부분을 형성할 수 있다. 예컨대, 메모리(128) 또는 이의 부분은 몇몇 실시예에서 (가령, 프로세서 캐시(processor cache)가 랜덤 액세스 메모리(random-access memory)로서 사용되는 구현에서) 프로세서(120) 내에 포함될 수 있다.
프로세서(120)는 본 문서에 기술된 기능을 수행하는 것이 가능한 임의의 유형의 프로세서로서 실체화될 수 있다. 예컨대, 프로세서(120)는 단일 또는 다중 코어 프로세서(들), 디지털 신호 프로세서(digital signal processor), 마이크로제어기(microcontroller), 또는 다른 프로세서 또는 처리/제어 회로(processing/controlling circuit)로서 실체화될 수 있다. 예시적인 컴퓨팅 디바이스(100)는 단일 프로세서(120)를 포함하나, 몇몇 실시예에서 컴퓨팅 디바이스(100)는 하나보다 많은 프로세서(120)를 포함할 수 있다. 예컨대, 컴퓨팅 디바이스(100)는 공유 메모리 상호연결(shared memory interconnect)이 있는 대칭적 다중처리 시스템(symmetric multiprocessing system)으로서 실체화될 수 있다. 예시적인 프로세서(120)는 하드웨어 트랜잭셔널 메모리 지원(hardware transactional memory support)(122) 및 성능 모니터링 유닛(Performance Monitoring Unit: PMU)(124)을 포함한다.
트랜잭셔널 메모리 지원(122)은 프로세서(120)로 하여금 트랜잭션으로 알려진 코드의 세그먼트를 추론적으로 실행할 수 있게 한다. 트랜잭션은 원자적(atomic)이니, 트랜잭션이 계류 중(pending)인 동안에 트랜잭션에 의해 수행되는 메모리 동작이 다른 트랜잭션, 논리적 프로세서, 그리고/또는 프로세서(120)의 쓰레드에게 가시적이지 않음을 의미한다. 트랜잭션이 완료되는(커밋되는 것으로도 알려짐) 경우, 트랜잭션의 메모리 동작 전부는 즉시 컴퓨팅 디바이스(100)의 나머지에게 이용가능한 것이게 된다. 트랜잭션 내의 메모리 액세스가 다른 트랜잭션 또는 쓰레드와 충돌하는 경우, 예컨대 쓰레드가 커밋되지 않은 트랜잭션에 의해 쓰인 메모리 위치를 읽으려고 시도하는 경우 (또는 두 트랜잭션 및/또는 쓰레드가 동일한 메모리 위치에 쓰는 경우), 프로세서(120)는 충돌하는 트랜잭션(들)을 취소하여, 임의의 연관된 진행 중인(in-progress) 트랜잭셔널 메모리 변화를 폐기한다. 프로세서(120)는 충돌하는 메모리 위치를 임의의 레벨의 입도(granularity)로, 예컨대 캐시 라인(cache line)마다, 워드(word)마다, 또는 메모리 셀(memory cell)마다 검출할 수 있다. 취소 시, 프로세서(120)는 취소 핸들러(abort handler)를 호출하거나, (한 번 또는 여러 번) 트랜잭션을 재시작하거나, 비-트랜잭셔널 예비 코드(non-transactional fallback code)를 취소된 트랜잭션에 응답하여 동작할(invoke) 수 있다. 몇몇 실시예에서, 트랜잭셔널 메모리 지원(122)은 인텔 사(Intel® Corporation)에 의해 제조된 어떤 프로세서(120) 상에서 이용가능한 인텔(Intel®) Transactional Synchronization Extensions(Intel® TSX)로서 실체화될 수 있다.
PMU(124)는 프로세서(120)를 통한 명령어의 흐름을 기록하고 모니터링하는 것이 가능한 다수의 성능 카운터(performance counter)들로서 실체화될 수 있다. 예컨대, PMU(124)는 트랜잭셔널 취소(transactional abort)(가령, 명시적인 취소 명령어(abort instruction) 또는 중단점)를 야기하는 명령어의 정확한 메모리 주소 또는 충돌 데이터 위치(conflicting data location)의 메모리 주소를 보고하는 것이 가능할 수 있다. 단일 PMU(124)로서 예시되나, 몇몇 실시예에서 프로세서(120)는 몇 개의 PMU들(124), 예컨대 각각의 프로세서 코어에 대해 하나의 PMU(124)를 포함할 수 있다.
메모리(128)는 본 문서에 기술된 기능을 수행하는 것이 가능한 임의의 유형의 휘발성 또는 비휘발성 메모리 또는 데이터 스토리지(data storage)로서 실체화될 수 있다. 동작 중에, 메모리(128)는 운영 체제, 애플리케이션, 프로그램, 라이브러리 및 드라이버와 같이 컴퓨팅 디바이스(100)의 동작 동안에 사용되는 다양한 데이터 및 소프트웨어를 저장할 수 있다. 예시적인 메모리(128)는 하나 이상의 모니터링되는 영역(monitored region)(130) 및 취소 핸들러(132)를 포함한다. 추가로 후술되는 바와 같이, 모니터링되는 영역(130)은 시도된 비인가 메모리 액세스(attempted unauthorized memory access)를 위해 모니터링되는 메모리의 특정 영역이다. 그러한 모니터링되는 영역(130)은 시스템 호출 표, 하드웨어 인터럽트 표(hardware interrupts table), 시스템 보안 소프트웨어, 또는 다른 중요한 메모리 영역과 같은 중대한 시스템 메모리 구조를 포함할 수 있다. 취소 핸들러(132)는 추가로 후술되는 바와 같이, 잠재적 보안 침해를 다루기 위해 트랜잭셔널 취소의 경우에 호출되는 루틴 또는 루틴들을 포함할 수 있다. 메모리(128)는, 프로세서(120), 메모리(128), 그리고 컴퓨팅 디바이스(100)의 다른 컴포넌트와의 입력/출력 동작을 가능하게 하도록 회로망 및/또는 컴포넌트로서 실체화될 수 있는 I/O 서브시스템(126)을 통하여 프로세서(120)에 통신가능하게 커플링된다(communicatively coupled). 예컨대, I/O 서브시스템(126)은 입력/출력 동작을 가능하게 하기 위해 메모리 제어기 허브, 입력/출력 제어 허브, 펌웨어 디바이스, 통신 링크(즉, 점대점(point-to-point) 링크, 버스 링크, 배선, 케이블, 도광(light guide), 인쇄 회로 보드 트레이스(printed circuit board trace) 등등) 및/또는 다른 컴포넌트와 서브시스템으로서 실체화되거나, 그렇지 않으면 이를 포함할 수 있다. 몇몇 실시예에서, I/O 서브시스템(126)은 시스템 온 칩(System-on-a-Chip: SoC)의 일부분을 형성하고, 프로세서(120), 메모리(128), 그리고 컴퓨팅 디바이스(100)의 다른 컴포넌트와 더불어, 단일 집적 회로 칩 상에 포함될 수 있다.
데이터 저장 디바이스(134)는 예컨대, 메모리 디바이스 및 회로, 메모리 카드, 하드 디스크 드라이브, 솔리드-스테이트 드라이브(solid-state drive), 또는 다른 데이터 저장 디바이스와 같이 데이터의 단기 또는 장기 저장을 위해 구성된 임의의 유형의 디바이스 또는 디바이스들로서 실체화될 수 있다. 데이터 저장 디바이스(134)는 운영 체제 소프트웨어 및 애플리케이션 소프트웨어를 포함하여 실행을 위한 소프트웨어 또는 다른 데이터를 저장하는 데에 사용될 수 있다. 그러한 소프트웨어는 처음에 신뢰받고 있지 않고(untrusted) 잠재적으로 악성일 수 있다(예컨대, 제3자 벤더(third party vendor)로부터 다운로드된 소프트웨어).
컴퓨팅 디바이스(100)는 통신 회로(136)를 더 포함하는데, 이는 컴퓨팅 디바이스(100) 및 원격 컴퓨팅 디바이스 간의 통신을 가능하게 할 수 있는 임의의 통신 회로, 디바이스, 또는 이의 모음(collection)으로서 실체화될 수 있다. 통신 회로(136)는 그러한 통신을 유발하는 데에 임의의 하나 이상의 통신 기술(가령, 무선 또는 유선 통신) 및 연관된 프로토콜(가령, 이더넷(Ethernet), 블루투스(Bluetooth®), 와이파이(Wi-Fi®), 와이맥스(WiMAX), HSPA+, LTE 등등)을 사용하도록 구성될 수 있다. 통신 회로(136)는 네트워크 어댑터(무선 네트워크 어댑터를 포함함)로서 실체화될 수 있다.
예시적인 실시예에서, 컴퓨팅 디바이스(100)는 디스플레이(138)를 더 포함한다. 컴퓨팅 디바이스(100)의 디스플레이(138)는 액정 디스플레이(Liquid Crystal Display: LCD), 발광 다이오드(Lighit Emitting Diode: LED), 플라즈마 디스플레이(plasma display), 음극선관(Cathode Ray Tube: CRT), 또는 다른 유형의 디스플레이 디바이스와 같이 디지털 정보를 디스플레이하는 것이 가능한 임의의 유형의 디스플레이로서 실체화될 수 있다. 디스플레이(138)는 예컨대 사용자에게 보안 분석의 결과를 전하는 데에 사용될 수 있다.
이제 도 2를 참조하면, 예시적인 실시예에서, 컴퓨팅 디바이스(100)는 동작 동안에 환경(200)을 수립한다. 예시적인 환경(200)은 보안 모듈(202)과, 트랜잭셔널 실행 모듈(204)과, 보안 지원 모듈(208)과, 취소 핸들러 모듈(212)을 포함한다. 몇몇 실시예에서, 환경(200)은 예비 보안 모듈(fallback security module)(214)을 또한 포함할 수 있다. 환경(200)의 다양한 모듈은 하드웨어, 펌웨어, 소프트웨어 또는 이의 조합으로서 실체화될 수 있다.
보안 모듈(202)은 의심스러운 코드 세그먼트를 식별하고 트랜잭셔널 실행 엔빌로프(transactional execution envelope) 내에 의심스러운 코드 세그먼트를 래핑하도록 구성된다. 보안 모듈(202)은 실행되지 말아야 하는 의심스러운 코드, 예컨대 의심 가는 쉘코드 또는 의심 가는 리턴 지향 프로그래밍(Return-Oriented Programming: ROP) 개짓 내의 특정한 메모리 위치를 식별하도록 또한 구성될 수 있다. 그러므로 보안 모듈(202)은 의심스러운 코드의 주소 공간(address space)로의 (또는 코드가 메모리(128) 내로 매핑되기(mapped) 전 데이터 스토리지(134) 상의 코드의 이미지로의) 접근권을 갖는 컴퓨팅 디바이스(100)의 임의의 컴포넌트로서 실체화될 수 있다. 예컨대, 보안 모듈(202)은 가상 머신 모니터(Virtual Machine Monitor: VMM), 하이퍼바이저, 운영 체제, 커널 소프트웨어(kernel software), 또는 컴퓨팅 디바이스(100)의 다른 제어 시스템으로서 실체화되거나 이의 일부일 수 있다.
트랜잭셔널 실행 모듈(204)은 트랜잭셔널 엔빌로프 내에서 의심스러운 코드를 실행하고 의심스러운 코드의 실행 동안에 발생하는 임의의 트랜잭셔널 취소를 검출하도록 구성된다. 트랜잭셔널 실행 모듈(204)은 의심스러운 코드를 포함하는 트랜잭션(206)의 실행을 관리하도록 구성된다. 트랜잭셔널 취소는 의심스러운 코드가 모니터링되는 메모리 영역(130)을 수정하려고 시도하는 경우, 의심스러운 코드가 비인가 코드를 실행하려고 시도하는 경우, 또는 보안 침해에 관련되지 않은 다른 이유(가령, 모니터링되는 메모리 영역(130)에 관련되지 않은 데이터 충돌, 트랜잭셔널 실행 동안에 직면하게 되는(encountered) 호환가능하지 않은 명령어, 초과된 트랜잭셔널 버퍼 용량(transactional buffer capacity), 직면하게 되는 I/O 명령어 등등)로 발생할 수 있다.
보안 지원 모듈(208)은 트랜잭션(206)의 트랜잭셔널 실행과 동시에 보안 지원 쓰레드(210)를 실행하도록 구성된다. 보안 지원 쓰레드(210)는 반드시 트랜잭셔널 취소가 만약 의심스러운 코드가 모니터링되는 영역(130) 중 어느 것에라도 쓰려고 시도하는 경우에 트리거되게끔(triggered) 하도록 구성된다. 트랜잭셔널 취소를 트리거하기 위해 요구되는 특정한 동작은 컴퓨팅 디바이스(100)의 트랜잭셔널 메모리 지원(122)의 특정한 실시예에 달려 있을 수 있다. 예컨대, 몇몇 실시예에서, 보안 지원 쓰레드(210)는 모니터링되는 영역(130) 전부를 루프(loop) 내에서 반복적으로 액세스하도록(가령, 읽도록) 구성될 수 있어, 만약 트랜잭션(206)이 모니터링되는 영역(130) 중 어느 것에라도 쓰는 (또는 쓰려고 시도하는) 경우 메모리 충돌을 강제한다.
취소 핸들러 모듈(212)은 의심스러운 코드의 실행 동안에 검출된 트랜잭셔널 취소가 의심 가는 트랜잭션(206)에 의해 야기된 보안 이벤트(security event)에 의해 야기되었는지를 판정하도록 구성된다. 그렇게 하기 위해, 취소 핸들러 모듈(212)은 트랜잭셔널 취소(가령, 명시적인 취소, 중단점에 도달하는 것, 또는 메모리 충돌)의 원인 및 임의의 충돌 데이터 위치의 주소를 판정하기 위해 컴퓨팅 디바이스(100) 및/또는 프로세서(120)의 디바이스의 상태를 분석할 수 있다. 취소 핸들러 모듈(212)은 적절한 응답이 생성될 수 있도록 검출된 보안 이벤트를 보고하도록 또한 구성된다. 취소 핸들러 모듈(212)은 트랜잭셔널 취소의 검출에 응답하여 프로세서(120)에 의해 자동으로 호출되는 소프트웨어 루틴으로서 실체화될 수 있는 취소 핸들러(132)를 포함할 수 있다. 만약 취소 핸들러 모듈(212)은 취소 이벤트의 이유가 트랜잭션(206)의 비인가 행위(unauthorized action)에 의해 야기되지 않았다고 판정하면 트랜잭셔널 실행이 한 번 또는 여러 번 반복될 수 있다.
몇몇 실시예는 비-트랜잭셔널 멀웨어 모니터링 및/또는 검출을 수행하도록 구성될 수 있는 예비 보안 모듈(214)을 포함할 수 있다. 예컨대, 예비 보안 모듈(214)은 정적 분석, 단일 단계 동적 메모리 액세스 분석(single-step dynamic memory access analysis), 또는 임의의 다른 알려진 멀웨어 검출 방법을 수행할 수 있다. 예비 보안 모듈(214)은 의심스러운 코드가 트랜잭션 상으로(transactionally) 완료될 수 없지만 어떠한 보안 이벤트도 검출되지 않았을 경우 취소 핸들러 모듈(212)에 의해 발동될(invoked) 수 있다. 예컨대, 예비 보안 모듈(214)은 트랜잭셔널 실행과 호환가능하지 않은 명령어를 포함하는 의심스러운 코드를 위해 발동될 수 있다. 예비 보안 모듈(214)은 트랜잭셔널 검출보다 상당히 느릴 것 같으므로, 그것은 트랜잭셔널 검출이 성공적이지 않은 경우 오직 예비 저속 경로(fallback slow-path)로서 선호된다.
이제 도 3을 참조하면, 사용 중에, 컴퓨팅 디바이스(100)는 비인가 메모리 액세스를 검출하기 위한 방법(300)을 실행할 수 있다. 방법(300)은 블록(302)에서 시작되는데, 여기에서 컴퓨팅 디바이스(100)는 의심스러운 코드의 세그먼트를 식별한다. 컴퓨팅 디바이스(100)는 의심스러운 코드를 식별하기 위해 임의의 방법을 사용할 수 있다. 예컨대, 몇몇 실시예에서 컴퓨팅 디바이스(100)는 실행될 임의의 코드를 의심스러운 것으로 식별할 수 있다. 몇몇 실시예에서, 컴퓨팅 디바이스(100)는 코드가 서명되는지, 코드가 인터넷으로부터 다운로드되었는지 및 기타 등등과 같은 메타데이터 속성에 기반하여 의심스러운 코드를 식별할 수 있다. 추가적으로 또는 대안적으로, 컴퓨팅 디바이스(100)는 잠재적으로 악성인 코드를 식별하기 위해 정적 분석, 동적 분석(가령, 에뮬레이션(emulation)에 기반함), 또는 다른 휴리스틱 분석(heuristic analysis)을 수행할 수 있다.
블록(304)에서, 컴퓨팅 디바이스(100)는 의심스러운 코드의 실행 동안에 모니터링할 하나 이상의 메모리 영역(130)을 판정한다. 모니터링되는 영역(130)은 의심스러운 코드에 의해 수정되지 말아야 하는 임의의 중요한 메모리 내부 데이터 구조 또는 주소 범위로 실체화될 수 있다. 예컨대, 모니터링되는 영역(130)은 (가령, OS 코드를 패치되거나 수정되는 것으로부터 보호하기 위해) 시스템 호출 표 또는 다른 시스템 혹은 커널 레벨 데이터 구조 또는 코드 구역을 포함할 수 있다. 추가적으로 또는 대안적으로, 모니터링되는 영역(130)은 실행되지 말아야 하는 의심스러운 코드 세그먼트 내의 메모리 주소를 포함할 수 있다. 예컨대, 의심스러운 코드는 실행되지 말아야 하는 데이터 세그먼트를 포함할 수 있는데, 그 데이터 세그먼트의 실행은 버퍼 오버플로우(buffer overflow) 또는 다른 잠재적으로 악성인 익스플로잇을 나타낼 수 있다. 그 예에서, 데이터 세그먼트는 모니터링되는 메모리 영역(130) 내에 포함될 수 있다. 추가로 아래에서 기술되는 바와 같이, 실행되지 말아야 하는 그러한 모니터링되는 메모리 영역(130)은 중단점 또는 명시적인 취소 명령어의 사용을 통해 모니터링될 수 있다.
블록(306)에서, 컴퓨팅 디바이스(100)는 트랜잭셔널 실행 엔빌로프 내에 의심스러운 코드를 래핑한다. 의심스러운 코드를 래핑하는 것은 의심스러운 코드로 하여금 트랜잭션 내에서 실행될 수 있게 한다. 프로세서(120)의 트랜잭셔널 메모리 지원(122)과 호환가능한 의심스러운 코드를 래핑하기 위한 임의의 방법이 사용될 수 있다. 몇몇 실시예에서, 블록(308)에서 컴퓨팅 디바이스(100)는, 예컨대 계측(instrumentation)을 사용하거나 의심스러운 코드의 콘텍스트(context) 내에서 대응하는 명령어를 실행하기 위해 하이퍼바이저를 사용함으로써 의심스러운 코드 내에 또는 그 주위에 트랜잭션 시작 및 트랜잭션 종료 명령어들을 삽입할 수 있다. 몇몇 실시예에서, 삽입된 명령어는 의심스러운 코드에게 비가시적(invisible)이게 될 수 있다. 트랜잭션 시작 및 트랜잭션 종료 명령어는 각각 트랜잭션의 시작과 끝을 시그널링하기(signal) 위해 프로세서(120)에 의해 해석되는 머신 명령어로서 실체화될 수 있다. 예컨대, 인텔(Intel®) Transactional Synchronization Extensions(Intel® TSX)이 있는 인텔((Intel®) 아키텍처 프로세서 상에서, 트랜잭션 시작 및 트랜잭션 종료 명령어는 각각 약호 XBEGIN 및 XEND를 갖는 명령어로서 실체화될 수 있다.
몇몇 실시예에서, 블록(310)에서 컴퓨팅 디바이스(100)는 의심스러운 코드 내에 중단점 또는 명시적인 취소 명령어를 설정할 수 있다. 중단점은 실행되지 말아야 한다고 컴퓨팅 디바이스(100)가 판정한 의심스러운 코드 내의 모니터링되는 메모리 영역(130)에 대해 설정될 수 있다. 중단점은 프로세서(120)로 하여금 메모리 내의 그 특정한 위치를 실행하려고 시도하는 경우 트랜잭셔널 취소를 생성하게 하는 임의의 명령어, 데이터 또는 다른 설정으로서 실체화될 수 있다. 예컨대, 중단점은 명시적인 트랜잭셔널 취소 명령어(transactional abort instruction), 예를 들어 인텔(Intel®) TSX가 있는 인텔(Intel®) 아키텍처 프로세서 상에서 약호 XABORT를 갖는 명령어를 삽입함으로써 설정될 수 있다. 추가적으로 또는 대안적으로, 중단점은 트랜잭션 취소를 야기하는 임의의 다른 적합한 명령어 또는 명렁어의 세트(가령, 중단점 인터럽트 명령어(breakpoint interrupt instruction), 위법 명령어(illegal instruction), 취소를 초래하는 내부 CPU 트랜잭션 추적 스토리지(internal CPU transaction-tracking storage)의 오버플로우를 야기하는 명령어의 시퀀스)를 삽입함으로써 설정될 수 있다. 추가적으로 또는 대안적으로, 중단점은 프로세서(120)의 디버그 레지스터(debug register) 내에 특정한 값을 저장함으로써 설정될 수 있다. 중단점을 설정하는 것은 컴퓨팅 디바이스(100)로 하여금 의심스러운 코드 내의 잠재적으로 악성인 위치의 실행에 대해 모니터링할 수 있게 할 수 있다.
블록(312)에서, 컴퓨팅 디바이스(100)는 모니터링되는 메모리 영역(130)을 모니터링하는 데에 사용될 수 있는 보안 지원 쓰레드(210)를 생성한다. 보안 지원 쓰레드(210)는 컴퓨팅 디바이스(100)의 논리적 프로세서 상에서 작동가능한(runnable) 임의의 독립적인 실행 쓰레드(thread of execution), 예를 들어 운영 체제 쓰레드, 경량 프로세스(lightweight process), 운영 체제 프로세스, 운영 체제 커널 쓰레드, 또는 사용자 소프트웨어 쓰레드로서 실체화될 수 있다. 생성 시에, 보안 지원 쓰레드(210)는 모니터링되는 영역(130)의 주소를 제공 받을 수 있다. 몇몇 실시예에서, 새로이 생성되기보다 보안 지원 쓰레드(210)는 쓰레드 풀(thread pool)로부터 선택되거나 아니면 사용을 위해 준비될 수 있다. 물론, 몇몇 실시예에서, 보안 지원 쓰레드(210)의 생성 또는 활성화에 대응하는 행위는 방법(300) 실행 전을 비롯하여 어느 때나 수행될 수 있음에 유의하여야 한다.
블록(312)에서 보안 지원 쓰레드(210)를 생성한 후, 방법(300)은 블록(314, 320)으로 동시에 나아간다. 컴퓨팅 디바이스(100)는 방법(300)을 실행하기 위해 임의의 동시성(concurrency) 기법을 사용할 수 있다. 예컨대, 컴퓨팅 디바이스(100)는 여러 프로세서 코어들, 논리적 프로세서들, 또는 프로세서(120)의 하드웨어 쓰레드들 상에서 동시적으로, 여러 프로세서들(120)(도시되지 않음) 상에서 동시적으로, 또는 단일 코어(single-core) 프로세서(120) 상에서 시분할 다중화되어(time-division multiplexed) 방법(300)을 실행할 수 있다. 사용되는 동시성 기법은 트랜잭셔널 메모리 지원(122)의 특정한 실시예에 달려 있을 수 있는데, 예컨대, 몇몇 실시예에서 보안 지원 쓰레드(210)는 트랜잭셔널 취소를 생성하기 위해서 트랜잭션(206)으로부터 별개의 프로세서 코어 상에서 실행될 것이 요구될 수 있다.
블록(314)에서, 컴퓨팅 디바이스(100)는 보안 지원 쓰레드(210)를 시작한다. 전술된 바와 같이, 보안 지원 쓰레드(210)를 시작하는 것은 보안 지원 쓰레드(210)의 독립적인 동시적 실행을 시작한다. 블록(316)에서, 컴퓨팅 디바이스(100)는 프로세서(120)에 의해 생성하는 트랜잭셔널 취소를 검출할 수 있다. 트랜잭셔널 취소는 컴퓨팅 디바이스(100) 상에서 실행되는 임의의 트랜잭션(트랜잭션(206)을 포함함) 및 보안 지원 쓰레드(210) 간의 메모리 충돌에 의해 야기될 수 있다. 전술된 바와 같이, 트랜잭셔널 메모리 충돌(transactional memory conflict)은, 예컨대, 쓰레드가 계류 중인 트랜잭션에 의해 쓰기가 된 데이터 위치를 읽으려고 시도하는 경우에 발생한다. 메모리 충돌의 검출 및 트랜잭셔널 취소의 뒤이은 생성은 프로세서(120)의 하드웨어, 프로세서(120)의 마이크로코드(microcode), 펌웨어, 소프트웨어, 또는 그 기법들의 임의의 조합에 의해 수행될 수 있다. 메모리 충돌 및 다른 트랜잭셔널 취소의 검출은 취소 핸들러(132)가 프로세서(120)에 의해 호출된 후에만 트랜잭셔널 취소를 인지하게 될 수 있는, 프로세서(120) 상에서 실행되는 소프트웨어에 대해 투명할(transparent) 수 있다. 따라서, 프로세서(120)는 보안 지원 쓰레드(210)의 실행 동안 어느 때나 트랜잭셔널 취소를 검출할 수 있다. 트랜잭셔널 취소를 검출하기 위한 방법 및 연관된 취소 핸들러(132)의 하나의 실시예가 도 4와 관련하여, 추가로 후술된다.
블록(318)에서, 컴퓨팅 디바이스(100)는 모니터링되는 메모리 영역(130)을 읽는다. 모니터링되는 메모리 영역(130)을 보안 지원 쓰레드(210)로부터 읽는 것은 트랜잭션(206)으로부터 모니터링되는 메모리 영역(130)으로의 임의의 메모리 쓰기와의 메모리 충돌을 야기할 수 있다. 몇몇 실시예에서, 보안 지원 쓰레드(210)는 의심스러운 코드 그 자체 내의 어떠한 모니터링되는 메모리 영역(130)도 추적하지 않을 수 있는데, 그 코드 위치들은 의심스러운 코드 내에 중단점을 설정함으로써 모니터링될 수 있다. 따라서, 모니터링되는 메모리 영역(130)을 블록(318)에서 읽는 동안, 블록(316)에서 컴퓨팅 디바이스(100)는 트랜잭셔널 취소를 검출할 수 있다. 모니터링되는 메모리 영역(130)을 읽은 후, 방법(300)은 블록(318)으로 되돌아가 모니터링되는 메모리 영역(130)을 읽는 것을 계속한다.
블록(312)을 다시 참조하면, 보안 지원 쓰레드(210)를 생성한 후, 방법(300)은 블록(314, 320)으로 동시에 나아간다. 블록(320)에서, 컴퓨팅 디바이스(100)는 트랜잭션(206)을 시작하고 연관된 취소 핸들러(132)를 식별한다. 몇몇 실시예에서, 트랜잭션(206)은 특정한 명령어, 예컨대 XBEGIN 명령어를 실행함으로써 시작될 수 있다. 취소 핸들러(132)의 주소는 트랜잭션 시작 명령어에 인수(argument)로서 전해질 수 있다. 추가적으로 또는 대안적으로, 취소 핸들러(132)의 주소를 지정하기 위해 별개의 명령어가 존재할 수 있다. 만약 트랜잭셔널 취소가 트랜잭션(206)의 실행 동안에 발생하는 경우, 프로세서(120)는 취소 핸들러(132)를 호출한다. 블록(320)에서 트랜잭션(206)을 시작하는 동안, 블록(316)에서 컴퓨팅 디바이스(100)는 트랜잭셔널 취소, 예컨대 트랜잭션(206) 및 보안 지원 쓰레드(210) 간의 메모리 충돌에 의해 야기된 트랜잭셔널 취소를 검출할 수 있다. 물론, 트랜잭셔널 취소는 트랜잭션 크기에 대한 하드웨어 제한을 초과하는 것 또는 트랜잭셔널 실행을 위해 지원되지 않는 명령어(가령, 시도된 I/O 명령어(attempted I/O instruction))를 직면하는 것과 같은 다른 이유를 가질 수 있다.
블록(322)에서, 컴퓨팅 디바이스(100)는 트랜잭션(206) 내에서 의심스러운 코드를 실행한다. 그러므로, 의심스러운 코드는 보안 지원 쓰레드(210)와 동시에 실행된다. 블록(322)에서 의심스러운 코드를 실행하는 동안, 블록(316)에서 컴퓨팅 디바이스(100)는 트랜잭셔널 취소를 검출할 수 있다. 만약 보안 지원 쓰레드(210)에 의해 읽힌 모니터링되는 메모리 영역(130)에 트랜잭션(206)의 의심스러운 코드가 쓰는 경우 트랜잭셔널 취소가 생성될 수 있다. 트랜잭셔널 취소는 충돌하는 쓰기 시에 즉시 또는 나중에 생성될 수 있다. 예컨대, 이제 도 5를 참조하면, 도해(500)는 읽기-쓰기 충돌에 의해 야기될 수 있는 트랜잭셔널 취소의 검출을 예시한다. 도해(502)는 네 개의 지명된 메모리 위치 A, B, C 및 D를 도시하여, 메모리(128)를 예시한다. 위치 A 및 B는 모니터링되는 메모리 영역(130)이다. 보안 지원 쓰레드(210)는 모니터링되는 메모리 위치 A, B로부터 계속해서 읽히는 명령어의 스트림(stream)(504)을 실행한다(읽기 명령어의 정확한 타이밍, 순서 및 개수는 달라질 수 있음). 동시에, 트랜잭션(206)은 명령어의 스트림(506)을 실행한다. 메모리 충돌(508, 510)은 트랜잭션(206)이 모니터링되는 메모리 위치 B에 쓰는 것과 보안 지원 쓰레드(210)가 모니터링되는 메모리 위치 B로부터 읽는 것에 의해 야기된 데이터 충돌을 나타낸다. 전술된 바와 같이, 어느 쪽 충돌(508, 510)에 대해서든 트랜잭셔널 취소가 생성될 수 있다. 트랜잭셔널 취소에 응답하여, 트랜잭션(206)이 롤백되고 취소 핸들러(132)가 실행된다(도 4의 방법(400)을 보시오). 추가적으로 또는 대안적으로, 의심스러운 코드 내에 이전에 설정된 중단점 또는 의심스러운 코드 내에 삽입된 명시적인 취소 명령어를 직면할 시 트랜잭셔널 취소가 생성될 수 있다. 중단점 또는 명시적 취소 명령어를 직면하는 경우에, 트랜잭션(206)에 의해 행해진 메모리 수정이 또한 롤백된다.
도 3을 다시 참조하면, 블록(324)에서, 컴퓨팅 디바이스(100)는 의심스러운 코드의 완료 후에 트랜잭션(206)을 종료한다. 몇몇 실시예에서, 트랜잭션(206)은 특정한 명령어, 예컨대 XEND 명령어를 실행함으로써 종료될 수 있다. 트랜잭션(206)을 종료하는 것은 컴퓨팅 디바이스(100)로 하여금 트랜잭션(206)을 커밋하기 전에 트랜잭션(206)을 유효화하게(validate) 할 수 있다. 트랜잭션(206)을 유효화하는 것은 임의의 메모리 충돌이 트랜잭션(206)의 실행 동안에 발생하였는지를 판정하기 위해 트래잭션(206)의 읽기 세트(read set) 및/또는 쓰기 세트(write set)를 유효화하는 것을 포함할 수 있다. 블록(324)에서 트랜잭션(206)을 종료하는 동안, 블록(316)에서 컴퓨팅 디바이스(100)는 트랜잭셔널 취소를 검출할 수 있다. 예컨대, 어떠한 이유로든 트랜잭션(206)을 유효화하고/하거나 커밋하지 못할 시에 트랜잭셔널 취소가 제기될(raised) 수 있다. 추가적으로 또는 대안적으로, 몇몇 실시예에서, 컴퓨팅 디바이스(100)는, 메모리 요청을 발행한 후에 또는 임의의 취소 조건(abort condition)을 직면한 후에 가능한 한 빨리 (충돌 검출을 비롯하여) 유효화가 일어나는 "열성"(eager) 유효화 메커니즘을 구현할 수 있다. 또한, 몇몇 실시예에서 명시적인 트랜잭션 종료 명령어가 부재할 수 있는데, 그럴 경우에 트랜잭션(206)은 트랜잭셔널 충돌(transactional conflict)을 추적하는 데에 사용되는 스토리지의 용량을 고갈시키는 것으로 인해 묵시적으로 종료될 수 있다.
트랜잭션(206)을 성공적으로 종료한 후, 방법(300)은 블록(326)으로 나아가거나, 몇몇 실시예에서, 블록(302)으로 되돌아갈 수 있다. 트랜잭션(206)의 성공적인 완료는 어떠한 보안 이벤트도 발생하지 않았음, 곧 중단점으로 표시된(marked) 의심스러운 코드의 시도된 실행(attempted execution)을 포함하여, 모니터링되는 메모리 영역(130) 중 어느 것으로도 비인가 액세스를 의심스러운 코드가 시도하지 않았음을 나타낸다. 트랜잭션(206)을 종료한 후, 방법(300)의 실행은 본질적으로 단일 쓰레드식(single-threaded)인 것으로 돌아갈 수 있다. 예컨대, 컴퓨팅 디바이스(100)는 트랜잭션(206)이 성공적으로 커밋한 후 보안 지원 쓰레드(210)의 실행을 정지하거나 아니면 끝낼 수 있다. 몇몇 실시예에서, 블록(326)에서 컴퓨팅 디바이스(100)는 의심스러운 코드를 깨끗한(clean) 것으로 보고할 수 있다. 컴퓨팅 디바이스(100)는 임의의 보고 방법을 사용할 수 있는데, 예컨대, 컴퓨팅 디바이스(100)는 상호작용적인 알림(interactive alert)을 생성하거나, 적어도 하나의 소프트웨어 모듈로 메시지를 발신하거나 호출 또는 콜백(callback)을 발동하거나, 인간이 읽을 수 있는 보고를 생성하거나, 장래의 실행을 가능하게 하기 위해 화이트리스트(whitelist)에 의심스러운 코드를 추가하거나, 다른 보안 관련 작업을 수행할 수 있다. 블록(326)의 완료 후, 방법(300)은 의심스러운 코드를 식별하기 위해 블록(302)으로 되돌아간다. 몇몇 실시예에서, 블록(302)으로 되돌아갈 시에 컴퓨팅 디바이스(100)는 트랜잭션(206)의 콘텍스트 및 환경을 수정하고 그러한 변경된 조건 내에서 의심스러운 코드의 가동을 평가할 수 있다.
이제 도 4를 참조하면, 사용 중에, 컴퓨팅 디바이스(100)는 트랜잭셔널 취소를 검출하고 다루기 위한 방법(400)을 실행할 수 있다. 방법(400)은, 부분적으로, 트랜잭션(206)을 위한 취소 핸들러(132)로서 실체화될 수 있다. 방법(400)은 블록(402)에서 시작하는데, 여기에서 컴퓨팅 디바이스(100)는 트랜잭셔널 취소가 발생할지를 판정한다. 몇몇 실시예에서, 블록(402)의 프로세스는 전술된 바와 같은, 도 3의 블록(316)의 임의의 인스턴스(instance)를 위해 실행될 수 있다. 컴퓨팅 디바이스(100) 상에서 실행되는 활성 트랜잭션과 다른 트랜잭션 또는 쓰레드 간의 메모리 충돌에 의해 트랜잭셔널 취소가 야기될 수 있다. 예컨대, 트랜잭션(206)의 의심스러운 코드가 보안 지원 쓰레드(210)에 의해 전에 읽힌 메모리 위치에 쓰려고 시도하는 경우 트랜잭셔널 취소가 야기될 수 있다. 추가적으로 또는 대안적으로, 다른 예로서 트랜잭션(206)의 의심스러운 코드가 보안 지원 쓰레드(210)에 의해 나중에 읽히는 메모리 위치에 쓰는 경우 트랜잭셔널 취소가 야기될 수 있다. 트랜잭셔널 취소를 야기하는 특정한 조건은 프로세서(120)의 트랜잭셔널 메모리 지원(122)의 구현에 달려 있을 수 있다. 추가적으로 또는 대안적으로, XABORT 명령어와 같은 명시적 취소 명령어에 의해 또는 중단점을 직면하는 것에 의해 트랜잭셔널 취소가 야기될 수 있다. 트랜잭셔널 실행을 위해 지원되지 않는 명령어(가령, 어떤 벡터 수학(vector math) 명령어 또는 주 메모리(main memory)로의 캐싱되지 않는 액세스(un-cached access)가 있는 명령어)의 실행, 트랜잭셔널 하드웨어 용량(transactional hardware capacity)의 오버플로우, I/O 동작의 실행, 또는 다른 이유에 의해 트랜잭셔널 취소가 또한 야기될 수 있다. 컴퓨팅 디바이스(100)는 프로세서(120)의 하드웨어, 프로세서(120)의 마이크로코드, 펌웨어, 또는 소프트웨어의 임의의 조합을 사용하여 트랜잭셔널 취소를 트리거하는 조건을 검출할 수 있다. 만약 어떠한 트랜잭셔널 취소도 발생하지 않는다면, 방법(400)은 블록(402)으로 되돌아가서 트랜잭셔널 취소에 대한 모니터링을 계속한다. 만약 트랜잭셔널 취소가 발생한다면, 방법(400)은 블록(404)으로 나아간다. 동기식(synchronous) 또는 폴링 기반(polling-based) 프로세스로서 예시되나, 몇몇 실시예에서 트랜잭셔널 취소의 검출은 비동기식(asynchronous) 또는 인터럽트 구동식(interrupt-driven)일 수 있음이 이해되어야 한다.
블록(404)에서, 컴퓨팅 디바이스(100)는 취소 트랜잭션(aborting transaction)(206)을 취소하고 롤백한다. 컴퓨팅 디바이스(100)는 트랜잭션(206)을 롤백하기 위해 임의의 적절한 기법을 사용할 수 있다. 예컨대, 쓰기-캐싱(write-caching) 트랜잭셔널 메모리 시스템 내에서, 컴퓨팅 디바이스(100)는 취소 트랜잭션(206)과 연관된 모든 캐싱된 데이터를 폐기할 수 있다. 다른 예로서, 즉각 쓰기(write-in-place) 트랜잭셔널 메모리 시스템 내에서, 컴퓨팅 디바이스(100)는 취소 트랜잭션(206)과 연관된 쓰기 로그(write log)로부터 메모리의 원래의 값을 복구할 수 있다. 트랜잭션(206)은 프로세서(120), 프로세서(120)의 마이크로코드 및/또는 플랫폼 펌웨어에 의해 자동으로 롤백될 수 있는데, 즉 롤백은 컴퓨팅 디바이스(100) 상에서 실행되는 어떠한 소프트웨어에 대해서도 투명하게 발생할 수 있다. 트랜잭션(206)을 롤백한 후, 프로세서(120)는 적절한 취소 핸들러(132)를 발동시킬 수 있다.
블록(406)에서, 컴퓨팅 디바이스(100)는 보안 이벤트가 발생하였는지 판정하기 위해 컴퓨팅 디바이스(100)의 디바이스 상태를 분석할 수 있다. 이 분석은 취소 핸들러(132)에 의해 수행되거나 아니면 취소 핸들러(132)가 호출되는 것에 응답하여 발동될 수 있다. 보안 이벤트는 하나 이상의 모니터링되는 메모리 영역(130)으로의 임의의 비인가 액세스를 포함한다. 그러므로, 보안 이벤트는, 예컨대, 모니터링되는 메모리 영역(130)을 수정하려는 비인가 시도(unauthorized attempt)를 포함할 수 있다. 그러한 비인가 메모리 수정은 시스템 표를 후킹하거나(hook), OS 또는 보안 소프트웨어를 패치하거나(patch), 컴퓨팅 디바이스(100)의 제어를 전복하려고(subvert) 시도하는 루트킷과 같은 악성 소프트웨어에 의해 시도될 수 있다. 다른 예로서, 보안 이벤트는 시스템 스택, 힙, 리턴 지향 프로그래밍(Return-Oriented Programming: ROP) 개짓, 또는 점프 지향 프로그래밍(Jump-Oriented Programming: JOP) 개짓과 같은 메모리 내의 금지된 위치의 시도된 실행을 포함할 수 있다. 그러한 비인가 실행은 임의적인 코드를 실행하려는 악성 시도에 의해 야기될 수 있다. 보안 이벤트는, 예컨대, 모니터링되는 메모리 영역(130)을 수반하지 않는 데이터 충돌, 예를 들어 동시에 실행되는 트랜잭션 및/또는 쓰레드 간의 보통의 데이터 충돌을 포함하지 않을 수 있다.
컴퓨팅 디바이스(100)는 트랜잭셔널 취소의 원인에 기반하여 보안 이벤트가 발생하였는지를 판정할 수 있다. 블록(408)에서, 몇몇 실시예에서 컴퓨팅 디바이스(100)는 디바이스 상태를 분석하기 위해 취소 상태 레지스터(abort status register)를 읽을 수 있다. 예컨대, 인텔(Intel®) TSX가 있는 인텔(Intel®) 아키텍처 프로세서에 대해, 컴퓨팅 디바이스(100)는 EAX 레지스터를 읽을 수 있다. 취소 상태 레지스터는 메모리 충돌 유형, 명시적인 취소 명령어에 직면하게 되었는지, 또는 중단점에 직면하게 되었는지와 같은 취소의 이유에 대한 정보를 제공할 수 있다. 만약 취소 상태 레지스터가 트랜잭션 취소에 대한 상이한 원인을 나타내면, 보안 이벤트는 발생하지 않았을 수 있다. 몇몇 실시예에서, 블록(410)에서 컴퓨팅 디바이스(100)는 디바이스(또는 프로세서) 상태를 분석하기 위해 성능 모니터링 유닛(124)을 읽을 수 있다. PMU(124)는 트랜잭셔널 취소의 원인을 판정하기 위해 정보(취소 명령어의 주소 또는 충돌 데이터의 주소와 같은, 취소에 관련된 메모리 주소를 포함함)를 제공할 수 있다. 예컨대, 컴퓨팅 디바이스(100)는 모니터링되는 메모리 영역(130)이 액세스되었는지를 판정하기 위해 충돌 데이터의 메모리 주소를 모니터링되는 메모리 영역(130)의 메모리 주소와 비교할 수 있다. 그러므로, 컴퓨팅 디바이스(100)는 보안 이벤트에 의해 야기된 트랜잭셔널 취소 및 동시적인 트랜잭션 및/또는 쓰레드 간의 통상적인 데이터 충돌에 의해 야기된 트랜잭셔널 취소를 구별할 수 있다. 추가적으로 또는 대안적으로, 컴퓨팅 디바이스(100)는 취소 명령어의 메모리 주소를 의심스러운 코드 내에 설정된 임의의 중단점의 메모리 주소와 비교할 수 있다.
블록(412)에서, 컴퓨팅 디바이스(100)는 보안 이벤트가 발생하였는지를 판정한다. 전술된 바와 같이, 의심스러운 코드가 모니터링되는 메모리 영역(130)에 쓰거나 쓰려고 시도하는 경우, 또는 의심스러운 코드가 비인가 메모리 위치를 실행하거나 실행하려고 시도하는 경우 보안 이벤트가 발생할 수 있다. 만약 보안 이벤트가 발생한 경우, 방법(400)은 블록(414)으로 분기하는데, 여기에서 컴퓨팅 디바이스(100)는 보안 이벤트를 보고한다. 보안 이벤트는 상호작용적 알림을 디스플레이하는 것, 인간이 읽을 수 있는 보고를 생성하는 것, 의심스러운 코드를 블랙리스트에 올리는 것, 의심스러운 코드를 격리하거나 소거하는 것, 의심스러운 코드의 추가 실행을 차단하는 것, 또는 다른 보안 동작을 수행하는 것을 포함하는 임의의 이용가능한 기법을 사용하여 보고될 수 있다. 의심스러운 이벤트를 보고한 후, 컴퓨팅 디바이스(100)는 도 3에 도시된 바와 같이 의심스러운 코드를 식별하는 것을 재개할 수 있다.
블록(412)을 다시 참조하면, 만약 보안 이벤트가 발생하지 않았으면, 방법(400)은 블록(416)으로 나아가는데, 여기에서 컴퓨팅 디바이스(100)는 취소 카운트(abort count)를 증분시킨다(increment). 취소 카운트는 컴퓨팅 디바이스(100)가 의심스러운 코드의 실행을 시도한 횟수를 추적하는 데에 사용되며, 진척을 보장하는 데에 사용될 수 있다. 취소 카운트는 특정한 의심스러운 코드와 연관된 임의의 지속적인 카운터(persistent counter)로서 실체화될 수 있다. 블록(418)에서, 컴퓨팅 디바이스(100)는 취소 카운트가 사전정의된 임계 취소 카운트(threshold abort count)보다 더 작은지를 판정한다. 임계 취소 카운트는 상대적으로 작은 시도 수, 예컨대 세 번의 시도로서 정의될 수 있다. 만약 취소 카운트가 임계치보다 크거나 같은 경우, 방법(400)은 블록(420)으로 분기하는데, 여기에서 컴퓨팅 디바이스(100)는 비-트랜잭셔널 예비 보안 절차(non-transactional fallback security procedure)를 실행한다. 지속적인 취소는 의심스러운 코드가 트랜잭션 충돌 방법을 통하여 검출을 피하기 위해 의도적으로 구축됨을 나타낼 수 있는데―이 정보는 추가 분석을 위해 추가의 의혹으로서 사용될 수 있다. 예컨대, 컴퓨팅 디바이스(100)는 실행 동안에 의심스러운 코드의 동적 분석을 수행할 수 있다. 그러한 동적 분석은 통상적으로 트랜잭셔널 실행보다 매우 느리나, 예비 절차를 실행하는 것은 비교적 드물 수 있다. 예비 보안 절차를 시작한 후, 컴퓨팅 디바이스(100)는 도 3에 도시된 바와 같이 의심스러운 코드를 식별하는 것을 재개할 수 있다.
블록(418)을 다시 참조하면, 만약 취소 카운트가 임계치보다 작은 경우, 방법(400)은 블록(422)으로 나아간다. 블록(422)에서, 컴퓨팅 디바이스(100)는 트랜잭션(206)을 재시작한다. 트랜잭션(206)은 보안 이벤트가 아닌 이유로 취소되었기 때문에, 트랜잭션(206)은 재시도되는 경우 성공적으로 완료될 수 있다. 컴퓨팅 디바이스(100)는 트랜잭션(206)을 재시작하기 위해 임의의 기법을 사용할 수 있다. 예시적인 실시예에서, 컴퓨팅 디바이스(100)의 실행은 도 3에 도시된 바와 같이, 방법(300)의 블록(314, 320)으로 점프한다. 컴퓨팅 디바이스(100)는 이후 전술된 바와 같이 보안 지원 쓰레드(210) 및 트랜잭션(206)을 시작한다.
예들
본 문서에 개시된 기술들의 실례가 되는 예들이 아래에 제공된다. 그 기술들의 일 실시예는 아래에 기술된 예들 중 임의의 하나 이상과 이들의 임의의 조합을 포함할 수 있다.
예 1은 비인가 메모리 액세스를 검출하기 위한 컴퓨팅 디바이스를 포함하는데, 위 컴퓨팅 디바이스는 (i) 의심스러운 것으로 식별된 코드 세그먼트(code segment)를 실행하고 (ii) 위 코드 세그먼트의 실행 동안에 트랜잭셔널 취소를 검출하는 트랜잭셔널 실행 모듈과, (i) 위 트랜잭셔널 취소를 검출하는 것에 응답하여 보안 이벤트가 발생하였는지를 판정하고(위 보안 이벤트는 위 코드 세그먼트에 의한, 모니터링되는 메모리 위치(monitored memory location)로의 비인가 메모리 액세스를 나타냄), (ii) 위 보안 이벤트가 발생하였음을 판정하는 것에 응답하여 위 보안 이벤트를 보고하는 취소 핸들러 모듈을 포함한다.
예 2는 예 1의 대상물(subject matter)을 포함하고, 위 코드 세그먼트의 실행과 동시에 보안 지원 쓰레드를 실행하고, 위 모니터링되는 메모리 위치를 위 보안 지원 쓰레드에 의해 액세스하는 보안 지원 모듈을 더 포함하되, 위 트랜잭셔널 취소를 검출하는 것은 위 모니터링되는 메모리 위치에의 쓰기에 관련된 트랜잭셔널 메모리 충돌에 의해 야기되는 트랜잭셔널 취소를 검출하는 것을 포함한다.
예 3은 예 1 및 예 2 중 임의의 것의 대상물을 포함하고, 위 모니터링되는 메모리 위치는 위 컴퓨팅 디바이스의 운영 체제의 코드 세그먼트를 포함한다.
예 4는 예 1 내지 예 3 중 임의의 것의 대상물을 포함하고, 위 트랜잭셔널 취소를 검출하는 것은 위 모니터링되는 메모리 위치의 읽기 명령어(read instruction) 및 위 모니터링되는 메모리 위치의 쓰기 명령어(write instruction) 간의 충돌을 검출하는 것을 포함한다.
예 5는 예 1 내지 예 4 중 임의의 것의 대상물을 포함하고, 위 보안 지원 쓰레드는 위 읽기 명령어를 포함하고 위 코드 세그먼트는 위 쓰기 명령어를 포함한다.
예 6은 예 1 내지 예 5 중 임의의 것의 대상물을 포함하고, 위 보안 이벤트가 발생하였는지를 판정하는 것은 위 트랜잭셔널 메모리 충돌이 위 모니터링되는 메모리 위치에의 시도된 쓰기(attempted write)에 의해 야기되었는지를 판정하는 것을 포함한다.
예 7은 예 1 내지 예 6 중 임의의 것의 대상물을 포함하고, 위 트랜잭셔널 메모리 충돌이 위 모니터링되는 메모리 위치에의 위 시도된 쓰기에 의해 야기되었는지를 판정하는 것은 위 컴퓨팅 디바이스의 성능 모니터링 유닛으로부터 인출된(retrieved) 충돌 데이터 위치의 제1 메모리 주소를 위 모니터링되는 메모리 위치의 제2 메모리 주소와 비교하는 것을 포함한다.
예 8은 예 1 내지 예 7 중 임의의 것의 대상물을 포함하고, 위 모니터링되는 메모리 위치에서 위 코드 세그먼트 내에 중단점을 설정하는 보안 모듈을 더 포함하되, 위 트랜잭셔널 취소를 검출하는 것은 위 코드 세그먼트의 실행이 위 중단점에 도달하는 것에 응답하여 위 트랜잭셔널 취소를 검출하는 것을 포함한다.
예 9는 예 1 내지 예 8 중 임의의 것의 대상물을 포함하고, 위 중단점을 설정하는 것은 위 코드 세그먼트 내에 트랜잭셔널 취소 명령어를 삽입하는 것을 포함한다.
예 10은 예 1 내지 예 9 중 임의의 것의 대상물을 포함하고, 위 보안 이벤트가 발생하였는지를 판정하는 것은 위 코드 세그먼트의 실행이 위 중단점에 도달하는 것에 의해 위 트랜잭셔널 취소가 야기되었는지를 판정하는 것을 포함한다.
예 11은 예 1 내지 예 10 중 임의의 것의 대상물을 포함하고, 위 코드 세그먼트의 실행이 위 중단점에 도달하는 것에 의해 위 트랜잭셔널 취소가 야기되었는지를 판정하는 것은 취소 명령어(aborting instruction)의 제1 메모리 주소를 위 중단점의 제2 메모리 주소와 비교하는 것을 포함한다.
예 12는 예 1 내지 예 11 중 임의의 것의 대상물을 포함하고, 트랜잭셔널 엔빌로프 내에 위 코드 세그먼트를 래핑하는 보안 모듈을 더 포함하되, 위 코드 세그먼트를 실행하는 것은 위 트랜잭셔널 엔빌로프 내의 위 코드 세그먼트를 실행하는 것을 포함한다.
예 13은 예 1 내지 예 12 중 임의의 것의 대상물을 포함하고, 위 코드 세그먼트를 래핑하는 것은 위 코드 세그먼트 내에 트랜잭션 시작 명령어 및 트랜잭션 종료 명령어를 삽입하는 것을 포함한다.
예 14는 예 1 내지 예 13 중 임의의 것의 대상물을 포함하고, 위 트랜잭셔널 실행 모듈은 또한, 위 코드 세그먼트의 실행을 완료하고, 위 코드 세그먼트의 위 실행의 완료에 응답하여 위 코드 세그먼트를 비악성(non-malicious)인 것으로 보고한다.
예 15는 예 1 내지 예 14 중 임의의 것의 대상물을 포함하고, 위 코드 세그먼트의 실행을 완료하는 것은 트랜잭션 종료 명령어를 성공적으로 실행하는 것을 포함한다.
예 16은 예 1 내지 예 15 중 임의의 것의 대상물을 포함하고, 위 취소 핸들러 모듈은 또한 (i) 위 보안 이벤트가 발생하지 않았다는 판정에 응답하여 취소 카운트를 증분시키고 (ii) 위 취소 카운트가 임계 취소 카운트에 대한 사전결정된 관계를 갖는지를 판정하며, 위 컴퓨팅 디바이스는 위 취소 카운트가 위 임계 취소 카운트에 대한 위 사전결정된 관계를 갖는다는 판정에 응답하여 예비 보안 절차를 실행하는 예비 보안 모듈을 더 포함하되, 위 예비 보안 절차는 위 취소 카운트에 따라서(as a function of) 위 코드 세그먼트를 분석한다.
예 17은 비인가 메모리 액세스를 검출하기 위한 방법을 포함하는데, 위 방법은, 의심스러운 것으로 식별된 코드 세그먼트를 컴퓨팅 디바이스에 의해 실행하는 단계와, 위 코드 세그먼트의 실행 동안에 트랜잭셔널 취소를 위 컴퓨팅 디바이스에 의해 검출하는 단계와, 위 트랜잭셔널 취소를 검출하는 것에 응답하여 보안 이벤트가 발생하였는지를 위 컴퓨팅 디바이스에 의해 판정하는 단계(위 보안 이벤트는 위 코드 세그먼트에 의한, 모니터링되는 메모리 위치로의 비인가 메모리 액세스를 나타냄)와, 위 보안 이벤트가 발생하였음을 판정하는 것에 응답하여 위 보안 이벤트를 위 컴퓨팅 디바이스에 의해 보고하는 단계를 포함한다.
예 18은 예 17의 대상물을 포함하고, 위 코드 세그먼트를 실행하는 것과 동시에 보안 지원 쓰레드를 위 컴퓨팅 디바이스에 의해 실행하는 단계와, 위 모니터링되는 메모리 위치를 위 컴퓨팅 디바이스의 위 보안 지원 쓰레드에 의해 액세스하는 단계를 더 포함하되, 위 트랜잭셔널 취소를 검출하는 것은 위 모니터링되는 메모리 위치에의 쓰기에 관련된 트랜잭셔널 메모리 충돌에 의해 야기되는 트랜잭셔널 취소를 검출하는 것을 포함한다.
예 19는 예 17 및 예 18 중 임의의 것의 대상물을 포함하고, 위 모니터링되는 메모리 위치는 위 컴퓨팅 디바이스의 운영 체제의 코드 세그먼트를 포함한다.
예 20은 예 17 내지 예 19 중 임의의 것의 대상물을 포함하고, 위 트랜잭셔널 취소를 검출하는 것은 위 모니터링되는 메모리 위치의 읽기 명령어 및 위 모니터링되는 메모리 위치의 쓰기 명령어 간의 충돌을 검출하는 것을 포함한다.
예 21은 예 17 내지 예 20 중 임의의 것의 대상물을 포함하고, 위 보안 지원 쓰레드는 위 읽기 명령어를 포함하고 위 코드 세그먼트는 위 쓰기 명령어를 포함한다.
예 22는 예 17 내지 예 21 중 임의의 것의 대상물을 포함하고, 위 보안 이벤트가 발생하였는지를 판정하는 것은 위 트랜잭셔널 메모리 충돌이 위 모니터링되는 메모리 위치에의 시도된 쓰기에 의해 야기되었는지를 판정하는 것을 포함한다.
예 23은 예 17 내지 예 22 중 임의의 것의 대상물을 포함하고, 위 트랜잭셔널 메모리 충돌이 위 모니터링되는 메모리 위치에의 위 시도된 쓰기에 의해 야기되었는지를 판정하는 것은 위 컴퓨팅 디바이스의 성능 모니터링 유닛으로부터 인출된 충돌 데이터 위치의 제1 메모리 주소를 위 모니터링되는 메모리 위치의 제2 메모리 주소와 비교하는 것을 포함한다.
예 24는 예 17 내지 예 23 중 임의의 것의 대상물을 포함하고, 위 모니터링되는 메모리 위치에서 위 코드 세그먼트 내에 중단점을 위 컴퓨팅 디바이스에 의해 설정하는 단계를 더 포함하되, 위 트랜잭셔널 취소를 검출하는 것은 위 코드 세그먼트의 실행이 위 중단점에 도달하는 것에 응답하여 위 트랜잭셔널 취소를 검출하는 것을 포함한다.
예 25는 예 17 내지 예 24 중 임의의 것의 대상물을 포함하고, 위 중단점을 설정하는 것은 위 코드 세그먼트 내에 트랜잭셔널 취소 명령어를 삽입하는 것을 포함한다.
예 26은 예 17 내지 예 25 중 임의의 것의 대상물을 포함하고, 위 보안 이벤트가 발생하였는지를 판정하는 것은 위 코드 세그먼트의 실행이 위 중단점에 도달하는 것에 의해 위 트랜잭셔널 취소가 야기되었는지를 판정하는 것을 포함한다.
예 27은 예 17 내지 예 26 중 임의의 것의 대상물을 포함하고, 위 코드 세그먼트의 실행이 위 중단점에 도달하는 것에 의해 위 트랜잭셔널 취소가 야기되었는지를 판정하는 것은 취소 명령어의 제1 메모리 주소를 위 중단점의 제2 메모리 주소와 비교하는 것을 포함한다.
예 28은 예 17 내지 예 27 중 임의의 것의 대상물을 포함하고, 트랜잭셔널 엔빌로프 내에 위 코드 세그먼트를 위 컴퓨팅 디바이스에 의해 래핑하는 단계를 더 포함하되, 위 코드 세그먼트를 실행하는 것은 위 트랜잭셔널 엔빌로프 내의 위 코드 세그먼트를 실행하는 것을 포함한다.
예 29는 예 17 내지 예 28 중 임의의 것의 대상물을 포함하고, 위 코드 세그먼트를 래핑하는 것은 위 코드 세그먼트 내에 트랜잭션 시작 명령어 및 트랜잭션 종료 명령어를 삽입하는 것을 포함한다.
예 30은 예 17 내지 예 29 중 임의의 것의 대상물을 포함하고, 위 코드 세그먼트의 실행을 위 컴퓨팅 디바이스에 의해 완료하는 단계와, 위 코드 세그먼트의 위 실행을 완료하는 것에 응답하여 위 코드 세그먼트를 비악성인 것으로 보고하는 단계를 더 포함한다.
예 31은 예 17 내지 예 30 중 임의의 것의 대상물을 포함하고, 위 코드 세그먼트의 실행을 완료하는 것은 트랜잭션 종료 명령어를 성공적으로 실행하는 것을 포함한다.
예 32는 예 17 내지 예 31 중 임의의 것의 대상물을 포함하고, 위 보안 이벤트가 발생하지 않았음을 판정하는 것에 응답하여 취소 카운트를 위 컴퓨팅 디바이스에 의해 증분시키는 단계와, 위 취소 카운트가 임계 취소 카운트에 대한 사전결정된 관계를 갖는지를 위 컴퓨팅 디바이스에 의해 판정하는 단계와, 위 취소 카운트가 위 임계 취소 카운트에 대한 위 사전결정된 관계를 가짐을 판정하는 것에 응답하여 예비 보안 절차를 위 컴퓨팅 디바이스에 의해 실행하는 단계를 더 포함하되, 위 예비 보안 절차는 위 취소 카운트에 따라서 위 코드 세그먼트를 분석한다.
예 33은 컴퓨팅 디바이스를 포함하는데, 위 컴퓨팅 디바이스는 프로세서와, 위 프로세서에 의해 실행되는 경우 위 컴퓨팅 디바이스로 하여금 예 17 내지 예 32 중 임의의 것의 방법을 수행하게 하는 복수의 명령어가 내부에 저장된 메모리를 포함한다.
예 34는 하나 이상의 머신 판독가능 저장 매체를 포함하는데, 위 하나 이상의 머신 판독가능 저장 매체는 위 하나 이상의 머신 판독가능 저장 매체 상에 저장된 복수의 명령어를 포함하되, 위 복수의 명령어는 실행되는 것에 응답하여 컴퓨팅 디바이스가 예 17 내지 예 32 중 임의의 것의 방법을 수행하게 한다.
예 35는 예 17 내지 예 32 중 임의의 것의 방법을 수행하는 수단을 포함하는 컴퓨팅 디바이스를 포함한다.

Claims (25)

  1. 비인가(unauthorized) 메모리 액세스를 검출하기 위한 컴퓨팅 디바이스로서,
    (i) 의심스러운 것으로 식별된 코드 세그먼트(code segment)를 실행하고 (ii) 상기 코드 세그먼트의 실행 동안에 트랜잭셔널 취소(transactional abort)를 검출하는 트랜잭셔널 실행 모듈(transactional execution module)과,
    (i) 상기 트랜잭셔널 취소를 검출하는 것에 응답하여 보안 이벤트가 발생하였는지를 판정하고, (ii) 상기 보안 이벤트가 발생하였음을 판정하는 것에 응답하여 상기 보안 이벤트를 보고하는 취소 핸들러 모듈(abort handler module)을 포함하되, 상기 보안 이벤트는, 모니터링되는 메모리 위치로의 상기 코드 세그먼트에 의한 비인가 메모리 액세스를 나타내는
    컴퓨팅 디바이스.
  2. 제1항에 있어서,
    상기 코드 세그먼트의 실행과 동시에 보안 지원 쓰레드(security support thread)를 실행하고,
    상기 모니터링되는 메모리 위치를 상기 보안 지원 쓰레드에 의해 액세스하는 보안 지원 모듈을 더 포함하되,
    상기 트랜잭셔널 취소를 검출하는 것은 상기 모니터링되는 메모리 위치에의 쓰기(write)에 관련된 트랜잭셔널 메모리 충돌(transactional memory conflict)에 의해 야기되는 트랜잭셔널 취소를 검출하는 것을 포함하는
    컴퓨팅 디바이스.
  3. 제2항에 있어서,
    상기 모니터링되는 메모리 위치는 상기 컴퓨팅 디바이스의 운영 체제(operating system)의 코드 세그먼트를 포함하는
    컴퓨팅 디바이스.
  4. 제2항에 있어서,
    상기 트랜잭셔널 취소를 검출하는 것은 상기 모니터링되는 메모리 위치의 읽기 명령어(read instruction) 및 상기 모니터링되는 메모리 위치의 쓰기 명령어(write instruction) 간의 충돌을 검출하는 것을 포함하는
    컴퓨팅 디바이스.
  5. 제4항에 있어서,
    상기 보안 지원 쓰레드는 상기 읽기 명령어를 포함하고 상기 코드 세그먼트는 상기 쓰기 명령어를 포함하는
    컴퓨팅 디바이스.
  6. 제2항에 있어서,
    상기 보안 이벤트가 발생하였는지를 판정하는 것은 상기 트랜잭셔널 메모리 충돌이 상기 모니터링되는 메모리 위치에의 시도된 쓰기(attempted write)에 의해 야기되었는지를 판정하는 것을 포함하는
    컴퓨팅 디바이스.
  7. 제6항에 있어서,
    상기 트랜잭셔널 메모리 충돌이 상기 모니터링되는 메모리 위치에의 상기 시도된 쓰기에 의해 야기되었는지를 판정하는 것은 상기 컴퓨팅 디바이스의 성능 모니터링 유닛(performance monitoring unit)으로부터 인출된 충돌 데이터 위치(conflicting data location)의 제1 메모리 주소를 상기 모니터링되는 메모리 위치의 제2 메모리 주소와 비교하는 것을 포함하는
    컴퓨팅 디바이스.
  8. 제1항에 있어서,
    상기 모니터링되는 메모리 위치에서 상기 코드 세그먼트 내에 중단점(breakpoint)을 설정하는 보안 모듈을 더 포함하되,
    상기 트랜잭셔널 취소를 검출하는 것은 상기 코드 세그먼트의 실행이 상기 중단점에 도달하는 것에 응답하여 상기 트랜잭셔널 취소를 검출하는 것을 포함하는
    컴퓨팅 디바이스.
  9. 제8항에 있어서,
    상기 중단점을 설정하는 것은 상기 코드 세그먼트 내에 트랜잭셔널 취소 명령어(transactional abort instruction)를 삽입하는 것을 포함하는
    컴퓨팅 디바이스.
  10. 제8항에 있어서,
    상기 보안 이벤트가 발생하였는지를 판정하는 것은 상기 코드 세그먼트의 실행이 상기 중단점에 도달하는 것에 의해 상기 트랜잭셔널 취소가 야기되었는지를 판정하는 것을 포함하는
    컴퓨팅 디바이스.
  11. 제10항에 있어서,
    상기 코드 세그먼트의 실행이 상기 중단점에 도달하는 것에 의해 상기 트랜잭셔널 취소가 야기되었는지를 판정하는 것은 취소 명령어(aborting instruction)의 제1 메모리 주소를 상기 중단점의 제2 메모리 주소와 비교하는 것을 포함하는
    컴퓨팅 디바이스.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    트랜잭셔널 엔빌로프(transactional envelope) 내에 상기 코드 세그먼트를 래핑하는(wrap) 보안 모듈을 더 포함하되, 상기 코드 세그먼트를 래핑하는 것은 상기 코드 세그먼트 내에 트랜잭션 시작 명령어(transaction begin instruction) 및 트랜잭션 종료 명령어(transaction end instruction)를 삽입하는 것을 포함하되,
    상기 코드 세그먼트를 실행하는 것은 상기 트랜잭셔널 엔빌로프 내의 상기 코드 세그먼트를 실행하는 것을 포함하는
    컴퓨팅 디바이스.
  13. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 트랜잭셔널 실행 모듈은 또한,
    상기 코드 세그먼트의 실행을 완료하고,
    상기 코드 세그먼트의 실행의 완료에 응답하여 상기 코드 세그먼트를 비악성(non-malicious)인 것으로 보고하되, 상기 코드 세그먼트의 실행을 완료하는 것은 트랜잭션 종료 명령어를 성공적으로 실행하는 것을 포함하는
    컴퓨팅 디바이스.
  14. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 취소 핸들러 모듈은 또한 (i) 상기 보안 이벤트가 발생하지 않았다는 판정에 응답하여 취소 카운트(abort count)를 증분시키고(increment) (ii) 상기 취소 카운트가 임계 취소 카운트(threshold abort count)에 대한 사전결정된 관계를 갖는지를 판정하며,
    상기 컴퓨팅 디바이스는, 상기 취소 카운트가 상기 임계 취소 카운트에 대한 상기 사전결정된 관계를 갖는다는 판정에 응답하여 예비 보안 절차(fallback security procedure)를 실행하는 예비 보안 모듈을 더 포함하되, 상기 예비 보안 절차는 상기 취소 카운트에 따라서 상기 코드 세그먼트를 분석하는
    컴퓨팅 디바이스.
  15. 비인가 메모리 액세스를 검출하기 위한 방법으로서,
    의심스러운 것으로 식별된 코드 세그먼트를 컴퓨팅 디바이스에 의해 실행하는 단계와,
    상기 코드 세그먼트의 실행 동안에 트랜잭셔널 취소(transactional abort)를 상기 컴퓨팅 디바이스에 의해 검출하는 단계와,
    상기 트랜잭셔널 취소를 검출하는 것에 응답하여 보안 이벤트가 발생하였는지를 상기 컴퓨팅 디바이스에 의해 판정하는 단계와,
    상기 보안 이벤트가 발생하였음을 판정하는 것에 응답하여 상기 보안 이벤트를 상기 컴퓨팅 디바이스에 의해 보고하는 단계를 포함하되, 상기 보안 이벤트는, 모니터링되는 메모리 위치로의 상기 코드 세그먼트에 의한 비인가 메모리 액세스를 나타내는
    방법.
  16. 제15항에 있어서,
    상기 코드 세그먼트를 실행하는 것과 동시에 보안 지원 쓰레드를 상기 컴퓨팅 디바이스에 의해 실행하는 단계와,
    상기 모니터링되는 메모리 위치를 상기 컴퓨팅 디바이스의 상기 보안 지원 쓰레드에 의해 액세스하는 단계를 더 포함하되,
    상기 트랜잭셔널 취소를 검출하는 단계는 상기 모니터링되는 메모리 위치에의 쓰기에 관련된 트랜잭셔널 메모리 충돌에 의해 야기되는 트랜잭셔널 취소를 검출하는 단계를 포함하는
    방법.
  17. 제16항에 있어서,
    상기 트랜잭셔널 취소를 검출하는 단계는 상기 모니터링되는 메모리 위치의 읽기 명령어 및 상기 모니터링되는 메모리 위치의 쓰기 명령어 간의 충돌을 검출하는 단계를 포함하는
    방법.
  18. 제15항에 있어서,
    상기 모니터링되는 메모리 위치에서 상기 코드 세그먼트 내에 중단점을 상기 컴퓨팅 디바이스에 의해 설정하는 단계를 더 포함하되,
    상기 트랜잭셔널 취소를 검출하는 단계는 상기 코드 세그먼트의 실행이 상기 중단점에 도달하는 것에 응답하여 상기 트랜잭셔널 취소를 검출하는 단계를 포함하는
    방법.
  19. 제18항에 있어서,
    상기 중단점을 설정하는 단계는 상기 코드 세그먼트 내에 트랜잭셔널 취소 명령어를 삽입하는 단계를 포함하는
    방법.
  20. 제15항에 있어서,
    트랜잭셔널 엔빌로프 내에 상기 코드 세그먼트를 상기 컴퓨팅 디바이스에 의해 래핑하는 단계를 더 포함하되, 상기 코드 세그먼트를 실행하는 단계는 상기 트랜잭셔널 엔빌로프 내의 상기 코드 세그먼트를 실행하는 단계를 포함하는
    방법.
  21. 제15항에 있어서,
    상기 코드 세그먼트의 실행을 상기 컴퓨팅 디바이스에 의해 완료하는 단계와,
    상기 코드 세그먼트의 실행을 완료하는 것에 응답하여 상기 코드 세그먼트를 비악성인 것으로 보고하는 단계를 더 포함하는
    방법.
  22. 제15항에 있어서,
    상기 보안 이벤트가 발생하지 않았음을 판정하는 것에 응답하여 취소 카운트를 상기 컴퓨팅 디바이스에 의해 증분시키는 단계와,
    상기 취소 카운트가 임계 취소 카운트에 대한 사전결정된 관계를 갖는지를 상기 컴퓨팅 디바이스에 의해 판정하는 단계와,
    상기 취소 카운트가 상기 임계 취소 카운트에 대한 상기 사전결정된 관계를 가짐을 판정하는 것에 응답하여 예비 보안 절차를 상기 컴퓨팅 디바이스에 의해 실행하는 단계를 더 포함하되, 상기 예비 보안 절차는 상기 취소 카운트에 따라서 상기 코드 세그먼트를 분석하는
    방법.
  23. 컴퓨팅 디바이스로서,
    프로세서와,
    상기 프로세서에 의해 실행되는 경우 상기 컴퓨팅 디바이스로 하여금 제15항 내지 제22항 중 어느 한 항의 방법을 수행하게 하는 복수의 명령어가 저장된 메모리를 포함하는
    컴퓨팅 디바이스.
  24. 하나 이상의 머신 판독가능 저장 매체로서,
    상기 하나 이상의 머신 판독가능 저장 매체 상에 저장된 복수의 명령어를 포함하되, 상기 복수의 명령어는 실행되는 것에 응답하여 컴퓨팅 디바이스가 제15항 내지 제22항 중 어느 한 항의 방법을 수행하는 것을 초래하는
    하나 이상의 머신 판독가능 저장 매체.
  25. 제15항 내지 제22항 중 어느 한 항의 방법을 수행하는 수단을 포함하는 컴퓨팅 디바이스.
KR1020167019185A 2013-12-17 2013-12-17 트랜잭셔널 메모리를 사용한 비인가 메모리 수정 및 액세스의 검출 KR101835250B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/075805 WO2015094189A1 (en) 2013-12-17 2013-12-17 Detection of unauthorized memory modification and access using transactional memory

Publications (2)

Publication Number Publication Date
KR20160099672A true KR20160099672A (ko) 2016-08-22
KR101835250B1 KR101835250B1 (ko) 2018-03-06

Family

ID=53403309

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167019185A KR101835250B1 (ko) 2013-12-17 2013-12-17 트랜잭셔널 메모리를 사용한 비인가 메모리 수정 및 액세스의 검출

Country Status (5)

Country Link
US (1) US9384148B2 (ko)
EP (1) EP3084615B1 (ko)
KR (1) KR101835250B1 (ko)
CN (1) CN105723348B (ko)
WO (1) WO2015094189A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019240485A1 (ko) * 2018-06-14 2019-12-19 삼성전자 주식회사 이상 환경으로부터 어플리케이션을 보호하는 전자 장치 및 그 동작 방법

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8606512B1 (en) 2007-05-10 2013-12-10 Allstate Insurance Company Route risk mitigation
US9932033B2 (en) 2007-05-10 2018-04-03 Allstate Insurance Company Route risk mitigation
US10157422B2 (en) 2007-05-10 2018-12-18 Allstate Insurance Company Road segment safety rating
US10096038B2 (en) 2007-05-10 2018-10-09 Allstate Insurance Company Road segment safety rating system
CN104731696B (zh) * 2013-12-19 2017-10-10 腾讯科技(深圳)有限公司 定位程序代码中bug的方法及相关装置
US9390451B1 (en) 2014-01-24 2016-07-12 Allstate Insurance Company Insurance system related to a vehicle-to-vehicle communication system
US9355423B1 (en) 2014-01-24 2016-05-31 Allstate Insurance Company Reward system related to a vehicle-to-vehicle communication system
US10096067B1 (en) 2014-01-24 2018-10-09 Allstate Insurance Company Reward system related to a vehicle-to-vehicle communication system
US10783586B1 (en) 2014-02-19 2020-09-22 Allstate Insurance Company Determining a property of an insurance policy based on the density of vehicles
US10803525B1 (en) * 2014-02-19 2020-10-13 Allstate Insurance Company Determining a property of an insurance policy based on the autonomous features of a vehicle
US9940676B1 (en) 2014-02-19 2018-04-10 Allstate Insurance Company Insurance system for analysis of autonomous driving
US10796369B1 (en) 2014-02-19 2020-10-06 Allstate Insurance Company Determining a property of an insurance policy based on the level of autonomy of a vehicle
US10783587B1 (en) 2014-02-19 2020-09-22 Allstate Insurance Company Determining a driver score based on the driver's response to autonomous features of a vehicle
US9703726B2 (en) * 2014-06-24 2017-07-11 Bitdefender IPR Management Ltd. Systems and methods for dynamically protecting a stack from below the operating system
WO2016041592A1 (en) * 2014-09-17 2016-03-24 Irdeto B.V. Generating and executing protected items of software
US10540524B2 (en) * 2014-12-31 2020-01-21 Mcafee, Llc Memory access protection using processor transactional memory support
US9852295B2 (en) * 2015-07-14 2017-12-26 Bitdefender IPR Management Ltd. Computer security systems and methods using asynchronous introspection exceptions
US9823843B2 (en) * 2015-07-23 2017-11-21 Qualcomm Incorporated Memory hierarchy monitoring systems and methods
CN106488454B (zh) * 2015-08-28 2020-03-17 宇龙计算机通信科技(深圳)有限公司 一种连接外接设备的方法、装置及移动终端
US10269075B2 (en) 2016-02-02 2019-04-23 Allstate Insurance Company Subjective route risk mapping and mitigation
US10482248B2 (en) * 2016-11-09 2019-11-19 Cylance Inc. Shellcode detection
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10452288B2 (en) * 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10496311B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10904291B1 (en) * 2017-05-03 2021-01-26 Hrl Laboratories, Llc Low-overhead software transformation to enforce information security policies
GB201708439D0 (en) 2017-05-26 2017-07-12 Microsoft Technology Licensing Llc Compute node security
US10565379B2 (en) * 2017-05-31 2020-02-18 Intel Corporation System, apparatus and method for instruction level behavioral analysis without binary instrumentation
US11074201B2 (en) * 2019-07-22 2021-07-27 Micron Technology, Inc. Apparatus with a security mechanism and methods for operating the same
US11436319B2 (en) 2020-01-27 2022-09-06 Rsa Security Llc Automated detection of user device security risks related to process threads and corresponding activity
US20210318961A1 (en) * 2021-06-23 2021-10-14 Intel Corporation Mitigating pooled memory cache miss latency with cache miss faults and transaction aborts
CN113449296B (zh) * 2021-07-20 2024-04-23 恒安嘉新(北京)科技股份公司 用于数据安全保护的系统、方法、设备及介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US7231498B2 (en) 2005-03-02 2007-06-12 Microsoft Corporation Adaptive granularity refinement in detecting potential data races
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7930695B2 (en) * 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
JP4806295B2 (ja) * 2006-05-25 2011-11-02 富士通株式会社 通信インターフェース装置及び通信方法
US7840947B2 (en) * 2006-06-09 2010-11-23 Oracle America, Inc. Delayed breakpoints
US7908656B1 (en) * 2007-04-23 2011-03-15 Network Appliance, Inc. Customized data generating data storage system filter for data security
US8141163B2 (en) * 2007-07-31 2012-03-20 Vmware, Inc. Malicious code detection
US8055852B2 (en) * 2007-08-15 2011-11-08 Micron Technology, Inc. Memory device and method having on-board processing logic for facilitating interface with multiple processors, and computer system using same
JP4572259B1 (ja) 2009-04-27 2010-11-04 株式会社フォティーンフォティ技術研究所 情報機器、プログラム及び不正なプログラムコードの実行防止方法
US8473950B2 (en) * 2009-06-23 2013-06-25 Oracle America, Inc. Parallel nested transactions
US8327188B2 (en) * 2009-11-13 2012-12-04 Oracle America, Inc. Hardware transactional memory acceleration through multiple failure recovery
US8516202B2 (en) * 2009-11-16 2013-08-20 International Business Machines Corporation Hybrid transactional memory system (HybridTM) and method
US8474039B2 (en) * 2010-01-27 2013-06-25 Mcafee, Inc. System and method for proactive detection and repair of malware memory infection via a remote memory reputation system
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8793471B2 (en) * 2010-12-07 2014-07-29 Advanced Micro Devices, Inc. Atomic program verification
US9268596B2 (en) * 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
US8682877B2 (en) * 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US8966324B2 (en) * 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9384004B2 (en) * 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US8880959B2 (en) * 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US8688661B2 (en) * 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9183043B2 (en) * 2013-07-16 2015-11-10 Oracle International Corporation Systems and methods for adaptive integration of hardware and software lock elision techniques
US9244724B2 (en) * 2013-08-15 2016-01-26 Globalfoundries Inc. Management of transactional memory access requests by a cache memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019240485A1 (ko) * 2018-06-14 2019-12-19 삼성전자 주식회사 이상 환경으로부터 어플리케이션을 보호하는 전자 장치 및 그 동작 방법
US11487854B2 (en) 2018-06-14 2022-11-01 Samsung Electronics Co., Ltd. Electronic device for protecting application from abnormal environment and operating method thereof

Also Published As

Publication number Publication date
US9384148B2 (en) 2016-07-05
CN105723348A (zh) 2016-06-29
US20160026581A1 (en) 2016-01-28
CN105723348B (zh) 2019-02-15
WO2015094189A1 (en) 2015-06-25
EP3084615A1 (en) 2016-10-26
EP3084615A4 (en) 2017-10-18
KR101835250B1 (ko) 2018-03-06
EP3084615B1 (en) 2020-06-24

Similar Documents

Publication Publication Date Title
KR101835250B1 (ko) 트랜잭셔널 메모리를 사용한 비인가 메모리 수정 및 액세스의 검출
TWI612439B (zh) 用以偵測未經授權之記憶體存取的計算裝置、方法及機器可讀儲存媒體
US10032024B2 (en) System and method for virtual partition monitoring
CN107690645B (zh) 使用解释器虚拟机的行为恶意软件检测
KR102297133B1 (ko) 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들
US9037873B2 (en) Method and system for preventing tampering with software agent in a virtual machine
US8266395B2 (en) Detecting attempts to change memory
US10984096B2 (en) Systems, methods, and apparatus for detecting control flow attacks
US10540524B2 (en) Memory access protection using processor transactional memory support
US9785770B2 (en) Method, apparatus, and system for triggering virtual machine introspection
US10007785B2 (en) Method and apparatus for implementing virtual machine introspection
US9195550B2 (en) Method for guaranteeing program correctness using fine-grained hardware speculative execution
CN113467981A (zh) 异常处理的方法和装置
CN111931191A (zh) Linux平台二进制软件堆溢漏洞动态检测方法及系统
CN115576734A (zh) 一种多核异构日志存储方法和系统
US8925077B2 (en) Mobile devices with inhibited application debugging and methods of operation
JP2009230479A (ja) マイクロプロセッサ
島田裕正 et al. Optimistic Synchronization for External Monitoring Service

Legal Events

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