|
|
|
|
|
by artisanspam
1066 days ago
|
|
Yes I understand that but I was struggling to think of a sequence of instructions that would cause this secret leaking on a single thread. But a simple example is `vzeroupper` followed by anything that writes a secret to the same register file entry would be leaked on a subsequent flush. |
|
For example, a failed speculation of vzeroupper could result in it erroneously claiming a register by clearing the zero flag on the wrong register - which would mean that the previous data of that register is now suddenly available. If that register has not been touched since a context switch, it could leak data from another process.
The linked article has an animation which suggests that it clears the zero flag on the previously-used register - which indeed requires the victim to reuse the register in the small amount of time between it being marked as zero and the zero being cleared again.
However, the linked Github repo states:
> The undefined portion of our ymm register will contain random data from the register file. [..] Note that this is not a timing attack or a side channel, the full values can simply be read as fast as you can access them.
This suggests that it does indeed do something akin to clearing the zero flag of a random register.