KR20000070127A - 소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법 - Google Patents
소프트웨어 프로그램의 규정된 실행을 모니터링하기 위한 방법 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000012544 monitoring process Methods 0.000 title claims description 7
- 230000002265 prevention Effects 0.000 claims description 9
- 230000011664 signaling Effects 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 claims 1
- 230000004044 response Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2143—Clearing 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
소프트웨어 프로그램을 규정에 따라 실행하는 것은 다양한 조치의 제공에 의해 항상 추구하는 목표이다.
예전에는 불확실한 하드웨어 및 프로그래밍 에러가 비정상적 소프트웨어 프로그램 실행의 원인이었는데, 그 사이에 프로그램 흐름의 고의적인 조작이 점점 더 중요해지고 있다.
프로그램 흐름의 고의적인 조작에 의해, 예컨대 특정 프로그램 부분이 스킵됨으로써, 예컨대 액세스 허가를 검출하는 체크를 피할 수 있다.
이것은 특히 칩 카드에서 중요한 문제가 될 수 있는데, 그 이유는 한편으로는 칩 카드가 특히 안전에 관련된 분야에서(예컨대 액세스 제어, 금전 거래 등에서) 널리 보급되어 있고, 다른 한편으로는 그것이 항상 모니터링 또는 감시될 수 없기 때문에 방해 없이 조작 시도의 대상이 될 수 있기 때문이다.
이미 제안된 다수의 안전 조치로 인해, 오용될 수 있는 조작이 이루어질 수 있는 확률은 매우 작다. 그럼에도 불구하고, 상기 문제가 완전히 배제되지는 않는다.
본 발명은 청구항 제 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항에 있어서, 모니터링될 소프트웨어 프로그램을 실행하는 시스템의 외부로부터 고의로 동작시킬 수 없는 메모리가 안전 메모리로서 사용되는 것을 특징으로 하는 방법.
- 제 2항 또는 3항에 있어서, 소프트웨어 프로그램을 실행하는 마이크로 프로세서, 마이크로 콘트롤러 또는 신호 프로세서에 제공된 메모리가 안전 메모리로서 사용되는 것을 특징으로 하는 방법.
- 제 2항 내지 4항 중 어느 한 항에 있어서, 리턴 어드레스 자체 또는 이것을 나타내거나 특성화하는 데이터가 안전 정보로 사용되는 것을 특징으로 하는 방법.
- 제 5항에 있어서, 저장된 데이터가 리턴 어드레스로서 그것의 사용 전에 관련 안전 정보와 비교되고, 안전 정보가 저장된 정보를 나타내거나 특성화하는 것이 검출될 때만 리턴 어드레스로서 데이터의 사용이 허용되는 것을 특징으로 하는 방법.
- 제 5항 또는 6항에 있어서, 리턴 어드레스를 나타내는 데이터의 요구시, 안전 정보가 요구에 대한 응답으로 얻어진 데이터를 나타내지 않거나 특성화하지 않으면, 즉각적인 프로그램 중단 및/또는 소프트웨어 프로그램을 실행하는 시스템의 리세팅 및/또는 경보의 트리거 및/또는 안전에 관련한 데이터의 소거가 야기되는 것을 특징으로 하는 방법.
- 제 2항 내지 4항 중 어느 한 항에 있어서, 기록 방지를 신호화하는 기록 방지 식별자가 안전 정보로 저장되는 것을 특징으로 하는 방법.
- 제 8항에 있어서, 기록 방지 식별자가 기록 방지를 신호화하는 메모리 영역의 오버라이트가 방지되는 것을 특징으로 하는 방법.
- 제 8항 또는 9항에 있어서, 메모리 영역의 오버라이트를 시도할 때, 관련 안전 정보가 기록 방지를 신호화하면, 즉각적인 프로그램 중단 및/또는 소프트웨어 프로그램을 실행하는 시스템의 리세팅 및/또는 경보의 트리거 및/또는 안전에 관련된 데이터의 소거가 야기되는 것을 특징으로 하는 방법.
- 제 8항 내지 10항 중 어느 한 항에 있어서, 저장된 데이터를 리턴 어드레스로서 사용하기 전에 관련 안전 정보가 문의되고, 안전 정보가 기록 방지를 신호화하는 것이 검출될 때만 리턴 어드레스로서 데이터의 사용이 허용되는 것을 특징으로 하는 방법.
- 제 11항에 있어서, 리턴 어드레스를 나타내는 데이터의 요구시 관련 안전 정보가 기록 방지를 신호화하지 않으면, 즉각적인 프로그램 중단 및/또는 소프트웨어 프로그램을 실행하는 시스템의 리세팅 및/또는 경보의 트리거 및/또는 안전에 관련한 데이터의 소거가 야기되는 것을 특징으로 하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19701166.7 | 1997-01-15 | ||
DE19701166A DE19701166A1 (de) | 1997-01-15 | 1997-01-15 | Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen |
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)
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)
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)
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 | モトローラ株式会社 | デ−タ処理装置 |
-
1997
- 1997-01-15 DE DE19701166A patent/DE19701166A1/de not_active Ceased
-
1998
- 1998-01-15 DE DE59800589T patent/DE59800589D1/de not_active Expired - Fee Related
- 1998-01-15 EP EP98906810A patent/EP0951673B1/de not_active Expired - Lifetime
- 1998-01-15 KR KR1019997006351A patent/KR20000070127A/ko active IP Right Grant
- 1998-01-15 UA UA99074040A patent/UA55438C2/uk unknown
- 1998-01-15 CN CNB98801856XA patent/CN1248110C/zh not_active Expired - Fee Related
- 1998-01-15 RU RU99118013/09A patent/RU2220443C2/ru not_active IP Right Cessation
- 1998-01-15 ES ES98906810T patent/ES2156029T3/es not_active Expired - Lifetime
- 1998-01-15 JP JP53352198A patent/JP2001511271A/ja not_active Ceased
- 1998-01-15 AT AT98906810T patent/ATE200358T1/de not_active IP Right Cessation
- 1998-01-15 WO PCT/DE1998/000133 patent/WO1998032072A1/de active IP Right Grant
- 1998-01-15 BR BR9806770-2A patent/BR9806770A/pt not_active IP Right Cessation
-
1999
- 1999-07-15 US US09/354,132 patent/US6202176B1/en not_active Expired - Lifetime
Cited By (3)
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 |
---|---|
CN1243580A (zh) | 2000-02-02 |
ATE200358T1 (de) | 2001-04-15 |
WO1998032072A1 (de) | 1998-07-23 |
DE59800589D1 (de) | 2001-05-10 |
UA55438C2 (uk) | 2003-04-15 |
EP0951673B1 (de) | 2001-04-04 |
JP2001511271A (ja) | 2001-08-07 |
EP0951673A1 (de) | 1999-10-27 |
ES2156029T3 (es) | 2001-06-01 |
BR9806770A (pt) | 2000-05-16 |
US6202176B1 (en) | 2001-03-13 |
CN1248110C (zh) | 2006-03-29 |
DE19701166A1 (de) | 1998-07-23 |
RU2220443C2 (ru) | 2003-12-27 |
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 | |
US20020174310A1 (en) | Non-volatile memory | |
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 | |
US20060248589A1 (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 |
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 |