• Daniel Borkmann's avatar
    bpf: Fix leakage due to insufficient speculative store bypass mitigation · 2039f26f
    Daniel Borkmann authored
    Spectre v4 gadgets make use of memory disambiguation, which is a set of
    techniques that execute memory access instructions, that is, loads and
    stores, out of program order; Intel's optimization manual, section 2.4.4.5:
    
      A load instruction micro-op may depend on a preceding store. Many
      microarchitectures block loads until all preceding store addresses are
      known. The memory disambiguator predicts which loads will not depend on
      any previous stores. When the disambiguator predicts that a load does
      not have such a dependency, the load takes its data from the L1 data
      cache. Eventually, the prediction is verified. If an actual conflict is
      detected, the load and all succeeding instructions are re-executed.
    
    af86ca4e ("bpf: Prevent memory disambiguation attack") tried to mitigate
    this attack by sanitizing the memory locations through preemptive "fast"
    (low latency) stores of zero prior to the actual "slow" (high latency) sto...
    2039f26f
verifier.c 384 KB