Hi Kees, On Tue, Apr 04, 2017 at 03:17:57PM -0700, Kees Cook wrote: > On Tue, Apr 4, 2017 at 3:08 PM, Tycho Andersen <[email protected]> wrote: > > The goal of this patch is to protect the JIT against an attacker with a > > write-in-memory primitive. The JIT allocates a buffer which will eventually > > be marked +x, so we need to make sure that what was written to this buffer > > is what was intended. > > > > We acheive this by building a hash of the instruction buffer as > > instructions are emittted and then comparing that to a hash at the end of > > the JIT compile after the buffer has been marked read-only. > > > > Signed-off-by: Tycho Andersen <[email protected]> > > CC: Daniel Borkmann <[email protected]> > > CC: Alexei Starovoitov <[email protected]> > > CC: Kees Cook <[email protected]> > > CC: Mickaël Salaün <[email protected]> > > Cool! This closes the race condition on producing the JIT vs going > read-only. I wonder if it might be possible to make this a more > generic interface to the BPF which would be allocate the hash, provide > the update callback during emit, and then do the hash check itself at > the end of bpf_jit_binary_lock_ro()?
Yes, probably so. I can look into that for the next version. Tycho
