EP4666196A1 - Verfahren zur Einbettung einer Anwendung in eine Echtzeitumgebung - Google Patents

Verfahren zur Einbettung einer Anwendung in eine Echtzeitumgebung

Info

Publication number
EP4666196A1
EP4666196A1 EP24700101.9A EP24700101A EP4666196A1 EP 4666196 A1 EP4666196 A1 EP 4666196A1 EP 24700101 A EP24700101 A EP 24700101A EP 4666196 A1 EP4666196 A1 EP 4666196A1
Authority
EP
European Patent Office
Prior art keywords
application
executed
runtime
sandbox
real
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
EP24700101.9A
Other languages
English (en)
French (fr)
Inventor
Arne HAMANN
Dakshina Narahari Dasari
Anthony Rowe
Nuno Pereira
Franz-Josef Grosch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Carnegie Mellon University
Original Assignee
Robert Bosch GmbH
Carnegie Mellon University
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 Robert Bosch GmbH, Carnegie Mellon University filed Critical Robert Bosch GmbH
Publication of EP4666196A1 publication Critical patent/EP4666196A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Definitions

  • the present invention relates to a method for embedding at least one application in a real-time environment.
  • the invention also relates to a computer program and a data processing device.
  • Programmable logic controllers are embedded computers designed to control industrial processes.
  • a common architecture of PLC software is to use a real-time operating system (OS) to predictably execute the PLC system software, also known as the PLC runtime.
  • OS real-time operating system
  • the PLC runtime is responsible for executing the PLC control logic.
  • the PLC control logic is executed within a scan cycle controlled by the PLC runtime: it samples the inputs 55 and outputs 50 (I/Os) to update the internal variable table, executes the control logic, and updates the resulting I/Os.
  • the PLC control logic executes this scan cycle continuously.
  • This architecture is widely used in modern industrial production plants to control safety-critical industrial control systems (ICS - Industrial Control System).
  • PLC control logic Since the PLC control logic is executed by the PLC runtime, it is difficult to implement multiple programming within the PLC. All code executed by the PLC runtime must be trusted, and a faulty component (e.g. causing a runtime error) can affect and destroy the entire system. Although the PLC runtime can be made immune to some faults, this usually means that PLC control logic must be trusted to some degree, which is why PLC programs are usually generated from specific programming models (e.g. ladder, function block programs or structured text) that exclude modern programming languages and tend to limit functional complexity and expressiveness to reduce the likelihood of introducing critical errors into the PLC programs. PLC runtimes that support general-purpose languages for advanced use cases must be carefully developed and debugged by highly specialized developers to avoid compromising the entire PLC system. This is a costly and error-prone process.
  • specific programming models e.g. ladder, function block programs or structured text
  • One aspect of the invention comprises a method for embedding at least one application in a real-time environment.
  • the real-time environment can be provided by a programmable logic controller, also referred to as PLC, in particular such that the PLC can be used to execute the at least one application.
  • PLC programmable logic controller
  • the application can be configured as a program for the PLC.
  • the method may comprise receiving the at least one application, in particular by the real-time environment, preferably the PLC.
  • the at least one application may be received as an intermediate representation, in particular a byte code.
  • the method may comprise providing a sandbox for the at least one application, in particular the received application.
  • the application can be executed in the sandbox. Therefore, the method can also include applying the sandbox to the at least one application.
  • the method can comprise executing the at least one application executed in the sandbox.
  • the application can be executed in particular by the PLC.
  • the execution can be based on an interpretation of the at least one application executed in the sandbox using a virtualization runtime of the real-time environment, preferably by a virtualization runtime.
  • the intermediate representation can be extended by the runtime to provide at least one real-time and/or security function for the at least one application executed in the sandbox.
  • the extension can be possible by injecting code, in particular bytecode, that provides the real-time and/or security function into the intermediate representation.
  • the real-time function can be used to enable the application to be executed under real-time conditions.
  • the security function can enable a safer execution of the application, for example by providing redundancy capabilities.
  • the invention can thereby enable the provision of a mechanism for embedding critical applications in a runtime.
  • the virtualization runtime, or runtime for short can also be referred to as SafeRT (for “safe runtime”) and/or as runtime environment and/or system software.
  • SafeRT for “safe runtime”
  • the proposed mechanism may enable further use of WASM, also known as WebAssembly, which is a well-known standard for defining a portable binary code format and a corresponding text format for executable programs, as well as software interfaces for enabling interactions between such programs and their host environment.
  • the extension also known as code injection, can enable instrumentation of the application.
  • the security feature can allow multiple versions of the application to be executed in the virtualization runtime to ensure redundancy of the application.
  • the real-time and/or security function may provide redundancy of the application and/or monitoring of the application and/or analysis of the application and/or a watchdog for the application.
  • the SafeRT may therefore provide additional security protection by redundantly executing functionally equivalent, automatically generated versions of the at least one application across heterogeneous hardware architectures.
  • the SafeRT may use injected monitoring and assertion code in the application, in particular PLC program logic, to continuously analyze the data and control flow. This may be used to detect and respond to errors and attacks.
  • the intermediate representation is a bytecode, in particular WebAssembly.
  • applications executed by the SafeRT can be compiled into WASM. Ergo, this allows code analysis and transformations to check and enforce program properties and/or to inject monitoring and assertions to enforce properties and/or to generate different program versions to be executed redundantly.
  • the virtualization runtime may provide a virtualization mechanism for securely embedding applications, in particular programs, into PLC runtime systems.
  • the virtualization runtime may accept and interpret intermediate bytecode representations of a program.
  • the real-time environment can be configured as a hardware device, in particular an embedded computer, preferably a programmable logic controller.
  • the extension of the intermediate representation by the runtime comprises injecting monitoring and/or assertion code into the intermediate representation, in particular bytecode, in order to provide the at least one real-time and/or security function, in particular for detecting and preventing errors and attacks, wherein preferably different versions of the sandboxed application are generated and executed redundantly.
  • a compliance checker can be used to inject the code.
  • the compliance checker can be configured as a software and/or hardware component of the real-time environment.
  • the method according to the invention can provide software fault isolation between different applications, in particular PLC programs, and support general-purpose languages that are designed to be executed safely within the PLC runtime and to ensure real-time properties of the programs.
  • the method according to the invention may enable redundant execution of PLC programs, which may be used to detect errors. These properties may be achieved by using a common intermediate representation of PLC programs (WASM) and by performing code analysis and transformations to ensure properties at runtime. Another feature of the mechanism provided by the invention may be to utilize the common intermediate representation of PLC programs to detect and mitigate attacks on the control system by injecting monitoring and assertion code into the program logic.
  • WASM common intermediate representation of PLC programs
  • the runtime provides a multi-programming environment for simultaneously performing the execution of several of the at least one sandboxed application.
  • the at least one application may comprise several applications, for example at least two or at least three applications, that are executed simultaneously.
  • the runtime can be configured to provide software fault isolation between the application running in the sandbox and other applications running in the real-time environment and/or between the multiple applications running in the sandbox.
  • the method according to the invention can thereby provide a safe multi-programming environment for the PLC runtime. This allows multiple programs to coexist through software fault isolation that prevents errors from propagating to other programs or to the rest of the system.
  • Another advantage of the invention can be To provide support for general-purpose languages, such as various general-purpose languages (e.g. C, C++), with security guarantees provided by the system and with little or no developer effort.
  • the virtualization runtime can follow a skill-based execution model. That is, programs are denied access to resources by default and are only given access to the system resources they absolutely need to run.
  • the runtime can therefore include system access primitives tailored to the industrial automation domain to provide precise access to specific devices (modules, drives, etc.).
  • the method according to the invention may provide additional security protection through redundant execution of functionally equivalent, automatically generated versions of the applications across heterogeneous HW architectures (i.e. hardware architectures).
  • enhanced fault and attack detection may be provided.
  • the method according to the invention may use injected monitoring and assertion code in the PLC program logic to continuously analyze the data and control flow. This may be used to detect and respond to faults and attacks.
  • secure updates may be provided since the applications may contain their code and a specification of program properties.
  • real-time aware orchestration can be provided.
  • continuous monitoring of the resource usage of the applications can be provided.
  • the underlying operating system e.g., the scheduling parameters
  • This feature can be crucial to account for different importance and QoS requirements among the applications, as well as to enable the on-the-fly addition of new applications in a running system.
  • a system interface is provided to allow the sandboxed application controlled access to resources in an industrial control system.
  • multiple versions of the sandboxed application are executed by the runtime.
  • a runtime election mechanism may be provided for checking results of the multiple versions, in particular for providing redundancy of the sandboxed execution.
  • the runtime election mechanism may be provided by a redundancy module.
  • a runtime component also referred to as SafeRT WASM runtime
  • SafeRT system interface configured to enable controlled access to resources in an industrial control system
  • a compliance checker also referred to as SafeRT compliance checker
  • SafeRT redundancy module configured to provide a compile-time tool coupled to a runtime election mechanism to support application redundancy across heterogeneous HW architectures.
  • the application executed in the sandbox can be configured as a safety-relevant application, in particular for the automatic control of a vehicle.
  • the vehicle can be configured as a motor vehicle and/or passenger car and/or autonomous vehicle for autonomous driving.
  • a computer program in particular a computer program product, can be provided which comprises instructions which, when the computer program is executed by a computer, cause the computer to carry out the method according to the invention. Accordingly, the computer program according to the invention can have the same advantages as those described in detail with reference to a method according to the invention.
  • a device for data processing also referred to as a data processing device, which is configured to carry out the method according to the invention.
  • a computer can be provided which executes the computer program according to the invention.
  • the computer can comprise at least one processor which can be used to execute the computer program.
  • a non-volatile data memory can be provided in which the computer program can be stored and from which the computer program can be read by the processor in order to execute it.
  • a computer-readable storage medium which comprises the computer program according to the invention.
  • the storage medium can be designed as a data storage device, for example a hard disk drive and/or a non-volatile memory and/or a memory card and/or a solid state drive.
  • the storage medium can for example be integrated into the computer.
  • the method according to the invention can be implemented as a computer-implemented method.
  • Fig. 1 a method, a computer program and a device according to
  • Fig. 2-6 further exemplary illustrations of embodiments of the invention.
  • Fig. 1 illustrates a method 100 according to embodiments of the invention.
  • the method 100 can be used to embed at least one application 20 in a real-time environment, as shown in Figs. 2 to 6.
  • the real-time environment can be provided by a programmable logic controller 31.
  • the at least one application 20 can be received, wherein the at least one application 20 can be received as an intermediate representation.
  • the at least one application 20 can be provided in a bytecode format that allows the same code to be executed across platforms, i.e. on different devices.
  • the intermediate representation and in particular the bytecode can be a form of instruction set designed for efficient execution by a software interpreter.
  • a sandbox 80 can be provided for the at least one received application 20.
  • the at least one application 21 executed in the sandbox can be executed, in particular within the sandbox, wherein the execution 103 can be carried out based on an interpretation of the at least one application 21 executed in the sandbox, in particular its intermediate representation (bytecode), using a virtualization runtime 35 of the real-time environment.
  • the intermediate representation can also be extended by the virtualization runtime 35 in order to provide at least one real-time and/or security function for the at least one application 21 executed in the sandbox.
  • Lightweight virtualization runtimes can accept and interpret intermediate bytecode representations of a program, which may be generated from a wide variety of source languages.
  • the intermediate bytecode can be extended, i.e. modified, before being converted to raw machine code 65 C>Ahead-of-time" or "Just-in-time" to enable hooks for resource metering, replication, and usage limiting without special hardware.
  • An example of a secure and protected runtime target well suited to PLC environments is WebAssembly (Wasm), but there are other similar procedural virtual machines with intermediate languages such as eBPF, JVM, and LLVM-IR.
  • Wasm is a binary instruction format for a stack-based virtual machine. It is a safe, fast, and portable low-level bytecode format designed for efficient validation and compilation, and safe execution with little to no overhead. Wasm also provides software-based fault isolation in terms of memory safety and control flow integrity. It prevents accesses to memory outside its sandbox by restricting loads and stores to linear memory, and ensures that branches/jumps in code only go to the intended addresses. It prevents buffer overflows using a separate data stack and overwriting function pointers by calling function references only from a table of checked functions.
  • a system interface 36 can be provided to allow the application 21 executed in the sandbox controlled access to resources in an industrial control system 5.
  • the application 21 executed in the sandbox can be configured as a safety-relevant application 20, in particular for automatically controlling a vehicle 3.
  • Fig. 1 also shows a computer program 20 and a
  • Data processing device 10 according to embodiments of the invention.
  • embodiments of the invention may provide at least one of the following:
  • trusted applications can be deployed directly, while untrusted applications can be sandboxed using the mechanism outlined.
  • Fine-grained virtualization of PLC programs Although virtualized PLCs can enable the movement of entire PLC environments from the device to the (edge) cloud, the proposed mechanism goes even deeper into the PLC infrastructure and can provide finer granularity (moving individual programs) with greatly reduced overhead through platform-agnostic lightweight execution in the sandbox.
  • Real-time aware orchestration PLC systems implement the sampling cycle as shown in Fig. 6, which executes all PLC programs in sequence in the same way. However, there is no way to distinguish different levels of importance and QoS requirements among different PLC programs.
  • the proposed mechanisms enable the provisioning of system resources (e.g., CPU time) according to the individual real-time requirements of the PLC programs executing in the system.
  • a compliance checker 70 and a mechanism for automated code redundancy 75 may be provided.
  • Fig. 2 illustrates an embodiment according to the invention, wherein multiple applications 20 are executed using the proposed runtime 35 (SafeRT), which for this purpose exemplarily provides a Wasm-based sandbox 80 for each program 21.
  • Fig. 3 illustrates another embodiment of the invention, wherein the proposed runtime 35 coexists with one or more PLC runtimes 30.
  • This is a more complex scenario, wherein programs 21 executed by the proposed runtime share I/O with the PLC runtimes via a shared memory (shm) mechanism.
  • shm shared memory
  • Embodiments of the invention may provide a sandbox 80 for intermediate bytecode representations of a program 20 such as Wasm.
  • the sandbox 80 particularly the Wasm sandbox, may provide software fault isolation between multiple PLC programs 20.
  • embodiments of the invention may provide a custom dispatcher that uses the underlying OS 40 to provide real-time guarantees for the programs 20 under its execution.
  • the runtime environment may provide programs 20 with access to several system facilities previously unavailable in common PLC programming environments: files 37, secure communications 38, and other peripherals. This access may be provided by a system interface 36 provided by embodiments of the invention and designed with industrial platforms in mind (see Figure 4).
  • programs 20 executed by the proposed runtime 35 may be compiled into an intermediate bytecode representation such as WASM 60 and subjected to code analysis and transformations to check and enforce program properties, inject monitoring and assertions to enforce properties, and generate different program versions to be executed redundantly.
  • the system interface 36 may provide programs 20 with access to system resources on the PLC platform such as I/O, files, peripherals or communication interfaces. It may be designed in the same way as the Wasm System Interface (WASI) around the concept of capabilities and provides access to resources in an industrial control system 5 by given programs 20 a tamper-proof reference to an object/resource and a set of operations to which the capability entitles the holder.
  • Fig. 4 shows a detail of the system interface and the way in which it interacts with programs and the PLC host system.
  • a code generation process may be provided as shown in Figure 5.
  • programs 20 may be written in any Wasm supported language to be compiled 501 into Wasm bytecode.
  • the code may then be analyzed 502 to force the program 20 to be transformed into a program that conforms to the proposed runtime.
  • This step may be necessary to ensure that the programs 20 can meet real-time performance and do not have unbounded recursion or loops.
  • programs may need to include declarations that provide limits such as pragma statements supported by some compilers.
  • additional performance counters and traps may be inserted into the code to monitor the performance of the program at runtime and to control its execution in case of an exception.
  • This step could also include generating multiple versions of the program.
  • the tool chain may generate multiple versions of a program that may be executed at runtime.
  • These programs may have defined I/O (provided by the system interface) and execute with a defined structure, such as a scan cycle (implemented by a program development library) that defines a clear point at which I/O may be compared (at the end/start of each cycle).
  • the proposed runtime 35 may be responsible for checking whether the multiple versions of the program 20 produced the same result and act according to a policy specified by the developer, e.g. majority vote, min, max, or execution of an exception handler, which in turn is specified by the developer.
  • the proposed runtime 35 can resort to three strategies.
  • the first strategy is to perform address space randomization.
  • the second strategy is to perform code obfuscation, which transforms the code and keeps it equivalent. Together, they enable probabilistic detection of memory handling errors as well as program tampering attacks.
  • the third strategy is applicable with heterogeneous compute engines (e.g., comprising pCs and pPs). This creates diverse redundancy, and the execution of the PLC program is also protected against systematic HW errors.
  • Embodiments of the invention may be used for middleware for industrial automation. Furthermore, embodiments of the invention may be used for edge cloud orchestration in industrial automation and/or dedicated security testing software for applications used in industrial automation and/or dedicated automated code redundancy software for applications used in industrial automation and/or industrial automation platforms/ecosystems such as ctrIX World.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Programmable Controllers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Die Erfindung betrifft ein Verfahren (100) zur Einbettung mindestens einer Anwendung (20) in eine Echtzeitumgebung, wobei die Echtzeitumgebung durch eine speicherprogrammierbare Steuerung (31) bereitgestellt wird, umfassend die folgenden Schritte: - Empfangen (101) der mindestens einen Anwendung (20), wobei die mindestens eine Anwendung (20) als eine Zwischendarstellung empfangen wird, - Bereitstellen (102) eines Sandkastens (80) für die mindestens eine empfangene Anwendung (20), - Ausführen (103) der mindestens einen im Sandkasten ausgeführten Anwendung (21), wobei das Ausführen (103) basierend auf einer Interpretation der mindestens einen im Sandkasten ausgeführten Anwendung (21) unter Verwendung einer Virtualisierungslaufzeit (35) der Echtzeitumgebung erfolgt, wobei die Zwischendarstellung durch die Laufzeit (35) erweitert wird, um mindestens eine Echtzeit- und/oder Sicherheitsfunktion für die mindestens eine im Sandkasten ausgeführte Anwendung (21) bereitzustellen.

Description

Beschreibung
Titel
Verfahren zur einer in eine
Die vorliegende Erfindung betrifft ein Verfahren zur Einbettung mindestens einer Anwendung in eine Echtzeitumgebung. Ferner betrifft die Erfindung ein Computerprogramm sowie eine Datenverarbeitungsvorrichtung.
Stand der Technik
Speicherprogrammierbare Steuerungen, auch als SPS bezeichnet, sind eingebettete Computer, die auf die Steuerung industrieller Prozess zugeschnitten sind. Eine übliche Architektur von SPS-Software ist die Verwendung eines Echtzeit- Betriebssystems, kurz OS (Operating System), zur vorhersagbaren Ausführung der SPS-Systemsoftware, auch als SPS-Laufzeit bezeichnet. Die SPS-Laufzeit ist für die Ausführung der SPS-Steuerlogik verantwortlich. Die SPS- Steuerlogik wird innerhalb eines Abtastzyklus ausgeführt, der von der SPS- Laufzeit gesteuert wird: sie tastet die Eingaben 55 und Ausgaben 50 (kurz E/As) ab, um die interne Variabientabelle zu aktualisieren, führt die Steuerlogik aus und aktualisiert die resultierenden E/As. Die SPS-Steuerlogik führt diesen Abtastzyklus kontinuierlich aus. Diese Architektur ist in modernen industriellen Produktionsanlagen zum Steuern von sicherheitskritischen industriellen Steuersystemen (ICS - Industrial Control System) weit verbreitet.
Da die SPS-Steuerlogik von der SPS-Laufzeit ausgeführt wird, ist eine Realisierung von Mehrfachprogrammierung innerhalb der SPS schwierig. Sämtlicher von der SPS-Laufzeit ausgeführter Code muss vertrauenswürdig sein, und eine fehlerhafte Komponente (die z. B. einen Laufzeitfehler verursacht) kann das gesamte System beeinträchtigen und zerstören. Obwohl die SPS-Laufzeit gegen einige Fehler gemacht werden kann, bedeutet dies für gewöhnlich, dass die SPS-Steuerlogik bis zu einem gewissen Grad vertrauenswürdig sein muss, weshalb SPS-Programme für gewöhnlich aus spezifischen Programmiermodellen (beispielsweise Ladder, Funktionsblockprogrammen oder strukturiertem Text) generiert werden, die moderne Programmiersprachen ausschließen und dazu neigen, die funktionelle Komplexität und Aussagekraft einzuschränken, um die Wahrscheinlichkeit des Einführens kritischer Fehler in die SPS-Programme zu verringern. SPS-Laufzeiten, die Allzwecksprachen für hochentwickelte Anwendungsfälle unterstützen, müssen von hochspezialisierten Entwicklern sorgfältig entwickelt und ausgetestet werden, um eine Gefährdung des gesamten SPS-Systems zu vermeiden. Dies ist ein kostspieliger und fehleranfälliger Prozess.
Offenbarung der Erfindung
Gemäß Aspekten der Erfindung werden ein Verfahren mit den Merkmalen von Anspruch 1 , ein Computerprogramm mit den Merkmalen von Anspruch 9 sowie eine Datenverarbeitungsvorrichtung mit den Merkmalen von Anspruch 10 bereitgestellt. Weitere Merkmale und Details der Erfindung werden in den jeweiligen unabhängigen Ansprüchen, der Beschreibung und den Zeichnungen offenbart. Merkmale und Einzelheiten, die im Kontext des Verfahrens beschrieben werden, entsprechen auch dem Computerprogramm sowie der Datenverarbeitungsvorrichtung und jeweils umgekehrt.
Ein Aspekt der Erfindung umfasst ein Verfahren zur Einbettung mindestens einer Anwendung in eine Echtzeitumgebung. Die Echtzeitumgebung kann durch eine speicherprogrammierbare Steuerung, auch als SPS bezeichnet, bereitgestellt werden, insbesondere so, dass die SPS zum Ausführen der mindestens einen Anwendung verwendet werden kann. Die Anwendung kann als ein Programm für die SPS konfiguriert sein.
Das Verfahren kann ein Empfangen der mindestens einen Anwendung, insbesondere durch die Echtzeitumgebung, vorzugsweise die SPS, umfassen. Die mindestens eine Anwendung kann als eine Zwischendarstellung, insbesondere ein Bytecode, empfangen werden. Ferner kann das Verfahren ein Bereitstellen eines Sandkastens für die mindestens eine Anwendung, insbesondere die empfangene Anwendung, umfassen. Mit anderen Worten kann die Anwendung im Sandkasten ausgeführt werden. Daher kann das Verfahren auch ein Anwenden des Sandkastens auf die mindestens eine Anwendung umfassen.
Ferner kann das Verfahren ein Ausführen der mindestens einen im Sandkasten ausgeführten Anwendung umfassen. Mit anderen Worten kann die Anwendung insbesondere von der SPS ausgeführt werden. Das Ausführen kann basierend auf einer Interpretation der mindestens einen im Sandkasten ausgeführten Anwendung unter Verwendung einer, vorzugsweise durch eine, Virtualisierungslaufzeit der Echtzeitumgebung erfolgen. Die Zwischendarstellung kann durch die Laufzeit erweitert werden, um mindestens eine Echtzeit- und/oder Sicherheitsfunktion für die mindestens eine im Sandkasten ausgeführte Anwendung bereitzustellen. Die Erweiterung kann durch Injizieren von Code, insbesondere Bytecode, der die Echtzeit- und/oder Sicherheitsfunktion bereitstellt, in die Zwischendarstellung möglich sein. Die Echtzeitfunktion kann zum Ermöglichen der Ausführung der Anwendung unter Echtzeitbedingungen verwendet werden. Die Sicherheitsfunktion kann z. B. durch Bereitstellen von Redundanzfähigkeiten eine sicherere Ausführung der Anwendung ermöglichen. Die Erfindung kann dadurch die Bereitstellung eines Mechanismus zum Einbetten kritischer Anwendungen in eine Laufzeit ermöglichen. Im Kontext der Erfindung kann die Virtualisierungslaufzeit, oder kurz als Laufzeit bezeichnet, auch als SafeRT (für „safe runtime“ - sichere Laufzeit) und/oder als Laufzeitumgebung und/oder Systemsoftware bezeichnet werden. Der vorgeschlagene Mechanismus kann eine weitere Nutzung von WASM, auch als WebAssembly bezeichnet, ermöglichen, wobei es sich um ein bekannten Standard zum Definieren eines portierbaren Binärcodeformats und eines entsprechendes Textformats für ausführbare Programme sowie Softwareschnittstellen zum Ermöglichen von Interaktionen zwischen solchen Programmen und ihrer Hostumgebung handelt.
Die Erweiterung, insbesondere auch als Code-Injektion bezeichnet, kann ein Instrumentierung des Anwendung ermöglichen. Beispielsweise kann die Sicherheitsfunktion ermöglichen, dass mehrere Versionen der Anwendung in der Virtualisierungslaufzeit ausgeführt werden, um Redundanz der Anwendung bereitzustellen. Ferner kann die Echtzeit- und/oder Sicherheitsfunktion Redundanz der Anwendung und/oder Überwachung der Anwendung und/oder Analyse der Anwendung und/oder einen Watchdog für die Anwendung bereitstellen. Die SafeRT kann daher zusätzlichen Sicherheitsschutz durch redundante Ausführung von funktionell gleichwertigen, automatisch generierten Versionen der mindestens einen Anwendung über heterogene Hardwarearchitekturen bereitstellen. Ferner kann die SafeRT injizierten Überwachungs- und Assertionscode in der Anwendung, insbesondere SPS- Programmlogik, verwenden, um den Daten- und Steuerfluss kontinuierlich zu analysieren. Dies kann verwendet werden, um Fehler und Angriffe zu erkennen und darauf zu reagieren.
Es ist möglich, dass die Zwischendarstellung ein Bytecode, insbesondere WebAssembly, ist. Mit anderen Worten können von der SafeRT ausgeführte Anwendungen in WASM kompiliert werden. Ergo ermöglicht dies Codeanalyse und -transformationen, um Programmeigenschaften zu überprüfen und zu erzwingen und/oder Überwachung und Assertionen zum Erzwingen von Eigenschaften zu injizieren und/oder verschiedene Programmversionen zu generieren, die redundant ausgeführt werden sollen.
Die Virtualisierungslaufzeit kann einen Virtualisierungsmechanismus zum sicheren Einbetten von Anwendungen, insbesondere Programmen, in SPS- Laufzeitsysteme bereitstellen. Zu diesem Zweck kann die Virtualisierungslaufzeit Zwischen-Bytecode-Darstellungen eines Programms akzeptieren und interpretieren.
Die Echtzeitumgebung kann als Hardwaregerät, insbesondere ein eingebetteter Computer, vorzugsweise eine speicherprogrammierbare Steuerung, konfiguriert sein.
Es ist möglich, dass die Erweiterung der Zwischendarstellung durch die Laufzeit ein Injizieren von Überwachungs- und/oder Assertionscode in die Zwischendarstellung, insbesondere Bytecode, umfasst, um die mindestens eine Echtzeit- und/oder Sicherheitsfunktion insbesondere zum Erkennen und Verhindern von Fehlern und Angriffen bereitzustellen, wobei vorzugsweise verschiedene Versionen der im Sandkasten ausgeführten Anwendung generiert und redundant ausgeführt werden. Ein Compliance-Prüfer kann zum Injizieren des Codes verwendet werden. Der Compliance-Prüfer kann als Software- und/oder Hardwarekomponente der Echtzeitumgebung konfiguriert sein. Das Verfahren gemäß der Erfindung kann Softwarefehlerisolierung zwischen verschiedenen Anwendungen, insbesondere SPS-Programmen, bereitstellen und Allzwecksprachen unterstützen, die innerhalb der SPS-Laufzeit sicher ausgeführt werden und Echtzeiteigenschaften der Programme gewährleisten sollen.
Außerdem kann das Verfahren gemäß der Erfindung redundante Ausführung von SPS-Programmen ermöglichen, was zum Erkennen von Fehlern verwendet werden kann. Diese Eigenschaften können unter Verwendung einer üblichen Zwischendarstellung von SPS-Programmen (WASM) und durch Durchführen von Codeanalyse und -transformationen zum Gewährleisten von Eigenschaften bei Laufzeit erreicht werden. Ein anderes Merkmal des durch die Erfindung bereitgestellten Mechanismus kann das Nutzen der üblichen Zwischendarstellung von SPS-Programm zum Erkennen und Lindern von Angriffen auf das Steuersystem durch Injizieren von Überwachungs- und Assertionscode in die Programmlogik sein.
Es ist ferner möglich, dass die Laufzeit eine Mehrfachprogrammierumgebung zum gleichzeitigen Durchführen der Ausführung von mehreren der mindestens einen im Sandkasten ausgeführten Anwendung bereitstellt. Mit anderen Worten kann die mindestens eine Anwendung mehrere Anwendungen, zum Beispiel mindestens zwei oder mindestens drei Anwendungen, umfassen, die gleichzeitig ausgeführt werden.
Außerdem kann die Laufzeit zum Bereitstellen einer Softwarefehlerisolierung zwischen der im Sandkasten ausgeführten Anwendung und weiteren Anwendungen, die in der Echtzeitumgebung ausgeführt werden, und/oder zwischen den mehreren im Sandkasten ausgeführten Anwendungen konfiguriert werden. Das Verfahren gemäß der Erfindung kann dadurch eine sichere Mehrfachprogrammierumgebung für die SPS-Laufzeit bereitstellen. Dies ermöglicht, dass durch Softwarefehlerisolierung, die verhindert, dass sich Fehler zu anderen Programme oder zum Rest des Systems fortpflanzen, mehrere Programme koexistieren. Ein anderer Vorteil der Erfindung kann darin bestehen, Unterstützung für Allzwecksprachen, wie verschiedene Universalsprachen (z. B. C, C++), mit Sicherheitsgarantien, die vom System geboten werden, und ohne oder mit geringem Entwickleraufwand bereitzustellen.
Ferner kann ein feingranularer Systemzugriff bereitgestellt werden. Due Virtualisierungslaufzeit kann einem fähigkeitsbasierten Ausführungsmodell folgen. Das heißt, Programmen wird der Zugriff auf Ressourcen standardmäßig verwehrt, und sie erhalten nur Zugriff auf die Systemressourcen, die sie zum Ausführen unbedingt benötigen. Die Laufzeit kann daher Systemzugriffsprimitive umfassen, die auf die industrielle Automatisierungsdomäne zugeschnitten sind, um präzisen Zugriff auf spezifische Geräte (Module, Laufwerke usw.) bereitzustellen.
Ein anderer Vorteil kann erweiterte Fehlerresilienz sein. Das Verfahren gemäß der Erfindung kann zusätzlichen Sicherheitsschutz durch redundante Ausführung von funktionell gleichwertigen, automatisch generierten Versionen der Anwendungen über heterogene HW- Architekturen (d. h. Hardware-Architekturen) bereitstellen. Außerdem kann eine erweiterte Fehler- und Angriffserkennung bereitgestellt werden. Das Verfahren gemäß der Erfindung kann injizierten Überwachungs- und Assertionscode in der SPS-Programmlogik verwenden, um den Daten- und Steuerfluss kontinuierlich zu analysieren. Dies kann verwendet werden, um Fehler und Angriffe zu erkennen und darauf zu reagieren. Außerdem können sichere Aktualisierungen bereitgestellt werden, da die Anwendungen ihren Code und eine Spezifikation von Programmeigenschaften enthalten können.
Gemäß einem anderen Vorteil kann echtzeitbewusste Orchestrierung bereitgestellt werden. Zu diesem Zweck kann eine kontinuierliche Überwachung der Ressourcennutzung der Anwendungen bereitgestellt werden. Das zugrundeliegende Betriebssystem (z. B. die Dispositionsparameter) kann dann zum Sicherstellen ihrer zeitgerechten und vorhersagbaren Ausführung konfiguriert werden. Dieses Merkmal kann entscheidend sein, um unterschiedliche Wichtigkeit und QoS-Anforderungen unter den Anwendungen zu berücksichtigen sowie die fliegende Hinzufügung neuer Anwendungen in einem laufenden System um ermöglichen. Es ist möglich, dass eine Systemschnittstelle bereitgestellt wird, um der im Sandkasten ausgeführten Anwendung einen kontrollierten Zugriff auf Ressourcen in einem industriellen Steuersystem zu ermöglichen. Es ist auch möglich, dass mehrere Versionen der im Sandkasten ausgeführten Anwendung von der Laufzeit ausgeführt werden. Ein Laufzeitwahlmechanismus kann zum Überprüfen von Ergebnissen der mehreren Versionen, insbesondere zum Bereitstellen von Redundanz der im Sandkasten ausgeführten Ausführung, bereitgestellt werden. Der Laufzeitwahlmechanismus kann durch ein Redundanzmodul bereitgestellt werden. Alternativ oder zusätzlich können gemäß dem Verfahren der Erfindung die folgenden Komponenten bereitgestellt werden: eine Laufzeitkomponente, auch als SafeRT-WASM-Laufzeit bezeichnet, die zum Ausführen der im Sandkasten ausgeführten Anwendungen konfiguriert ist, eine Systemschnittstelle, auch als SafeRT-Systemschnittstelle bezeichnet, die zum Ermöglichen von kontrolliertem Zugriff auf Ressourcen in einem industriellen Steuersystem konfiguriert ist, ein Compliance-Prüfer, auch als SafeRT-Compliance-Prüfer bezeichnet, der zum Bereitstellen eines Kompilierzeit-Tools konfiguriert ist, das Überwachungs- und Assertionscodeausschnitte in die Anwendungen injiziert, die bei Laufzeit verwendet werden, um Fehler (beispielsweise Laufzeitfehler) und Angriffe zu erkennen und zu verhindern, ein Redundanzmodul, auch als SafeRT-Redundanzmodul bezeichnet, das zum Bereitstellen eines Kompilierzeit-Tools konfiguriert, das mit einem Laufzeitwahlmechanismus gekoppelt ist, um Anwendungsredundanz über heterogene HW- Architekturen zu unterstützen.
Ferner kann die im Sandkasten ausgeführte Anwendung als sicherheitsrelevante Anwendung, insbesondere zur automatischen Steuerung eines Fahrzeugs, konfiguriert sein. Das Fahrzeug kann als Kraftfahrzeug und/oder Personenkraftwagen und/oder autonomes Fahrzeug für autonomes Fahren konfiguriert sein.
In einem anderen Aspekt der Erfindung kann ein Computerprogramm, insbesondere ein Computerprogrammprodukt, bereitgestellt werden, das Anweisungen umfasst, die bei Ausführung des Computerprogramms durch einen Computer den Computer zum Durchführen des Verfahrens gemäß der Erfindung veranlassen. Demnach kann das Computerprogramm gemäß der Erfindung die gleichen wie die unter Bezugnahme auf ein Verfahren gemäß der Erfindung ausführlich beschriebenen Vorteile aufweisen.
In einem anderen Aspekt der Erfindung kann eine Vorrichtung zur Datenverarbeitung, auch als Datenverarbeitungsvorrichtung bezeichnet, bereitgestellt werden, die zum Ausführen des Verfahrens gemäß der Erfindung konfiguriert ist. Als die Vorrichtung kann zum Beispiel ein Computer bereitgestellt werden, der das Computerprogramm gemäß der Erfindung ausführt. Der Computer kann mindestens einen Prozessor umfassen, der zum Ausführen des Computerprogramms verwendet werden kann. Außerdem kann ein nichtflüchtiger Datenspeicher bereitgestellt werden, in dem das Computerprogramm gespeichert und aus dem das Computerprogramm vom Prozessor ausgelesen werden kann, um es auszuführen.
Gemäß einem anderen Aspekt der Erfindung kann ein computerlesbares Speichermedium bereitgestellt werden, das das Computerprogramm gemäß der Erfindung umfasst. Das Speichermedium kann als ein Datenspeichergerät, beispielsweise ein Festplattenlaufwerk und/oder ein nichtflüchtiger Speicher und/oder eine Speicherkarte und/oder eine Festkörperlaufwerk, ausgebildet sein. Das Speichermedium kann zum Beispiel in den Computer integriert sein.
Ferner kann das Verfahren gemäß der Erfindung als ein computerimplementiertes Verfahren implementiert werden.
Weitere Vorteile, Merkmale und Details der Erfindung werden aus der folgenden Beschreibung ersichtlich, in der Ausführungsformen der Erfindung unter Bezugnahme auf die Zeichnungen ausführlich beschrieben werden. In diesem Kontext können die in den Ansprüchen und in der Beschreibung erwähnten Merkmale jeweils einzeln oder in Kombination unerlässlich für die Erfindung sein. Dargestellt sind: Fig. 1 : ein Verfahren, ein Computerprogramm und eine Vorrichtung gemäß
Ausführungsformen der Erfindung.
Fig. 2-6: weitere beispielhafte Veranschaulichungen von Ausführungsformen der Erfindung.
In den folgenden Figuren werden für die gleichen technischen Merkmale auch in verschiedenen Ausführungsbeispielen dieselben Bezugszeichen verwendet.
Fig. 1 stellt ein Verfahren 100 gemäß Ausführungsformen der Erfindung dar. Das Verfahren 100 kann zur Einbettung mindestens einer Anwendung 20 in eine Echtzeitumgebung verwendet werden, wie in Fig. 2 bis 6 dargestellt. Die Echtzeitumgebung kann durch eine speicherprogrammierbare Steuerung 31 vorgesehen sein. Gemäß einem ersten Verfahrensschritt 101 kann die mindestens eine Anwendung 20 empfangen werden, wobei die mindestens eine Anwendung 20 als eine Zwischendarstellung empfangen werden kann. Mit anderen Worten kann die mindestens eine Anwendung 20 in einem Bytecodeformat bereitgestellt werden, das ermöglicht, den gleichen Code plattformübergreifend, d. h. auf verschiedenen Geräten, auszuführen. Die Zwischendarstellung und insbesondere der Bytecode können eine Form von Anweisungssatz sein, der zur effizienten Ausführung durch einen Software- Interpreter ausgelegt ist. Gemäß einem zweiten Verfahrensschritt 102 kann ein Sandkasten 80 für die mindestens eine empfangene Anwendung 20 bereitgestellt werden. Dann kann gemäß einem dritten Verfahrensschritt 103 die mindestens im Sandkasten ausgeführte Anwendung 21 , insbesondere innerhalb des Sandkastens, ausgeführt werden, wobei das Ausführen 103 basierend auf einer Interpretation der mindestens einen im Sandkasten ausgeführten Anwendung 21 , insbesondere ihrer Zwischendarstellung (Bytecode), unter Verwendung einer Virtualisierungslaufzeit 35 der Echtzeitumgebung erfolgen kann. Die Zwischendarstellung kann ferner von der Virtualisierungslaufzeit 35 erweitert werden, um mindestens eine Echtzeit- und/oder Sicherheitsfunktion für die mindestens eine im Sandkasten ausgeführte Anwendung 21 bereitzustellen.
Ausführungsformen der Erfindung verwenden leichtgewichtige
Virtualisierungsmechanismen, um Programme sicher in SPS-Laufzeitsysteme einzubetten. Dies erfordert jedoch eine Umgebung, in der der Zugriff auf Speicher, E/A und Verarbeitungszeit ohne den Overhead begrenzt werden kann, der mit herkömmlichen OS-System-Aufrufketten oder virtuellen Maschinen in Originalgröße assoziiert ist. Leichtgewichtige Virtualisierungslaufzeiten können Zwischen-Bytecode-Darstellungen eines Programms, das aus einer großen Vielzahl von Quellsprachen generiert sein kann, akzeptieren und interpretieren. Der Zwischen-Bytecode kann erweitert, d. h. modifiziert, werden, bevor er in rohen Maschinencode 65 C>Ahead-of-time“ (vorzeitig) oder „Just-in-time“ (rechtzeitig)) umgewandelt wird, um Hooks für Ressourcenmessung, Replikation und Nutzungsbegrenzung ohne Spezialhardware zu ermöglichen. Ein Beispiel für ein sicheres und geschütztes Laufzeitziel, das sich gut für SPS-Umgebungen eignet, ist WebAssembly (Wasm), aber es gibt auch andere ähnliche prozessmäßige virtuelle Maschinen mit Zwischensprachen wie eBPF, JVM und LLVM-IR.
Wasm ist ein binäres Anweisungsformat für eine stapelbasierte virtuelle Maschine. Es ist ein sicheres, schnelles und portierbares Low-Level- Bytecodeformat, das für effiziente Validierung und Kompilierung sowie sichere Ausführung mit geringem bis gar keinem Overhead ausgelegt ist. Wasm stellt außerdem softwarebasierte Fehlerisolierung in Bezug auf Speichersicherheit und Steuerflussintegrität bereit. Es verhindert Zugriffe auf Speicher außerhalb seines Sandkastens durch Beschränken von Lasten und Speichern auf Linearspeicher und stellt sicher, dass Verzweigungen/Sprünge im Code nur zu den vorgesehenen Adressen gelangen. Es verhindert Pufferüberläufe mithilfe eines getrennten Datenstapels und Überschreiben von Funktionszeigern durch Aufrufen von Funktionsverweisen nur aus einer Tabelle von überprüften Funktionen.
Ferner kann eine Systemschnittstelle 36 vorgesehen sein, um der im Sandkasten ausgeführten Anwendung 21 kontrollierten Zugriff auf Ressourcen in einem industriellen Steuersystem 5 zu ermöglichen. Außerdem kann die im Sandkasten ausgeführte Anwendung 21 als sicherheitsrelevante Anwendung 20, insbesondere zum automatischen Steuern eines Fahrzeugs 3, konfiguriert sein. Fig. 1 stellt außerdem ein Computerprogramm 20 und eine
Datenverarbeitungsvorrichtung 10 gemäß Ausführungsformen der Erfindung dar.
Während der Ausführung der Anwendungen, insbesondere der SPS-Programme, stellen herkömmliche Lösungen für gewöhnlich keine Mechanismen bereit, um auf Verstöße gegen die Programmsicherheit, beispielsweise Speicherzugriffsverletzungen, böswillige Zugriffe auf Ressourcen, bestimmte Dateien, Sockets, Pufferüberläufe, zu prüfen. Das Verfahren gemäß Ausführungsformen der Erfindung beabsichtigt, eine Ausführungsumgebung für SPS-Programme zu erstellen, die die Entwicklung solcher Programme erleichtert, zu kürzeren Entwicklungszeiten führt und Sicherheits- und Schutzeigenschaften unterstützt. Konkret können Ausführungsformen der Erfindung mindestens eines von Folgenden bereitstellen:
Einen Mechanismus zum Ermöglichen, dass SPS-Laufzeiten mehrere, unabhängig erstellte Programme ausführen und gewährleisten, dass sie einander nicht beeinträchtigen, und dass sich Fehler weder zu anderen Programmen noch zum System fortpflanzen.
Einen Mechanismus zum Bereitstellen von Koexistenz von Anwendungen gemischter Kritikalität: Vertrauenswürdige Anwendungen können direkt bereitgestellt werden, während nicht vertrauenswürdige Anwendungen unter Verwendung des dargelegten Mechanismus im Sandkasten ausgeführt werden können.
Erleichterung der Entwicklung von SPS-Programmen: Die derzeitige Entwicklung von SPS-Programmen stellt verhältnismäßig beschränkte Umgebungen zum Entwickeln von Programmen bereit. Zum Teil aufgrund der Notwendigkeit, Programme generieren zu müssen, die nicht das gesamte System gefährden, und des Mangels an Mechanismen zum Schutz gegen Fehler in diesen Programmen.
Automatisierte Softwareredundanz, um mehrere Versionen des gleichen SPS-Programms zur Fehlererkennung automatisch auszuführen. Darüber hinaus ist heterogene Redundanz unter Verwendung des vorgeschlagenen Ansatzes einer leichtgewichtigen Virtualisierung leicht zu realisieren, da das gleiche virtualisierte SPS-Programm ohne Modifizierungen auf verschiedenen Hardwarearchitekturen (z. B. Intel und ARM) ausgeführt werden kann. Dies kann beispielsweise auf SoCs genutzt werden, die verschiedene heterogene Rechen-Engines (z. B. pCs und pPs) umfassen.
Feingranulare Virtualisierung von SPS-Programmen: Obwohl virtualisierte SPS die Verschiebung ganzer SPS-Umgebungen vom Gerät auf die (Edge- )Cloud ermöglichen kann, geht der vorgeschlagene Mechanismus noch tiefer in die SPS- Infrastruktur und kann feinere Granularität (Verschieben einzelner Programme) bei stark reduziertem Overhead durch plattformagnostische leichtgewichtige Ausführung im Sandkasten bereitstellen.
Echtzeitbewusste Orchestrierung: SPS-Systeme implementieren den Abtastzyklus, wie in Fig. 6 dargestellt, der alle SPS-Programme der Reihe nach in gleicher Weise ausführt. Es gibt jedoch keine Möglichkeit, verschiedene Stufen von Wichtigkeit und QoS-Anforderungen unter verschiedenen SPS-Programmen zu unterscheiden. Die vorgeschlagenen Mechanismen ermöglichen die Bereitstellung von Systemressourcen (z. B. CPU-Zeit) gemäß den individuellen Echtzeitanforderungen der im System ausgeführten SPS-Programme.
Ferner können ein Compliance-Prüfer 70 und ein Mechanismus für automatisierte Coderedundanz 75 vorgesehen sein.
Fig. 2 stellt eine Ausführungsform gemäß der Erfindung dar, wobei mehrere Anwendungen 20 unter Verwendung der vorgeschlagenen Laufzeit 35 (SafeRT) ausgeführt werden, die zu diesem Zweck beispielhafterweise einen Wasm- basierten Sandkasten 80 für jedes Programm 21 bereitstellt. Fig. 3 stellt eine andere Ausführungsform der Erfindung dar, wobei die vorgeschlagene Laufzeit 35 mit einer oder mehreren SPS-Laufzeiten 30 koexistiert. Dies ist ein komplexeres Szenario, wobei Programme 21 , die von der vorgeschlagenen Laufzeit ausgeführt werden, E/A mit den SPS-Laufzeiten über einen Mechanismus eines gemeinsamen Speichers (shm - shared memory) gemeinsam nutzen. In diesem Szenario kann es notwendig sein, die E/A vor Datenwettläufen zu schützen, und es ist möglich, dies mittels eines E/A- Managers zu tun, der Lesen/Schreiben nur aus einer der Laufzeiten 30, 35 zulässt. Das heißt, dass, wenn von der SPS-Laufzeit 30 auf eine E/A-Variable zugegriffen wird, diese seitens der vorgeschlagenen Laufzeit schreibgeschützt werden kann, wenn umgekehrt ein Programm 21 , das von der vorgeschlagenen Laufzeit 35 ausgeführt wird, eine Variable ausliest oder in sie schreibt, diese für Programme 22 auf der SPS-Laufzeit 30 schreibgeschützt werden kann. Diese Prüfungen können bei Programmstart unter Verwendung der Kenntnis der von den jeweiligen Programmen verwendeten E/A statistisch erfolgen.
Ausführungsformen der Erfindung können einen Sandkasten 80 für Zwischen- Bytecode-Darstellungen eines Programms 20 wie Wasm bereitstellen. Der Sandkasten 80, insbesondere der Wasm-Sandkasten, kann Softwarefehlerisolierung zwischen mehreren SPS-Programmen 20 gewährleisten. Ferner können Ausführungsformen der Erfindung einen benutzerdefinierten Verteiler bereitstellen, der das zugrundeliegende OS 40 zum Bereitstellen von Echtzeitgarantien für die Programme 20 unter seiner Ausführung verwendet. Durch Nutzen der Wasm-Unterstützung für mehrere Sprachen kann die vorgeschlagene Laufzeit 35 problemlos eine Vielzahl von Programmiersprachen in die SPS-Umgebung einbringen. Die Laufzeitumgebung gemäß Ausführungsformen der Erfindung kann Programme 20 mit Zugriff auf mehrere Systemeinrichtungen versehen, die vorher in üblichen SPS- Programmierumgebungen nicht verfügbar waren: Dateien 37, sichere Kommunikation 38 und andere Peripheriegeräte. Dieser Zugriff kann durch eine Systemschnittstelle 36 bereitgestellt werden, die durch Ausführungsformen der Erfindung bereitgestellt wird und mit Blick auf industriellen Plattformen entwickelt wurde (siehe Fig. 4).
Gemäß Ausführungsformen der Erfindung können Programme 20, die von der vorgeschlagenen Laufzeit 35 ausgeführt werden, in eine Zwischen-Bytecode- Darstellung wie WASM 60 kompiliert und Codeanalyse und -transformationen unterzogen werden, um Programmeigenschaften zu überprüfen und zu erzwingen, Überwachung und Assertionen zum Erzwingen von Eigenschaften zu injizieren und verschiedene, redundant auszuführende Programmversionen zu generieren.
Die Systemschnittstelle 36 gemäß Ausführungsformen der Erfindung kann Programmen 20 Zugriff auf Systemressourcen auf der SPS-Plattform wie E/A, Dateien, Peripheriegeräten oder Kommunikationsschnittstellen ermöglichen. Sie kann in derselben Weise wie die Wasm-Systemschnittstelle (WASI) rund um das Konzept von Fähigkeiten ausgelegt sein und bietet Zugriff auf Ressourcen in einem industriellen Steuersystem 5 durch gegebene Programme 20 einen fälschungssicheren Verweis auf ein Objekt/eine Ressource und einen Satz von Operationen, zu denen die Fähigkeit den Inhaber berechtigt. Fig. 4 stellt ein Detail der Systemschnittstelle und die Art und Weise, wie sie mit Programmen und dem SPS-Hostsystem interagiert, dar.
Gemäß Ausführungsformen der Erfindung kann ein Codegenerierungsprozess bereitgestellt werden, der in Fig. 5 dargestellt ist. Zum Beispiel können Programme 20 in jeder Wasm-unterstützen Sprache geschrieben werden, um in Wasm-Bytecode kompiliert zu werden 501. Der Code kann dann analysiert werden 502, um zu erzwingen, dass das Programm 20 in ein Programm transformiert werden kann, das mit der vorgeschlagenen Laufzeit konform ist. Dieser Schritt kann notwendig sein, um sicherzustellen, dass die Programme 20 Echtzeitleistung erfüllen können und weder unbegrenzte Rekursion noch Schleifen aufweisen. Hinsichtlich Rekursion und Schleifen müssen Programme möglicherweise Erklärungen enthalten, die Grenzen wie Pragma-Anweisungen bereitstellen, die durch einige Compiler unterstützt werden. In diesem Schritt 503 können zusätzliche Leistungszähler und Traps in den Code eingefügt werden, um die Leistung des Programms bei Laufzeit zu überwachen und seine Ausführung im Falle einer Ausnahme zu steuern. Dieser Schritt könnte auch ein Generieren mehrerer Programmversionen umfassen.
Wenn aktiviert, kann die Toolkette gemäß Ausführungsformen der Erfindung mehrere Versionen eines Programms generieren, die in der Laufzeit ausgeführt werden können. Diese Programme können definierte E/A (bereitgestellt durch die Systemschnittstelle) aufweisen und mit einer definierten Struktur ausführen, wie ein Abtastzyklus (implementiert durch eine Bibliothek zur Programmentwicklung), der einen klaren Punkt definiert, an dem E/A verglichen werden können (am Ende/Start jedes Zyklus). Die vorgeschlagene Laufzeit 35 kann verantwortlich sein für das Überprüfen, ob die mehreren Versionen des Programms 20 das gleiche Ergebnis erzeugten und gemäß einer vom Entwickler spezifizierten Richtlinie agieren, beispielsweise Mehrheitswahl, min, max oder Ausführung eines Ausnahmen-Handlers, der wiederum vom Entwickler spezifiziert ist. Zum Generieren von verschiedenen Versionen des SPS-Programms 20 kann die vorgeschlagene Laufzeit 35 auf drei Strategien zurückgreifen. Die erste Strategie besteht darin, Adressraumrandomisierung durchzuführen. Die zweite Strategie besteht darin, Codeverschleierung durchzuführen, die den Code transformiert und ihn gleichwertig hält. Zusammen ermöglichen sie eine probabilistische Erkennung von Speicherhandhabungsfehlern sowie Programmmanipulationsangriffen. Die dritte Strategie ist mit heterogenen Rechen-Engines (die z. B. pCs und pPs umfassen) anwendbar. Dies schafft diversitäre Redundanz, und die Ausführung des SPS-Programms wird auch gegen systematische HW-Fehler geschützt.
Ausführungsformen der Erfindung können für eine Middleware für industrielle Automatisierung verwendet werden. Außerdem können Ausführungsformen der Erfindung für Edge-Cloud-Orchestrierung in der industriellen Automatisierung und/oder spezielle Sicherheitsprüfsoftware für in der industriellen Automatisierung eingesetzte Anwendungen und/oder spezielle Software für automatisierte Coderedundanz für Anwendungen verwendet werden, die in der industriellen Automatisierung und/oder industriellen Automatisierungsplattformen/Ökosystemen, wie ctrIX World, eingesetzt werden.
Die vorstehende Erläuterung der Ausführungsformen beschreibt die vorliegende Erfindung im Kontext von Beispielen. Natürlich können einzelne Merkmale der Ausführungsformen miteinander kombiniert werden, vorausgesetzt, dass dies technisch sinnvoll ist, ohne den Schutzbereich der vorliegenden Erfindung zu verlassen.

Claims

Patentansprüche
1 . Verfahren (100) zur Einbettung mindestens einer Anwendung (20) in eine Echtzeitumgebung, wobei die Echtzeitumgebung durch eine speicherprogrammierbare Steuerung (31) bereitgestellt wird, umfassend die folgenden Schritte:
- Empfangen (101) der mindestens einen Anwendung (20), wobei die mindestens eine Anwendung (20) als eine Zwischendarstellung empfangen wird,
- Bereitstellen (102) eines Sandkastens (80) für die mindestens eine empfangene Anwendung (20),
- Ausführen (103) der mindestens einen im Sandkasten ausgeführten Anwendung (21), wobei das Ausführen (103) basierend auf einer Interpretation der mindestens einen im Sandkasten ausgeführten Anwendung (21) unter Verwendung einer Virtualisierungslaufzeit (35) der Echtzeitumgebung erfolgt, wobei die Zwischendarstellung durch die Laufzeit (35) erweitert wird, um mindestens eine Echtzeit- und/oder Sicherheitsfunktion für die mindestens eine im Sandkasten ausgeführte Anwendung (21) bereitzustellen.
2. Verfahren (100) nach Anspruch 1 , dadurch gekennzeichnet, dass die Zwischendarstellung ein Bytecode, insbesondere WebAssembly, ist.
3. Verfahren (100) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Erweiterung der Zwischendarstellung durch die Laufzeit (35) ein Injizieren von Überwachungs- und/oder Assertionscode in die Zwischendarstellung umfasst, um die mindestens eine Echtzeit- und/oder Sicherheitsfunktion insbesondere zum Erkennen und Verhindern von Fehlern und Angriffen bereitzustellen, wobei vorzugsweise verschiedene Versionen der im Sandkasten ausgeführten Anwendung (20) generiert und redundant ausgeführt werden.
4. Verfahren (100) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Laufzeit (35) eine Mehrfachprogrammierumgebung zum gleichzeitigen Durchführen der Ausführung von mehreren der mindestens einen im Sandkasten ausgeführten Anwendung (20) bereitstellt.
5. Verfahren (100) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Laufzeit (35) so konfiguriert ist, dass sie eine Softwarefehlerisolierung zwischen der im Sandkasten ausgeführten Anwendung (21) und weiteren Anwendungen (20), die in der Echtzeitumgebung ausgeführt werden, und/oder zwischen den mehreren im Sandkasten ausgeführten Anwendungen (21) bereitstellt.
6. Verfahren (100) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass eine Systemschnittstelle (36) bereitgestellt wird, um der im Sandkasten ausgeführten Umgebung (21) einen kontrollierten Zugriff auf Ressourcen in einem industriellen Steuersystem (5) zu ermöglichen.
7. Verfahren (100) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass mehrere Versionen der im Sandkasten ausgeführten Anwendung (21) von der Laufzeit (35) ausgeführt werden, wobei ein Laufzeit- (35)Wahlmechanismus bereitgestellt wird, um Ergebnisse der mehreren Versionen zu überprüfen, um insbesondere Redundanz der im Sandkasten ausgeführten Anwendung (21) bereitzustellen.
8. Verfahren (100) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die im Sandkasten ausgeführte Anwendung (21) als eine sicherheitsrelevante Anwendung (20), insbesondere zur automatischen Steuerung eines Fahrzeugs (3), konfiguriert ist.
9. Computerprogramm (20), umfassend Anweisungen, die bei Ausführung des Computerprogramms (20) durch einen Computer den Computer zum Durchführen des Verfahrens (100) nach einem der vorhergehenden Ansprüche veranlassen.
10. Datenverarbeitungsvorrichtung (10), umfassend Mittel zum Durchführen des Verfahrens (100) nach einem der Ansprüche bis 8.
EP24700101.9A 2023-02-17 2024-01-09 Verfahren zur Einbettung einer Anwendung in eine Echtzeitumgebung Pending EP4666196A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102023201397.5A DE102023201397A1 (de) 2023-02-17 2023-02-17 Verfahren zur Einbettung einer Anwendung in eine Echtzeitumgebung
PCT/EP2024/050317 WO2024170163A1 (de) 2023-02-17 2024-01-09 Verfahren zur Einbettung einer Anwendung in eine Echtzeitumgebung

Publications (1)

Publication Number Publication Date
EP4666196A1 true EP4666196A1 (de) 2025-12-24

Family

ID=89541995

Family Applications (1)

Application Number Title Priority Date Filing Date
EP24700101.9A Pending EP4666196A1 (de) 2023-02-17 2024-01-09 Verfahren zur Einbettung einer Anwendung in eine Echtzeitumgebung

Country Status (6)

Country Link
EP (1) EP4666196A1 (de)
JP (1) JP2026511345A (de)
KR (1) KR20250149760A (de)
CN (1) CN120693613A (de)
DE (1) DE102023201397A1 (de)
WO (1) WO2024170163A1 (de)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2784471B1 (fr) * 1998-10-08 2002-07-19 Schneider Automation Systeme d'automatisme distribue
US8695060B2 (en) * 2011-10-10 2014-04-08 Openpeak Inc. System and method for creating secure applications
US9721092B2 (en) * 2014-03-27 2017-08-01 International Busines Machines Corporation Monitoring an application in a process virtual machine

Also Published As

Publication number Publication date
CN120693613A (zh) 2025-09-23
JP2026511345A (ja) 2026-04-14
WO2024170163A1 (de) 2024-08-22
KR20250149760A (ko) 2025-10-16
DE102023201397A1 (de) 2024-08-22

Similar Documents

Publication Publication Date Title
DE69802834T2 (de) Verbesserung der sicherheit für nicht-vertrauten ausführbaren code
US8689191B2 (en) Correct refactoring of concurrent software
DE102011005209B4 (de) Programmanweisungsgesteuerte Instruktionsflusskontrolle
DE112013002012B4 (de) Verfahren eines Erkennens von Schadsoftware in einem Betriebssystemkern
DE102018003142A1 (de) Automatische Einstellung von Multitasking-Konfigurationen für ein Codeprüfsystem
DE202009019136U1 (de) Systeme zur sicheren Ausführung eines nicht vertrauenswürdigen Nativen Codemoduls auf einer Datenverarbeitungsvorrichtung
DE202009019137U1 (de) Apparat für die Validierung eines nicht vertrauenswürdigen Nativen Code-Moduls
EP3864547B1 (de) Verfahren zur detektion sicherheitsrelevanter datenflüsse
DE112007003206T5 (de) Neukonfigurieren eines sicheren Systems
Nicole et al. No crash, no exploit: Automated verification of embedded kernels
DE102019216226A1 (de) Verfahren zum Betreiben eines Rechensystems und Rechensystem
DE102009050161A1 (de) Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten
DE102005037230A1 (de) Verfahren und Vorrichtung zur Überwachung von Funktionen eines Rechnersystems
WO2010049339A1 (de) Vorrichtung und verfahren zur generierung redundanter, aber unterschiedlicher maschinencodes aus einem quellcode zur verifizierung für ein sicherheitskritisches system
DE102023201397A1 (de) Verfahren zur Einbettung einer Anwendung in eine Echtzeitumgebung
Anderson et al. TESLA: temporally enhanced system logic assertions
WO2006032585A1 (de) Verfahren zur abarbeitung eines computerprogramms auf einem computersystem
DE102016203283A1 (de) Verfahren zum Betreiben eines Mikroprozessors
Johnson Aspect-Oriented Programming in Practice: Definitive Reference for Developers and Engineers
Bormer Advancing deductive program-level verification for real-world application: lessons learned from an industrial case study
EP4671978A1 (de) Verfahren, system zur datenverarbeitung, computerprogrammprodukt und computerlesbares medium
DE102023206222A1 (de) Verfahren zum Testen eines Computerprogramms
Alsubhi et al. Coconut: Typestates for Embedded
DE102023206219A1 (de) Verfahren zum Testen eines Computerprogramms
DE102023205076A1 (de) Verfahren zum Testen eines Computerprogramms

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20250917

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR