nfsd: memory corruption and kernel crash in nfsd4_lock.
It was discovered that certain operations with locks on NFS could result in a memory corruption and kernel crash in nfsd4_lock(). Note that, although the patch prevents new issues of this kind, it cannot fix the corruptions that have already occurred. So, kernel crashes are still possible even within a few hours after the ReadyKernel update has been applied, but should disappear after the reboot of the affected nodes.
Kernel crash due to lack of enough skb headroom.
It was found that the kernel could crash (skb_under_panic) when TEE target mirrors traffic to another interface. In this case skb may not have enough headroom to be processed correctly. It had been fixed for IPv4 but IPv6 continued to have the bug.
Memory allocation failed unexpectedly in __add_to_page_cache_locked().
Ext4 FS was unexpectedly remounted read-only in a container after the container reached the limits set in the memory cgroup. It happened because the relevant memory allocations failed in __add_to_page_cache_locked while __GFP_NOFAIL flag was dropped for certain reason.
ext4: using RENAME_WHITEOUT flag when renaming files could cause file system errors ('deleted inode referenced').
size_t-to-int conversion vulnerability in the filesystem layer.
It was discovered that the implementation of seq_file files in the Linux kernel contained an error related to integer conversion (size_t to a signed integer). A local unprivileged attacker could use this to cause a denial of service (system crash) or execute arbitrary code.
e2fsck considered the file system corrupted in certain situations because ext4 created initialized extents beyond the end of file.
ceph: out-of-bounds accesses in dio_get_pagev_size() caused memory corruption.
Network overlay 'weave' failed to create pairs of veth devices.
It was discovered that 'weave' network overlay used with Kubernetes tried to create veth devices with MTU 65535 in certain cases. Such operations failed because the maximum allowed MTU was 1500.
sch_teql: kernel crash in teql_destroy().
ext4: timestamps could be updated in wrong inodes in certain cases, if the filesystem was mounted with 'lazytime' option.
Memory leaks could happen when network-related structures were created for a starting container.
netfilter: potential memory corruption in certain setsockopt() operations.
It was discovered that an attacker could use a specially crafted sequence of system calls in a container to trigger a memory corruption in the implementation of setsockopt() in the netfilter subsystem. This could result in a kernel crash, or, potentially, could allow the attacker to escalate their privileges.
Incorrect updates of page cache during certain operations with Virtuozzo Storage could lead to kernel crash.
netfilter: potential memory corruption could happen when CLUSTERIP was used.
It was discovered that an attacker could trigger kernel memory corruption from a container by using a specially crafted sequence of operations with CLUSTERIP-related netfilter rules.
The kernel could crash in kmapset_hash() while stopping a container.
Heap buffer overflow in the iSCSI subsystem.
It was discovered that the kernel did not check the size of certain iSCSI-related data structures when presenting them in sysfs. A local unprivileged attacker could exploit this (by sending a specially crafted netlink message) to cause a denial of service (system crash) or possibly execute arbitrary code.
Unrestricted access to sessions and handles in the iSCSI subsystem.
It was discovered that the kernel did not properly restrict access to iSCSI sessions and transport handles. A local unprivileged attacker could use this to end arbitrary iSCSI sessions (potentially causing a denial of service) or to expose locations of certain kernel structures.
Out-of-bounds read in the iSCSI subsystem.
It was discovered that a local unprivileged attacker could use specially crafted netlink messages to trigger an out-of-bounds read in 'scsi_transport_iscsi' module. The kernel could crash as a result.
ip_set: null pointer dereference in ip_set_utest().
It was discovered that an attacker could trigger a kernel crash (null pointer dereference) in ip_set_utest() by running a specially crafted sequence of system calls in a container.
ip_set: kernel crash in ip_set_comment_free().
It was discovered that an attacker could trigger a kernel crash (general protection fault) in ip_set_comment_free() by running a specially crafted sequence of system calls in a container.
xfrm subsystem of the Linux kernel could accept user-defined templates with invalid protocol numbers, which caused warnings in xfrm_state_fini().
If a subdirectory of a file system was exported via NFS, an attacker could use READDIRPLUS operation to access other parts of that file system.
Virtual machines could not start in certain cases due to incorrect detection of CPU feature 'IBPB'.
'Bad unlock balance' error in ipmr_mfc_seq_stop().
It was discovered that the implementation of IPv6 multicast routing could try to access wrong data when a user tried to read certain files in /proc. An attacker could exploit that from a container to trigger 'bad unlock balance' error in ipmr_mfc_seq_stop(), followed by a kernel crash.
Soft lockup in ext4_ext_find_extent().
It was discovered that certain ioctl operations in ext4 did not check their arguments properly. An attacker could exploit that from a container to trigger soft lockups in ext4_ext_find_extent() function, which could result in a denial of service.
Incorrect locking in TTY subsystem could lead to use-after-free conditions and cause memory corruption.
A specially crafted program running in a container could make certain processes on the host hang (denial of service).
Kernel crash in mem_cgroup_from_cont() due to a race between memory reclaim and offlining of a cgroup.
ploop: certain operations with large ploop images could lead to a division by zero in __map_extent_bmap().
nfsd: Potential kernel crash in nfs4_put_stid().
'ploop grow' operation could fail in certain cases if the ploop image file contained holes.
Processes being killed by the OOM killer could continue consuming memory.
If a process running in a container performed large allocations of kernel memory, this could hit the memory limit for the container and trigger the OOM killer. It was discovered, however, that the process being killed by it could continue consuming memory for some time. This could lead to out of memory conditions on the host.
bcache: Potential kernel crash when using RAID1 as a backing device.
ploop: Potential kernel crash or data corruption during backups due to racy operations with lockout data.
netfilter/ipset: excessive memory consumption leading to a denial of service.
If was discovered that not all memory allocated for ipset-related data was properly accounted for. An attacker could exploit it from a container to consume lots of kernel memory, making the host system unusable (denial of service).
NFS v4: potential memory corruption on the client system when processing security attributes.
It was discovered that a buffer overflow and memory corruption were possible if a system tried to mount an NFS v4 share where the files had security labels in the file attributes. An attacker would need to control the NFS server and make it send a specific series of responses to trigger the issue. The issue allows the attacker to crash the kernel on the client system or, potentially, escalate their privileges there.
netfilter: kernel crash due to a buffer overflow in ctnetlink_parse_tuple_filter().
It was discovered that a local attacker could pass a specially crafted configuration of conntrack to the kernel to cause a buffer overflow in ctnetlink_parse_tuple_filter() function. As a result, the kernel could crash.
Potential kernel crash (use-after-free) in the implementation of usermode helpers.
A race condition was discovered in the implementation of usermode helpers in the kernel. An attacker could exploit it from a container to cause a denial-of-service (kernel crash due to a use-after-free), or, potentially, to escalate their privileges in the system.
nf_tables: kernel crash in nf_tables_getset().
It was discovered that the implementation of nf_tables did not properly validate certain parameters. An attacker could exploit this from a container to cause a kernel crash: NULL pointer dereference or a general protection fault in nf_tables_getset().
nfnetlink: potential kernel crash (skb_over_panic) in skb_put().
It was discovered that nfnetlink subsystem did not properly validate certain messages. An attacker could exploit this from a container to cause a kernel crash: skb_over_panic in skb_put().
Memory reclaim could become too slow leading to high LA on the nodes.
The original fix for PSBM-99181 and related issues introduced a problem: management of shrinkers used to reclaim memory could become very inefficient in certain cases, causing higher load on the affected nodes.
nf_conntrack: potential kernel crash in nf_ct_gre_keymap_destroy().
memcg: the limit on page cache (memory.cache.limit_in_bytes) could be exceeded significantly in certain cases.
File system of a container becomes read-only, __ext4_handle_dirty_metadata() reports error 28.
Possible use-after-free error due to a race condition in cdev_get().
It was discovered that use-after-free condition was possible in cdev_get() if multiple processes simultaneously accessed a character device in a certain way. A local attacker could potentially exploit this to crash the kernel.
memcg: kernel crash in memcg_destroy_kmem_caches() caused by unbalanced css_tryget/css_put operations.
Hard lockup and kernel crash caused by incorrect locking in calc_load_ve().
af_packet: potential soft lockup in case of certain errors when using TPACKET_V3.
It was found that if TPACKET_V3 was used and the kernel failed to obtain certain settings from a relevant network device, the retirement timer could be set incorrectly in the implementation AF_PACKET protocol. This could result in soft lockups and excessive CPU usage.
netlabel: kernel crash (null pointer dereference) while processing a specially crafted CIPSO packet.
A NULL pointer dereference was found in the implementation of SELinux. The issue occurs while importing the Commercial IP Security Option (CIPSO) protocol category bitmap into SELinux extensible bitmap. Parsing of a specially crafted CIPSO packet sent by a remote attacker could lead to a kernel crash (remote DoS).
Core dumps of some processes could contain uninitialized kernel data.
It was discovered that core dumps of userspace processes could contain copies of uninitialized kernel memory areas in certain cases. Although it is difficult for an attacker to control what data is in these areas, this issue, in theory, could be used to obtain sensitive information from the kernel.
crypto/authenc: kernel crash in crypto_ahash_setkey() when payload of a key is longer than 4 bytes and is not aligned.
An out-of-bounds read was found in the implementation of IPsec cryptographic algorithms ('authenc' module). When payload of a key was longer than 4 bytes but was not properly aligned, crypto_authenc_extractkeys() function could try to read data from a wrong location. This could lead to a kernel crash in crypto_ahash_setkey().
ploop: kernel crash (division by zero) in purge_lru_warn().
Denial of service by corrupting mountpoint reference counter.
It was discovered that a race condition was possible between pivot_root() and put_mountpoint() operations. A local unprivileged attacker could exploit this to corrupt mountpoint reference counter and cause a denial of service (kernel crash).
ext4: potential kernel crash in ext4_cross_rename(): certain error cases were not checked properly.
ext4: use-after-free when unmounting a corrupted file system with files that have no links.
futex: potential system hang due to a missing unlock operation in the error path of futex_wait_requeue_pi().
cbt: potential endless loops in the error paths.
netfilter: potential memory corruption caused by a helper from nf_conntrack_h323 module.
nf_conntrack: potential kernel crash in netlink_has_listeners().
ext4: attempts to freeze the FS could hang in certain cases due to an unbalanced internal write counter.
netlink: performance issues due to direct memory reclaim in netlink_dump() and netlink_trim().
memcg: kernel could crash when memory was uncharged from a cgroup while the cgroup was going offline.
It was found that a race was possible between uncharging memory from a cgroup and making that cgroup offline. This could lead to premature destruction of the cgroup and could cause a kernel crash.
packet: packet_sk_charge() could try to charge zero memory, leading to a use-after-free in memcg subsystem.
memcg: potential use-after-free in the implementation of uncharge operations.
qxl: kernel crash in qxl_release_fence_buffer_objects().
i40iw: kernel complains about failed RTNL assertion in i40iw_addr_resolve_neigh().
Slow memory allocations in nf_conntrack when a netns is created.
When a new netns is created, high-order page allocations can happen in nf_ct_alloc_hashtable(). If memory is fragmented, such allocations can become very slow due to memory reclaim, etc. This, in turn, could result in significant slowdowns on the node.
nfsd: memory corruption in nfsd4_lock().
Potential hard lockups in timer-related code: jiffies_lock could be held for a long time.
(enhancement) ploop: added interface to dump the cached BAT.
It was discovered that containers could get a broken on-disk BAT but have healthy in-kernel data in certain cases. To detect and fix such conditions, the means to dump the cached BAT were implemented in ploop. Note that, to make use of this enhancement, version 220.127.116.11 or newer of the userspace ploop tools is needed.
netfilter: kernel crash in the implementation of nf_tables due to use-after-free in dynamic operations.
A container with NFS server could force other such containers to use the older NFSv4 client tracker, which slows down NFS mounts.
ext4: potential kernel crash (general protection fault) in ext4_free_blocks().
mpt2sas: scheduling while atomic in _scsih_io_done().