Code Injection for Embedded Device Security

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing technologies are inadequate in protecting embedded devices from malicious code exploitation, as traditional antivirus software does not work on these devices, and they often lack security features, with proprietary firmware making updates and modifications difficult.

Innovation Solution

Mechanisms for injecting code into embedded devices, such as routers and modems, that analyze and modify firmware to create an execution environment for the injected code without altering the device's behavior, allowing for concurrent execution and enabling security features like rootkit detection.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional antivirus software is used to protect embedded devices, then security protection is provided for general computer systems, but it does not work on embedded devices due to their proprietary firmware and lack of security features

Engineering Contradiction:
Improvesecurity protectionVSAvoidcompatibility with embedded devices
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent introduces a code injection mechanism as an intermediary layer between the security application and the embedded device firmware. This intermediary enables security functionality to be injected into the device without requiring modifications to the proprietary firmware, thus resolving the incompatibility between traditional antivirus software and embedded devices while maintaining security protection

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The security functionality is segmented into injectable code modules that can be independently loaded and executed within the embedded device's memory space. This segmentation allows security features to be added without altering the device's core firmware, enabling compatibility with proprietary embedded systems while providing comprehensive security protection

Inventive Principle:
Principle #1Segmentation

2Reliability

If code is injected into embedded devices to provide security features, then security protection and real-time detection capabilities are enabled, but the device's original behavior must not be altered

Engineering Contradiction:
Improvesecurity protectionVSAvoiddevice behavior consistency
Core Design Contradiction:
ReliabilityVSStability of the object's composition

Solution Approach 1:

The patent performs preliminary analysis of the firmware to identify safe injection points and establish execution contexts before injecting security code. This preliminary action ensures that the injected code integrates seamlessly with the device's existing operations, providing security protection while maintaining the device's original behavior and stability

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The injected security code is designed to self-integrate with the device's execution flow by automatically identifying function entry points and establishing its own execution context without requiring modifications to the device's core firmware. This self-service approach enables security functionality while preserving the device's original behavior and composition

Inventive Principle:
Principle #25Self-service

3Adaptability or versatility

If firmware analysis and modification is performed to create execution environment for injected code, then concurrent execution of security applications is enabled, but prior knowledge of function entry points or memory information is not required

Engineering Contradiction:
Improveexecution environment creationVSAvoidfirmware analysis complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The code injection mechanism employs self-service techniques where the injected code automatically analyzes the firmware structure, identifies function entry points, and establishes its own execution context without requiring external prior knowledge. This self-service approach enables the creation of execution environments for concurrent security application execution while reducing the complexity burden on external systems

Inventive Principle:
Principle #25Self-service

4Ease of operation

If security applications are injected without prior knowledge of function entry points, then ease of deployment is improved, but the ability to integrate with proprietary firmware is enhanced

Engineering Contradiction:
Improvedeployment easeVSAvoidproprietary firmware integration
Core Design Contradiction:
Ease of operationVSAdaptability or versatility

Solution Approach 1:

The patent uses an intermediary code injection mechanism that bridges the gap between deployment simplicity and proprietary firmware integration. This intermediary automatically adapts to different firmware structures, enabling easy deployment across various embedded devices while maintaining effective integration with proprietary firmware through automated function entry point identification and execution context establishment

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11288090B1Methods, systems, and media for injecting code into embedded devices
Publication Date: 2022.03.29 THE TRUSTEES OF COLUMBIA UNIV IN THE CITY OF NEW YORK
  • US11288090B1 patent drawing
  • US11288090B1 patent drawing
  • US11288090B1 patent drawing

AI summary

Methods, systems, and media for injecting code into embedded devices are provided. In accordance with some embodiments, methods for injecting code into embedded devices are provided, the methods comprising: embedding payload execution code into an embedded device; identifying program instructions in code of the embedded device into which jump instructions can be placed; inserting at least one jump instruction at an identified program instruction; allocating memory for storing an execution context of an injected payload; saving a context of the code of the embedded device to memory; loading and executing a payload context into a processor of the embedded device; determining when execution of the payload context is to be interrupted; and in response to determining that the execution of the payload context is to be interrupted, saving the payload context, restoring the context of the code of the embedded device, and continuing execution of the code of the embedded device.