Hi,
This is a two patch series to make the compile time default of
unprivileged BPF depend on CONFIG_CPU_SPECTRE. First patch makes ARM's
CONFIG_CPU_SPECTRE available for all architectures. The second patch
sets CONFIG_BPF_UNPRIV_DEFAULT_OFF=y by default when
CONFIG_CPU_SPECTRE=y.
v2:
- Generalize ARM's CONFIG_CPU_SPECTRE to be available for all architectures.
- Make CONFIG_BPF_UNPRIV_DEFAULT_OFF depend on CONFIG_CPU_SPECTRE.
- Updated commit message to reflect the dependency on CONFIG_CPU_SPECTRE.
- Add reference to BPF spectre presentation in commit message.
v1: https://lore.kernel.org/all/d37b01e70e65dced2659561ed5bc4b2ed1a50711.1635367330.git.pawan.kumar.gupta@linux.intel.com/
Pawan Gupta (2):
arch/Kconfig: Make CONFIG_CPU_SPECTRE available for all architectures
bpf: Make unprivileged bpf depend on CONFIG_CPU_SPECTRE
arch/Kconfig | 3 +++
arch/arm/mm/Kconfig | 3 ---
arch/x86/Kconfig | 1 +
kernel/bpf/Kconfig | 5 +++++
4 files changed, 9 insertions(+), 3 deletions(-)
--
2.31.1
Disabling unprivileged BPF would help prevent unprivileged users from
creating the conditions required for potential speculative execution
side-channel attacks on affected hardware. A deep dive on such attacks
and mitigation is available here [1].
If an architecture selects CONFIG_CPU_SPECTRE, disable unprivileged BPF
by default. An admin can enable this at runtime, if necessary.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
[1] https://ebpf.io/summit-2021-slides/eBPF_Summit_2021-Keynote-Daniel_Borkmann-BPF_and_Spectre.pdf
---
kernel/bpf/Kconfig | 5 +++++
1 file changed, 5 insertions(+)
On Wed, Oct 27, 2021 at 06:35:44PM -0700, Pawan Gupta wrote:
Disabling unprivileged BPF would help prevent unprivileged users from
creating the conditions required for potential speculative execution
side-channel attacks on affected hardware. A deep dive on such attacks
and mitigation is available here [1].
If an architecture selects CONFIG_CPU_SPECTRE, disable unprivileged BPF
by default. An admin can enable this at runtime, if necessary.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
[1] https://ebpf.io/summit-2021-slides/eBPF_Summit_2021-Keynote-Daniel_Borkmann-BPF_and_Spectre.pdf
This should go above the signed-off-by line, in the changelog text, not
below it, otherwise our tools get confused when trying to apply it.
thanks,
greg k-h
From: Mark Rutland <mark.rutland@arm.com> Date: 2021-10-28 13:58:21
On Wed, Oct 27, 2021 at 06:35:44PM -0700, Pawan Gupta wrote:
quoted hunk
Disabling unprivileged BPF would help prevent unprivileged users from
creating the conditions required for potential speculative execution
side-channel attacks on affected hardware. A deep dive on such attacks
and mitigation is available here [1].
If an architecture selects CONFIG_CPU_SPECTRE, disable unprivileged BPF
by default. An admin can enable this at runtime, if necessary.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
[1] https://ebpf.io/summit-2021-slides/eBPF_Summit_2021-Keynote-Daniel_Borkmann-BPF_and_Spectre.pdf
---
kernel/bpf/Kconfig | 5 +++++
1 file changed, 5 insertions(+)
@@ -64,6 +64,7 @@ config BPF_JIT_DEFAULT_ONconfigBPF_UNPRIV_DEFAULT_OFFbool"Disable unprivileged BPF by default"+defaultyifCPU_SPECTRE
Why can't this just be "default y"?
This series makes that the case on x86, and if SW is going to have to
deal with that we may as well do that everywhere, and say that on all
architectures we leave it to the sysadmin or kernel builder to optin to
permitting unprivileged BPF.
If we can change the default for x86 I see no reason we can't change
this globally, and we avoid tying this to CPU_SPECTRE specifically.
Thanks,
Mark.
quoted hunk
depends on BPF_SYSCALL
help
Disables unprivileged BPF by default by setting the corresponding
@@ -72,6 +73,10 @@ config BPF_UNPRIV_DEFAULT_OFF disable it by setting it to 1 (from which no other transition to 0 is possible anymore).+ Unprivileged BPF can be used to exploit potential speculative+ execution side-channel vulnerabilities on affected hardware. If you+ are concerned about it, answer Y.+ source "kernel/bpf/preload/Kconfig" config BPF_LSM
On Thu, Oct 28, 2021 at 02:57:51PM +0100, Mark Rutland wrote:
On Wed, Oct 27, 2021 at 06:35:44PM -0700, Pawan Gupta wrote:
quoted
Disabling unprivileged BPF would help prevent unprivileged users from
creating the conditions required for potential speculative execution
side-channel attacks on affected hardware. A deep dive on such attacks
and mitigation is available here [1].
If an architecture selects CONFIG_CPU_SPECTRE, disable unprivileged BPF
by default. An admin can enable this at runtime, if necessary.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
[1] https://ebpf.io/summit-2021-slides/eBPF_Summit_2021-Keynote-Daniel_Borkmann-BPF_and_Spectre.pdf
---
kernel/bpf/Kconfig | 5 +++++
1 file changed, 5 insertions(+)
@@ -64,6 +64,7 @@ config BPF_JIT_DEFAULT_ONconfigBPF_UNPRIV_DEFAULT_OFFbool"Disable unprivileged BPF by default"+defaultyifCPU_SPECTRE
Why can't this just be "default y"?
Because not all arches are broken.
This series makes that the case on x86, and if SW is going to have to
deal with that we may as well do that everywhere, and say that on all
architectures we leave it to the sysadmin or kernel builder to optin to
permitting unprivileged BPF.
If we can change the default for x86 I see no reason we can't change
this globally, and we avoid tying this to CPU_SPECTRE specifically.
No, this is a spectre-like issue only, if you have hardware that does
not have these types of issues, why wouldn't this be ok to be disabled?
thanks,
greg k-h
On Wed, Oct 27, 2021 at 06:35:44PM -0700, Pawan Gupta wrote:
quoted
Disabling unprivileged BPF would help prevent unprivileged users from
creating the conditions required for potential speculative execution
side-channel attacks on affected hardware. A deep dive on such attacks
and mitigation is available here [1].
If an architecture selects CONFIG_CPU_SPECTRE, disable unprivileged BPF
by default. An admin can enable this at runtime, if necessary.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
[1] https://ebpf.io/summit-2021-slides/eBPF_Summit_2021-Keynote-Daniel_Borkmann-BPF_and_Spectre.pdf
This should go above the signed-off-by line, in the changelog text, not
below it, otherwise our tools get confused when trying to apply it.