Detecting unsecure data flow in automation task programs
AssigneeTrend Micro Incorporated
InventorsFederico Maggi, Marcello Pogliani, Davide Quarta, Martino Vittone, Stefano Zanero
Life of this patent
Estimating the term…
Abstract
An automation task program is inspected for unsecure data flow. The task program is parsed to generate a parse tree, which is visited to generate control flow graphs of functions of the task program. The control flow graphs have nodes, which have domain-agnostic intermediate representations. The control flow graphs are connected to form an intermediate control flow graph. The task program is deemed to have an unsecure data flow when data is detected to flow from a data source to a data sink, with the data source and the data sink forming a source-sink pair that is indicative of an unsecure data flow.
Claims14
A method of detecting unsecure data flows in task programs, the method comprising:
- receiving a task program for controlling motion of an industrial robot, the task program being written in an industrial robot programming language;
- parsing the task program to generate a parse tree;
- generating a plurality of separate control flow graphs for functions of the task program, each of the control flow graphs comprising a plurality of basic blocks, each of the basic blocks comprising domain-agnostic intermediate representations;
- generating an intermediate control flow graph that connects the control flow graphs together;
- detecting data flow from a data source to a data sink in the intermediate control flow graph, the data source and the data sink forming a predetermined source-sink pair that is indicative of an unsecure data flow;
- and
- in response to detecting the data flow from the data source to the data sink in the intermediate control flow graph, deeming the task program to have the unsecure data flow.
A system for detecting unsecure data flows in task programs, the system comprising at least one processor and a memory, the memory storing instructions that when executed by the at least one processor cause the system to:
- receive a task program, the task program being written in a programming language for a special-purpose device;
- parse the task program to generate a parse tree of the task program;
- visit the parse tree to generate a first control flow graph for a first function of the task program and a second control flow graph for a second function of the task program;
- detect data flow from a data source to a data sink between the first and second control flow graphs, the data source and the data sink forming a predetermined source-sink pair that is indicative of an unsecure data flow;
- and
- in response to detecting the data flow from the data source to the data sink, prevent execution of the task program by the special-purpose device,
- wherein the special-purpose device is an industrial robot.
A method of detecting unsecure data flows in task programs, the method comprising:
- receiving a task program, the task program being written in a programming language for a special-purpose device;
- parsing the task program to generate a parse tree of the task program;
- visiting the parse tree to generate a first control flow graph for a first function of the task program and a second control flow graph for a second function of the task program;
- detecting data flow from a data source to a data sink between the first and second control flow graphs, the data source and the data sink forming a predetermined source-sink pair that is indicative of an unsecure data flow;
- and
- in response to detecting the data flow from the data source to the data sink in the intermediate control flow graph, deeming the task program to have the unsecure data flow,
- wherein the special-purpose device is an industrial robot.
Dependencies are inferred from the claim text.