• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

Retpoline: Software Construct for Preventing Spectre

FrgMstr

Just Plain Mean
Staff member
2FA
Joined
May 18, 1997
Messages
58,183
Retpoline: a software construct for preventing branch-target-injection

At Google, we have been researching mitigation strategies for the new class of exploits discovered by the Project Zero team affecting speculative execution. We wanted to share a binary modification technique that we have developed for protecting against “Branch target injection”, also referred to as “Spectre”. It is predicated on the fact that many CPUs implement a separate predictor for function returns. When available, this predictor is used with high priority, allowing for the construction of an indirect branch which is safe from speculation-based attacks.

Note: While some of the specific details and examples below are x86 specific, the ideas underlying the construction are commonly applicable.

Executive Summary
“Retpoline” sequences are a software construct which allow indirect branches to be isolated from speculative execution. This may be applied to protect sensitive binaries (such as operating system or hypervisor implementations) from branch target injection attacks against their indirect branches.

The name “retpoline” is a portmanteau of “return” and “trampoline.” It is a trampoline construct constructed using return operations which also figuratively ensures that any associated speculative execution will “bounce” endlessly.

(If it brings you any amusement: imagine speculative execution as an overly energetic 7-year old that we must now build a warehouse of trampolines around.)
 
Hmm... Adding trampolines is inefficient. How about giving the overly energetic 7-year old 300CCs of Thorazine?
 
Hmm... Adding trampolines is inefficient. How about giving the overly energetic 7-year old 300CCs of Thorazine?
but it maybe the only way... if you poison the speculative functionality it should mitigate the data leak. llvm has this patch since the 4th
 
but it maybe the only way... if you poison the speculative functionality it should mitigate the data leak. llvm has this patch since the 4th

Actually, with the potential performance decreases from some of the solutions (I've only read the articles in the other thread, not beyond the blurb for the Google one yet...) we maybe effectively be providing the trampolines AND Thorazine. :p

I need to read the full article, (at work right now) and who knows if I'll have a full grasp. (I'm not a software dev, or CPU designer, though I do design circuitry for other things...) I was mainly being silly because of the funny child analogy.
 
Back
Top