Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

suse-cvrf логотип

SUSE-SU-2026:4936-1

Опубликовано: 29 окт. 2026
Источник: suse-cvrf

Описание

Security update for the Linux Kernel

The SUSE Linux Enterprise 15 SP5 kernel was updated to fix various security issues:

The following security issues were fixed:

  • CVE-2026-72041: espintcp: use sk_msg_free_partial to fix partial send (bsc#1275510).
  • CVE-2026-72110: bpf,fork: wipe ->bpf_storage before bailouts that access it (bsc#1277357).
  • CVE-2026-72301: ASoC: SOF: ipc3-control: Fix TOCTOU in bytes_put and bytes_get (bsc#1277742).
  • CVE-2026-72493: net: serialize netif_running() check in enqueue_to_backlog() (bsc#1276951).
  • CVE-2026-74578: crypto: algif_skcipher - force synchronous processing on trees without ctx->state (bsc#1275564).
  • CVE-2026-74587: sctp: fix use-after-free of cached ASCONF chunk (bsc#1277821).
  • CVE-2026-74624: netfilter: conntrack: work around exceeded receive window (bsc#1277599).
  • CVE-2026-80977: net: skbuff: don't touch shared zerocopy state in skb_tx_error() (bsc#1280259).
  • CVE-2026-89528: svcrdma: Reject Read lists that exceed the page budget (bsc#1280743).
  • CVE-2026-89542: SUNRPC: harden gss_krb5_unwrap_v2 against short tokens (bsc#1280387).
  • CVE-2026-89669: nfsd: fix cpntf publish race in nfs4_init_cp_state (bsc#1280251).
  • CVE-2026-90011: scsi: target: iscsi: Reserve a terminator byte for the login payload (bsc#1281280).
  • CVE-2026-90088: Bluetooth: RFCOMM: Validate MTU in rfcomm_apply_pn() to prevent infinite loop (bsc#1281397).
  • CVE-2026-97555: smb: client: fix heap overflow in DACL owner/group rewrite (bsc#1283851).
  • CVE-2026-97564: smb: client: reject userspace cifs.idmap descriptions (bsc#1283946).
  • CVE-2026-98015: net/mlx5: E-Switch: fix use-after-free in mlx5_eswitch_termtbl_put (bsc#1283963).
  • CVE-2026-98016: net/mlx5e: Fix use-after-free race in sample_restore_put() (bsc#1283894).
  • CVE-2026-98041: bpf: Don't predict JMP32 pointer vs zero comparisons (bsc#1284064).
  • CVE-2026-98130: sctp: fix a TOCTOU race in SCTP_CMD_TIMER_START (bsc#1283835).
  • CVE-2026-98248: arm64: Use load LSE atomics for the non-return per-CPU atomic operations (bsc#1284518).
  • CVE-2026-98253: RDMA/ucma: Serialize join and leave on copy_to_user failure (bsc#1284790).
  • CVE-2026-98260: exec: Cleanup POSIX timers right after de_thread() (bsc#1284408).
  • CVE-2026-98323: RDMA/siw: Bound fragmented header copies by the remaining length (bsc#1284713).
  • CVE-2026-98357: IB/isert: wait for deferred control PDU completions before releasing the connection (bsc#1284791).
  • CVE-2026-98359: RDMA/core: Reject unregistering netdevs in ib_get_eth_speed (bsc#1284746).
  • CVE-2026-98432: ipv4: free inet_opt and ireq_opt after an RCU grace period (bsc#1285685).
  • CVE-2026-99999: ipv4: validate checksum_start before completing checksum (bsc#1285684).

The following non security issues were fixed:

  • kernel-binary.spec.in: Emulate kabi.pl error when suse-kabi-tools is used.
  • netfilter: nfnetlink_queue: unbreak SCTP traffic (bsc#1285684).

Список пакетов

Container suse/sle-micro/base-5.5:latest
kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest
kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS
cluster-md-kmp-default-5.14.21-150500.55.195.1
dlm-kmp-default-5.14.21-150500.55.195.1
gfs2-kmp-default-5.14.21-150500.55.195.1
kernel-64kb-5.14.21-150500.55.195.1
kernel-64kb-devel-5.14.21-150500.55.195.1
kernel-default-5.14.21-150500.55.195.1
kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
kernel-default-devel-5.14.21-150500.55.195.1
kernel-devel-5.14.21-150500.55.195.1
kernel-docs-5.14.21-150500.55.195.1
kernel-macros-5.14.21-150500.55.195.1
kernel-obs-build-5.14.21-150500.55.195.1
kernel-source-5.14.21-150500.55.195.1
kernel-syms-5.14.21-150500.55.195.1
ocfs2-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS
cluster-md-kmp-default-5.14.21-150500.55.195.1
dlm-kmp-default-5.14.21-150500.55.195.1
gfs2-kmp-default-5.14.21-150500.55.195.1
kernel-64kb-5.14.21-150500.55.195.1
kernel-64kb-devel-5.14.21-150500.55.195.1
kernel-default-5.14.21-150500.55.195.1
kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
kernel-default-devel-5.14.21-150500.55.195.1
kernel-devel-5.14.21-150500.55.195.1
kernel-docs-5.14.21-150500.55.195.1
kernel-macros-5.14.21-150500.55.195.1
kernel-obs-build-5.14.21-150500.55.195.1
kernel-source-5.14.21-150500.55.195.1
kernel-syms-5.14.21-150500.55.195.1
ocfs2-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise Live Patching 15 SP5
kernel-default-livepatch-5.14.21-150500.55.195.1
kernel-default-livepatch-devel-5.14.21-150500.55.195.1
kernel-livepatch-5_14_21-150500_55_195-default-1-150500.11.3.1
SUSE Linux Enterprise Micro 5.5
kernel-default-5.14.21-150500.55.195.1
kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
kernel-macros-5.14.21-150500.55.195.1
kernel-source-5.14.21-150500.55.195.1
SUSE Linux Enterprise Server 15 SP5-LTSS
cluster-md-kmp-default-5.14.21-150500.55.195.1
dlm-kmp-default-5.14.21-150500.55.195.1
gfs2-kmp-default-5.14.21-150500.55.195.1
kernel-64kb-5.14.21-150500.55.195.1
kernel-64kb-devel-5.14.21-150500.55.195.1
kernel-default-5.14.21-150500.55.195.1
kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
kernel-default-devel-5.14.21-150500.55.195.1
kernel-devel-5.14.21-150500.55.195.1
kernel-docs-5.14.21-150500.55.195.1
kernel-macros-5.14.21-150500.55.195.1
kernel-obs-build-5.14.21-150500.55.195.1
kernel-source-5.14.21-150500.55.195.1
kernel-syms-5.14.21-150500.55.195.1
kernel-zfcpdump-5.14.21-150500.55.195.1
ocfs2-kmp-default-5.14.21-150500.55.195.1
reiserfs-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise Server for SAP Applications 15 SP5
cluster-md-kmp-default-5.14.21-150500.55.195.1
dlm-kmp-default-5.14.21-150500.55.195.1
gfs2-kmp-default-5.14.21-150500.55.195.1
kernel-default-5.14.21-150500.55.195.1
kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
kernel-default-devel-5.14.21-150500.55.195.1
kernel-devel-5.14.21-150500.55.195.1
kernel-docs-5.14.21-150500.55.195.1
kernel-macros-5.14.21-150500.55.195.1
kernel-obs-build-5.14.21-150500.55.195.1
kernel-source-5.14.21-150500.55.195.1
kernel-syms-5.14.21-150500.55.195.1
ocfs2-kmp-default-5.14.21-150500.55.195.1
reiserfs-kmp-default-5.14.21-150500.55.195.1

Описание

In the Linux kernel, the following vulnerability has been resolved: espintcp: use sk_msg_free_partial to fix partial send sk_msg_free_partial() ensures consistency of the skmsg at every iteration, without having to manually handle uncharges and offsets. This simplifies the code, and fixes some bugs in skmsg accounting when we don't send the full contents.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bpf,fork: wipe ->bpf_storage before bailouts that access it Currently, copy_process() can bail out to free_task() before p->bpf_storage has been initialized, with this call graph (shown here for the !CONFIG_MEMCG case): copy_process dup_task_struct arch_dup_task_struct [copies the entire task_struct, including ->bpf_storage member] [RLIMIT_NPROC check fails] delayed_free_task free_task bpf_task_storage_free rcu_dereference(task->bpf_storage) bpf_local_storage_destroy In this case, the nascent task's ->bpf_storage member that bpf_local_storage_destroy() operates on is a plain copy of the parent's ->bpf_storage pointer, not a real initialized pointer. This leads to badness (kernel hangs, UAF). This is reachable as long as the process calling fork() has been inserted into a task storage map.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ASoC: SOF: ipc3-control: Fix TOCTOU in bytes_put and bytes_get In sof_ipc3_bytes_put(), the size used for the memcpy is derived from the old data->size already in the buffer, not the incoming new data's size field. If the new data has a different size, the copy length is wrong: it may truncate valid data or copy stale bytes. Similarly, sof_ipc3_bytes_get() checks data->size against max_size without accounting for the sizeof(struct sof_ipc_ctrl_data) offset of the flex array within the allocation. Fix bytes_put to validate and use the incoming data's sof_abi_hdr.size from ucontrol before copying. Fix bytes_get to subtract sizeof(*cdata) from the bounds check to match the actual available space.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: serialize netif_running() check in enqueue_to_backlog() Syzbot reported a KASAN slab-use-after-free in fib_rules_lookup(). The root cause is a race condition where packets can escape the backlog flushing during device unregistration (e.g., during netns exit). Commit e9e4dd3267d0 ("net: do not process device backlog during unregistration") introduced a lockless netif_running() check in enqueue_to_backlog() to prevent queuing packets to an unregistering device. However, this creates a TOCTOU race window. A lockless transmitter (like veth_xmit) can pass the check before dev_close() clears IFF_UP. If the transmitter is then delayed, flush_all_backlogs() can run and finish before the transmitter grabs the backlog lock and queues the packet. The packet then escapes the flush and triggers UAF later when processed. Fix this by moving the netif_running() check inside the backlog lock. This serializes the check with the flush work (which also grabs the lock). We then either queue the packet before the flush runs (so it gets flushed), or check netif_running() after the flush/close completes (so it gets dropped).


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: crypto: algif_skcipher - force synchronous processing on trees without ctx->state The AIO/async path in skcipher_recvmsg() passes the socket-wide ctx->iv directly into the skcipher request. After io_submit() the socket lock is dropped and the request is processed asynchronously, so a concurrent sendmsg(ALG_SET_IV) can overwrite ctx->iv and make the in-flight request run under an attacker-controlled IV. For CTR/stream modes this is IV/keystream reuse and lets an unprivileged user recover the plaintext of a concurrent operation. Snapshotting ctx->iv into per-request storage for the async path is not sufficient. For ciphers with statesize == 0 - which includes cbc and ctr - the MSG_MORE inter-chunk IV chaining is carried solely by the in-place req->iv writeback, which a snapshot redirects into per-request memory that af_alg_free_resources() releases on completion, silently producing wrong output. Writing the IV back from the completion callback instead is not possible either: that would require lock_sock() there, but the callback can run in softirq/atomic context, so it must not sleep. Make the operation synchronous instead, which removes both the IV race and any writeback race. This is equivalent to the upstream resolution, commit fcc77d33a34c ("net: Remove support for AIO on sockets"), which removed the AIO socket path across net/ entirely and so produces the same end state for this file. This patch deviates from that commit deliberately: rather than removing AIO socket support tree-wide, which would be far too invasive for stable, it removes only the AIO branch in crypto/algif_skcipher.c. io_submit() now completes synchronously; AF_ALG async is rarely used in practice. The -EIOCBQUEUED check in skcipher_recvmsg() is now dead but harmless, and is left alone to keep the fix minimal. Tested on 6.6.y: attacker IV injection dropped from 2296/200000 to 0/200000 after the change; MSG_MORE chunked CTR output bit-identical to single-shot.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: fix use-after-free of cached ASCONF chunk addip_last_asconf caches the outstanding outbound ASCONF chunk. The normal ASCONF-ACK completion path releases the chunk and clears the pointer. However, sctp_asconf_queue_teardown() releases the cached chunk without clearing addip_last_asconf. During peer restart handling, sctp_sf_do_dupcook_a() queues SCTP_CMD_PURGE_ASCONF_QUEUE, which invokes sctp_asconf_queue_teardown() while the association remains alive and leaves the pointer dangling. A delayed authenticated ASCONF-ACK can then reach sctp_sf_do_asconf_ack(), which accesses the stale chunk and passes it to sctp_process_asconf_ack(), causing a use-after-free and a second release. Clearing the pointer exposes a race with T4 expiry. Peer restart handling queues the timer stop before the purge, but SCTP_CMD_TIMER_STOP uses timer_delete(), which does not wait for a callback already running on another CPU. Such a callback can reach sctp_sf_t4_timer_expire() after the purge and dereference NULL. Clear addip_last_asconf after releasing the cached chunk, and make sctp_sf_t4_timer_expire() consume a stale T4 expiry if no outstanding ASCONF remains.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack: defer invalid log until after unlock TCP and SCTP conntrack paths can emit invalid-packet logs while ct->lock is still held. When invalid logging is routed to nfnetlink_log and conntrack export is enabled, the log path can re-enter conntrack netlink glue and dump the same conntrack again. Protocol attribute dumping may take ct->lock, so logging while holding that lock can deadlock. Defer the TCP invalid logs by storing only the minimal log context while ct->lock is held and emitting the log after unlocking. Also make the TCP timeout-lowering invalid path return whether a log is needed, then emit that log after unlocking. Do the same for the SCTP invalid state-transition log that can be reached while ct->lock is held. Add a lockdep assertion to nf_ct_l4proto_log_invalid() so future callers that log invalid conntracks while holding ct->lock are caught outside TCP and SCTP as well.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: skbuff: don't touch shared zerocopy state in skb_tx_error() skb_tx_error() completes the zerocopy uarg and clears SKBFL_ALL_ZEROCOPY, and skb_zcopy_downgrade_managed() clears SKBFL_MANAGED_FRAG_REFS. Both live in skb_shinfo(), which every clone shares, while the caller only owns the reference it is about to drop. Through a clone it tells the producer its pages are free and drops SKBFL_SHARED_FRAG for an skb that is still in flight. Open vSwitch reaches this with a non-last OVS_ACTION_ATTR_RECIRC: clone_execute() sends a skb_clone() into ovs_dp_process_packet() while do_execute_actions() keeps forwarding the original, and skb_clone() does not privatise the frags here -- skb_orphan_frags() returns early on SKBFL_DONT_ORPHAN. A flow miss on the clone then strips the marker from the packet still being forwarded, and a later local ESP delivery decrypts in place over frags it does not own privately. Skip it for a cloned skb. Nothing is lost: skb_release_data() clears the zerocopy state once the last reference to the shared data goes.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: svcrdma: Reject Read lists that exceed the page budget Individual Read segment lengths are validated at decode time, but nothing prevents a requester from sending multiple segments whose cumulative length exceeds the rq_pages array budget. When one segment fills the page array exactly, the runtime guard in svc_rdma_build_read_segment() is bypassed because len reaches zero. A subsequent segment then accesses the NULL sentinel slot at rq_pages[rq_maxpages], resulting in a NULL pointer dereference during DMA mapping. Accumulate pages across all Read segments and reject the message at decode time when the total would overflow the page budget.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: SUNRPC: harden gss_krb5_unwrap_v2 against short tokens gss_krb5_unwrap_v2() reads the EC and RRC header fields at ptr+4 and ptr+6 before validating that the token is at least GSS_KRB5_TOK_HDR_LEN (16) bytes long, and its rotate_left() helper passes buf->len - base to xdr_buf_subsegment() without verifying that base <= buf->len. When a caller hands in a sub-16-byte token, or a token whose declared len leaves base past the end of the buffer, three distinct failures follow: gss_krb5_unwrap_v2(offset, len, buf) ptr = buf->head[0].iov_base + offset ec = *(ptr + 4) /* OOB read on short head */ rrc = *(ptr + 6) /* OOB read on short head */ rotate_left(offset + 16, buf, rrc) xdr_buf_subsegment(buf, &subbuf, base, buf->len - base) /* u32 wrap when base > len */ _rotate_left(&subbuf, shift) shift %= buf->len /* divide-by-zero when base == len */ After decryption, the cleanup arithmetic has the same shape: movelen = min_t(unsigned int, buf->head[0].iov_len, len); movelen -= offset + GSS_KRB5_TOK_HDR_LEN + headskip; BUG_ON(offset + GSS_KRB5_TOK_HDR_LEN + headskip + movelen > buf->head[0].iov_len); The BUG_ON re-adds the value just subtracted, so it reduces to min(A, B) > A and is permanently false; it cannot catch the unsigned underflow of movelen, which then drives a ~UINT_MAX-byte memmove(). Add four defense-in-depth guards inside the unwrap core so it is safe regardless of what its callers validate: - reject tokens with len - offset < GSS_KRB5_TOK_HDR_LEN before touching ptr+4/ptr+6; - bail from rotate_left() when buf->len <= base, covering both the underflow and zero-length cases; - return early from _rotate_left() when buf->len is zero, so the shift %= buf->len modulo cannot fault; - replace the dead BUG_ON with a live check that returns GSS_S_DEFECTIVE_TOKEN before the movelen subtraction.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nfsd: initialize copy-notify stateid before publishing it nfsd4_copy_notify() finished initializing the cpntf state after nfs4_alloc_init_cpntf_state() had already linked it into the s2s_cp_stateids IDR and the parent's sc_cp_list, with cs_count == 1 (the membership reference) and none held for the caller. A racing OFFLOAD_CANCEL (crafted cl_id == nn->s2s_cp_cl_id plus the guessable so_id) could reach manage_cpntf_state() and free the entry, turning the caller's subsequent cpn_cnr_stateid read and cp_p_stateid/cp_p_clid writes into use-after-free. The owning clientid was also only recorded after publication, so it could not gate an ownership check in that window. Record cp_p_stateid and cp_p_clid inside nfs4_alloc_init_cpntf_state() before nfs4_init_cp_state() publishes the entry, and return it with an extra reference. The caller reads the stateid under that reference and drops it with nfs4_put_cpntf_state(); on a late error the laundromat reaps the entry.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: scsi: target: iscsi: Reserve a terminator byte for the login payload iscsi_target_check_login_request() rejects a login PDU whose DataSegmentLength exceeds MAX_KEY_VALUE_PAIRS, but the test is '>' and login->req_buf is allocated with exactly MAX_KEY_VALUE_PAIRS bytes. Since iscsit_get_login_rx() receives payload_length + padding bytes, where padding = ((-payload_length) & 3); any payload_length from 8189 to 8192 fills the whole 8192 byte buffer. The write stays in bounds, but no byte is left for a NUL terminator. The buffer is subsequently consumed as a C string. In the CHAP path chap_check_algorithm() calls kstrdup(a_str), and extract_param() calls strstr(in_buf, pattern) followed by strlen_semi(), none of which take a length. convert_null_to_semi() additionally rewrites every embedded NUL to ';', so even a payload made of well formed NUL separated key=value records is left without a terminator. These walk past the end of the object into adjacent slab memory. It is reachable by an unauthenticated initiator against a portal configured for CHAP; when authentication is not required iscsi_login_zero_tsih_s2() rewrites AuthMethod to None and the CHAP path is never entered. Allocate one extra byte. kzalloc() zeroes it and nothing ever writes to it, as every writer copies to offset 0 for at most MAX_KEY_VALUE_PAIRS bytes, so the buffer is always terminated.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: RFCOMM: Validate MTU in rfcomm_apply_pn() to prevent infinite loop rfcomm_apply_pn() accepts the MTU value from a remote PN (Parameter Negotiation) frame without checking for zero. When the remote peer sends an MTU of zero, d->mtu is set to 0. This causes the sendmsg path to enter an infinite loop when fragmenting data, as each fragment has size == min_t(size_t, len, 0) == 0, so the remaining length never decreases. The infinite allocation of zero-length skbs exhausts all system memory. Fix by clamping d->mtu to RFCOMM_DEFAULT_MTU when the negotiated value is zero, consistent with the initial value assigned in rfcomm_dlc_alloc().


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: smb: client: fix heap overflow in DACL owner/group rewrite When id_mode_to_cifs_acl rewrites an existing DACL, it allocates a buffer sized according to the on-disk DACL length reported by dacl_ptr->size. However, replace_sids_and_copy_aces may rewrite each ACE with a new owner/group SID obtained from the cifs.idmap upcall. Those SIDs can have up to SID_MAX_SUB_AUTHORITIES (15) sub-authorities, making each ACE up to 76 bytes (sizeof(struct smb_ace)). If the original DACL contains short SIDs (e.g., 1 sub-authority) while the replacement SIDs are long, the rewritten ACEs overflow the allocation. Fix this by always budgeting for worst-case SID expansion: allocate sizeof(struct smb_acl) plus num_aces * sizeof(struct smb_ace), which covers the smb_acl header and room for every ACE at maximum SID size. This replaces the previous split logic that used dacl_ptr->size for cifsacl mounts but num_aces * sizeof(struct smb_ace) for mode_from_sid mounts: both paths can trigger the same rewrite and need the same headroom. KASAN reports this as: BUG: KASAN: slab-out-of-bounds in build_sec_desc+0x1e8a/0x2680 [cifs] Write of size 4 at addr ffff8881a5e25374 by task chown/5298 ... The buggy address is located 0 bytes to the right of allocated 884-byte region [ffff8881a5e25000, ffff8881a5e25374)


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: smb: client: reject userspace cifs.idmap descriptions cifs.idmap key descriptions carry authority-bearing fields (owner and group SIDs and uid/gid values in "os:"/"gs:"/"oi:"/"gi:" form) that the cifs.idmap upcall helper treats as kernel-originating inputs. Unlike its sibling cifs.spnego, the cifs.idmap key type has no vet_description hook, so userspace can create keys of this type through request_key(2)/add_key(2) and supply those fields without CIFS origin. A request_key(2) call with a non-NULL callout then drives a root usermodehelper upcall (/sbin/request-key -> cifs.idmap) that consumes the unvetted description in root context. Only accept cifs.idmap descriptions while CIFS is using its private root_cred to request the key. id_to_sid()/sid_to_id() already run under override_creds(root_cred), so the kernel-originated path is unaffected. This mirrors commit 3da1fdf4efbc ("smb: client: reject userspace cifs.spnego descriptions"), which applied the same restriction to cifs.spnego.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net/mlx5: E-Switch: fix use-after-free in mlx5_eswitch_termtbl_put In mlx5_eswitch_termtbl_put(), the zero-ref cleanup check reads tt->ref_count after termtbl_mutex has been released. Two concurrent callers on the same mlx5_termtbl_handle race: one decrements ref_count to zero, removes the hash entry, and calls kfree(tt) while the other has already dropped the mutex and is about to evaluate if (!tt->ref_count), producing a use-after-free. Fix this by capturing the result of the decrement into a stack-local last variable before dropping the mutex. The cleanup decision is now made entirely under termtbl_mutex, and tt is not touched after kfree.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: Fix use-after-free race in sample_restore_put() Concurrent teardown of TC sample rules sharing the same restore context may re-read restore->count after dropping restore_lock. At that point another thread may already have completed cleanup and freed the restore object. Use the result of the refcount decrement while holding restore_lock to determine whether cleanup is needed.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bpf: Don't predict JMP32 pointer vs zero comparisons Consider the following program: r1 = map_value; /* low 32 bits are zero at runtime */ r6 = 0xdead000000000000; if w1 != 0 goto l1; l0: r1 += r6; r2 = *(u64 *)(r1 + 0); exit; l1: r6 = 0; goto l0; At the moment is_branch_taken() reports the jump as always taken, because it does not distinguish between BPF_JMP and BPF_JMP32 comparisons when processing 'if w1 != 0 ...'.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: fix a TOCTOU race in SCTP_CMD_TIMER_START The SCTP_CMD_TIMER_START handler checks timer_pending() before calling timer_reduce(). The timer can expire and detach between these operations, causing timer_reduce() to rearm the timer without taking the association reference required for the newly armed timer. The timer callback later unconditionally drops its association reference, which can leave the association reference count unbalanced and result in use-after-free during association teardown. Use the return value of timer_reduce() to determine whether the timer was actually armed. Take the association reference only when timer_reduce() successfully starts a new timer, closing the race between checking the timer state and rearming it. This issue was reported by Nico Yip (@_cyeaa_) working with TrendAI Zero Day Initiative.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: arm64: percpu: Fix LSE operations on {8,16}-bit types The assembly for __percpu_##name##_case_##sz() and __percpu_##name##_return_case_##sz() doesn't use the 'sfx' macro argument to form the LSE instruction. Without 'sfx', a W register argument will imply a 32-bit memory location, and consequently {8,16}-bit ops will erroneously read and write 32 bits of memory when the LSE instruction is used. Fix this by appending 'sfx' to 'op_lse' to LSE instruction. It is not necessary (and not valid) to append 'sfx' to 'op_llsc', as 'op_llsc' is a register-register operation which does not access memory (and does not take a size suffix).


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/ucma: Serialize join and leave on copy_to_user failure rdma_join_multicast() queues RoCE work that later reads the ucma_multicast through event->param.ud.private_data, then list_add()s the CMA multicast at the head of id_priv->mc_list. rdma_leave_multicast() matches only by sockaddr and destroys the first hit. ucma_process_join() used to drop ctx->mutex after a successful join and retake it only if copy_to_user() failed. Two concurrent JOIN_MCAST calls with the same address can therefore insert a second CMA entry before the first thread's leave. leave then cancels the newer work and the older worker still dereferences the ucma_multicast that the first thread frees. Keep ctx->mutex held from rdma_join_multicast() through copy_to_user() and, on -EFAULT, through rdma_leave_multicast() so leave cannot miss this join. Do not leave if join itself failed: that path never published this address on mc_list, and a leave-by-addr would destroy an earlier successful join.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: exec: Cleanup POSIX timers right after de_thread() A per-thread CPU timer holds a reference to the PID of the thread it is attached to and, while it is armed, its node is queued in that thread's posix_cputimers. The task is looked up by that PID. When a non-leader thread exec()s, de_thread() changes which task owns that PID. pid_task(timer->it.cpu.pid, PIDTYPE_PID) then returns NULL, but the node is still queued on tsk, which is alive. timer_lock_sighand() takes a failed lookup to mean that the node is already dequeued, so it has nothing to undo. begin_new_exec() calls posix_cpu_timers_exit(me) right after exec_task_namespaces() and that removes the leftover node, so the state normally stays invisible. But bprm->point_of_no_return is set before de_thread(), so if unshare_files(), set_mm_exe_file(), exec_mmap() or exec_task_namespaces() fails, the task dies before it gets there. exit_itimers() then frees the k_itimer while its node is still queued, and reaping tsk later erases that freed node from the rbtree. In short: the non-leader thread B the parent timer_create(CLOCK_THREAD_CPUTIME_ID) timer_settime() arm_timer() // the node is queued on B execve() de_thread(B) exchange_tids(B, leader) // B's PID now belongs to the leader release_task(leader) __exit_signal(leader) posix_cpu_timers_exit(leader) // cleans leader's queue, not B's __unhash_process(leader) // that PID has no task anymore exec_mmap() mmap_read_lock_killable(old_mm) kill(B, SIGKILL) // -EINTR get_signal() do_exit() exit_itimers() posix_timer_delete() posix_cpu_timer_del() posix_timer_unhash_and_free() // freed while still queued wait4() release_task(B) posix_cpu_timers_exit(B) cleanup_timerqueue() timerqueue_del() // use-after-free Move the POSIX timer cleanup right after de_thread() before any of the later failure conditions brings the task into do_exit(). [ tglx: Move the cleanup right after de_thread() ]


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/siw: Bound fragmented header copies by the remaining length siw_get_hdr() can receive an extended DDP/RDMAP header across more than one TCP callback. The first callback may receive most of the header, while the next one still limits the copy to hdrlen - MIN_DDP_HDR instead of the number of missing bytes. This makes the destination move past the end of the header and overwrite the receive state, including fpdu_part_rcvd. A later callback can then use a negative fpdu_part_rcvd value as a copy offset, which creates an OOB write. Use the number of header bytes already received when calculating the next copy length.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: IB/isert: wait for deferred control PDU completions before releasing the connection isert_send_done() hands ISTATE_SEND_TASKMGTRSP, ISTATE_SEND_REJECT and ISTATE_SEND_TEXTRSP completions off to isert_comp_wq and returns. The work item then runs isert_completion_put() -> isert_put_cmd(), which reads isert_conn->conn and takes conn->cmd_lock. Nothing orders that work item against teardown. isert_wait_conn() queues isert_release_work, which frees isert_conn, and iscsit_close_connection() frees the iscsit_conn right after it returns, so the queued work can run against freed memory. Count the deferred control PDU completions per connection and let isert_wait_conn() wait for them before the release work is queued. ISTATE_SEND_LOGOUTRSP is deliberately not counted: that branch runs iscsit_logout_post_handler(), which ends up waiting for conn->conn_wait_comp, and that completion is only sent by iscsit_close_connection() after it has called iscsit_wait_conn(). Waiting for it here would deadlock. Its wait stays the existing isert_wait4logout(). The splat below is from a kernel with tracing printk()s and an msleep(200) injected into isert_do_control_comp() to widen the window: BUG: KASAN: slab-use-after-free in isert_put_cmd+0x53d/0x620 Read of size 8 at addr ffff8881054f1038 by task kworker/u17:1/182 CPU: 0 UID: 0 PID: 182 Comm: kworker/u17:1 Tainted: G B 7.2.0-rc5-TWIDE-gb8babf08acc7 #1 PREEMPT(lazy) Tainted: [B]=BAD_PAGE Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: isert_comp_wq isert_do_control_comp Call Trace: <TASK> dump_stack_lvl+0x53/0x70 print_report+0xd0/0x630 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 ? _raw_spin_unlock_irqrestore+0x3e/0x70 ? isert_put_cmd+0x53d/0x620 kasan_report+0xce/0x100 ? isert_put_cmd+0x53d/0x620 isert_put_cmd+0x53d/0x620 ? isert_completion_put+0x305/0x330 ? isert_do_control_comp+0x2ef/0x310 process_one_work+0x633/0x1030 ? assign_work+0x11d/0x370 worker_thread+0x45b/0xd10 ? __pfx_worker_thread+0x10/0x10 ? __pfx_worker_thread+0x10/0x10 kthread+0x2c6/0x3b0 ? recalc_sigpending+0x15c/0x1e0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x36e/0x5a0 ? __pfx_ret_from_fork+0x10/0x10 ? __switch_to+0x572/0xdd0 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 </TASK> Allocated by task 48: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 __kasan_kmalloc+0x8f/0xa0 __kmalloc_cache_noprof+0x158/0x370 isert_cma_handler+0x1e3/0x2ae0 cma_cm_event_handler+0x3e/0x240 cma_ib_req_handler+0x17d9/0x4490 cm_process_work+0x41/0x330 cm_work_handler+0x5727/0xc160 process_one_work+0x633/0x1030 worker_thread+0x45b/0xd10 kthread+0x2c6/0x3b0 ret_from_fork+0x36e/0x5a0 ret_from_fork_asm+0x1a/0x30 Freed by task 184: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 kasan_save_free_info+0x3b/0x60 __kasan_slab_free+0x43/0x70 kfree+0x121/0x380 iscsit_close_connection+0x7cf/0x1e60 iscsit_take_action_for_connection_exit+0x1b6/0x360 iscsi_target_tx_thread+0x472/0x690 kthread+0x2c6/0x3b0 ret_from_fork+0x36e/0x5a0 ret_from_fork_asm+0x1a/0x30


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/core: Reject unregistering netdevs in ib_get_eth_speed ib_device_get_netdev() intentionally returns a referenced net_device even when it is unregistering, so matching and cleanup callers can still find the association. The reference keeps struct net_device allocated, but does not guarantee that the device remains operational. ib_get_eth_speed() uses the returned device operationally by invoking its ethtool callback. Although that call is made under RTNL, the function does not verify the registration state first. An asynchronous RDMA port query can therefore call into a netdev after NETDEV_UNREGISTER and ndo_uninit have completed. Check for NETREG_REGISTERED while holding RTNL and return -ENODEV for a device which is being unregistered. Keeping RTNL across the check and the ethtool operation prevents unregister from starting between them. Keep the speed fallback and warning under RTNL as well, so the warning can safely read netdev->name. Drop the netdev reference before releasing RTNL once all accesses to the device are complete.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipv4: free inet_opt and ireq_opt after an RCU grace period tcp_v4_syn_recv_sock() transfers ownership of ireq->ireq_opt to the child socket (newinet->inet_opt) without copying it. Another cpu can concurrently process a retransmitted SYN for the same request socket, and send a SYNACK from tcp_check_req(). tcp_v4_send_synack() and inet_csk_route_req() read ireq->ireq_opt under rcu_read_lock() only, and ip_build_and_send_pkt() and ip_options_build() then read opt->optlen twice. Note that the SYNACK timer itself is not an issue: it holds a reference on its request socket, and inet_csk_reqsk_queue_drop() calls timer_delete_sync() before the child can be freed. Since commit 079096f103fa ("tcp/dccp: install syn_recv requests into ehash table"), request sockets are processed without holding the listener lock, so nothing prevents the child socket from being freed while the SYNACK is still being built. TCP child sockets do not have SOCK_RCU_FREE, and inet_sock_destruct() frees inet_opt with a plain kfree(), leading to a use-after-free in ip_options_build(). A similar issue exists with request socket migration (net.ipv4.tcp_migrate_req=1, or a BPF_SK_REUSEPORT_SELECT_OR_MIGRATE program). reqsk_timer_handler() clones the request socket with inet_reqsk_clone(), so that the old request socket and its clone share the same ireq_opt, then reqsk_migrate_reset() clears the pointer in the old one. Another cpu holding a reference on the old request socket can still be using these options (sending a SYNACK, or creating a child in tcp_v4_syn_recv_sock()) when the clone is freed, and tcp_v4_reqsk_destructor() also uses a plain kfree(). Readers already use RCU, and other paths replacing inet_opt (do_ip_setsockopt(), cipso_v4_sock_setattr()...) already use kfree_rcu(). Use kfree_rcu() in inet_sock_destruct() and tcp_v4_reqsk_destructor() as well. IPv6 is not affected by the first issue, because tcp_v6_syn_recv_sock() duplicates the options. tcp_v6_reqsk_destructor() has the same migration issue with ipv6_opt, which is only set by CALIPSO. This will be addressed in a separate patch.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipv4: validate checksum_start before completing checksum If a packet with bad checksum metadata gets into the ipv4 stack, skb_checksum_help can corrupt the network header and cause a bunch of mischief. This was discovered and reported by Paulos, and has been reporoduced by others independently since. We really shouldn't allow such packets in, but as a defence in depth measure, let's also check before we complete the checksum. A more complete validation at input is forthcoming, but needs more work.


Затронутые продукты
Container suse/sle-micro/base-5.5:latest:kernel-default-5.14.21-150500.55.195.1
Container suse/sle-micro/kvm-5.5:latest:kernel-default-base-5.14.21-150500.55.195.1.150500.6.91.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:cluster-md-kmp-default-5.14.21-150500.55.195.1
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS:dlm-kmp-default-5.14.21-150500.55.195.1

Ссылки
Уязвимость SUSE-SU-2026:4936-1 в SUSE CVRF — exploitDog