All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: Daniel Borkmann <daniel@iogearbox.net>,
	Alexei Starovoitov <ast@kernel.org>,
	davem@davemloft.net
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	kernel-team@fb.com,
	"stable@vger.kernel.org" <stable@vger.kernel.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>
Subject: Re: [PATCH v3 bpf] bpf: introduce BPF_JIT_ALWAYS_ON config
Date: Wed, 24 Jan 2018 10:07:11 +0000	[thread overview]
Message-ID: <1516788431.13558.109.camel@infradead.org> (raw)
In-Reply-To: <606bf504-a39f-288d-11cd-56888ecbc165@iogearbox.net>

[-- Attachment #1: Type: text/plain, Size: 2253 bytes --]

On Tue, 2018-01-09 at 22:39 +0100, Daniel Borkmann wrote:
> On 01/09/2018 07:04 PM, Alexei Starovoitov wrote:
> > 
> > The BPF interpreter has been used as part of the spectre 2 attack CVE-2017-5715.
> > 
> > A quote from goolge project zero blog:
> > "At this point, it would normally be necessary to locate gadgets in
> > the host kernel code that can be used to actually leak data by reading
> > from an attacker-controlled location, shifting and masking the result
> > appropriately and then using the result of that as offset to an
> > attacker-controlled address for a load. But piecing gadgets together
> > and figuring out which ones work in a speculation context seems annoying.
> > So instead, we decided to use the eBPF interpreter, which is built into
> > the host kernel - while there is no legitimate way to invoke it from inside
> > a VM, the presence of the code in the host kernel's text section is sufficient
> > to make it usable for the attack, just like with ordinary ROP gadgets."
> > 
> > To make attacker job harder introduce BPF_JIT_ALWAYS_ON config
> > option that removes interpreter from the kernel in favor of JIT-only mode.
> > So far eBPF JIT is supported by:
> > x64, arm64, arm32, sparc64, s390, powerpc64, mips64
> > 
> > The start of JITed program is randomized and code page is marked as read-only.
> > In addition "constant blinding" can be turned on with net.core.bpf_jit_harden
> > 
> > v2->v3:
> > - move __bpf_prog_ret0 under ifdef (Daniel)
> > 
> > v1->v2:
> > - fix init order, test_bpf and cBPF (Daniel's feedback)
> > - fix offloaded bpf (Jakub's feedback)
> > - add 'return 0' dummy in case something can invoke prog->bpf_func
> > - retarget bpf tree. For bpf-next the patch would need one extra hunk.
> >   It will be sent when the trees are merged back to net-next
> > 
> > Considered doing:
> >   int bpf_jit_enable __read_mostly = BPF_EBPF_JIT_DEFAULT;
> > but it seems better to land the patch as-is and in bpf-next remove
> > bpf_jit_enable global variable from all JITs, consolidate in one place
> > and remove this jit_init() function.
> > 
> > Signed-off-by: Alexei Starovoitov <ast@kernel.org>
>
> Applied to bpf tree, thanks Alexei!

For stable too?

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5213 bytes --]

  reply	other threads:[~2018-01-24 10:07 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-09 18:04 [PATCH v3 bpf] bpf: introduce BPF_JIT_ALWAYS_ON config Alexei Starovoitov
2018-01-09 21:39 ` Daniel Borkmann
2018-01-24 10:07   ` David Woodhouse [this message]
2018-01-24 10:10     ` Daniel Borkmann
2018-01-28 14:45       ` Greg KH
2018-01-28 14:45         ` Greg KH
2018-01-28 23:40         ` Daniel Borkmann
2018-01-29 12:31           ` Greg KH
2018-01-29 12:31             ` Greg KH
2018-01-29 15:36           ` Daniel Borkmann
2018-01-29 17:36             ` Greg KH
2018-01-29 20:25               ` Daniel Borkmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1516788431.13558.109.camel@infradead.org \
    --to=dwmw2@infradead.org \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=dave.hansen@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.