Protection Domains for Shared Address Space Memory Corruption
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Applications sharing address space are prone to memory corruption due to overlapping memory operations, particularly from independently authored applications with undiscovered bugs, which existing technologies fail to effectively prevent or detect.
Innovation Solution
Implementing protection domains, such as Protection Keys (PKEYs), to isolate and protect process address spaces within shared memory environments, allowing for secure memory access management without significant performance impact, enabling multiple processes to share address space while preventing overwrite corruption.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If multiple processes share address space to improve memory utilization and performance, then productivity and resource efficiency are improved, but memory corruption and security vulnerabilities occur due to overlapping memory operations
Solution Approach 1:
The shared address space is segmented into multiple protection domains, where each process operates within its own protected domain. The patent implements this by assigning unique protection keys to different processes, creating logical partitions that allow simultaneous access to the same physical memory while preventing unauthorized overlaps. This segmentation resolves the contradiction by maintaining both high memory utilization (through sharing) and memory safety (through domain isolation).
Solution Approach 2:
The patent introduces protection keys as intermediary identifiers that mediate between processes and the shared address space. These protection keys act as a layer of indirection, allowing the system to track and control which process accesses which memory region. The intermediary mechanism enables secure multi-process sharing by verifying process identity before granting memory access, thus preventing corruption while maintaining productivity.
2Reliability
If protection domains are assigned to each process to prevent memory corruption, then memory protection and security are improved, but system complexity increases due to PD management overhead
Solution Approach 1:
The patent makes protection keys universal by allowing a single protection key to be shared by multiple processes simultaneously. Instead of requiring unique protection mechanisms for each process, the system uses a pool of protection keys that can be dynamically allocated and shared. This multi-functionality reduces the total number of protection domains needed, simplifying management while maintaining strong memory protection capabilities.
Solution Approach 2:
The patent implements dynamic allocation and deallocation of protection keys. When processes terminate or no longer need their protection domains, their protection keys are recovered and made available for reuse by other processes. This recycling mechanism reduces the overall number of active protection domains, lowering management complexity while ensuring that active processes always have the protection they need.
3Reliability
If protection keys are allocated to each process to ensure secure access, then memory security is improved, but performance degradation occurs due to PD acquisition and release operations
Solution Approach 1:
The patent performs protection key allocation in advance, during process creation or memory mapping operations, rather than on-demand during memory access. By establishing protection domain assignments upfront, the system avoids repeated PD acquisition operations during execution. This preliminary action ensures that security is maintained while minimizing performance overhead, as the protection key is already in place when the process begins its memory operations.
Data Source
AI summary
Methods, systems and computer program products provide protection domains for processes in shared address space. Multiple processes may share address space, for example, in a software isolated process running on top of a library operating system (OS). A protection domain (PD), such as a Protection Key (PKEY), may be assigned to a process to protect its allocated address spaces from access by other processes. PDs may be acquired from a host OS. A library OS may manage PDs to protect processes and/or data. A PD may be freed and reassigned to a different process or may be concurrently assigned to multiple processes, for example, when the number of processes exceeds the number of protection domains. Threads spawned by a process may inherit protection provided by a PD assigned to the process. Process PDs may be disassociated with address spaces as they are deallocated for a process or its threads.


