I've been trying to wrap my head around for over a decade how these side channel attacks between L1 caches and branch prediction caches don't happen.
Wish I had published my November 2016 research into function call leaks. CPU registers leaking information between function calls is still a huge unmitigated issue.
You want to shit yourself, goose GCC or LLVM to instrument your function calls with a dump of everything in CPU registers before they start. Do this with libraries that people blindly link in dynamically.
What's new here is exploitation of speculative execution (branch prediction). It takes what was already difficult in the world of crypto to a new level of difficulty (or maybe not; it looks like the fix for this will be to effectively disable branch prediction in sensitive code, or even preferably by default and enable it only where it's necessary and safe).
How is that a security issue? It's in the same process.
Could the subroutine troll through memory and find it? Yes, but it would be orders of magnitude harder than having that pointer in a register.
Better example is if you are using 64 bit ints in registers as security tokens. Those should be zeroed after use and the compiler needs to not accidentally optimize away zeroing them.
I don't quite see how an attacker would take advantage of this is a real-world scenario.
Could probably reproduce from upstream Yocto distro and the free version of Qt.
Much larger attack surfaces to worry about like their craptastic security around USBs that farmers stick in to read maps.