Using Dynamic Binary Instrumentation to Detect Failures in Robotics Software

by   Deborah S. Katz, et al.

Autonomous and Robotics Systems (ARSs) are widespread, complex, and increasingly coming into contact with the public. Many of these systems are safety-critical, and it is vital to detect software errors to protect against harm. We propose a family of novel techniques to detect unusual program executions and incorrect program behavior. We model execution behavior by collecting low-level signals at run time and using those signals to build machine learning models. These models can identify previously-unseen executions that are more likely to exhibit errors. We describe a tractable approach for collecting dynamic binary runtime signals on ARSs, allowing the systems to absorb most of the overhead from dynamic instrumentation. The architecture of ARSs is particularly well-adapted to hiding the overhead from instrumentation. We demonstrate the efficiency of these approaches on ARDUPILOT – a popular open-source autopilot software system – and HUSKY – an unmanned ground vehicle – in simulation. We instrument executions to gather data from which we build supervised machine learning models of executions and evaluate the accuracy of these models. We also analyze the amount of training data needed to develop models with various degrees of accuracy, measure the overhead added to executions that use the analysis tool, and analyze which runtime signals are most useful for detecting unusual behavior on the program under test. In addition, we analyze the effects of timing delays on the functional behavior of ARSs.


Detection Software Content Failures Using Dynamic Execution Information

Modern software systems become too complex to be tested and validated. D...

Introspection for C and its Applications to Library Robustness

Context: In C, low-level errors, such as buffer overflow and use-after-f...

Redundancy Suppression In Time-Aware Dynamic Binary Instrumentation

Software tracing techniques are well-established and used by instrumenta...

A Smart and Defensive Human-Machine Approach to Code Analysis

Static analysis remains one of the most popular approaches for detecting...

Static Prediction of Runtime Errors by Learning to Execute Programs with External Resource Descriptions

The execution behavior of a program often depends on external resources,...

Co-processor-based Behavior Monitoring: Application to the Detection of Attacks Against the System Management Mode

Highly privileged software, such as firmware, is an attractive target fo...

Detecting Fault Injection Attacks with Runtime Verification

Fault injections are increasingly used to attack secure applications. So...

Please sign up or login with your details

Forgot password? Click here to reset