Address Space Compartmentalization Methods #22
Replies: 4 comments
-
SOAAP
TakeawaysNot much, it mentions data-centered compartmentalization where the same code runs on different instances of the data, but does not elaborate on how this should be set up, only that it is one possible method of compartmentalization. |
Beta Was this translation helpful? Give feedback.
-
SecureCellsA proposed mechanism for implementing intra-address-space compartmentalization consisting of both hardware and software adjustments:
TakeawaysThis is one way in which we can achieve address space compartmentalization, but is far over-engineered for our requirements. We could maybe employ the idea of a central entity that manages the compartmentalization of the address space and accesses to certain compartments. We would need a way to trigger the central entity's involvement when we switch compartments. |
Beta Was this translation helpful? Give feedback.
-
MicroStache
TakeawaysThis is a potential implementation of HighJMP that wouldn't require context switching between two ADSes. The key requirement that our HighJMP is lacking is a way to clearly distinguish a region of memory that must be accessed separately. Most of these compartmentalization techniques assume that we've been able to do that already, and simply require a method to quickly and safely swap between them. |
Beta Was this translation helpful? Give feedback.
-
PolytopeA language-level compartmentalization technique that tries to move manual isolation policy enforcement from user-program source code into the compiler.
TakeawaysIt might not be possible for us to place clear boundaries between app and lib data in a HighJMP ADS without customizing what happens during linkage. With Polytope, the developer doesn't need to consciously worry about the linker, but code and data separation eventually boils down to a custom linker script. |
Beta Was this translation helpful? Give feedback.
-
As described in #20, and specifically for our HighJMP scenario, we want to compartmentalize the ADS between the KVStore app and lib. We currently have a very basic method of compartmentalizing the core ADS regions, ELF code, ELF data, heap, stack, etc. However, we may want to further divide app and lib ELF data, or to separate musllibc data (or any other global data) such that the app and lib operate on entirely separate copies of it.
Our current and only idea is to do this using linker scripts. This thread is for documenting other methods found from surveying the literature.
Beta Was this translation helpful? Give feedback.
All reactions