WO1998032072A1 - Verfahren zur überwachung der bestimmungsgemässen ausführung von softwareprogrammen - Google Patents

Verfahren zur überwachung der bestimmungsgemässen ausführung von softwareprogrammen Download PDF

Info

Publication number
WO1998032072A1
WO1998032072A1 PCT/DE1998/000133 DE9800133W WO9832072A1 WO 1998032072 A1 WO1998032072 A1 WO 1998032072A1 DE 9800133 W DE9800133 W DE 9800133W WO 9832072 A1 WO9832072 A1 WO 9832072A1
Authority
WO
WIPO (PCT)
Prior art keywords
return address
data
stored
stack
memory
Prior art date
Application number
PCT/DE1998/000133
Other languages
English (en)
French (fr)
Inventor
Michael Baldischweiler
Stefan Pfab
Original Assignee
Siemens Aktiengesellschaft
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 Siemens Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Priority to JP53352198A priority Critical patent/JP2001511271A/ja
Priority to UA99074040A priority patent/UA55438C2/uk
Priority to EP98906810A priority patent/EP0951673B1/de
Priority to DE59800589T priority patent/DE59800589D1/de
Priority to BR9806770-2A priority patent/BR9806770A/pt
Priority to AT98906810T priority patent/ATE200358T1/de
Publication of WO1998032072A1 publication Critical patent/WO1998032072A1/de

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

Definitions

  • the present invention relates to a method according to the preamble of claim 1, i.e. a method for monitoring the intended execution of software programs.
  • the present invention is therefore based on the object of finding a method for monitoring the intended execution of software programs, by means of which, in particular, targeted manipulations of the program sequence can be largely excluded.
  • the backup information can consist, for example, of a write protection identifier, such as a write protection bit or the like, which is set when a return address is stored and is reset as a return address after the stored return address has been used.
  • the security information can consist, for example, of the return address itself or of data that represent or characterize the return address in some other way.
  • the security information mentioned is stored in a memory area, to which external access is preferably not possible;
  • the "normal" storage of the return addresses can take place in the so-called stack (stack memory) as before.
  • the program currently being executed can be aborted and / or the system executing the program reset and / or an alarm triggered and / or safety-relevant data deleted and / or other protective measures taken.
  • Figure 1 is a partial schematic representation of a system for performing a return address protection
  • Figure 2 is a schematic diagram illustrating a return address overwrite protection and a modified return address use protection.
  • the system shown in detail in FIG. 1 is a system designed for executing software programs, which can be wholly or partly contained in a microprocessor, a microcontroller, a signal processor or the like.
  • the section shown is the part of the system that is relevant for the handling of the return addresses.
  • the latter address i.e. the address at which the program execution is to be continued after the execution of the function program is the said return address.
  • the return address In order for the device executing the software program to know where to jump after the function has been carried out, the return address must be temporarily stored.
  • stack memory stack memory
  • the stack 1 is controlled or managed by a stack logic 2.
  • the stack logic 2 generates, among other things, a so-called stack pointer, which points to that part of the stack 1 which is to be described or read out next.
  • stacks per se and working with them are generally known, so that further explanation can be dispensed with here.
  • return addresses can be saved, but also any other data (register contents, local variables etc.).
  • present explanations essentially relate exclusively to the handling of return addresses.
  • stack logic 2 If, as in the case of an LCALL command, for example, it is necessary to store a return address in stack 1, this is initiated by stack logic 2.
  • backup memory In contrast to conventional systems, in the system under consideration here the return address stored or to be stored in stack 1 is additionally stored as security information in a further memory.
  • This memory hereinafter referred to as backup memory, is designated by the reference symbol 3 in FIG.
  • the backup memory 3 is assigned a backup memory logic 4, via which it is controlled or managed by the stack logic 2, similar to the stack 1.
  • the backup memory 3 cannot be addressed from outside the system executing the software program. This means that data entered there cannot be manipulated, or at least not with reasonable effort, in a targeted manner.
  • the backup memory logic 4 in the example under consideration only responds when a return address is to be written in or read out. Alternatively, however, it can of course also be provided that the backup memory logic 4 also respond to other events (apart from externally initiated write and read processes).
  • the required return address can be obtained by reading stack 1 accordingly. Before using the data obtained as a return address, however, it is checked whether the data received is identical to that in the
  • Backup memory 3 are stored as backup information return address.
  • a comparator 5 which receives the data to be compared from the stack 1 and the backup memory 3 and subjects it to a comparison.
  • Data correspond to the return address originally to be stored, that is to say neither manipulated nor incorrectly stored or read out or read out at or from the wrong place as a result of a hardware and / or software error.
  • the data stored in stack 1 can therefore be viewed and used as the correct return address. This conclusion is possible because, as already mentioned above, it is practically impossible to influence the contents of the backup memory 3 in a targeted manner.
  • the comparator 5 If, on the other hand, it turns out in the comparison carried out in the comparator 5 that the data compared with one another are not identical, this means that the data obtained from the stack 1 are either manipulated with a high degree of probability or incorrect or on due to a hardware and / or software error or were saved or read from the wrong place. Regardless of the cause of the non-existent identity, the data stored in stack 1 cannot be used as a return address, since this would result in a deviation from the intended program sequence.
  • the comparator 5 generates a in this case Signal NMI, which is fed to an NMI logic 6.
  • the NMI logic 6 causes an immediate program termination and / or a reset of the system processing the software program and / or an alarm and / or the deletion of safety-relevant data.
  • the comparator 5 is activated by commands which, like for example the RET command, result in the reading out of data to be interpreted as a return address from the stack 1.
  • the comparator is inactive at all other times.
  • the software program to be executed can only be executed if and for as long as no return address error of any kind has been detected.
  • FIG. 1 The example described with reference to FIG. 1 can be regarded as a practical implementation of a return address usage protection that is responsive if necessary.
  • the security information assigned to the respective return addresses is the return addresses themselves.
  • the comparator 5 would then, of course, possibly be replaced by a comparison device modified according to the given circumstances.
  • FIG. 2 shows, among other things, a memory 11 which can be subdivided into a first memory area in the form of a stack 11a and a second memory area in the form of a backup memory 11b.
  • the stack 11a corresponds to the stack 1 shown in FIG. 1.
  • the backup memory 11b corresponds approximately to the backup memory 3 shown in FIG. 1; however, the backup memory 11b is written with different backup information than is the case with the backup memory 3.
  • the backup memory 11b cannot be addressed from outside the device executing the software program to be monitored. This means that even with this variant of program monitoring, information stored in the backup memory cannot be manipulated, or at least cannot be manipulated with reasonable effort.
  • the backup information stored in the backup memory 11b consists of a write protection bit which is set to "1" if the content of the assigned stack area must not be overwritten and which is set to "0" if the content of the assigned stack area is overwritten may .
  • a "1" is written into the area of the backup memory 11b assigned to the stack area in which the return address was written, in order to indicate that the corresponding stack area must not be overwritten.
  • the stack 11a is divided into areas each comprising 8 bits, each of the 8-bit areas before a write protection bit stored in the backup memory 11b is assigned. Assuming that 16-bit addresses are used, two stack areas are required to store a return address.
  • a return address is stored in the stack 11a.
  • the return address is composed of a part comprising the higher eight bits (PCH) and a part comprising the lower eight bits (PCL). Both the PCH-containing stack area and the PCL-containing stack area are assigned "1" as security information or write protection bit.
  • the respective backup information or write protection bits are reset to "0" if the data stored in the assigned stack area was used as the return address.
  • the backup information (the assigned write protection bit) assigned to the stack area to be written is evaluated in order to determine whether writing to the stack is permitted at this point.
  • the assigned backup information or the assigned write protection bit has the value "1”, writing to the stack is not permitted at this point; the attempt to write is recognized as an attempted manipulation or a hardware or software error. If, on the other hand, the assigned backup information or the assigned write protection bit has the value "0", writing to the stack is permitted at this point.
  • a write protection check circuit which in the example under consideration is implemented by an AND gate 12.
  • the stack signals to be described are area-assigned write protection bit and a Write_Stack signaling the write request, where Write_Stack may take the value "1" if there is a write request, and Write_Stack may take the value "0" if there is no write request.
  • the output signal Valid_Write of the AND gate 12 like the output signal NMI of the comparator 5 in FIG. 1, can be used to abort the program immediately and / or to reset the system processing the program and / or to trigger an alarm and / or safety-relevant data to delete.
  • a return address use protection modified in comparison with the embodiment according to FIG. 1 can be integrated into the system according to FIG. 2.
  • This additional protection mechanism consists in checking data read from the stack 11a before using it as a return address to determine whether it represents a return address at all. This can be seen from the backup information or write protection bits assigned to the respective stack areas. The data stored in the corresponding stack area only represent a return address if the backup information or write protection bits assigned to the stack area to be read out have the value "1". The prerequisite for this is, of course, that the backup information or write protection bits are set to "1" exclusively for data representing return addresses, that is to say, for example, data written in the stack 11a following a CALL command or the like.
  • This additional protective mechanism is implemented as shown in FIG. 2 by an AND gate 13.
  • the signals to be read out are the input signals Stack area associated write protection and the USAGE ⁇ dung purpose of the read data signal signaling Read_Stack used, Read_Stack may assume the value "1" when, for example command, a use is intended as a return address in the presence of RET, and wherein Read_Stack the value " 0 "if it is intended for any other use.
  • the security information protected against external access consists of a write protection bit. It goes without saying that an identifier consisting of any number of bits and any meaning can be used instead, by means of which not only return addresses but also any other data worth protecting can be subjected to special treatment to protect it from manipulation and errors.
  • the backup memory in which the various backup information is stored, is, as has already been mentioned several times above, an external memory that cannot be specifically addressed. It is preferably in the device executing the software program to be monitored, ie in usually housed a microprocessor, a microcontroller or a signal processor itself; there it is particularly well protected against external access.
  • a microprocessor, a microcontroller or a signal processor for example in the form of a hidden or shadow stack
  • All that is required is a corresponding modification of the kernel software.

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

Das beschriebene Verfahren zeichnet sich dadurch aus, daß das Überschreiben von zur späteren Verwendung gespeicherten Rücksprungadressen und/oder die Verwendung von fehlerhaft gespeicherten oder überschriebenen Rücksprungadressen als Rücksprungadresse verhindert werden. Auf diese Weise ist erreichbar, daß insbesondere gezielte Manipulationen des Programmablaufs von Softwareprogrammen weitestgehend ausgeschlossen werden können.

Description

Be s ehre ibung
Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen
Die vorliegende Erfindung betrifft ein Verfahren gemäß dem Oberbegriff des Patentanspruchs 1, d.h. ein Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen .
Daß Softwareprogramme bestimmungsgemäß ausgeführt werden, ist ein ständiges Ziel, dem man durch Vorsehen der unterschiedlichsten Maßnahmen immer näher kommt.
Während früher in erster Linie die unzuverlässige Hardware und Programmierfehler die Ursache für eine nicht ordnungsgemäße Softwareprogrammausführung waren, spielen mittlerweile gezielte Manipulationen des Programmablaufs eine immer bedeutender werdende Rolle.
Durch eine gezielte Manipulation von Programmabläufen ist es beispielsweise möglich, bestimmte Programmteile zu überspringen, wodurch beispielsweise die Zugangsberechtigung feststellende Überprüfungen umgangen werden können.
Dies kann beispielsweise, aber bei weitem nicht ausschließlich bei Chipkarten zu einem ernsthaften Problem werden, denn einerseits finden diese vor allem in sicherheitsrelevanten Bereichen (beispielsweise für Zutrittskontrollen, Geld- geschafte etc.) eine immer weitere Verbreitung, und andererseits können sie, da sie naturgemäß nicht unter ständiger Überwachung bzw. Aufsicht stehen können, ungehindert zum Gegenstand von Manipulationsversuchen gemacht werden.
Aufgrund der Vielzahl von bereits vorgesehenen Sicherheitsvorkehrungen ist die Wahrscheinlichkeit, daß eine für Miß- br uche nutzbare Manipulation gelingt, sehr gering. Nichts- destotrotz ist dies nicht gänzlich ausgeschlossen.
Der vorliegenden Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen zu finden, durch welches insbesondere gezielte Manipulationen des Programmablaufs wei- testgehend ausgeschlossen werden können.
Diese Aufgabe wird erfindungsgemäß durch die im kennzeichnenden Teil des Patentanspruchs 1 beanspruchten Merkmale gelöst .
Demnach ist vorgesehen, daß das Überschreiben von zur späteren Verwendung gespeicherten Rücksprungadressen und/oder die Verwendung von fehlerhaft gespeicherten oder uberschriebenen Rücksprungadressen als Rücksprungadresse verhindert werden.
Die praktische Realisierung dieser Verfahrensschritte kann auf die verschiedenste Art und Weise erfolgen. Im einfachsten Fall werden bei einem eine Speicherung der Rücksprungadresse erfordernden Funktionsaufruf oder dergleichen nicht nur die Rücksprungadresse selbst, sondern zusätzliche Sicherungs- informationen gespeichert, welche erkennen lassen, ob die gespeicherte Rücksprungadresse noch benötigt wird und deshalb nicht überschrieben werden darf und/oder ob die gespeicherte Rücksprungadresse die ursprünglich gespeicherte bzw. zu speichernde Rücksprungadresse ist .
Beim erstgenannten Fall, d.h. bei der Realisierung eines Rücksprungadressen-Überschreibschutzes kann die Sicherungs- information beispielsweise aus einer Schreibschutzkennung wie einem Schreibschutzbit oder dergleichen bestehen, welches beim Speichern einer Rücksprungadresse gesetzt und nach der Verwendung der gespeicherten Rücksprungadresse als Rück- sprungadresse zurückgesetzt wird. Beim zweitgenannten Fall, d.h. bei der Realisierung eines Rücksprungadressen-Verwendungsschutzes kann die Sicherungs- information beispielsweise aus der Rücksprungadresse selbst oder aus die Rücksprungadresse in sonstiger Weise repräsen- tierenden oder charakterisierenden Daten bestehen.
Die genannten Sicherungsinformationen werden in einem Speicherbereich gespeichert, auf welchen vorzugsweise ein externer Zugriff nicht möglich ist; die "normale" Speicherung der Rücksprungadressen kann wie bisher im sogenannten Stack (Stapelspeicher) erfolgen.
Überprüft man vor jedem Schreibversuch auf den Stack, ob der zu beschreibende Bereich durch das Schreibschutzbit als ein schreibgeschützter Bereich ausgewiesen ist, so kann ein Überschreiben von später als Rücksprungadresse zu verwendenden Daten verhindert werden.
Überprüft man alternativ oder zusätzlich, ob als Rücksprung- adresse zu verwendende Daten der ursprünglich gespeicherten oder zu speichernden Rücksprungadresse entsprechen, so kann verhindert werden, daß nach der Rücksprungadressenspeicherung veränderte (manipulierte) Daten als Rücksprungadresse verwendet werden.
In beiden Fällen können, um weitere Manipulationsversuche zu verhindern, das gerade ausgeführte Programm abgebrochen und/oder das das Programm ausführende System zurückgesetzt und/oder ein Alarm ausgelöst und/oder sicherheitsrelevante Daten gelöscht und/oder sonstige Schutzmaßnahmen ergriffen werden .
Auf diese Weise kann sichergestellt werden, daß gezielte Manipulationen von Rücksprungadressen nicht zu einer Ver- anderung des bestimmungsgemäßen Programmablaufs führen können. Es wurde mithin ein Verfahren gefunden, durch welches insbesondere gezielte Manipulationen des Programmablaufs wei- testgehend ausgeschlossen werden können.
Vorteilhafte Weiterbildungen der Erfindung sind Gegenstand der Unteransprüche.
Die Erfindung wird nachfolgend anhand von Ausführungsbeispielen unter Bezugnahme auf die Zeichnung näher erläutert . Es zeigen
Figur 1 eine ausschnittsweise schematische Darstellung eines Systems zur Durchführung eines Rücksprungadressen- Verwendungsschutzes, und
Figur 2 eine schematische Darstellung zur Veranschaulichung eines Rücksprungadressen-Überschreibschutzes und eines modifizierten Rücksprungadressen-Verwendungsschutzes .
Das in der Figur 1 ausschnittsweise gezeigte System ist ein zur Ausführung von Sof wareprogrammen ausgelegtes System, welches ganz oder teilweise in einem Mikroprozessor, einem Mikrocontroller, einem Signalprozessor oder dergleichen enthalten sein kann.
Der gezeigte Ausschnitt ist der für die Handhabung der Rücksprungadressen relevante Teil des Systems .
Rücksprungadressen sind beispielsweise zu speichern, wenn das auszuführende Programm einen Funktionsaufruf enthält. Bei einem Funktionsaufruf (beispielsweise beim Befehl LCALL beim Intel-Mikrocontroller 8051) wird - innerhalb des Programmspeichers ein (Adreß- ) Sprung zu der Stelle ausgeführt, an welcher das Programm für die nun auszuführende Funktion gespeichert ist,
- das betreffende Funktionsprogramm ausgeführt, und
- zu der Stelle im Programmspeicher zurückgekehrt, von wo aus der Sprung zum Funktionsprogramm erfolgt ist .
Die zuletzt genannte Adresse, d.h. die Adresse, an welcher die Programmausführung nach der Ausführung des Funktions- programms fortzusetzen ist, ist die besagte Rücksprungadresse .
Damit die das Softwareprogramm ausführende Einrichtung weiß, wohin sie nach der Ausführung der Funktion springen muß, bedarf es einer zwischenzeitlichen Speicherung der Rücksprungadresse .
Es sei bereits an dieser Stelle erwähnt, daß Funktionsaufrufe nicht die einzigen Ereignisse sind, bei denen die Speicherung der Rücksprungadresse erforderlich ist. Eine Rücksprungadressen-Speicherung ist, um nur einige Beispiele zu nennen, beispielsweise auch bei Interrupts (Programmunterbrechungen) oder bei Task-Wechseln in Multitasking-Betriebssystemen erforderlich.
Die Speicherung der Rücksprungadressen erfolgt üblicherweise in einem sogenannten Stack bzw. Stackspeicher (Stapel- Speicher) . Ein derartiger Stack ist in der Figur 1 mit dem
Bezugszeichen l bezeichnet. Der Stack 1 wird von einer Stacklogik 2 angesteuert bzw. verwaltet. Die Stacklogik 2 erzeugt unter anderem einen sogenannten Stack-Pointer, welcher auf denjenigen Teilbereich des Stack 1 zeigt, welcher als näch- ster zu beschreiben oder auszulesen ist. Stacks an sich und das Arbeiten damit ist allgemein bekannt, so daß hier von einer weiteren Erläuterung abgesehen werden kann. Im Stack 1 können nicht nur Rücksprungadressen, sondern auch beliebige andere Daten (Registerinhalte, lokale Variable etc.) gespeichert werden. Die vorliegenden Erläuterungen be- ziehen sich jedoch im wesentlichen ausschließlich auf die Handhabung von Rücksprungadressen.
Gilt es, wie beispielsweise im Fall eines LCALL-Befehls, eine Rücksprungadresse im Stack 1 zu speichern, so wird dies durch die Stacklogik 2 veranlaßt.
Anders als bei herkömmlichen Systemen wird beim vorliegend betrachteten System die im Stack 1 abgelegte bzw. abzulegende Rücksprungadresse zusätzlich als Sicherungsinformation in einem weiteren Speicher gespeichert. Dieser, nachfolgend als Sicherungsspeicher bezeichnete Speicher ist in der Figur 1 mit dem Bezugszeichen 3 bezeichnet. Dem Sicherungsspeicher 3 ist eine Sicherungsspeicherlogik 4 zugeordnet, über welche er ähnlich wie der Stack 1 durch die Stacklogik 2 angesteuert bzw. verwaltet wird.
Der Sicherungsspeicher 3 ist im Gegensatz zum Stack 1 von außerhalb des das Softwareprogramm ausführenden Systems nicht ansprechbar. D.h., dort eingeschriebene Daten können nicht oder jedenfalls nicht mit einem vertretbaren Aufwand gezielt manipuliert werden.
Die Sicherungsspeicherlogik 4 spricht im betrachteten Beispiel im Gegensatz zur Stacklogik 2 nur an, wenn eine Rück- sprungadresse einzuschreiben oder auszulesen ist. Alternativ kann jedoch selbstverständlich auch vorgesehen werden, die Sicherungsspeicherlogik 4 auch auf andere Ereignisse (außer extern veranlaßte Schreib- und Lesevorgänge) ansprechen zu lassen.
Ist der Programmablauf an einem Punkt angelangt, an welchem ein Rücksprung zu einer zuvor gespeicherten Rücksprungadresse zu erfolgen hat, also beispielsweise bei einem RET-Befehl, so kann die benötigte Rücksprungadresse durch ein entsprechendes Auslesen des Stack 1 beschafft werden. Vor der Verwendung der dabei erhaltenen Daten als Rücksprungadresse wird jedoch überprüft, ob die erhaltenen Daten identisch mit der im
Sicherungsspeicher 3 als Sicherungsinformation gespeicherten Rücksprungadresse sind.
Hierzu ist ein Vergleicher 5 vorgesehen, der die einander gegenüberzustellenden Daten aus dem Stack 1 und dem Siche- rungsspeicher 3 entgegennimmt und einem Vergleich unterwirft.
Stellt sich bei dem im Vergleicher 5 durchgeführten Vergleich heraus, daß die einander gegenübergestellten Daten identisch sind, so bedeutet dies, daß die aus dem Stack 1 erhaltenen
Daten der ursprünglich zu speichernden Rücksprungadresse entsprechen, also weder manipuliert noch infolge eines Hard- und/oder Softwarefehlers unrichtig oder an bzw. von der falschen Stelle abgespeichert bzw. ausgelesen wurden. Die im Stack 1 gespeicherten Daten können demnach als die ordnungsgemäße Rücksprungadresse angesehen und verwendet werden. Diese Schlußfolgerung ist deshalb möglich, weil, wie vorstehend bereits erwähnt wurde, eine gezielte Beeinflussung des Inhalts des Sicherungsspeichers 3 praktisch nicht möglich ist.
Stellt sich bei dem im Vergleicher 5 durchgeführten Vergleich hingegen heraus, daß die einander gegenübergestellten Daten nicht identisch sind, so bedeutet dies, daß die aus dem Stack 1 erhaltenen Daten mit hoher Wahrscheinlichkeit entweder manipuliert oder infolge eines Hard- und/oder Softwarefehlers unrichtig oder an bzw. von der falschen Stelle abgespeichert bzw. ausgelesen wurden. Unabhängig von der Ursache der nicht vorhandenen Identität können die im Stack 1 gespeicherten Da- ten nicht als Rücksprungadresse verwendet werden, da sich dadurch eine Abweichung vom bestimmungsgemäßen Programmablauf ergeben würde. Der Vergleicher 5 erzeugt in diesem Fall ein Signal NMI , welches einer NMI-Logik 6 zugeführt wird. Die NMI-Logik 6 veranlaßt einen sofortigen Programmabbruch und/ oder ein Zurücksetzen des das Softwareprogramm abarbeitenden Systems und/oder das Auslösen eines Alarms und/oder das Lö- sehen von sicherheitsrelevanten Daten.
Der Vergleicher 5 wird im betrachteten Beispiel durch Befehle aktiviert, die, wie beispielsweise der RET-Befehl, ein Auslesen von als Rücksprungadresse zu interpretierenden Daten aus dem Stack 1 zur Folge haben. Zu allen anderen Zeiten ist der Vergleicher inaktiv.
Durch die beschriebenen Maßnahmen kann erreicht werden, daß das auszuführende Softwareprogramm nur ausgeführt werden kann, wenn und so lange kein wie auch immer zustande gekommener Rücksprungadressenfehler detektiert wird.
Das unter Bezugnahme auf die Figur 1 beschriebene Beispiel kann als praktische Realisierung eines bei Bedarf ansprechen- den Rücksprungadressen-Verwendungsschutzes angesehen werden.
Obgleich dies nicht näher anhand von Beispielen beschrieben wird, ist es dabei nicht unbedingt erforderlich, daß die den jeweiligen Rücksprungadressen zugeordneten Sicherungsinforma- tionen die Rücksprungadressen selbst sind. Alternativ kann vorgesehen werden, daß nur ausgewählte Teile der Rücksprungadresse oder die Rücksprungadresse auf beliebige andere Art und Weise repräsentierende oder charakterisierende Daten als Sicherungsinformation verwendet werden. Der Vergleicher 5 wäre dann gegebenenfalls natürlich durch eine entsprechend den gegebenen Umständen veränderte Gegenüberstellungseinrichtung zu ersetzen.
Eine alternative Realisierung der angestrebten Programm- ablaufÜberwachung ist der nun unter Bezugnahme auf die Figur 2 beschriebene Rücksprungadressen-Überschreibschutz . Die Figur 2 zeigt unter anderem einen Speicher 11, der sich in einen ersten Speicherbereich in Form eines Stack 11a und einen zweiten Speicherbereich in Form eines Sicherungsspeichers llb unterteilen läßt.
Der Stack lla entspricht dem in der Figur 1 gezeigten Stack 1. Der Sicherungsspeicher llb entspricht in etwa dem in der Figur 1 gezeigten Sicherungsspeicher 3; allerdings wird der Sicherungsspeicher llb mit anderen Sicherungsinformationen beschrieben als dies beim Sicherungsspeicher 3 der Fall ist.
Wie der Sicherungsspeicher 3 ist auch der Sicherungsspeicher llb nicht von außerhalb der das zu überwachende Softwareprogramm ausführenden Einrichtung ansprechbar. D.h., daß auch bei dieser Variante der ProgrammabiaufÜberwachung im Sicherungsspeicher gespeicherte Informationen nicht oder jedenfalls nicht mit vertretbarem Aufwand manipulierbar sind.
Die in den Sicherungsspeicher llb eingespeicherte Sicherungs- Information besteht aus einem Schreibschutzbit, das auf "1" gesetzt ist, wenn der Inhalt des zugeordneten Stackbereichs nicht überschrieben werden darf, und das auf "0" gesetzt ist, wenn der Inhalt des zugeordneten Stackbereichs überschrieben werden darf .
Gilt es, wie beispielsweise im Fall eines LCALL-Befehls, eine Rücksprungadresse im Stack lla zu speichern, so wird dies in der üblichen Art und Weise veranlaßt.
Zugleich wird in den dem Stackbereich, in welchem die Rücksprungadresse eingeschrieben wurde, zugeordneten Bereich des Sicherungsspeichers llb eine "1" eingeschrieben, um dadurch zu kennzeichnen, daß der entsprechende Stackbereich nicht überschrieben werden darf .
Im betrachteten Beispiel sei der Stack lla in jeweils 8 Bits umfassende Bereiche unterteilt, wobei jedem der 8-Bit-Berei- ehe ein im Sicherungsspeicher llb gespeichertes Schreibschutzbit zugeordnet ist. Geht man davon aus, daß mit 16-Bit- Adressen gearbeitet wird, so werden zur Abspeicherung einer Rücksprungadresse zwei Stackbereiche benötigt.
Gemäß der Darstellung in der Figur 2 ist eine Rücksprung- adresse im Stack lla gespeichert. Die Rücksprungadresse setzt sich aus einem die höherwertigen acht Bits umfassenden Teil (PCH) und einem die niederwertigen acht Bits umfassenden Teil (PCL) zusammen. Sowohl dem PCH enthaltenden Stackbereich als auch dem PCL enthaltenden Stackbereich ist "1" als Sicherungsinformation bzw. Schreibschutzbit zugeordnet.
Die jeweiligen SicherungsInformationen bzw. Schreibschutzbits werden auf "0" zurückgesetzt, wenn die im zugeordneten Stackbereich gespeicherten Daten als Rücksprungadresse verwendet wurden .
Vor jedem Versuch, Daten in den Stack zu schreiben (dort ge- speicherte Daten zu überschreiben) wird die dem zu beschreibenden Stackbereich zugeordnete Sicherungsinformation (das zugeordnete Schreibschutzbit) ausgewertet, um festzustellen, ob das Beschreiben des Stack an dieser Stelle erlaubt ist.
Hat die zugeordnete Sicherungsinformation bzw. das zugeordnete Schreibschutzbit den Wert "1", so ist das Beschreiben des Stack an dieser Stelle nicht gestattet; der Schreibversuch wird als Manipulationsversuch oder Hard- oder Softwarefehler erkannt. Hat die zugeordnete Sicherungsinformation bzw. das zugeordnete Schreibschutzbit hingegen den Wert "0", so ist das Beschreiben des Stack an dieser Stelle zulässig.
Die Entscheidung über die Zulässigkeit des Beschreiben eines bestimmten Stackbereichs wird durch eine Schreibschutzüber- prufungsschaltung, welche im betrachteten Beispiel durch ein UND-Glied 12 realisiert ist, überprüft. An das UND-Glied 12 werden als EingangsSignale das dem zu beschreibenden Stack- bereich zugeordnete Schreibschutzbit und ein den Schreibwunsch signalisierendes Signal Write_Stack verwendet, wobei Write_Stack den Wert "1" annehmen möge, wenn ein Schreibwunsch besteht, und wobei Write_Stack den Wert "0" annehmen möge, wenn kein Schreibwunsch besteht. Das Ausgangssignal Valid_Write des UND-Gliedes 12 zeigt dann an, ob das beabsichtigte Beschreiben des betreffenden Stackbereichs gestattet ist (Valid_Write = "0") oder ob es unzulässig ist (Valid_Write = "1"). Das Ausgangssignal Valid_Write des UND- Gliedes 12 kann wie das Ausgangssignal NMI des Vergleichers 5 in Figur 1 dazu verwendet werden, um das Programm sofort abzubrechen und/oder das das Programm abarbeitende System zurückzusetzen und/oder einen Alarm auszulösen und/oder sicher- heitsrelevante Daten zu löschen.
Zusätzlich zu diesem Rücksprungadressen-Überschreibschutz kann ein gegenüber der Ausführung gemäß der Figur 1 modifizierter Rücksprungadressen-Verwendungsschutz in das System nach Figur 2 integriert werden. Dieser zusätzliche Schutz- mechanismus besteht darin, daß aus dem Stack lla gelesene Daten vor deren Verwendung als Rücksprungadresse daraufhin überprüft werden, ob sie überhaupt eine Rücksprungadresse repräsentieren. Dies kann an den den jeweiligen Stackbereichen zugeordneten Sicherungsinformationen bzw. Schreibschutzbits ersehen werden. Nur wenn die dem auszulesenden Stackbereich zugeordneten Sicherungsinformationen bzw. Schreibschutzbits den Wert "1" haben, repräsentieren die im entsprechenden Stackbereich gespeicherten Daten eine Rücksprungadresse . Voraussetzung hierfür ist dann natürlich, daß die Sicherungs- Informationen bzw. Schreibschutzbits ausschließlich für Rück- sprungadressen repräsentierende Daten, also beispielsweise im Anschluß an einen CALL-Befehl oder dergleichen in den Stack lla geschriebene Daten auf "1" gesetzt werden.
Dieser zusätzliche Schutzmechanismus ist gemäß der Darstellung in der Figur 2 durch ein UND-Glied 13 realisiert. An das UND-Glied 13 werden als Eingangssignale das dem auszulesenden Stackbereich zugeordnete Schreibschutzbit und ein den Verwen¬ dungszweck der gelesenen Daten signalisierendes Signal Read_Stack verwendet, wobei Read_Stack den Wert "1" annehmen möge, wenn, wie beispielsweise beim Vorliegen eines RET- Befehls eine Verwendung als Rücksprungadresse beabsichtigt ist, und wobei Read_Stack den Wert "0" annehmen möge, wenn eine anderweitige Verwendung beabsichtigt ist. Das Ausgangssignal Valid_Read des UND-Gliedes 13 zeigt dann an, ob die Verwendung der angeforderten Daten als Rücksprungadresse ge- stattet ist (Valid_Read = "1") oder ob sie unzulässig ist (Valid_Read = "0"). Tritt bei einer Rücksprungadressen- anforderung der Fall auf, daß die Verwendung der aus dem Stack lla angeforderten Daten als Rücksprungadresse durch Valid_Read = "0" als unzulässig einzustufen ist, so kann dies als Manipulationsversuch oder als Hard- oder Softwarefehler interpretiert werden und zum Anlaß für die Einleitung geeigneter Schutzmaßnahmen genommen werden. Diese Maßnahmen können insbesondere in einem sofortigen Programmabbruch und/oder einem Zurücksetzen des das Softwareprogramm abarbeitenden Systems und/oder dem Auslösen eines Alarms und/oder dem Löschen von sicherheitsrelevanten Daten bestehen.
Gemäß der vorstehenden Beschreibung bestehen die vor einem externen Zugriff geschützten Sicherungsinformationen aus einem Schreibschutzbit. Es versteht sich von selbst, daß statt dessen eine aus beliebig vielen und beliebige Bedeutung aufweisende Bits bestehende Kennung verwendet werden kann, durch die nicht nur Rücksprungadressen, sondern auch beliebige andere schützenswerte Daten einer Sonderbehandlung zum Schutz derselben vor Manipulation und Fehlern unterziehbar sind.
Der Sicherungsspeicher, in welchem die verschiedenen Sicherungsinformationen gespeichert werden, ist, wie vorstehend bereits mehrfach erwähnt wurde, ein extern nicht gezielt ansprechbarer Speicher. Er ist vorzugsweise in der das zu überwachende Softwareprogramm ausführenden Einrichtung, also in der Regel einem Mikroprozessor, einem Mikrocontroller oder einem Signalprozessor selbst untergebracht; dort ist er gegen Zugriffe von außen besonders gut geschützt. Die Realisierung eines von außen nicht ansprechbaren Speichers innerhalb eines Mikroprozessors, eines Mikrocontrollers oder eines Signal- Prozessors (z.B. in Form eines hidden bzw. shadow Stack) ist relativ einfach möglich. Hierzu bedarf es lediglich einer entsprechenden Modifizierung der Kernel-Software .
Der Einsatz eines der vorstehend beschriebenen Verfahren erfordert keine darüber hinausgehenden /Änderungen in der Hardware und der Software. Insbesondere kann der Stack wie bisher weiterverwendet werden .
Es wurde mithin ein Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen gefunden, durch welches auf einfach Weise und ohne Softwareänderungen insbesondere gezielte Manipulationen des Programmablaufs, aber teilweise auch Hard- und Softwarefehler weitestgehend ausgeschlossen werden können.

Claims

Patentansprüche
l. Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen, d a d u r c g e k e n n z e i c h n e t, daß das Überschreiben von zur späteren Verwendung gespeicherten Rücksprungadressen und/oder die Verwendung von fehlerhaft gespeicherten oder uberschriebenen Rücksprungadressen als Rücksprungadresse verhindert werden.
2. Verfahren nach Anspruch 1, d a d u r c h g e k e n n z e i c h n e t, daß der Rücksprungadressen-Überschreibschutz und der Rücksprungadressen-Verwendungsschutz unter Auswertung von Siche- rungsinformationen erfolgen, welche beim Speichern der Rücksprungadressen generiert und in einen Sicherungsspeicher eingespeichert werden.
3. Verfahren nach Anspruch 2 , d a d u r c h g e k e n n z e i c h n e t, daß als Sicherungsspeicher ein von außerhalb des das zu überwachende Softwareprogramm ausführenden Systems nicht gezielt ansprechbarer Speicher verwendet wird.
4. Verfahren nach Anspruch 2 oder 3, d a d u r c h g e k e n n z e i c h n e t, daß als Sicherungsspeicher ein in einem das Softwareprogramm ausführenden Mikroprozessor, Mikrocontroller oder Signal- Prozessor vorgesehener Speicher verwendet wird.
5. Verfahren nach einem der Ansprüche 2 bis 4, d a d u r c h g e k e n n z e i c h n e t, daß als Sicherungsinformation die Rücksprungadresse selbst oder diese repräsentierende oder charakterisierende Daten verwendet werden.
6. Verfahren nach Anspruch 5 , d a d u r c h g e k e n n z e i c h n e t, daß gespeicherte Daten vor deren Verwendung als Rücksprung- adresse der zugeordneten Sicherungsinformation gegenübergestellt werden, wobei die Verwendung der Daten als Rück- sprungadresse nur zugelassen wird, wenn festgestellt wird, daß die Sicherungsinformation die gespeicherten Daten repräsentieren oder charakterisieren.
7. Verfahren nach Anspruch 5 oder 6, d a d u r c h g e k e n n z e i c h n e t, daß dann, wenn bei einer Anforderung von eine Rücksprungadresse repräsentierenden Daten festgestellt wird, daß die Sicherungsinformation die im Ansprechen auf die Anforderung erhaltenen Daten nicht repräsentiert oder charakterisiert, ein sofortiger Programmabbruch und/oder ein Zurücksetzen des das Softwareprogramm abarbeitenden Systems und/oder ein Auslösen eines Alarms und/oder ein Löschen von sicherheitsrelevanten Daten veranlaßt wird.
8. Verfahren nach einem der Ansprüche 2 bis 4, d a d u r c h g e k e n n z e i c h n e t, daß als Sicherungsinformation einen Schreibschutz signalisierende Schreibschutzkennungen gespeichert werden.
9. Verfahren nach Anspruch 8, d a d u r c h g e k e n n z e i c h n e t, daß ein Überschreiben von Speicherbereichen, für die die Schreibschutzkennungen einen Schreibschutz signalisieren, unterbunden wird.
10. Verfahren nach Anspruch 8 oder 9, d a d u r c h g e k e n n z e i c h n e t, daß dann, wenn beim Versuch des Überschreibens eines Speicherbereichs festgestellt wird, daß die zugeordnete Siche- rungsinformation einen Schreibschutz signalisiert, ein sofortiger Programmabbruch und/oder ein Zurücksetzen des das Softwareprogramm abarbeitenden Systems und/oder ein Auslösen eines Alarms und/oder ein Löschen von sicherheitsrelevanten Daten veranlaßt wird.
11. Verfahren nach einem der Ansprüche 8 bis 10, d a d u r c "h g e k e n n z e i c h n e t, daß vor der Verwendung gespeicherter Daten als Rücksprungadresse die zugeordneten Sicherungsinformation abgefragt wird, wobei die Verwendung der Daten als Rücksprungadresse nur zugelassen wird, wenn festgestellt wird, daß die Siche- rungsinformation einen Schreibschutz signalisiert.
12. Verfahren nach Anspruch 11, d a d u r c h g e k e n n z e i c h n e t, daß dann, wenn bei einer Anforderung von eine Rücksprung- adresse repräsentierenden Daten festgestellt wird, daß die zugeordnete Sicherungsinformation keinen Schreibschutz signalisiert, ein sofortiger Programmabbruch und/oder ein Zurücksetzen des das Softwareprogramm abarbeitenden Systems und/oder ein Auslösen eines Alarms und/oder ein Löschen von sicherheitsrelevanten Daten veranlaßt wird.
PCT/DE1998/000133 1997-01-15 1998-01-15 Verfahren zur überwachung der bestimmungsgemässen ausführung von softwareprogrammen WO1998032072A1 (de)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP53352198A JP2001511271A (ja) 1997-01-15 1998-01-15 ソフトウェアプログラムの規定通りの実行を監視するための方法
UA99074040A UA55438C2 (uk) 1997-01-15 1998-01-15 Спосіб контролю приписаного виконання програм
EP98906810A EP0951673B1 (de) 1997-01-15 1998-01-15 Verfahren zur überwachung der vorgeschriebenen ausführung von softwareprogrammen
DE59800589T DE59800589D1 (de) 1997-01-15 1998-01-15 Verfahren zur überwachung der vorgeschriebenen ausführung von softwareprogrammen
BR9806770-2A BR9806770A (pt) 1997-01-15 1998-01-15 Processo para controle da execução de acordo com a determinação de programas de software
AT98906810T ATE200358T1 (de) 1997-01-15 1998-01-15 Verfahren zur überwachung der vorgeschriebenen ausführung von softwareprogrammen

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
WO1998032072A1 true WO1998032072A1 (de) 1998-07-23

Family

ID=7817440

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/DE1998/000133 WO1998032072A1 (de) 1997-01-15 1998-01-15 Verfahren zur überwachung der bestimmungsgemässen ausführung von softwareprogrammen

Country Status (12)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009005764A1 (de) 2009-01-23 2010-07-29 Giesecke & Devrient Gmbh Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Unterprogramms

Families Citing this family (30)

* 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 攻撃対策装置
WO2005020069A1 (ja) * 2003-08-25 2005-03-03 Denki Hompo Ltd. コンピュータシステムのcpu(中央処理装置)
KR100777938B1 (ko) * 2003-09-04 2007-11-21 싸이언스 파크 가부시키가이샤 부정 코드 실행의 방지 방법, 및 부정 코드 실행의 방지용 프로그램의 기록매체
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
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
CN108701192B (zh) 2016-02-12 2022-05-31 汉阳大学校产学协力团 安全半导体芯片及其工作方法
WO2017138797A1 (ko) * 2016-02-12 2017-08-17 한양대학교 산학협력단 시큐어 시스템 온 칩
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 Акционерное общество "Лаборатория Касперского" Система и способ выявления уязвимостей с использованием перехвата вызовов функций

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0010186A1 (de) * 1978-10-23 1980-04-30 International Business Machines Corporation Vorrichtung zum Bearbeiten bezeichneter Hinweise
EP0011136A1 (de) * 1978-11-13 1980-05-28 International Business Machines Corporation Schaltungsanordnung zum Integritätsschutz für einen Lese-/Schreib-Steuerspeicher
US5274817A (en) * 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
DE19614904A1 (de) * 1996-04-16 1997-10-23 Philips Patentverwaltung Verfahren und System zum Freigeben der Ausführung zugelassener Programme

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
JP3421526B2 (ja) * 1997-02-14 2003-06-30 モトローラ株式会社 デ−タ処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0010186A1 (de) * 1978-10-23 1980-04-30 International Business Machines Corporation Vorrichtung zum Bearbeiten bezeichneter Hinweise
EP0011136A1 (de) * 1978-11-13 1980-05-28 International Business Machines Corporation Schaltungsanordnung zum Integritätsschutz für einen Lese-/Schreib-Steuerspeicher
US5274817A (en) * 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
DE19614904A1 (de) * 1996-04-16 1997-10-23 Philips Patentverwaltung Verfahren und System zum Freigeben der Ausführung zugelassener Programme

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
UWE WILDNER: "Compiler assisted self-checking of structural integrity using return address hashing", PROCEEDING OF 2ND EUROPEAN DEPENDABLE COMPUTING CONFERENCE, EDCC-2, TAORMINA, ITALY, 2 October 1996 (1996-10-02) - 4 October 1996 (1996-10-04), ISBN 3-540-61772-8, 1996, BERLIN, SPRINGER-VERLAG, pages 161 - 177, XP002068242 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009005764A1 (de) 2009-01-23 2010-07-29 Giesecke & Devrient Gmbh Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Unterprogramms

Also Published As

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

Similar Documents

Publication Publication Date Title
EP0951673B1 (de) Verfahren zur überwachung der vorgeschriebenen ausführung von softwareprogrammen
EP0512542B1 (de) Datenschützende Mikroprozessorschaltung für tragbare Datenträger, beispielsweise Kreditkarten
EP0011685B1 (de) Programmierbare Speicherschutzeinrichtung für Mikroprozessorsysteme und Schaltungsanordnung mit einer derartigen Einrichtung
DE4331703C2 (de) Elektronische Einrichtung
DE19944991A1 (de) Verfahren zur Sicherung eines Programmablaufs
EP1358558B1 (de) Mikroprozessorschaltung für datenträger und verfahren zum organisieren des zugriffs auf in einem speicher abgelegten daten
EP1449084B1 (de) Kontrollierte programmausführung durch einen tragbaren datenträger
WO2000070620A1 (de) Speicheranordnung mit adressverwürfelung
EP0657820B1 (de) Verfahren zum Verhindern einer unberechtigten Datenänderung bei einer Vorrichtung mit einem nichtflüchtigen Speicher
EP1262856A2 (de) Programmgesteuerte Einheit
DE2810421A1 (de) Speicherschutzeinrichtung
DE102006009214B4 (de) Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers
EP0276450A1 (de) Datenschutzschaltung zur Sperrung der Uebertragung von Signalen über einen Bus
EP1664978B1 (de) Vorrichtung und verfahren zur sicheren ausführung eines programmes
DE10315726A1 (de) Programmgesteuerte Einheit
DE10315727A1 (de) Programmgesteuerte Einheit
EP1611515B1 (de) Programmgesteuerte einheit
EP2652665B1 (de) Portabler datenträger mit fehlbedienungszähler
DE19709975C2 (de) Mikrocomputer
EP1892639B1 (de) Sichere Programmcodeausführung
DE10247794B4 (de) Verwalten eines Fehlversuchszählers in einem tragbaren Datenträger
EP0214390A1 (de) Freigabeverfahren für einen zugriffskontrollierten Anwenderspeicher und Anordnung zur Durchführung des Verfahrens
DE10110050A1 (de) Verfahren zur Absicherung sicherheitskritischer Programmteile vor versehentlicher Ausführung und eine Speichereinrichtung zur Durchführung dieses Verfahrens
DE10315637A1 (de) Programmgesteuerte Einheit
EP1329903B1 (de) Speichereinrichtung, die durch eine einen oder mehrere Schreibzugriffe umfassende Kommandosequenz in eine Testbetriebsart versetzbar ist

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 98801856.X

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

Designated state(s): BR CN JP KR MX RU UA US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 1998906810

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1019997006351

Country of ref document: KR

ENP Entry into the national phase

Ref document number: 1998 533521

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: PA/a/1999/006559

Country of ref document: MX

WWE Wipo information: entry into national phase

Ref document number: 09354132

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 1998906810

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1019997006351

Country of ref document: KR

WWG Wipo information: grant in national office

Ref document number: 1998906810

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1019997006351

Country of ref document: KR