Secure Enclave Shared Object Linking for Code Injection Prevention
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current security measures for electronic apparatuses are inadequate in preventing malicious software from exploiting host computers, as they fail to effectively protect against unauthorized code execution and data modification within computing systems.
Innovation Solution
A method involving a secure enclave that encrypts memory transactions using an enclave-specific key, allowing only authorized code execution within the enclave while using an enclave dynamic linker to associate shared object dependencies with either enclave or non-enclave-loadable shared objects, enabling secure interactions through trampoline objects and enclave proxies to manage data transfer between enclave and non-enclave memory.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If traditional security measures are used to protect against malicious software, then system security is improved, but the system becomes vulnerable to code injection and control flow hijacking
Solution Approach 1:
The system is divided into enclave mode and non-enclave mode with distinct memory spaces and execution contexts. The enclave program runs in a segregated secure environment with encrypted memory transactions, while non-enclave programs run outside. This segmentation prevents malicious code from injecting into the secure execution context, resolving the vulnerability to code injection while maintaining system security.
2Reliability
If enclave mode is implemented to prevent unauthorized code execution, then security is improved, but the ability to use shared objects and external resources is restricted
Solution Approach 1:
The enclave dynamic linker acts as an intermediary between the enclave program and shared objects. It resolves shared object dependencies by loading appropriate shared objects and managing the associations between enclave code and external resources. This mediator enables the enclave program to access shared objects and external resources while maintaining security boundaries, thus improving shared object compatibility without compromising secure execution.
3Reliability
If memory transactions are encrypted using enclave-specific keys, then data protection is improved, but the complexity of memory management increases
Solution Approach 1:
The processor automatically performs encryption and decryption of memory transactions using enclave-specific keys without requiring manual intervention. The hardware enforcement of encryption transparently manages the complexity of secure memory access, allowing the system to achieve strong data protection while minimizing the operational burden on software. This self-service approach resolves the contradiction by automating the complex encryption processes.
4Reliability
If strict enclave boundaries are enforced to prevent unauthorized access, then security is improved, but the efficiency of code execution and resource access is reduced
Solution Approach 1:
The system dynamically switches between enclave mode and non-enclave mode based on the execution context. When the enclave program needs to access external resources, the system temporarily transitions to non-enclave mode through controlled interfaces, performs the necessary operations, and then returns to enclave mode. This dynamic switching maintains strict security boundaries while enabling efficient resource access when needed, resolving the contradiction between access control and execution efficiency.
Data Source
Figure 1A~2B
Figure 3A~3B
Figure 3C
AI summary
Technologies are provided in embodiments for receiving an enclave program for operation in an enclave, identifying at least one shared object dependency of the enclave program, determining whether the shared object dependency corresponds to at least one enclave shared object, causing association between the shared object dependency and the enclave shared object in circumstances where the shared object dependency corresponds to the enclave shared object, and causing association between the shared object dependency and an enclave-loadable non-enclave shared object in circumstances where the shared object dependency fails to correspond to the enclave shared object.