KR20000070127A - 소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법 - Google Patents

소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법 Download PDF

Info

Publication number
KR20000070127A
KR20000070127A KR1019997006351A KR19997006351A KR20000070127A KR 20000070127 A KR20000070127 A KR 20000070127A KR 1019997006351 A KR1019997006351 A KR 1019997006351A KR 19997006351 A KR19997006351 A KR 19997006351A KR 20000070127 A KR20000070127 A KR 20000070127A
Authority
KR
South Korea
Prior art keywords
return address
safety
data
stored
memory
Prior art date
Application number
KR1019997006351A
Other languages
English (en)
Inventor
미하엘 발디슈바일러
슈테판 파프
Original Assignee
칼 하인쯔 호르닝어
지멘스 악티엔게젤샤프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 칼 하인쯔 호르닝어, 지멘스 악티엔게젤샤프트 filed Critical 칼 하인쯔 호르닝어
Publication of KR20000070127A publication Critical patent/KR20000070127A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • 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/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • 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/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 나중의 사용을 위해 저장된 리턴 어드레스의 오버라이트 및/또는 잘못 저장된 또는 오버라이트된 리턴 어드레스를 리턴 어드레스로서의 사용이 방지되는 것을 특징으로 하는 방법에 관한 것이다. 이로 인해, 특히 소프트웨어 프로그램 흐름의 고의적인 조작이 훨씬 더 배제될 수 있다.

Description

소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법 {METHOD FOR MONITORING THE EXECUTION OF SOFTWARE PROGRAMMES AS PRESCRIBED}
소프트웨어 프로그램을 규정에 따라 실행하는 것은 다양한 조치의 제공에 의해 항상 추구하는 목표이다.
예전에는 불확실한 하드웨어 및 프로그래밍 에러가 비정상적 소프트웨어 프로그램 실행의 원인이었는데, 그 사이에 프로그램 흐름의 고의적인 조작이 점점 더 중요해지고 있다.
프로그램 흐름의 고의적인 조작에 의해, 예컨대 특정 프로그램 부분이 스킵됨으로써, 예컨대 액세스 허가를 검출하는 체크를 피할 수 있다.
이것은 특히 칩 카드에서 중요한 문제가 될 수 있는데, 그 이유는 한편으로는 칩 카드가 특히 안전에 관련된 분야에서(예컨대 액세스 제어, 금전 거래 등에서) 널리 보급되어 있고, 다른 한편으로는 그것이 항상 모니터링 또는 감시될 수 없기 때문에 방해 없이 조작 시도의 대상이 될 수 있기 때문이다.
이미 제안된 다수의 안전 조치로 인해, 오용될 수 있는 조작이 이루어질 수 있는 확률은 매우 작다. 그럼에도 불구하고, 상기 문제가 완전히 배제되지는 않는다.
본 발명은 청구항 제 1항의 전문에 따른 방법, 즉 소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법에 관한 것이다.
도 1은 리턴 어드레스 사용 방지를 실시하기 위한 시스템의 개략도이고,
도 2는 리턴 어드레스 오버라이트 방지 및 변형된 리턴 어드레스 사용 방지를 나타낸 개략도이다.
본 발명의 목적은 특히 프로그램 흐름의 고의적인 조작을 배제할 수 있는, 소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법을 제공하는 것이다.
상기 목적은 본 발명에 따라 청구항 1항의 특징에 의해 달성된다.
그에 따라, 나중의 사용을 위해 저장된 리턴 어드레스의 오버라이트 및/또는 잘못 저장된 또는 오버라이트된 리턴 어드레스를 리턴 어드레스로서의 사용이 방지된다.
상기 방법의 실시예는 상이한 방식으로 이루어질 수 있다. 가장 간단한 경우, 리턴 어드레스의 저장을 필요로 하는 기능 호출시, 리턴 어드레스 자체 뿐만 아니라 부가의 안전 정보가 저장된다. 상기 안전 정보에 의해, 저장된 리턴 어드레스가 여전히 필요하기 때문에 오버라이트 되어서는 안되는지 및/또는 저장된 리턴 어드레스가 원래 저장된 또는 저장될 리턴 어드레스인지의 여부가 검출된다.
첫번째 경우에, 즉 리턴 어드레스 오버라이트 방지의 경우에, 안전 정보는 예컨대 기록 방지 비트 등과 같은 기록 방지 식별자로 이루어진다. 기록 방지 비트는 리턴 어드레스의 저장시 세팅되고 저장된 리턴 어드레스를 리턴 어드레스로서 사용한 후에 리세팅된다.
두번째 경우에, 즉 리턴 어드레스 사용 방지의 경우에, 안전 정보는 예컨대 리턴 어드레스 자체 또는 그밖의 방식으로 리턴 어드레스를 나타내는 또는 특성화하는 데이터로 이루어진다.
전술한 안전 정보는 바람직하게는 외부 액세스가 불가능한 메모리 영역에 저장된다; 리턴 어드레스의 "정상" 저장은 지금까지와 같이 소위 스택(스택 메모리)에서 이루어질 수 있다.
스택에 기록을 시도하기 전에, 기록될 영역이 기록 방지 비트에 의해 기록 방지 영역으로 분류되는지의 여부가 체크되면, 나중에 리턴 어드레스로서 사용될 데이터의 오버라이트가 방지될 수 있다.
대안으로서 또는 부가로, 리턴 어드레스로서 사용될 데이터가 원래 저장된 또는 저장될 리턴 어드레스에 상응하는지의 여부가 체크되면, 리턴 어드레스의 저장 후에 변경된(조작된) 데이터가 리턴 어드레스로서 사용되는 것이 방지될 수 있다.
2가지 경우에, 부가의 조작 시도를 방지하기 위해, 실행되는 프로그램이 중되고 및/또는 프로그램을 실행하는 시스템이 리세팅되고 및/또는 경보가 트리거되고 및/또는 안전에 관련된 데이터가 소거되고 및/또는 그밖의 방지 조치가 취해질 수 있다.
이로 인해, 리턴 어드레스의 고의적인 조작이 규정된 프로그램 흐름을 변경시키지 않을 수 있다.
본 발명에 따라, 특히 프로그램 흐름의 고의적인 조작이 훨씬 더 배제될 수 있는 방법이 제공된다.
본 발명의 바람직한 실시예는 청구범위 종속항에 제시된다.
이하, 본 발명의 실시예를 첨부한 도면을 참고로 구체적으로 설명한다.
도 1에 도시된 시스템은 소프트웨어 프로그램의 실행을 위해 설계된 시스템이다. 상기 시스템은 완전히 또는 부분적으로 마이크로 프로세서, 마이크로 콘트롤러, 신호 프로세서 등에 포함될 수 있다.
도시된 섹션은 리턴 어드레스의 처리에 관련된 시스템 부분이다.
예컨대, 실행될 프로그램이 기능 호출을 포함하면, 리턴 어드레스가 저장된다. 기능 호출시(예컨대, 인텔-마이크로 콘트롤러 8051에서 명령 LCALL시)
- 프로그램 메모리 내부에서, 실행될 기능의 프로그램이 저장된 장소로 (어드레스) 스킵이 이루어지고,
- 관련 기능 프로그램이 실행되며,
- 기능 프로그램으로 스킵하기 전의 프로그램 메모리 장소로 되돌아 간다.
후술한 어드레스, 즉 기능 프로그램의 실행 후에 프로그램 실행이 계속되는 어드레스가 상기 리턴 어드레스이다.
소프트웨어 프로그램을 실행하는 장치가 기능의 실행 후에 그것이 어디로 스킵해야 하는지를 알기 위해서, 리턴 어드레스의 일시 저장이 필요하다.
기능 호출이 리턴 어드레스의 저장을 필요로 하는 유일한 이벤트는 아니다. 예컨대 인터럽트(프로그램 중단)시 또는 멀티 태스킹-동작 시스템에서 태스크의 교체시, 몇가지 예를 나타내기 위해 리턴 어드레스의 저장이 필요하다.
리턴 어드레스의 저장은 통상적으로 소위 스택 또는 스택 메모리에서 이루어진다. 이러한 스택(1)은 도 1에 도시된다. 스택(1)은 스택 로직(2)에 의해 제어 및 관리된다. 스택 로직(2)은 특히 소위 스택 포인터를 발생시킨다. 스택-포인터는 다음에 기록되거나 판독될 스택(1)의 부분 영역을 지시한다. 스택 자체 및 그 동작은 일반적으로 공지되어 있으므로, 여기서는 더 이상 설명하지 않는다.
스택(1)에는 리턴 어드레스 뿐만 아니라 임의의 다른 데이터(레지스터 내용, 로컬 변수 등)도 저장될 수 있다. 그러나, 본 설명은 리턴 어드레스의 처리에만 관련된다.
예컨대, LCALL-명령의 경우에서와 같이 리턴 어드레스가 스택(1)에 저장되어야 하면, 이것은 스택 로직(2)에 의해 야기된다.
종래의 시스템에서와는 달리, 본 발명의 시스템에서는 스택(1)에 저장된 또는 저장될 리턴 어드레스가 부가로 안전 정보로서 부가의 메모리에 저장된다. 상기 부가의 메모리는 이하, 안전 메모리라 한다. 안전 메모리(3)가 도 1에 도시된다. 안전 메모리(3)에는 하나의 안전 메모리 로직(4)이 할당된다. 안전 메모리는 안전 메모리 로직(4)에 의해 스택(1)이 스택 로직(2)에 의한 것과 유사하게 제어 또는 관리된다.
안전 메모리(3)는 스택(1)과는 달리 소프트웨어 프로그램을 실행하는 시스템의 외부로부터 동작시킬 수 없다. 즉, 거기에 기록된 데이터가 고의적으로 조작될 수 없다.
본 실시예에서 안전 메모리 로직(4)은 스택 로직(2)과는 달리, 리턴 어드레스가 기록되거나 또는 판독될 때만 동작한다. 그러나, 대안으로서 안전 메모리 로직(4)이 다른 이벤트(외부에서 야기되는 기록 및 판독 과정 이외의)에 대해서도 동작할 수 있다.
이전에 저장된 리턴 어드레스로의 리턴이 이루어져야 하는 점에 프로그램 흐름이 도달되면, 즉 예컨대 RET-명령시, 필요한 리턴 어드레스가 스택(1)의 판독에의해 형성될 수 있다. 그러나, 이렇게 해서 얻어진 데이터를 리턴 어드레스로 사용하기 전에, 얻어진 데이터가 안전 메모리(3)에 안전 정보로서 저장된 리턴 어드레스와 일치하는지의 여부가 체크된다.
이것을 위해, 스택(1)과 안전 메모리(3)로부터 서로 비교될 데이터를 받아서 비교하는 비교기(5)가 제공된다.
비교기(5)에서 수행되는 비교시, 서로 비교되는 데이터가 일치하면, 이것은 스택(1)으로부터 얻어진 데이터가 원래 저장될 리턴 어드레스에 상응한다는 것을 의미한다. 즉, 조작되었거나 또는 하드웨어 및/또는 소프트웨어 에러로 인해 부정확해졌거나 또는 에러를 가진 장소에 저장되었거나 또는 에러를 가진 장소로부터 판독되지 않았다는 것을 의미한다. 그에 따라 스택(1)에 저장된 데이터가 정상의 리턴 어드레스로 간주되어 사용될 수 있다. 이러한 결론이 가능한 이유는 전술한 바와 같이 안전 메모리(3)의 내용에 대한 고의적인 영향이 실제로 불가능하기 때문이다.
비교기(5)에서 수행되는 비교시, 서로 비교되는 데이터가 일치하지 않으면, 이것은 스택(1)으로부터 얻어진 데이터가 높은 확률로 조작되었거나 또는 하드웨어 및/또는 소프트웨어 에러로 인해 부정확해졌거나 또는 에러를 가진 장소에 저장되었거나 또는 에러를 가진 장소로부터 판독되었다는 것을 의미한다.
일치하지 않는 원인과 무관하게, 스택(1)에 저장된 데이터가 리턴 어드레스로서 사용될 수 없는데, 그 이유는 그로 인해 규정된 프로그램 흐름이 이루어질 수 없기 때문이다. 이러한 경우, 비교기(5)는 신호(NMI)를 발생시키고, 상기 신호는 NMI-로직(6)에 공급된다. NMI-로직(6)은 즉각적인 프로그램 중단 및/또는 소프트웨어 프로그램을 실행하는 시스템의 리세팅 및/또는 경보의 트리거 및/또는 안전에 관련한 데이터의 소거를 야기시킨다.
본 실시예에서 비교기(5)는 리턴 어드레스로서 해석될 데이터를 스택(1)으로부터 판독하게 하는 예컨대 RET-명령과 같은 명령에 의해 활성화된다. 다른 모든 시간에는 비교기가 비활성 상태이다.
전술한 조치에 의해, 리턴 어드레스 에러가 검출되지 않는 동안에만 소프트웨어 프로그램이 실행될 수 있다.
도 1을 참고로 설명된 실시예는 필요시 동작하는, 리턴 어드레스 사용 방지의 실시예이다.
실시예를 참고로 상세히 설명되지는 않지만, 리턴 어드레스에 할당된 안전 정보가 반드시 리턴 어드레스 자체일 필요는 없다. 대안으로서, 리턴 어드레스의 선택된 부분만이 또는 리턴 어드레스를 임의의 다른 방식으로 나타내는 또는 특성화하는 데이터가 안전 정보로 사용될 수 있다. 이 경우, 비교기(5)는 주어진 상황에 따라 변경된 비교 장치로 대체될 것이다.
프로그램 흐름 모니터링의 다른 실시예는 도 2를 참고로 설명되는 리턴 어드레스 오버라이트 방지이다.
도 2는 특히 제 1 메모리 영역이 스택(11a)의 형태로 그리고 제 2 메모리 영역이 안전 메모리(11b)으로 형태로 세분될 수 있는 메모리(11)를 나타낸다.
스택(11a)은 도 1에 도시된 스택(1)에 상응한다. 안전 메모리(11b)는 도 1에 도시된 안전 메모리(3)에 대략 상응한다; 물론, 안전 메모리(11b)는 안전 메모리(3)에서와는 다른 안전 정보로 기록된다.
안전 메모리(3)와 마찬가지로, 안전 메모리(11b)도 모니터링될 소프트웨어 프로그램을 실행하는 장치의 외부로부터 동작시킬 수 없다. 즉, 상기 프로그램 흐름 모니터링 실시예에서도 안전 메모리에 저장된 정보가 대체 가능한 비용으로 조작될 수 없다.
안전 메모리(11b)에 저장된 안전 정보는 기록 방지 비트로 이루어진다. 기록 방지 비트는 관련 스택 영역의 내용이 오버라이트 되어서는 안되면 "1"세트되고, 관련 스택 영역의 내용이 오버라이트 되어도 되면 "0"에 세트된다.
예컨대 LCALL-명령의 경우에서와 같이, 리턴 어드레스가 스택(11a)에 저장되어야 하면, 이것은 통상의 방식으로 야기된다.
동시에, 리턴 어드레스가 기록되었던 스택 영역에 할당된 안전 메모리의 영역(11b)에는 "1"이 기록됨으로써, 상응하는 스택 영역이 오버라이트 될 수 없다.
본 실시예에서, 스택(11a)은 각각 8 비트를 포함하는 영역으로 세분되고, 각각의 8 비트 영역에는 안전 메모리(11b)에 저장된 하나의 기록 방지 비트가 할당된다. 16 비트 어드레스로 처리된다고 가정하면, 리턴 어드레스의 저장을 위해 2개의 스택 영역이 필요하다.
도 2에 따라 리턴 어드레스가 스택(11a)에 저장된다. 리턴 어드레스는 상위 8 비트를 포함하는 부분(PCH) 및 하위 8 비트를 포함하는 부분(PCL)으로 이루어진다. PCH를 포함하는 스택 영역 및 PCL을 포함하는 스택 영역에는 "1"이 안전 정보 또는 기록 방지 비트로서 할당된다.
관련 스택 영역에 저장된 데이터가 리턴 어드레스로서 사용되었으면, 각각의 안전 정보 또는 기록 방지 비트가 "0"에 리세팅된다.
데이터를 스택에 기록하려는(거기에 저장된 데이터를 오버라이트 하려는) 시도 전에, 기록될 스택 영역에 할당될 안전 정보(관련 기록 방지 비트)를 평가함으로써, 스택의 상기 장소에 기록이 허용되는지의 여부가 확인된다.
관련 안전 정보 또는 관련 기록 방지 비트가 값"1"을 가지면, 스택의 상기 장소에 기록이 허용되지 않는다; 기록의 시도는 조작 시도 또는 하드웨어 또는 소프트웨어 에러로 검출된다. 이에 반해, 관련 안전 정보 또는 관련 기록 방지 비트가 값"0"을 가지면, 스택의 상기 장소에 기록이 허용된다.
특정 스택 영역의 기록 허용에 대한 결정은 본 실시예에서 AND-소자(12)로 구현되는 기록 방지 체크 회로에 의해 체크된다. 기록될 스택 영역에 할당된 기록 방지 비트 및 기록 요구를 신호화하는 신호 Write_Stack가 상기 AND-소자(12)에서 입력 신호로 사용된다. 기록 요구가 주어지면, Write_Stack이 값"1"을 가질 수 있고, 기록 요구가 주어지지 않으면, Write_Stack이 값"0"을 가질 수 있다. 그 경우, AND-소자(12)의 출력 신호 Valid_Write는 관련 스택 영역의 고의적 기록이 허용되는지(Valid_Write = "0") 또는 허용되지 않는지(Valid_Write = "1")를 지시한다. AND-소자(12)의 출력 신호 Valid-Write는 도 1의 비교기(5)의 출력 신호(NMI)와 같이 프로그램을 즉각적으로 중단시키고 및/또는 프로그램을 실행하는 시스템을 리세팅시키고 및/또는 경보를 트리거시키고 및/또는 안전에 관련한 데이터를 소거시키기 위해 사용된다.
상기 리턴 어드레스 오버 라이트 방지에 부가해서, 도 1에 따른 실시예에 대해 변형된 리턴 어드레스 사용 방지가 도 2에 따른 시스템에 통합될 수 있다. 이러한 부가의 방지 메커니즘은 스택(11a)으로부터 판독된 데이터가 리턴 어드레스로서 사용되기 전에, 그것이 리턴 어드레스를 나타내는지의 여부를 체크하는 것이다. 스택(11a)으로부터 판독된 데이터가 리턴 어드레스를 나타내는지의 여부는 각각의 스택 영역에 할당된 안전 정보 또는 기록 방지 비트에서 알 수 있다. 판독될 스택 영역에 할당된 안전 정보 또는 기록 방지 비트가 값 "1"을 가지면, 상응하는 스택 영역에 저장된 데이터가 리턴 어드레스를 나타낸다. 이것에 대한 전제 조건은 오직 리턴 어드레스에 대한 안전 정보 또는 기록 방지 비트를 나타내는 데이터, 즉 예컨대 CALL-명령 등에 이어서 스택(11a)에 기록된 데이터가 "1"에 세팅되는 것이다.
상기 부가의 방지 메커니즘은 도 2에 따라 AND-소자(13)로 구현된다. 판독될 스택 영역에 할당된 기록 방지 비트 및 판독된 데이터의 사용 목적을 신호화하는 신호 Read_Stack가 AND-소자(13)에서 입력 신호로 사용된다. 예컨대 RET-명령에서와 같이 리턴 어드레스로서 사용하려 하면, Read_Stack이 값"1"을 가질 수 있고, 그밖의 사용이 의도되면, Read_Stack이 값"0"을 가질 수 있다. AND-소자(13)의 출력 신호 Valid-Read는 리턴 어드레스로서 데이터의 사용이 허용되는지(Valid_Read = "1") 또는 허용되지 않는지(Valid_Read = "0")를 지시한다. 리턴 어드레스의 요구시, 스택(11a)으로부터 요구된 데이터를 리턴 어드레스로서 사용하는 것이 Valid_Read = "0"에 의해 허용되지 않는 것으로 분류되면, 이것은 조작 시도로 또는 하드웨어 또는 소프트웨어 에러로 해석될 수 있고 적합한 방지 조치가 취해질 수있다. 이러한 조치는 특히 즉각적인 프로그램 중단 및/또는 소프트웨어 프로그램을 실행하는 시스템의 리세팅 및/또는 경보의 트리거 및/또는 안전에 관련한 데이터의 소거일 수 있다.
전술한 설명에 따라 외부 액세스를 방지하는 안전 정보는 기록 방지 비트로 이루어진다. 물론, 그것 대신에 임의의 수 및 임의의 의미를 가진 비트로 이루어진 식별자가 사용될 수 있으며, 상기 식별자에 의해 리턴 어드레스 뿐만 아니라, 특수 처리의 임의의 다른 방지 데이터가 조작 및 에러를 방지하기 위해 사용될 수 있다.
상이한 안전 정보가 저장된 안전 메모리는 앞에서 여러번 설명한 바와 같이, 외부에서 고의로 동작시킬 수 없는 메모리이다. 안전 메모리는 바람직하게는 모니터링될 소프트웨어 프로그램을 실행하는 장치, 즉 일반적으로 마이크로 프로세서, 마이크로 콘트롤러 또는 신호 프로세서 자체에 포함된다; 거기서, 그것은 외부로부터의 액세스로부터 양호하게 보호된다. 마이크로 프로세서, 마이크로 콘트롤러 또는 신호 프로세서의 내부에 외부로부터 동작시킬 수 없는 메모리(예컨대, 히든 또는 섀도우 스택의 형태로)의 구현은 비교적 간단히 이루어질 수 있다. 이것을 위해, 커널-소프트웨어의 상응하는 변경만이 필요하다.
전술한 방법 중 하나의 사용은 그 이상의 하드웨어 및 소프트웨어의 변경을 필요로 하지 않는다. 특히, 스택이 지금까지와 같이 계속 사용될 수 있다.
본 발명에 따라 간단한 방식으로 그리고 소프트웨어의 변경 없이 특히 프로그램 흐름의 고의적 조작, 그리고 부분적으로 하드웨어 및 소프트웨어 에러를 배제할 수 있는, 소프트웨어 프로그램의 규정된 실행을 모니터링하는 방법이 제공된다.

Claims (12)

  1. 소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법에 있어서,
    나중의 사용을 위해 저장된 리턴 어드레스의 오버라이트 및/또는 잘못 저장된 또는 오버라이트된 리턴 어드레스를 리턴 어드레스로서의 사용이 방지되는 것을 특징으로 하는 방법.
  2. 제 1항에 있어서, 리턴 어드레스-오버라이트 방지 및 리턴 어드레스-사용 방지가 안전 정보의 평가에 의해 이루어지며, 상기 안전 정보는 리턴 어드레스의 저장시 발생되어 안전 메모리에 저장되는 것을 특징으로 하는 방법.
  3. 제 2항에 있어서, 모니터링될 소프트웨어 프로그램을 실행하는 시스템의 외부로부터 고의로 동작시킬 수 없는 메모리가 안전 메모리로서 사용되는 것을 특징으로 하는 방법.
  4. 제 2항 또는 3항에 있어서, 소프트웨어 프로그램을 실행하는 마이크로 프로세서, 마이크로 콘트롤러 또는 신호 프로세서에 제공된 메모리가 안전 메모리로서 사용되는 것을 특징으로 하는 방법.
  5. 제 2항 내지 4항 중 어느 한 항에 있어서, 리턴 어드레스 자체 또는 이것을 나타내거나 특성화하는 데이터가 안전 정보로 사용되는 것을 특징으로 하는 방법.
  6. 제 5항에 있어서, 저장된 데이터가 리턴 어드레스로서 그것의 사용 전에 관련 안전 정보와 비교되고, 안전 정보가 저장된 정보를 나타내거나 특성화하는 것이 검출될 때만 리턴 어드레스로서 데이터의 사용이 허용되는 것을 특징으로 하는 방법.
  7. 제 5항 또는 6항에 있어서, 리턴 어드레스를 나타내는 데이터의 요구시, 안전 정보가 요구에 대한 응답으로 얻어진 데이터를 나타내지 않거나 특성화하지 않으면, 즉각적인 프로그램 중단 및/또는 소프트웨어 프로그램을 실행하는 시스템의 리세팅 및/또는 경보의 트리거 및/또는 안전에 관련한 데이터의 소거가 야기되는 것을 특징으로 하는 방법.
  8. 제 2항 내지 4항 중 어느 한 항에 있어서, 기록 방지를 신호화하는 기록 방지 식별자가 안전 정보로 저장되는 것을 특징으로 하는 방법.
  9. 제 8항에 있어서, 기록 방지 식별자가 기록 방지를 신호화하는 메모리 영역의 오버라이트가 방지되는 것을 특징으로 하는 방법.
  10. 제 8항 또는 9항에 있어서, 메모리 영역의 오버라이트를 시도할 때, 관련 안전 정보가 기록 방지를 신호화하면, 즉각적인 프로그램 중단 및/또는 소프트웨어 프로그램을 실행하는 시스템의 리세팅 및/또는 경보의 트리거 및/또는 안전에 관련된 데이터의 소거가 야기되는 것을 특징으로 하는 방법.
  11. 제 8항 내지 10항 중 어느 한 항에 있어서, 저장된 데이터를 리턴 어드레스로서 사용하기 전에 관련 안전 정보가 문의되고, 안전 정보가 기록 방지를 신호화하는 것이 검출될 때만 리턴 어드레스로서 데이터의 사용이 허용되는 것을 특징으로 하는 방법.
  12. 제 11항에 있어서, 리턴 어드레스를 나타내는 데이터의 요구시 관련 안전 정보가 기록 방지를 신호화하지 않으면, 즉각적인 프로그램 중단 및/또는 소프트웨어 프로그램을 실행하는 시스템의 리세팅 및/또는 경보의 트리거 및/또는 안전에 관련한 데이터의 소거가 야기되는 것을 특징으로 하는 방법.
KR1019997006351A 1997-01-15 1998-01-15 소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법 KR20000070127A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE19701166A DE19701166A1 (de) 1997-01-15 1997-01-15 Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen
DE19701166.7 1997-01-15

Publications (1)

Publication Number Publication Date
KR20000070127A true KR20000070127A (ko) 2000-11-25

Family

ID=7817440

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997006351A KR20000070127A (ko) 1997-01-15 1998-01-15 소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법

Country Status (12)

Country Link
US (1) US6202176B1 (ko)
EP (1) EP0951673B1 (ko)
JP (1) JP2001511271A (ko)
KR (1) KR20000070127A (ko)
CN (1) CN1248110C (ko)
AT (1) ATE200358T1 (ko)
BR (1) BR9806770A (ko)
DE (2) DE19701166A1 (ko)
ES (1) ES2156029T3 (ko)
RU (1) RU2220443C2 (ko)
UA (1) UA55438C2 (ko)
WO (1) WO1998032072A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100777938B1 (ko) * 2003-09-04 2007-11-21 싸이언스 파크 가부시키가이샤 부정 코드 실행의 방지 방법, 및 부정 코드 실행의 방지용 프로그램의 기록매체
WO2017138797A1 (ko) * 2016-02-12 2017-08-17 한양대학교 산학협력단 시큐어 시스템 온 칩
US11089016B2 (en) 2016-02-12 2021-08-10 Industry-University Cooperation Foundation Hanyang University Secure system on chip

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19944991B4 (de) 1999-09-20 2004-04-29 Giesecke & Devrient Gmbh Verfahren zur Sicherung eines Programmablaufs
DE10122505A1 (de) * 2001-05-10 2002-11-14 Giesecke & Devrient Gmbh Verfahren zum Schützen eines Rechners gegen Manipulation von Registerinhalten und Rechner zum Durchführen des Verfahrens
US7853803B2 (en) 2001-09-28 2010-12-14 Verizon Corporate Services Group Inc. System and method for thwarting buffer overflow attacks using encrypted process pointers
JP2004126854A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
JPWO2005020069A1 (ja) * 2003-08-25 2006-10-19 有限会社 電机本舗 コンピュータシステムのcpu(中央処理装置)
US20050138263A1 (en) * 2003-12-23 2005-06-23 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
US7971255B1 (en) * 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
US7594269B2 (en) * 2004-10-29 2009-09-22 Intel Corporation Platform-based identification of host software circumvention
WO2007048988A1 (en) * 2005-10-26 2007-05-03 Arm Limited A data processing apparatus and method for handling procedure call instructions
US7774761B2 (en) * 2005-12-27 2010-08-10 International Business Machines Corporation Use of memory watch points and a debugger to improve analysis of runtime memory access errors
US20070174571A1 (en) * 2006-01-25 2007-07-26 Safenet, Inc. Binding a protected application program to shell code
US8352713B2 (en) 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
US20080127118A1 (en) * 2006-10-02 2008-05-29 Bulent Kasman Method and system for dynamic patching of software
US20090187748A1 (en) * 2008-01-22 2009-07-23 Scott Krig Method and system for detecting stack alteration
DE102009005764A1 (de) 2009-01-23 2010-07-29 Giesecke & Devrient Gmbh Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Unterprogramms
US8484625B2 (en) * 2009-04-01 2013-07-09 Motorola Mobility Llc Method and apparatus to vet an executable program using a model
CN102053839A (zh) * 2010-12-31 2011-05-11 山东中创软件商用中间件股份有限公司 监控探针生成方法和装置
FR2977694A1 (fr) 2011-07-08 2013-01-11 St Microelectronics Rousset Microprocesseur protege contre un debordement de pile
US9213828B2 (en) * 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US9015835B2 (en) * 2013-06-23 2015-04-21 Intel Corporation Systems and methods for procedure return address verification
JP2015011436A (ja) * 2013-06-27 2015-01-19 株式会社デンソー プロセッサ
RU2591020C1 (ru) * 2015-06-01 2016-07-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" (Госкорпорация "Росатом") Способ контроля хода выполнения программы пользователя, исполняющейся на вычислительных узлах вычислительной системы
US20160381050A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
JP6489050B2 (ja) * 2016-03-24 2019-03-27 株式会社オートネットワーク技術研究所 情報処理装置及び情報処理システム
US9904485B2 (en) * 2016-03-31 2018-02-27 Intel Corporation Secure memory controller
US10613864B2 (en) * 2018-03-16 2020-04-07 Texas Instruments Incorporated Processor with hardware supported memory buffer overflow detection
RU2697948C1 (ru) * 2018-04-19 2019-08-21 Акционерное общество "Лаборатория Касперского" Система и способ выявления уязвимостей с использованием перехвата вызовов функций

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4241396A (en) * 1978-10-23 1980-12-23 International Business Machines Corporation Tagged pointer handling apparatus
JPS5568000A (en) * 1978-11-13 1980-05-22 Ibm Maintenance and protection of control storage capable of writing
US4296404A (en) * 1979-10-18 1981-10-20 Engineered Systems, Inc. Remote verification lockout system
US5408642A (en) * 1991-05-24 1995-04-18 Symantec Corporation Method for recovery of a computer program infected by a computer virus
US5274817A (en) * 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
DE4315732C1 (de) * 1993-05-11 1994-06-01 Siemens Nixdorf Inf Syst Verfahren zum authentischen Booten und Testen der Integrität von Software auf PC-Architekturen
FR2728363A1 (fr) * 1994-12-20 1996-06-21 Sgs Thomson Microelectronics Dispositif de protection de l'acces a des mots memoires
DE19614904A1 (de) * 1996-04-16 1997-10-23 Philips Patentverwaltung Verfahren und System zum Freigeben der Ausführung zugelassener Programme
JP3421526B2 (ja) * 1997-02-14 2003-06-30 モトローラ株式会社 デ−タ処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100777938B1 (ko) * 2003-09-04 2007-11-21 싸이언스 파크 가부시키가이샤 부정 코드 실행의 방지 방법, 및 부정 코드 실행의 방지용 프로그램의 기록매체
WO2017138797A1 (ko) * 2016-02-12 2017-08-17 한양대학교 산학협력단 시큐어 시스템 온 칩
US11089016B2 (en) 2016-02-12 2021-08-10 Industry-University Cooperation Foundation Hanyang University Secure system on chip

Also Published As

Publication number Publication date
RU2220443C2 (ru) 2003-12-27
ES2156029T3 (es) 2001-06-01
US6202176B1 (en) 2001-03-13
JP2001511271A (ja) 2001-08-07
UA55438C2 (uk) 2003-04-15
DE19701166A1 (de) 1998-07-23
DE59800589D1 (de) 2001-05-10
CN1248110C (zh) 2006-03-29
EP0951673A1 (de) 1999-10-27
ATE200358T1 (de) 2001-04-15
CN1243580A (zh) 2000-02-02
EP0951673B1 (de) 2001-04-04
BR9806770A (pt) 2000-05-16
WO1998032072A1 (de) 1998-07-23

Similar Documents

Publication Publication Date Title
KR20000070127A (ko) 소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법
CA1153474A (en) Hardware memory write lock circuit
EP1150300B1 (en) Semiconductor storage device, control device, and electronic apparatus
JP4708514B2 (ja) マイクロプロセッサカードにセキュアプログラムをロードする方法及びセキュアプログラムを含むマイクロプロセッサカード
US6934887B1 (en) Method for protecting a program flow
JPH0719231B2 (ja) 改良されたアクセス安全装置を備える集積回路
EP1855226A1 (en) Security system of flash memory and method thereof
US6499092B1 (en) Method and apparatus for performing access censorship in a data processing system
US6883075B2 (en) Microcontroller having embedded non-volatile memory with read protection
WO1993009495A1 (en) Computer memory protection
US5812446A (en) Method and apparatus for the protection of non-volatile memory zones
JP2748339B2 (ja) 集積回路の安全性を向上させるための方法および装置
JP2003504740A (ja) モノリシック安全保護モジュールにおける敏感な情報の処理の安全保護方法、および関連する安全保護モジュール
US5678027A (en) Method for preventing unauthorized modification of data in a device with a nonvolatile memory
US7027350B2 (en) Device and method for partial read-protection of a non-volatile storage
WO2001097010A2 (en) Data processing method and device for protected execution of instructions
US7593258B2 (en) Protection of the flow of a program executed by an integrated circuit or of data contained in this circuit
US5826009A (en) Protection of software from physical and electronic interrogation by sealing and checking password
US20060107133A1 (en) Tampering-protected microprocessor system and operating procedure for same
US7725644B2 (en) Memory device and an arrangement for protecting software programs against inadvertent execution
JP2003203012A (ja) マイクロコンピュータ装置
MXPA99006559A (en) Method for monitoring the execution of software programmes as prescribed
JP7247638B2 (ja) 電子情報記憶媒体、icカード、改竄チェック方法、及びプログラム
US20210173570A1 (en) Micro-processing circuit and data protection method for memory thereof
JP2000057286A (ja) 書換可能不揮発性メモリ複数搭載型icカード

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
NORF Unpaid initial registration fee