APPLIED: [SRU Jammy v2][PATCH 00/13] CVE-2024-2201

Stefan Bader stefan.bader at canonical.com
Wed Apr 17 09:28:59 UTC 2024


On 16.04.24 16:53, Stefan Bader wrote:
> [Impact]
> Native BHI attack, a Spectre v2 variant, allows local unprivileged attackers to
> obtain kernel memory information without the help of unprivileged eBPF, negating
> to the previous belief that unprivileged eBPF is the only real-world source of
> such an attack. Also, this vulnerability affects KVM as well.
> 
> [Backport]
> In order to minimize effort with future upstream stable ports I only
> used patches from linux-5.15.y which have not yet picked up. This
> allowed the BHI set from linux-5.15.y to be applied with just 4 simple
> context changes.
> 
> The missing prerequisite commits are:
> 1. 1d30800c0c0a (“x86/bugs: Use sysfs_emit()”)
>    This one solves the conflict in [1/8] 0cd01ac5dcb1 (“x86/bugs: Change commas
>    to semicolons in 'spectre_v2' sysfs file”) by substitute sprintf() with
>    sysfs_emit()
> 2. eefe5e668209 (“KVM: x86: Advertise CPUID.(EAX=7,ECX=2):EDX[5:0] to userspace“)
>    This commit introduced CPUID_7_2_EDX, a flag used by [4/8] 0f4a837615ff
>    (“x86/bhi: Define SPEC_CTRL_BHI_DIS_S“)
> 3. 047c72299061 (“KVM: x86: Update KVM-only leaf handling to allow for 100% KVM-only leafs”)
>    This one introduced kvm_cpu_cap_init_kvm_defined(), solving a build error
>    caused by the commit above. No functional change as noted by the commit
>    message, safe to backport.
> 4. 3de7708607e5 ("KVM: x86: Use a switch statement and macros in
>                    __feature_translate()")
>    This changes __feature_translate in reverse-cpuid.h to use macros and
>    by that allows ("x86/bhi: Define SPEC_CTRL_BHI_DIS_S") to be applied
>    without changes.
> 
> [Test]
> Compiled only.
> 
> [Where things could go wrong]
> This patch is more about enabling CPU features and reducing branch history
> exposed, therefore, that the system is able to boot and run should denote that
> it is not introducing any regression.
> 
> For KVM, the most significant impact is the performance regression due to system
> call substitution since branch prediction probably won't perform as fast as the
> previous version for users who do not care about the mitigation.
> For this reason we are right now only enable this in auto mode which
> means only if firmware supports it.
> 
> Borislav Petkov (1):
>    x86/bugs: Use sysfs_emit()
> 
> Daniel Sneddon (2):
>    x86/bhi: Define SPEC_CTRL_BHI_DIS_S
>    KVM: x86: Add BHI_NO
> 
> Jim Mattson (2):
>    KVM: x86: Advertise CPUID.(EAX=7,ECX=2):EDX[5:0] to userspace
>    KVM: x86: Use a switch statement and macros in __feature_translate()
> 
> 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
> 
> Sean Christopherson (1):
>    KVM: x86: Update KVM-only leaf handling to allow for 100% KVM-only
>      leafs
> 
> Stefan Bader (1):
>    UBUNTU: [Config] Set CONFIG_BHI to enabled (auto)
> 
>   Documentation/admin-guide/hw-vuln/spectre.rst |  51 +++-
>   .../admin-guide/kernel-parameters.txt         |  12 +
>   arch/x86/Kconfig                              |  25 ++
>   arch/x86/entry/common.c                       |   6 +-
>   arch/x86/entry/entry_64.S                     |  61 +++++
>   arch/x86/entry/entry_64_compat.S              |   3 +
>   arch/x86/entry/syscall_32.c                   |  21 +-
>   arch/x86/entry/syscall_64.c                   |  19 +-
>   arch/x86/entry/syscall_x32.c                  |  10 +-
>   arch/x86/include/asm/cpufeatures.h            |  12 +
>   arch/x86/include/asm/msr-index.h              |   9 +-
>   arch/x86/include/asm/nospec-branch.h          |  17 ++
>   arch/x86/include/asm/syscall.h                |  10 +-
>   arch/x86/kernel/cpu/bugs.c                    | 218 +++++++++++++-----
>   arch/x86/kernel/cpu/common.c                  |  24 +-
>   arch/x86/kernel/cpu/scattered.c               |   1 +
>   arch/x86/kvm/cpuid.c                          |  29 ++-
>   arch/x86/kvm/reverse_cpuid.h                  |  45 +++-
>   arch/x86/kvm/vmx/vmenter.S                    |   2 +
>   arch/x86/kvm/x86.c                            |   3 +-
>   debian.master/config/annotations              |   3 +
>   21 files changed, 470 insertions(+), 111 deletions(-)
> 

Applied to jammy:linux for 2024.04.01-3 re-spin. Thanks.

-Stefan

-------------- 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/20240417/aa6cf1cc/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/20240417/aa6cf1cc/attachment-0001.sig>


More information about the kernel-team mailing list