Messages in this thread | | | Subject | RE: [PATCH net-next] x86: bpf_jit_comp: secure bpf jit against spraying attacks | Date | Mon, 20 May 2013 09:51:59 +0100 | From | "David Laight" <> |
| |
> hpa bringed into my attention some security related issues > with BPF JIT on x86. > > This patch makes sure the bpf generated code is marked read only, > as other kernel text sections. > > It also splits the unused space (we vmalloc() and only use a fraction of > the page) in two parts, so that the generated bpf code not starts at a > known offset in the page, but a pseudo random one. ... > +static struct bpf_binary_header *bpf_alloc_binary(unsigned int proglen, > + u8 **image_ptr) ... > + /* insert a random number of int3 instructions before BPF code */ > + *image_ptr = &header->image[prandom_u32() % hole]; > + return header; > +}
Hmmm.... anyone looking to overwrite kernel code will then start looking for blocks of 0xcc bytes and know that what follows is the beginning of a function. That isn't any harder than random writes.
Copying a random part of .rodata might be better - especially if you can find part of .rodata.str*.
David
| |