ACK: [N/U][PATCH 00/11] Apply mitigations for the native BHI hardware vulnerabilty
Stefan Bader
stefan.bader at canonical.com
Thu Apr 11 09:22:45 UTC 2024
On 11.04.24 08:24, Andrea Righi wrote:
> BugLink: https://bugs.launchpad.net/bugs/2060909
>
> [Impact]
>
> Branch History Injection (BHI) attacks may allow a malicious application
> to influence indirect branch prediction in kernel by poisoning the
> branch history. eIBRS isolates indirect branch targets in ring0.
>
> The BHB can still influence the choice of indirect branch predictor
> entry, and although branch predictor entries are isolated between modes
> when eIBRS is enabled, the BHB itself is not isolated between modes.
>
> Previously the only known real-world BHB attack vector was via
> unprivileged eBPF. Further research has found attacks that don't require
> unprivileged eBPF.
>
> See also:
> https://www.phoronix.com/news/Linux-BHI-Branch-History-Inject
>
> [Test case]
>
> https://www.vusec.net/projects/native-bhi/
>
> [Fix]
>
> Backport from upstream the merge that introduces spectre_bhi= boot
> option to control BHI mitigation:
>
> 2bb69f5fc721 ("Merge tag 'nativebhi' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip")
> ed2e8d49b54d ("KVM: x86: Add BHI_NO")
> 95a6ccbdc719 ("x86/bhi: Mitigate KVM by default")
> ec9404e40e8f ("x86/bhi: Add BHI mitigation knob")
> be482ff95009 ("x86/bhi: Enumerate Branch History Injection (BHI) bug")
> 0f4a837615ff ("x86/bhi: Define SPEC_CTRL_BHI_DIS_S")
> 7390db8aea0d ("x86/bhi: Add support for clearing branch history at syscall entry")
> 1e3ad78334a6 ("x86/syscall: Don't force use of indirect calls for system calls")
> 0cd01ac5dcb1 ("x86/bugs: Change commas to semicolons in 'spectre_v2' sysfs file")
>
> Also set spectre_bhi=auto by default, that will rely on the BHI_DIS_S
> hardware control if it's available on the system CPUs, otherwise a
> proper software sequence will be executed at VMexit.
>
> NOTE: we may get these changes via stable update in 6.8, when that
> happens we can drop this backport and apply the patch set like any other
> regular stable update.
>
> [Regression potential]
>
> We may experience performance regressions with this new mitigation
> enabled, especially in VMs and CPUs that don't have the BHI hardware
> support capability (due to the extra software sequence executed at
> VMexit).
>
> ----------------------------------------------------------------
> Andrea Righi (1):
> UBUNTU: [Config] enable spectre_bhi=auto by default
>
> Daniel Sneddon (2):
> x86/bhi: Define SPEC_CTRL_BHI_DIS_S
> KVM: x86: Add BHI_NO
>
> Josh Poimboeuf (1):
> x86/bugs: Change commas to semicolons in 'spectre_v2' sysfs file
>
> Linus Torvalds (1):
> x86/syscall: Don't force use of indirect calls for system calls
>
> Pawan Gupta (4):
> x86/bhi: Add support for clearing branch history at syscall entry
> x86/bhi: Enumerate Branch History Injection (BHI) bug
> x86/bhi: Add BHI mitigation knob
> x86/bhi: Mitigate KVM by default
>
> Sandipan Das (2):
> x86/cpufeatures: Add new word for scattered features
> perf/x86/amd/lbr: Use freeze based on availability
>
> Documentation/admin-guide/hw-vuln/spectre.rst | 48 ++++++++++++++++++++++++++++----
> Documentation/admin-guide/kernel-parameters.txt | 12 ++++++++
> arch/x86/Kconfig | 25 +++++++++++++++++
> arch/x86/entry/common.c | 10 +++----
> arch/x86/entry/entry_64.S | 61 +++++++++++++++++++++++++++++++++++++++++
> arch/x86/entry/entry_64_compat.S | 16 +++++++++++
> arch/x86/entry/syscall_32.c | 21 ++++++++++++--
> arch/x86/entry/syscall_64.c | 19 +++++++++++--
> arch/x86/entry/syscall_x32.c | 10 +++++--
> arch/x86/events/amd/core.c | 4 +--
> arch/x86/events/amd/lbr.c | 16 +++++++----
> arch/x86/include/asm/cpufeature.h | 6 ++--
> arch/x86/include/asm/cpufeatures.h | 15 +++++++++-
> arch/x86/include/asm/disabled-features.h | 3 +-
> arch/x86/include/asm/msr-index.h | 9 +++++-
> arch/x86/include/asm/nospec-branch.h | 17 ++++++++++++
> arch/x86/include/asm/required-features.h | 3 +-
> arch/x86/include/asm/syscall.h | 11 ++++----
> arch/x86/kernel/cpu/bugs.c | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
> arch/x86/kernel/cpu/common.c | 24 ++++++++++------
> arch/x86/kernel/cpu/scattered.c | 2 ++
> arch/x86/kvm/reverse_cpuid.h | 3 +-
> arch/x86/kvm/vmx/vmenter.S | 2 ++
> arch/x86/kvm/x86.c | 2 +-
> debian.master/config/annotations | 3 ++
> 25 files changed, 402 insertions(+), 61 deletions(-)
Acked-by: Stefan Bader <stefan.bader at canonical.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xE8675DEECBEECEA3.asc
Type: application/pgp-keys
Size: 48643 bytes
Desc: OpenPGP public key
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20240411/47f91311/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20240411/47f91311/attachment-0001.sig>
More information about the kernel-team
mailing list