The SUSE Linux Enterprise 11 SP4 realtime kernel was updated to receive
various security and bugfixes.
This update adds mitigations for various side channel attacks against
modern CPUs that could disclose content of otherwise unreadable memory
(bnc#1068032).
-
CVE-2017-5753: Local attackers on systems with modern CPUs featuring
deep instruction pipelining could use attacker controllable speculative
execution over code patterns in the Linux Kernel to leak content from
otherwise not readable memory in the same address space, allowing
retrieval of passwords, cryptographic keys and other secrets.
This problem is mitigated by adding speculative fencing on affected code
paths throughout the Linux kernel.
-
CVE-2017-5715: Local attackers on systems with modern CPUs featuring
branch prediction could use mispredicted branches to speculatively
execute code patterns that in turn could be made to leak other
non-readable content in the same address space, an attack similar to
CVE-2017-5753.
This problem is mitigated by disabling predictive branches, depending
on CPU architecture either by firmware updates and/or fixes in the
user-kernel privilege boundaries.
This is done with help of Linux Kernel fixes on the Intel/AMD x86_64
architectures. On x86_64, this requires also updates of the CPU microcode
packages, delivered in seperate updates.
As this feature can have a performance impact, it can be disabled using
the "nospec" kernel commandline option.
-
CVE-2017-5754: Local attackers on systems with modern CPUs featuring
deep instruction pipelining could use code patterns in userspace to
speculative executive code that would read otherwise read protected
memory, an attack similar to CVE-2017-5753.
This problem is mitigated by unmapping the Linux Kernel from the user
address space during user code execution, following a approach called
"KAISER". The terms used here are "KAISER" / "Kernel Address Isolation"
and "PTI" / "Page Table Isolation".
The following security bugs were fixed:
- CVE-2017-11600: net/xfrm/xfrm_policy.c in the Linux kernel did not
ensure that the dir value of xfrm_userpolicy_id is XFRM_POLICY_MAX or
less, which allowed local users to cause a denial of service
(out-of-bounds access) or possibly have unspecified other impact via an
XFRM_MSG_MIGRATE xfrm Netlink message (bnc#1050231).
- CVE-2017-13167: An elevation of privilege vulnerability in the kernel
sound timer was fixed. (bnc#1072876).
- CVE-2017-14106: The tcp_disconnect function in net/ipv4/tcp.c in the
Linux kernel allowed local users to cause a denial of service
(__tcp_select_window divide-by-zero error and system crash) by
triggering a disconnect within a certain tcp_recvmsg code path
(bnc#1056982).
- CVE-2017-15102: The tower_probe function in
drivers/usb/misc/legousbtower.c in the Linux kernel allowed local users
(who are physically proximate for inserting a crafted USB device) to
gain privileges by leveraging a write-what-where condition that occurs
after a race condition and a NULL pointer dereference (bnc#1066705).
- CVE-2017-15115: The sctp_do_peeloff function in net/sctp/socket.c in the
Linux kernel did not check whether the intended netns is used in a
peel-off action, which allowed local users to cause a denial of service
(use-after-free and system crash) or possibly have unspecified other
impact via crafted system calls (bnc#1068671).
- CVE-2017-15868: The bnep_add_connection function in
net/bluetooth/bnep/core.c in the Linux kernel did not ensure that an
l2cap socket is available, which allowed local users to gain privileges
via a crafted application (bnc#1071470).
- CVE-2017-16525: The usb_serial_console_disconnect function in
drivers/usb/serial/console.c in the Linux kernel allowed local users to
cause a denial of service (use-after-free and system crash) or possibly
have unspecified other impact via a crafted USB device, related to
disconnection and failed setup (bnc#1066618).
- CVE-2017-16527: sound/usb/mixer.c in the Linux kernel allowed local
users to cause a denial of service (snd_usb_mixer_interrupt
use-after-free and system crash) or possibly have unspecified other
impact via a crafted USB device (bnc#1066625).
- CVE-2017-16529: The snd_usb_create_streams function in sound/usb/card.c
in the Linux kernel allowed local users to cause a denial of service
(out-of-bounds read and system crash) or possibly have unspecified other
impact via a crafted USB device (bnc#1066650).
- CVE-2017-16531: drivers/usb/core/config.c in the Linux kernel allowed
local users to cause a denial of service (out-of-bounds read and system
crash) or possibly have unspecified other impact via a crafted USB
device, related to the USB_DT_INTERFACE_ASSOCIATION descriptor
(bnc#1066671).
- CVE-2017-16534: The cdc_parse_cdc_header function in
drivers/usb/core/message.c in the Linux kernel allowed local users to
cause a denial of service (out-of-bounds read and system crash) or
possibly have unspecified other impact via a crafted USB device
(bnc#1066693).
- CVE-2017-16535: The usb_get_bos_descriptor function in
drivers/usb/core/config.c in the Linux kernel allowed local users to
cause a denial of service (out-of-bounds read and system crash) or
possibly have unspecified other impact via a crafted USB device
(bnc#1066700).
- CVE-2017-16536: The cx231xx_usb_probe function in
drivers/media/usb/cx231xx/cx231xx-cards.c in the Linux kernel allowed
local users to cause a denial of service (NULL pointer dereference and
system crash) or possibly have unspecified other impact via a crafted
USB device (bnc#1066606).
- CVE-2017-16537: The imon_probe function in drivers/media/rc/imon.c in
the Linux kernel allowed local users to cause a denial of service (NULL
pointer dereference and system crash) or possibly have unspecified other
impact via a crafted USB device (bnc#1066573).
- CVE-2017-16538: drivers/media/usb/dvb-usb-v2/lmedm04.c in the Linux
kernel allowed local users to cause a denial of service (general
protection fault and system crash) or possibly have unspecified other
impact via a crafted USB device, related to a missing warm-start check
and incorrect attach timing (dm04_lme2510_frontend_attach versus
dm04_lme2510_tuner) (bnc#1066569).
- CVE-2017-16649: The usbnet_generic_cdc_bind function in
drivers/net/usb/cdc_ether.c in the Linux kernel allowed local users to
cause a denial of service (divide-by-zero error and system crash) or
possibly have unspecified other impact via a crafted USB device
(bnc#1067085).
- CVE-2017-16939: The XFRM dump policy implementation in
net/xfrm/xfrm_user.c in the Linux kernel allowed local users to gain
privileges or cause a denial of service (use-after-free) via a crafted
SO_RCVBUF setsockopt system call in conjunction with XFRM_MSG_GETPOLICY
Netlink messages (bnc#1069702).
- CVE-2017-17450: net/netfilter/xt_osf.c in the Linux kernel did not
require the CAP_NET_ADMIN capability for add_callback and
remove_callback operations, which allowed local users to bypass intended
access restrictions because the xt_osf_fingers data structure is shared
across all net namespaces (bnc#1071695).
- CVE-2017-17558: The usb_destroy_configuration function in
drivers/usb/core/config.c in the USB core subsystem in the Linux kernel
did not consider the maximum number of configurations and interfaces
before attempting to release resources, which allowed local users to
cause a denial of service (out-of-bounds write access) or possibly have
unspecified other impact via a crafted USB device (bnc#1072561).
- CVE-2017-17805: The Salsa20 encryption algorithm in the Linux kernel did
not correctly handle zero-length inputs, allowing a local attacker able
to use the AF_ALG-based skcipher interface
(CONFIG_CRYPTO_USER_API_SKCIPHER) to cause a denial of service
(uninitialized-memory free and kernel crash) or have unspecified other
impact by executing a crafted sequence of system calls that use the
blkcipher_walk API. Both the generic implementation
(crypto/salsa20_generic.c) and x86 implementation
(arch/x86/crypto/salsa20_glue.c) of Salsa20 were vulnerable
(bnc#1073792).
- CVE-2017-17806: The HMAC implementation (crypto/hmac.c) in the Linux
kernel did not validate that the underlying cryptographic hash algorithm
is unkeyed, allowing a local attacker able to use the AF_ALG-based hash
interface (CONFIG_CRYPTO_USER_API_HASH) and the SHA-3 hash algorithm
(CONFIG_CRYPTO_SHA3) to cause a kernel stack buffer overflow by
executing a crafted sequence of system calls that encounter a missing
SHA-3 initialization (bnc#1073874).
- CVE-2017-7472: The KEYS subsystem in the Linux kernel allowed local
users to cause a denial of service (memory consumption) via a series of
KEY_REQKEY_DEFL_THREAD_KEYRING keyctl_set_reqkey_keyring calls
(bnc#1034862).
- CVE-2017-8824: The dccp_disconnect function in net/dccp/proto.c in the
Linux kernel allowed local users to gain privileges or cause a denial of
service (use-after-free) via an AF_UNSPEC connect system call during the
DCCP_LISTEN state (bnc#1070771).
The following non-security bugs were fixed:
- Add upstream RT preemption points to block/blk-iopoll.c and
net/core/dev.c
- adm80211: return an error if adm8211_alloc_rings() fails (bsc#1048185).
- alsa: core: Fix unexpected error at replacing user TLV (bsc#1045538).
- alsa: hda/ca0132 - Fix memory leak at error path (bsc#1045538).
- alsa: timer: Add missing mutex lock for compat ioctls (bsc#1045538).
- asm alternatives: remove incorrect alignment notes.
- audit: Fix use after free in audit_remove_watch_rule() (bsc#1045205).
- autofs: do not fail mount for transient error (bsc#1065180).
- autofs: fix careless error in recent commit (bsc#1065180).
- blacklist.conf: Add PCI ASPM fix to blacklist (bsc#1045538)
- blacklist.conf: Blacklisted commit 2b1be689f3aadcfe0 ("printk/console:
Always disable boot consoles that use init memory before it is freed")
- bpf: prevent speculative execution in eBPF interpreter (bnc#1068032).
- carl9170: prevent speculative execution (bnc#1068032).
- dm bufio: fix integer overflow when limiting maximum cache size
(git-fixes).
- ecryptfs: fix dereference of NULL user_key_payload (bsc#1013018).
- eCryptfs: use after free in ecryptfs_release_messaging() (bsc#1013018).
- fnic: Use the local variable instead of I/O flag to acquire io_req_lock
in fnic_queuecommand() to avoid deadloack (bsc#1067816).
- fs/9p: Compare qid.path in v9fs_test_inode (bsc#1013018).
- fs-cache: fix dereference of NULL user_key_payload (git-fixes).
- fs: prevent speculative execution (bnc#1068032). [jkosina@xxxxxxx: hack
around kABI; this should be done in separate patch in patches.kabi
eventually]
- isa: Prevent NULL dereference in isa_bus driver callbacks (bsc#1045538).
- kabi fix for new hash_cred function (bsc#1012917).
- kabi: silence spurious kabi error in net/sctp/socket.c (bsc#1068671).
- kaiser: add "nokaiser" boot option, using ALTERNATIVE.
- kaiser: fix ldt freeing.
- kaiser: Kernel Address Isolation.
- kaiser: use ALTERNATIVE instead of x86_cr3_pcid_noflush.
- kaiser: work around kABI.
- kvm: SVM: Do not intercept new speculative control MSRs (bsc#1068032).
- kvm: x86: Add speculative control CPUID support for guests (bsc#1068032).
- locking/barriers: introduce new memory barrier gmb() (bnc#1068032).
- lpfc: check for valid scsi cmnd in lpfc_scsi_cmd_iocb_cmpl()
(bsc#1051133).
- mac80211: do not compare TKIP TX MIC key in reinstall prevention
(bsc#1066472).
- media: cx231xx-cards: fix NULL-deref at probe (bsc#1050431).
- mm/madvise.c: fix madvise() infinite loop under special circumstances
(bnc#1070964).
- mm/mmu_context, sched/core: Fix mmu_context.h assumption.
- nfs: Fix ugly referral attributes (git-fixes).
- nfs: improve shinking of access cache (bsc#1012917).
- p54: prevent speculative execution (bnc#1068032).
- powerpc/barrier: add gmb.
- powerpc: Correct instruction code for xxlor instruction (bsc#1064861,
git-fixes).
- powerpc: Fix emulation of mfocrf in emulate_step() (bsc#1064861,
git-fixes).
- powerpc/mm: Fix check of multiple 16G pages from device tree
(bsc#1064861, git-fixes).
- powerpc/pseries/vio: Dispose of virq mapping on vdevice unregister
(bsc#1067888, git-fixes f2ab6219969f).
- powerpc-rfi-flush.patch: disable due to boot failure
- powerpc: Secure memory rfi flush (bsc#1068032).
- pti: unbreak EFI (bsc#1074709).
- ptrace: Add a new thread access check (bsc#1068032).
- qeth: check not more than 16 SBALEs on the completion queue
(bnc#1072457, LTC#148203).
- Revert "mac80211: accept key reinstall without changing anything"
- s390: add ppa to system call and program check path (bsc#1068032).
- s390/disassembler: correct disassembly lines alignment (bnc#1066973,
LTC#161577).
- s390/disassembler: increase show_code buffer size (bnc#1066973,
LTC#161577).
- s390: fix transactional execution control register handling
(bnc#1072457, LTC#162116).
- s390: introduce CPU alternatives.
- s390: introduce CPU alternatives (bsc#1068032).
- s390/spinlock: add gmb memory barrier.
- s390/spinlock: add gmb memory barrier (bsc#1068032).
- s390/spinlock: add ppa to system call path.
- sched/core: Add switch_mm_irqs_off() and use it in the scheduler.
- sched/core: Idle_task_exit() shouldn’t use switch_mm_irqs_off().
- scsi_scan: Exit loop if TUR to LUN0 fails with 0x05/0x25 (bsc#1063043).
This is specific to FUJITSU ETERNUS_DX* targets. They can return
"Illegal Request - Logical unit not supported" and processing should
leave the timeout loop in this case.
- scsi: zfcp: fix erp_action use-before-initialize in REC action trace
(bnc#1066973, LTC#160081).
- sunrpc: add auth_unix hash_cred() function (bsc#1012917).
- sunrpc: add generic_auth hash_cred() function (bsc#1012917).
- sunrpc: add hash_cred() function to rpc_authops struct (bsc#1012917).
- sunrpc: add RPCSEC_GSS hash_cred() function (bsc#1012917).
- sunrpc: replace generic auth_cred hash with auth-specific function
(bsc#1012917).
- sunrpc: use supplimental groups in auth hash (bsc#1012917).
- temporary fix (bsc#1068032).
- udf: prevent speculative execution (bnc#1068032).
- usb: host: fix incorrect updating of offset (bsc#1047487).
- usb-serial: check for NULL private data in pl2303_suse_disconnect
(bsc#1064803).
- usb: uas: fix bug in handling of alternate settings (bsc#1071074).
- uvcvideo: prevent speculative execution (bnc#1068032).
- video: udlfb: Fix read EDID timeout (bsc#1045538).
- watchdog: hpwdt: add support for iLO5 (bsc#1024612).
- watchdog/hpwdt: Check source of NMI (bsc#1024612).
- x86-64: Give vvars their own page.
- x86-64: Map the HPET NX.
- x86/acpi: Handle SCI interrupts above legacy space gracefully
(bsc#1068984).
- x86/acpi: Reduce code duplication in mp_override_legacy_irq()
(bsc#1068984).
- x86/alternatives: Add instruction padding.
- x86/alternatives: Cleanup DPRINTK macro.
- x86/alternatives: Make JMPs more robust.
- x86/alternatives: Use optimized NOPs for padding.
- x86/boot: Add early cmdline parsing for options with arguments.
- x86, boot: Carve out early cmdline parsing function.
- x86/CPU/AMD: Add speculative control support for AMD (bsc#1068032).
- x86/CPU/AMD: Make the LFENCE instruction serialized (bsc#1068032).
- x86/CPU/AMD: Remove now unused definition of MFENCE_RDTSC feature
(bsc#1068032).
- x86/CPU: Check speculation control CPUID bit (bsc#1068032).
- x86/cpu: Fix bootup crashes by sanitizing the argument of the
‘clearcpuid=’ command-line option (bsc#1065600).
- x86/enter: Add macros to set/clear IBRS and set IBPB (bsc#1068032).
- x86/entry: Add a function to overwrite the RSB (bsc#1068032).
- x86/entry: Stuff RSB for entry to kernel for non-SMEP platform
(bsc#1068032).
- x86/entry: Use IBRS on entry to kernel space (bsc#1068032).
- x86/feature: Enable the x86 feature to control Speculation (bsc#1068032).
- x86/idle: Disable IBRS when offlining a CPU and re-enable on wakeup
(bsc#1068032).
- x86/idle: Toggle IBRS when going idle (bsc#1068032).
- x86/kaiser: Check boottime cmdline params.
- x86/kaiser: disable vmstat accounting.
- x86/kaiser: Move feature detection up (bsc#1068032).
- x86/kaiser: propagate info to /proc/cpuinfo.
- x86/kaiser: Rename and simplify X86_FEATURE_KAISER handling.
- x86/kvm: Add MSR_IA32_SPEC_CTRL and MSR_IA32_PRED_CMD to kvm
(bsc#1068032).
- x86/kvm: Flush IBP when switching VMs (bsc#1068032).
- x86/kvm: Pad RSB on VM transition (bsc#1068032).
- x86/kvm: Toggle IBRS on VM entry and exit (bsc#1068032).
- x86: Make alternative instruction pointers relative.
- x86/microcode/AMD: Add support for fam17h microcode loading
(bsc#1068032).
- x86/microcode/intel: Disable late loading on model 79 (bsc#1054305).
- x86/mm/64: Fix reboot interaction with CR4.PCIDE.
- x86/mm: Add a ‘noinvpcid’ boot option to turn off INVPCID.
- x86/mm: Add INVPCID helpers.
- x86/mm: Add the ‘nopcid’ boot option to turn off PCID.
- x86/mm: Build arch/x86/mm/tlb.c even on !SMP.
- x86/mm: Disable PCID on 32-bit kernels.
- x86/mm: Enable CR4.PCIDE on supported systems.
- x86/mm: fix bad backport to disable PCID on Xen.
- x86/mm: Fix INVPCID asm constraint.
- x86/mm: If INVPCID is available, use it to flush global mappings.
- x86/mm/kaiser: re-enable vsyscalls.
- x86/mm: Only set IBPB when the new thread cannot ptrace current thread
(bsc#1068032).
- x86/mm: Remove the UP asm/tlbflush.h code, always use the (formerly) SMP
code.
- x86/mm, sched/core: Turn off IRQs in switch_mm().
- x86/mm, sched/core: Uninline switch_mm().
- x86/mm: Set IBPB upon context switch (bsc#1068032).
- x86/MSR: Move native_*msr(… u64) to msr.h (bsc#1068032).
- x86/spec: Add IBRS control functions (bsc#1068032).
- x86/spec: Add "nospec" chicken bit (bsc#1068032).
- x86/spec: Check CPUID direclty post microcode reload to support IBPB
feature (bsc#1068032).
- x86/spec_ctrl: Add an Indirect Branch Predictor barrier (bsc#1068032).
- x86/spec_ctrl: Check whether IBPB is enabled before using it
(bsc#1068032).
- x86/spec_ctrl: Check whether IBRS is enabled before using it
(bsc#1068032).
- x86/svm: Add code to clear registers on VM exit (bsc#1068032).
- x86/svm: Clobber the RSB on VM exit (bsc#1068032).
- x86/svm: Set IBPB when running a different VCPU (bsc#1068032).
- x86/svm: Set IBRS value on VM entry and exit (bsc#1068032).
- xen/kaiser: add "nokaiser" boot option, using ALTERNATIVE.
- xen/KAISER: Kernel Address Isolation.
- xen/kaiser: use ALTERNATIVE instead of x86_cr3_pcid_noflush.
- xen/kaiser: work around kABI.
- xen/x86-64: Give vvars their own page.
- xen/x86-64: Map the HPET NX.
- xen/x86/alternatives: Add instruction padding.
- xen/x86/kaiser: Rename and simplify X86_FEATURE_KAISER handling.
- xen/x86/mm: Enable CR4.PCIDE on supported systems.
- xen/x86/mm/kaiser: re-enable vsyscalls.
- xen/x86/mm: Remove the UP asm/tlbflush.h code, always use the (formerly)
SMP code.
- xen: x86/mm, sched/core: Turn off IRQs in switch_mm().
- xen: x86/mm, sched/core: Uninline switch_mm().
- zd1211rw: fix NULL-deref at probe (bsc#1045479).