In Proceedings of IEEE Security and Privacy (“Oakland”) 2015. IEEE Computer Society, May 2015.
We identify a timing channel in the floating point instructions
of modern x86 processors: the running time of floating point
addition and multiplication instructions can vary by two orders
of magnitude depending on their operands. We develop a
benchmark measuring the timing variability of floating point
operations and report on its results. We use floating point
data timing variability to demonstrate practical attacks on the
security of the Firefox browser (versions 23 through 27) and the
Fuzz differentially private database. Finally, we initiate the
study of mitigations to floating point data timing channels
with libfixedtimefixedpoint
, a new fixed-point,
constant-time math library.
Modern floating point standards and implementations are sophisticated, complex, and subtle, a fact that has not been sufficiently recognized by the security community. More work is needed to assess the implications of the use of floating point instructions in security-relevant software.