Ptrsplit: Supporting general pointers in automatic program partitioning

S Liu, G Tan, T Jaeger - Proceedings of the 2017 ACM SIGSAC …, 2017 - dl.acm.org
S Liu, G Tan, T Jaeger
Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications …, 2017dl.acm.org
Partitioning a security-sensitive application into least-privileged components and putting
each into a separate protection domain have long been a goal of security practitioners and
researchers. However, a stumbling block to automatically partitioning C/C++ applications is
the presence of pointers in these applications. Pointers make calculating data dependence,
a key step in program partitioning, difficult and hard to scale; furthermore, C/C++ pointers do
not carry bounds information, making it impossible to automatically marshall and unmarshall …
Partitioning a security-sensitive application into least-privileged components and putting each into a separate protection domain have long been a goal of security practitioners and researchers. However, a stumbling block to automatically partitioning C/C++ applications is the presence of pointers in these applications. Pointers make calculating data dependence, a key step in program partitioning, difficult and hard to scale; furthermore, C/C++ pointers do not carry bounds information, making it impossible to automatically marshall and unmarshall pointer data when they are sent across the boundary of partitions. In this paper, we propose a set of techniques for supporting general pointers in automatic program partitioning. Our system, called PtrSplit, constructs a Program Dependence Graph (PDG) for tracking data and control dependencies in the input program and employs a parameter-tree approach for representing data of pointer types; this approach is modular and avoids global pointer analysis. Furthermore, it performs selective pointer bounds tracking to enable automatic marshalling/unmarshalling of pointer data, even when there is circularity and arbitrary aliasing. As a result, PtrSplit can automatically generate executable partitions for C applications that contain arbitrary pointers.
ACM Digital Library