We implemented a prototype of DPP in LLVM and evaluated the prototype using various datasets (e.g., Linux Flaw Project and Juliet Test Suite) as well as the SPEC CPU2017 benchmark. Our evaluation suggests that DPP can ensure the same level of security as protecting all non-control data, but with protecting only the prioritized data objects or pointers. We found that as high as 95% of non-control data in real-world programs may not need protection. DPP also improves performance in terms of throughput by about 1.6 times and reduces runtime overhead by roughly 70%.
Our prioritization scheme is new and different from the conventional protection paradigm as DPP enables the trade-offs between accuracy and performance. We can make DPP tunable in the security (false negative), usability (false positive), and performance dimensions. The rules used by DPP are simple and have the capability to anticipate future attacks. This is because the rules are deduced by abstracting exploits into common vulnerability patterns. However, DPP still requires some work and a broader benchmark to fully assess its effectiveness.