You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I could see that you are at version 4.9.92 without the support of retpoline [Linux 4.9.77].
However, I have created a port for version 4.9.74 which is available here.
My version is a port from "patch-4.9.76-77" without the following files :
So. We all want Retpoline support, and yeah, it looks like it is compatible and can be made to work. Problem is, with security in general and most importantly this patchset, the devil is in the details.
Sure, you can merge most of the patchset and probably get more protection than you get without it, but does it make it "done" or not likely to have holes? Its a tradeoff of potentially offering a false sense of security of having full Retpoline support, when it could be broken. So for now, I'm leaving it out until I've spent some time reviewing it.
I've been playing with Retpoline for a few weeks now, and I want to try and support everything, but I keep running into issues where the kernel oops because of RAP.
Lets have a look. You say you omit a/arch/x86/crypto/camellia-aesni-avx2-asm_64.S patches from your patchset. Lets have a look at the patch:
Now, most of the early spectre mitigations is replacing all assembly "call" instructions with a macro for "CALL_NOSPEC" which performs some sanity checks and then performs a call later.
If we peek into the dappersec patchset, we see that all "call" instructions are annotated similarly with RAP:
They also have "call" instructions that need to be changed to "CALL_NOSPEC", but only if CONFIG_RETPOLINE is enabled anyway.
I've been playing around with this, and have duplicated the marcos into separate standard and nospec versions. I can get it all compiling, but I still oops, which I haven't had time to debug. It could be something entirely different from the above though. There is still a lot of moving parts, and its still a really invasive change to the kernel.
I can't claim to be an expert, I'm just trying to do my best, so I'll keep looking into the bigger picture for now.
Saying that, I'll start slowly merging some Retpoline support in over the coming weeks and we can see how effective it is.
Let me know if you understand the specifics more than I do, any input is helpful.
And for anyone else reading this, like always, if you need security, then use an upstream kernel, or go and pay for a subscription of grsecurity from Open Source Security. My forward port will never match the effort and dedication from Spender or pipacs, and they understand all of this far more than I do.
I'm simply maintaining this patchset because I think it contains some interesting mitigations, and those mitigations are valuable to keep around for as long as possible. Since minipli has stopped maintaining his fork, I seem to be the only one keeping this patchset from bitrot. I'll keep at it for a little longer, but it is getting harder and harder to keep it going.
Activity
matthewruffell commentedon Jun 3, 2018
So. We all want Retpoline support, and yeah, it looks like it is compatible and can be made to work. Problem is, with security in general and most importantly this patchset, the devil is in the details.
Sure, you can merge most of the patchset and probably get more protection than you get without it, but does it make it "done" or not likely to have holes? Its a tradeoff of potentially offering a false sense of security of having full Retpoline support, when it could be broken. So for now, I'm leaving it out until I've spent some time reviewing it.
I've been playing with Retpoline for a few weeks now, and I want to try and support everything, but I keep running into issues where the kernel oops because of RAP.
Lets have a look. You say you omit a/arch/x86/crypto/camellia-aesni-avx2-asm_64.S patches from your patchset. Lets have a look at the patch:
Now, most of the early spectre mitigations is replacing all assembly "call" instructions with a macro for "CALL_NOSPEC" which performs some sanity checks and then performs a call later.
If we peek into the dappersec patchset, we see that all "call" instructions are annotated similarly with RAP:
If we go and have a look at the definition of pax_indirect_call in arch/x86/include/asm/alternative-asm.h
and the macro for rap_call
They also have "call" instructions that need to be changed to "CALL_NOSPEC", but only if CONFIG_RETPOLINE is enabled anyway.
I've been playing around with this, and have duplicated the marcos into separate standard and nospec versions. I can get it all compiling, but I still oops, which I haven't had time to debug. It could be something entirely different from the above though. There is still a lot of moving parts, and its still a really invasive change to the kernel.
I can't claim to be an expert, I'm just trying to do my best, so I'll keep looking into the bigger picture for now.
Saying that, I'll start slowly merging some Retpoline support in over the coming weeks and we can see how effective it is.
Let me know if you understand the specifics more than I do, any input is helpful.
And for anyone else reading this, like always, if you need security, then use an upstream kernel, or go and pay for a subscription of grsecurity from Open Source Security. My forward port will never match the effort and dedication from Spender or pipacs, and they understand all of this far more than I do.
I'm simply maintaining this patchset because I think it contains some interesting mitigations, and those mitigations are valuable to keep around for as long as possible. Since minipli has stopped maintaining his fork, I seem to be the only one keeping this patchset from bitrot. I'll keep at it for a little longer, but it is getting harder and harder to keep it going.
Add "Test for complete retpoline port.patch"