Let me reiterate: in the pax-future paper you propose protecting returns. For the forward edge you only propose to write-protect as many function pointers as possible. While reducing attack surface, that's not CFI 馃檭 (Also, idea != design, implementation, evaluation, discussion)
6
4
Did RAP reference KCoFI? Happens both ways. Terrible thing is that RAP then caused other academics to assume it was the only kernel control flow integrity system.
3
overhead of 2x-3.5x is not a legitimate solution, it's an irrelevant academic toy, also wasn't fine-grained (see sources for both below). Anyone who works on this stuff knows there is a huge difference between a toy and a feature-complete, high-performance, fine-grained CFI
1
1
2
One example: RAP has over 1MB of type correctness fixes necessary to achieve fine-grained CFI -- you neither need to implement the entire static analysis framework to find those, nor fix them, in basic coarse-grained CFI
1
So if we start lowering the bar on these kinds of claims to academic toy quality, private versions of RAP from the fall of 2013 (before the H2HC presentation in 2015) were booting Linux and would have qualified
1
Totally missed this tweet. It's clear that both the policy of KCoFI and its engineering could be improved a ton. But notice, KCoFI protects the MMU. RAP does not. MMU isolation is not cheap. Yes academic, but demonstrates a powerful point. ret2dir is a good attack to consider.
1
I understand the point (obviously it's nothing new for us), but pointing out RAP not doing it is equivalent to complaining RAP itself doesn't provide W^X for userland. When you don't try shoehorning something into a particular approach (say by masking all memory writes)...
1
then it has a has a chance of actually being used and not some toy exercise with terrible performance. There are a lot of ton of ways you can "solve" problems with methods that have terrible perf -- it's not interesting or noteworthy, but a primary reason for academic paper churn
1
ret2dir is unrelated and irrelevant under RAP + KERNEXEC really, happy to explain why in a million ways if you disagree ;)
1
kernel compilation has a userland and a kernel side component. your change in the kernel cannot be measured by involving the userland component, you'd have to extract the kernel component for that. it's better to run a kernel-oriented test like 'du -s' which is 99% kernel time.
Jan 19, 2019 路 10:42 PM UTC





