Commit a5a9e006 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'seccomp-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux

Pull seccomp updates from Kees Cook:
 "These are x86-specific, but I carried these since they're also
  seccomp-specific.

  This flips the defaults for spec_store_bypass_disable and
  spectre_v2_user from "seccomp" to "prctl", as enough time has passed
  to allow system owners to have updated the defensive stances of their
  various workloads, and it's long overdue to unpessimize seccomp
  threads.

  Extensive rationale and details are in Andrea's main patch.

  Summary:

   - set spec_store_bypass_disable & spectre_v2_user to prctl (Andrea Arcangeli)"

* tag 'seccomp-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
  x86: deduplicate the spectre_v2_user documentation
  x86: change default to spec_store_bypass_disable=prctl spectre_v2_user=prctl
parents 2dc26d98 d9bbdbf3
...@@ -490,9 +490,8 @@ Spectre variant 2 ...@@ -490,9 +490,8 @@ Spectre variant 2
Restricting indirect branch speculation on a user program will Restricting indirect branch speculation on a user program will
also prevent the program from launching a variant 2 attack also prevent the program from launching a variant 2 attack
on x86. All sand-boxed SECCOMP programs have indirect branch on x86. Administrators can change that behavior via the kernel
speculation restricted by default. Administrators can change command line and sysfs control files.
that behavior via the kernel command line and sysfs control files.
See :ref:`spectre_mitigation_control_command_line`. See :ref:`spectre_mitigation_control_command_line`.
Programs that disable their indirect branch speculation will have Programs that disable their indirect branch speculation will have
...@@ -594,61 +593,14 @@ kernel command line. ...@@ -594,61 +593,14 @@ kernel command line.
Not specifying this option is equivalent to Not specifying this option is equivalent to
spectre_v2=auto. spectre_v2=auto.
For user space mitigation:
spectre_v2_user=
[X86] Control mitigation of Spectre variant 2
(indirect branch speculation) vulnerability between
user space tasks
on
Unconditionally enable mitigations. Is
enforced by spectre_v2=on
off
Unconditionally disable mitigations. Is
enforced by spectre_v2=off
prctl
Indirect branch speculation is enabled,
but mitigation can be enabled via prctl
per thread. The mitigation control state
is inherited on fork.
prctl,ibpb
Like "prctl" above, but only STIBP is
controlled per thread. IBPB is issued
always when switching between different user
space processes.
seccomp
Same as "prctl" above, but all seccomp
threads will enable the mitigation unless
they explicitly opt out.
seccomp,ibpb
Like "seccomp" above, but only STIBP is
controlled per thread. IBPB is issued
always when switching between different
user space processes.
auto
Kernel selects the mitigation depending on
the available CPU features and vulnerability.
Default mitigation:
If CONFIG_SECCOMP=y then "seccomp", otherwise "prctl"
Not specifying this option is equivalent to
spectre_v2_user=auto.
In general the kernel by default selects In general the kernel by default selects
reasonable mitigations for the current CPU. To reasonable mitigations for the current CPU. To
disable Spectre variant 2 mitigations, boot with disable Spectre variant 2 mitigations, boot with
spectre_v2=off. Spectre variant 1 mitigations spectre_v2=off. Spectre variant 1 mitigations
cannot be disabled. cannot be disabled.
For spectre_v2_user see :doc:`/admin-guide/kernel-parameters`.
Mitigation selection guide Mitigation selection guide
-------------------------- --------------------------
...@@ -674,9 +626,8 @@ Mitigation selection guide ...@@ -674,9 +626,8 @@ Mitigation selection guide
off by disabling their indirect branch speculation when they are run off by disabling their indirect branch speculation when they are run
(See :ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`). (See :ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
This prevents untrusted programs from polluting the branch target This prevents untrusted programs from polluting the branch target
buffer. All programs running in SECCOMP sandboxes have indirect buffer. This behavior can be changed via the kernel command line
branch speculation restricted by default. This behavior can be and sysfs control files. See
changed via the kernel command line and sysfs control files. See
:ref:`spectre_mitigation_control_command_line`. :ref:`spectre_mitigation_control_command_line`.
3. High security mode 3. High security mode
......
...@@ -5303,8 +5303,7 @@ ...@@ -5303,8 +5303,7 @@
auto - Kernel selects the mitigation depending on auto - Kernel selects the mitigation depending on
the available CPU features and vulnerability. the available CPU features and vulnerability.
Default mitigation: Default mitigation: "prctl"
If CONFIG_SECCOMP=y then "seccomp", otherwise "prctl"
Not specifying this option is equivalent to Not specifying this option is equivalent to
spectre_v2_user=auto. spectre_v2_user=auto.
...@@ -5348,7 +5347,7 @@ ...@@ -5348,7 +5347,7 @@
will disable SSB unless they explicitly opt out. will disable SSB unless they explicitly opt out.
Default mitigations: Default mitigations:
X86: If CONFIG_SECCOMP=y "seccomp", otherwise "prctl" X86: "prctl"
On powerpc the options are: On powerpc the options are:
......
...@@ -758,11 +758,11 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd) ...@@ -758,11 +758,11 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
case SPECTRE_V2_USER_CMD_FORCE: case SPECTRE_V2_USER_CMD_FORCE:
mode = SPECTRE_V2_USER_STRICT; mode = SPECTRE_V2_USER_STRICT;
break; break;
case SPECTRE_V2_USER_CMD_AUTO:
case SPECTRE_V2_USER_CMD_PRCTL: case SPECTRE_V2_USER_CMD_PRCTL:
case SPECTRE_V2_USER_CMD_PRCTL_IBPB: case SPECTRE_V2_USER_CMD_PRCTL_IBPB:
mode = SPECTRE_V2_USER_PRCTL; mode = SPECTRE_V2_USER_PRCTL;
break; break;
case SPECTRE_V2_USER_CMD_AUTO:
case SPECTRE_V2_USER_CMD_SECCOMP: case SPECTRE_V2_USER_CMD_SECCOMP:
case SPECTRE_V2_USER_CMD_SECCOMP_IBPB: case SPECTRE_V2_USER_CMD_SECCOMP_IBPB:
if (IS_ENABLED(CONFIG_SECCOMP)) if (IS_ENABLED(CONFIG_SECCOMP))
...@@ -1162,7 +1162,6 @@ static enum ssb_mitigation __init __ssb_select_mitigation(void) ...@@ -1162,7 +1162,6 @@ static enum ssb_mitigation __init __ssb_select_mitigation(void)
return mode; return mode;
switch (cmd) { switch (cmd) {
case SPEC_STORE_BYPASS_CMD_AUTO:
case SPEC_STORE_BYPASS_CMD_SECCOMP: case SPEC_STORE_BYPASS_CMD_SECCOMP:
/* /*
* Choose prctl+seccomp as the default mode if seccomp is * Choose prctl+seccomp as the default mode if seccomp is
...@@ -1176,6 +1175,7 @@ static enum ssb_mitigation __init __ssb_select_mitigation(void) ...@@ -1176,6 +1175,7 @@ static enum ssb_mitigation __init __ssb_select_mitigation(void)
case SPEC_STORE_BYPASS_CMD_ON: case SPEC_STORE_BYPASS_CMD_ON:
mode = SPEC_STORE_BYPASS_DISABLE; mode = SPEC_STORE_BYPASS_DISABLE;
break; break;
case SPEC_STORE_BYPASS_CMD_AUTO:
case SPEC_STORE_BYPASS_CMD_PRCTL: case SPEC_STORE_BYPASS_CMD_PRCTL:
mode = SPEC_STORE_BYPASS_PRCTL; mode = SPEC_STORE_BYPASS_PRCTL;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment