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

exploitDog

suse-cvrf логотип

SUSE-SU-2026:4660-1

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

Описание

Security update for the Linux Kernel

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

The following security issues were fixed:

  • CVE-2025-38704: rcu/nocb: Fix possible invalid rdp's->nocb_cb_kthread pointer (bsc#1254408).
  • CVE-2026-43502: net/rds: handle zerocopy send cleanup before the message is queued (bsc#1266008).
  • CVE-2026-46135: nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec (bsc#1267373).
  • CVE-2026-53266: netfilter: bridge: make ebt_snat ARP rewrite writable (bsc#1269136).
  • CVE-2026-53400: i2c: core: fix adapter registration race (bsc#1271906).
  • CVE-2026-63795: 9p: avoid putting oldfid in p9_client_walk() error path (bsc#1271955).
  • CVE-2026-64279: i2c: core: fix adapter deregistration race (bsc#1273953).
  • CVE-2026-64319: nvmet-auth: validate reply message payload bounds against transfer length (bsc#1273339).
  • CVE-2026-64320: nvmet: fix pre-auth out-of-bounds heap read in Discovery Get Log Page (bsc#1273420).
  • CVE-2026-64422: net: ipv4: bound TCP reordering sysctl writes and MTU probe sizes (bsc#1273290).
  • CVE-2026-64556: perf/core: Detach event groups during remove_on_exec (bsc#1273251).
  • CVE-2026-64580: xfrm6: clear dst.dev on error to avoid double netdev_put in xfrm6_fill_dst() (bsc#1274037).
  • CVE-2026-68162: sctp: avoid auth_enable sysctl UAF during netns teardown (bsc#1274920).
  • CVE-2026-68290: rds: tcp: unregister sysctl before tearing down listen socket (bsc#1275977).
  • CVE-2026-68376: sctp: fix auth_hmacs array size in struct sctp_cookie (bsc#1274836).
  • CVE-2026-68445: drm/vc4: Prevent shader BO mappings from becoming writable (bsc#1276277).
  • CVE-2026-68451: s390/zcrypt: Validate length for CCA ECC private key requests (bsc#1276287).
  • CVE-2026-68452: s390/zcrypt: Validate length for CCA AES cipher key requests (bsc#1276295).
  • CVE-2026-68454: KVM: s390: pci: Fix handling of AIF enable without AISB (bsc#1276388).
  • CVE-2026-72051: net: ip6_tunnel: require CAP_NET_ADMIN in the device netns for changelink (bsc#1276801).
  • CVE-2026-72052: net: ip6_gre: require CAP_NET_ADMIN in the device netns for changelink (bsc#1276803).
  • CVE-2026-72053: net: ipip: require CAP_NET_ADMIN in the device netns for changelink (bsc#1276814).
  • CVE-2026-72054: net: ip_vti: require CAP_NET_ADMIN in the device netns for changelink (bsc#1276818).
  • CVE-2026-72055: net: ip6_vti: require CAP_NET_ADMIN in the device netns for changelink (bsc#1276821).
  • CVE-2026-72061: net: sit: require CAP_NET_ADMIN in the device netns for changelink (bsc#1277249).
  • CVE-2026-72066: cpu: hotplug: Bound hotplug states sysfs output (bsc#1277149).
  • CVE-2026-72098: dm-verity: fix buffer overflow in FEC calculation (bsc#1275543).
  • CVE-2026-72129: nvmet-rdma: handle inline data with a nonzero offset (bsc#1275545).
  • CVE-2026-72136: xfrm: xfrm_interface: require CAP_NET_ADMIN in the device netns for changelink (bsc#1277574).
  • CVE-2026-72157: net: thunderbolt: Fix frags[] overflow by bounding frame_count (bsc#1277544).
  • CVE-2026-72164: ocfs2: avoid moving extents to occupied clusters (bsc#1277553).
  • CVE-2026-72301: ASoC: SOF: ipc3-control: Fix TOCTOU in bytes_put and bytes_get (bsc#1277742).
  • CVE-2026-72322: ipv6: mcast: Fix potential UAF in MLD delayed work (bsc#1275972).
  • CVE-2026-72323: ipv4: igmp: Fix potential UAF in igmp_gq_start_timer() (bsc#1275985).
  • CVE-2026-72348: netfilter: ip6tables: mark malformed IPv6 extension headers for hotdrop (bsc#1276007).
  • CVE-2026-72351: gue: validate REMCSUM private option length (bsc#1276009).
  • CVE-2026-72383: sctp: fix addr_wq_timer race in sctp_free_addr_wq() (bsc#1277857).
  • CVE-2026-72398: sctp: add INIT verification after cookie unpacking (bsc#1276381).
  • CVE-2026-72399: net: enetc: check the number of BDs needed for xdp_frame (bsc#1276553).
  • CVE-2026-72434: netfilter: ipset: make sure gc is properly stopped (bsc#1278054).
  • CVE-2026-72449: drm/amdkfd: fix list_del corruption in kfd_criu_resume_svm (bsc#1278108).
  • CVE-2026-74267: net/sched: sch_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen (bsc#1276519).
  • CVE-2026-74283: tipc: require net admin for TIPCv2 netlink mutators (bsc#1276475).
  • CVE-2026-74330: configfs: fix lockless traversals of ->s_children (bsc#1277129).
  • CVE-2026-74356: vhost: move smp_rmb() into vhost_get_avail_idx() (bsc#1278063).
  • CVE-2026-74363: bpf: fix UAF by restoring RCU-delayed inode freeing in bpffs (bsc#1278070).
  • CVE-2026-74388: ALSA: seq: oss: Fix UAF at handling events with embedded SysEx data (bsc#1278253).
  • CVE-2026-74398: ipv6: addrconf: bail out of dad_failure when state is no longer POSTDAD (bsc#1277410).
  • CVE-2026-74406: vxlan: Fix potential null-ptr-deref in vxlan_gro_prepare_receive() (bsc#1276395).
  • CVE-2026-74443: drm/vmwgfx: bound DMA command body size against suffix pointer (bsc#1278210).
  • CVE-2026-74444: drm/vmwgfx: validate DRAW_PRIMITIVES header size before division (bsc#1278211).
  • CVE-2026-74453: drm/vc4: Zero the tile state data array before each BIN job (bsc#1278178).
  • CVE-2026-74469: sctp: prevent peer transport count overflow (bsc#1277792).
  • CVE-2026-74473: vxlan: use pskb_network_may_pull() in route_shortcircuit() (bsc#1276340).
  • CVE-2026-74476: veth: convert frag_list skbs before running XDP (bsc#1276341).
  • CVE-2026-74479: net: pktgen: fix proc entry use-after-free (bsc#1276354).
  • CVE-2026-74480: net: bridge: stop fast-leave after deleting a port group (bsc#1276353).
  • CVE-2026-74492: netfilter: ipset: do not update comments from kernel-side hash adds (bsc#1276337).
  • CVE-2026-74493: net/smc: fix socket use-after-free during link group termination (bsc#1276338).
  • CVE-2026-74540: Bluetooth: L2CAP: fix UAF in l2cap_le_connect_rsp (bsc#1275681).
  • CVE-2026-74541: Bluetooth: ISO: clear iso_data always when detaching conn from hcon (bsc#1275694).
  • CVE-2026-74586: sctp: clear new_transport when removing a peer (bsc#1277820).
  • CVE-2026-74588: sctp: keep chunk->transport in step with the list it is queued on (bsc#1277766).
  • CVE-2026-74589: bpf, sockmap: Fix sk_redir use-after-free in send verdict (bsc#1277904).
  • CVE-2026-74597: ip6_tunnel: clear skb2->cb in ip6ip6_err() (bsc#1277493).
  • CVE-2026-74608: smb: client: Fix use-after-free in cifs_try_adding_channels() (bsc#1277796).
  • CVE-2026-74609: tipc: read le->link under the node lock in tipc_node_link_down() (bsc#1277906).
  • CVE-2026-74615: vxlan: do not arm the ageing timer on a device that is down (bsc#1277901).
  • CVE-2026-74616: xdp: reject clones that overrun skb_shared_info tailroom (bsc#1277813).
  • CVE-2026-74630: ipv6: prevent in6_dev_get() from resurrecting inet6_dev (bsc#1278191).
  • CVE-2026-74631: net: smc: fix splice entry lifetime imbalance in smc_rx_splice (bsc#1278195).
  • CVE-2026-74688: sctp: clear control chunk transport if it is being removed (bsc#1277489).
  • CVE-2026-74700: net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers (bsc#1277626).
  • CVE-2026-74719: net/smc: fix qentry overwrite for CONFIRM_LINK and ADD_LINK_CONT in smc_llc_event_handler() (bsc#1276572).
  • CVE-2026-74737: net: ethernet: ti: am65-cpsw-nuss: Fix port_id extraction from SRC TAG (bsc#1277898).
  • CVE-2026-74743: macvlan: inherit needed_headroom and needed_tailroom from lowerdev (bsc#1277908).
  • CVE-2026-74744: ipvlan: inherit needed_headroom and needed_tailroom from phy_dev (bsc#1278094).
  • CVE-2026-74752: sctp: validate cookie AUTH state before use (bsc#1278315).
  • CVE-2026-80540: drm/amdgpu: Fix UVD decode image min size calculation (bsc#1277590).
  • CVE-2026-80580: fbdev: bound mode sysfs output to the sysfs buffer (bsc#1278294).
  • CVE-2026-80663: tools/power/x86/intel-speed-select: Harden daemon pidfile open (bsc#1278335).
  • CVE-2026-80714: ipvs: do not propagate one-packet flag to synced conns (bsc#1277561).
  • CVE-2026-80716: ALSA: pcm: wake linked drain waiters on unlink (bsc#1277837).
  • CVE-2026-80725: net: gro: properly validate BIG TCP aggregation criteria (bsc#1277452).
  • CVE-2026-80737: serial: amba-pl011: synchronize DMA teardown (bsc#1279487).
  • CVE-2026-80785: fbdev: serialize mode sysfs access with lock_fb_info() (bsc#1279619).
  • CVE-2026-80789: nvmet-tcp: bound SGL data length before allocating command buffers (bsc#1279621).
  • CVE-2026-80799: nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers (bsc#1279811).
  • CVE-2026-80840: ipv6: seg6: clear IPv4 control block on IPIP decapsulation (bsc#1279875).
  • CVE-2026-80841: net/packet: defer vmalloc TX_RING free until skbs finish (bsc#1279835).
  • CVE-2026-80844: xfrm: ah6: validate routing header segments_left (bsc#1279786).
  • CVE-2026-80852: tls: device: fix out-of-bounds write in tls_append_frag() (bsc#1279532).
  • CVE-2026-80909: drm/amdgpu: Reject UVD message with invalid number of h265 refs (bsc#1279422).
  • CVE-2026-80976: seg6: reset IP6CB after IPv6 decapsulation (bsc#1280298).
  • CVE-2026-81000: net: tun: bound receive headroom (bsc#1280263).
  • CVE-2026-89479: sctp: stop processing a packet once its association is deleted (bsc#1280786).
  • CVE-2026-89482: nvme-tcp: do not accept C2HData based on blk_rq_payload_bytes() alone (bsc#1280350).
  • CVE-2026-89532: svcrdma: Fix pcl_for_each_segment for empty chunks (bsc#1280985).
  • CVE-2026-89533: svcrdma: Fix offset arithmetic in read_chunk_range (bsc#1280993).
  • CVE-2026-89542: SUNRPC: harden gss_krb5_unwrap_v2 against short tokens (bsc#1280387).
  • CVE-2026-89544: SUNRPC: fix gssx_dec_option_array error path bugs (bsc#1280758).
  • CVE-2026-89551: SUNRPC: xdr_buf_trim: clamp buf->len to avoid underflow (bsc#1280727).
  • CVE-2026-89569: Bluetooth: RFCOMM: serialize security confirmation handling (bsc#1280733).
  • CVE-2026-89603: entry: Fix seccomp bypass after ptrace with TSYNC (bsc#1280923).
  • CVE-2026-89631: smb: client: reject a tree connect response whose byte count is too small (bsc#1280496).
  • CVE-2026-89636: smb: client: clear ce->tgthint in free_tgts() (bsc#1281042).
  • CVE-2026-89638: smb: client: clear setuid/setgid bit on write with cifsacl/modefromsid/posix extensions (bsc#1281046).
  • CVE-2026-89674: nfsd: fix XDR length calculation in nfsd4_ff_encode_layoutget (bsc#1280243).
  • CVE-2026-89702: nfsd: size fh_verify server sockaddr slot by xpt_locallen (bsc#1280487).
  • CVE-2026-89899: media: cec: disable delayed work before freeing an interrupted transmit (bsc#1281383).
  • CVE-2026-89931: KVM: nVMX: Ensure KVM_REQ_GET_NESTED_STATE_PAGES is cleared on VM-Exit (bsc#1281427).
  • CVE-2026-89968: nvmet-tcp: reject unsolicited H2CData PDUs (bsc#1281229).
  • CVE-2026-90003: futex: Prevent rcuwait use-after-free during requeue PI (bsc#1281295).
  • CVE-2026-90088: Bluetooth: RFCOMM: Validate MTU in rfcomm_apply_pn() to prevent infinite loop (bsc#1281397).
  • CVE-2026-90104: NFSv4.1: zero referring call lists before decoding (bsc#1281546).
  • CVE-2026-90198: ALSA: core: Fix use-after-free in snd_card_do_free() (bsc#1281818).
  • CVE-2026-90259: btrfs: qgroup: fix a wrong length calculation in qgroup_free_reserved_data() (bsc#1281680).
  • CVE-2026-90308: RDMA/erdma: Hold QP references for AE and CM processing (bsc#1281786).
  • CVE-2026-90309: RDMA/erdma: Hold CQ references when processing EQ events (bsc#1281789).
  • CVE-2026-90413: IB/isert: reject login PDUs declaring more data than was received (bsc#1282113).
  • CVE-2026-90414: IB/isert: reject PDUs declaring more data than (bsc#1282110).
  • CVE-2026-93104: RDMA/rvt: Return NULL after port allocation failure (bsc#1282284).
  • CVE-2026-93782: vhost-scsi: flush backend after device ioctls (bsc#1282906).
  • CVE-2026-100075: RDMA/srpt: Fix srpt_alloc_rw_ctxs() unwind counters (bsc#1282881).

The following non security issues were fixed:

  • Also reflect disabled BATMAN in supported.conf.
  • Disable CONFIG_BATMAN_ADV (jsc#PED-16892).
  • Disable CONFIG_CAN (jsc#PED-16993).
  • Fif selftests build failure caused by jsc#PED-16401 backport (bsc#1281927).
  • RDMA/erdma: Use IRQ-safe XArray helpers for QP and CQ tables (git-fixes).
  • arm64: Use load LSE atomics for the non-return per-CPU atomic operations (git-fixes).
  • arm64: hibernate: pass HVC_SET_VECTORS args to the resume hvc (git-fixes).
  • arm64: mte: Fix PTRACE_{PEEK,POKE}MTETAGS error documentation (git-fixes).
  • arm64: percpu: Fix LSE operations on {8,16}-bit types (git-fixes).
  • arm64: percpu: Fix this_cpu_and() mask generation (git-fixes).
  • arm64: percpu: Fix this_cpu_write() casting (git-fixes).
  • compiler_types: Introduce __flex_counter() and family (bsc#1280139).
  • default_gfp(): avoid using the 'newfangled' VA_OPT trick (bsc#1280139).
  • docs: tls: document TLS1.3 key updates (bsc#1267564 jsc#PED-16401).
  • firmware: arm_scpi: reject DVFS OPP count above MAX_DVFS_OPPS (git-fixes).
  • i2c: core: fix irq domain leak on adapter registration failure (git-fixes).
  • kabi: tls add counters for rekey (bsc#1267564 jsc#PED-16401).
  • kernel-binary.spec.in: Fix syntax error.
  • net: mana: Clear RDMA teardown and suspend state in mana_rdma_probe() (git-fixes).
  • net: mana: Reserve extra CQ slot for the fence completion CQE (git-fixes).
  • net: mana: restore the XDP program pointer when pre-allocation fails (git-fixes).
  • net: tls: Pass union tls_crypto_context pointer to memzero_explicit (bsc#1267564 jsc#PED-16401).
  • perf: Reject exited events as group leaders (git-fixes).
  • selftests: tls: add getsockopt test (bsc#1267564 jsc#PED-16401).
  • selftests: tls: add key_generation argument to tls_crypto_info_init (bsc#1267564 jsc#PED-16401).
  • selftests: tls: add rekey tests (bsc#1267564 jsc#PED-16401).
  • slab.h: disable completely broken overflow handling in flex allocations (bsc#1280139).
  • slab: Introduce kmalloc_flex() and family (bsc#1280139).
  • slab: Introduce kmalloc_obj() and family (bsc#1280139).
  • slab: recognize @GFP parameter as optional in kernel-doc (bsc#1280139).
  • smb: client: harden DFS cache against invalid target hints (git-fixes).
  • tls: add counters for rekey (bsc#1267564 jsc#PED-16401).
  • tls: block decryption when a rekey is pending (bsc#1267564 jsc#PED-16401).
  • tls: implement rekey for TLS1.3 (bsc#1267564 jsc#PED-16401).
  • tls: skip setting sk_write_space on rekey (bsc#1267564 jsc#PED-16401).
  • x86/mm: Fix pmd_modify() dropping the dirty bit (bsc#1275455).

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

Image SLES15-SP6
kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS
kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS-GCE
kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE
kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS
cluster-md-kmp-default-6.4.0-150600.23.138.1
dlm-kmp-default-6.4.0-150600.23.138.1
gfs2-kmp-default-6.4.0-150600.23.138.1
kernel-default-6.4.0-150600.23.138.1
ocfs2-kmp-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE
cluster-md-kmp-default-6.4.0-150600.23.138.1
dlm-kmp-default-6.4.0-150600.23.138.1
gfs2-kmp-default-6.4.0-150600.23.138.1
kernel-default-6.4.0-150600.23.138.1
ocfs2-kmp-default-6.4.0-150600.23.138.1
SUSE Linux Enterprise Live Patching 15 SP6
kernel-default-livepatch-6.4.0-150600.23.138.1
kernel-default-livepatch-devel-6.4.0-150600.23.138.1
kernel-livepatch-6_4_0-150600_23_138-default-1-150600.13.3.1
SUSE Linux Enterprise Server 15 SP6-LTSS
cluster-md-kmp-default-6.4.0-150600.23.138.1
dlm-kmp-default-6.4.0-150600.23.138.1
gfs2-kmp-default-6.4.0-150600.23.138.1
kernel-64kb-6.4.0-150600.23.138.1
kernel-64kb-devel-6.4.0-150600.23.138.1
kernel-default-6.4.0-150600.23.138.1
kernel-default-base-6.4.0-150600.23.138.1.150600.12.64.1
kernel-default-devel-6.4.0-150600.23.138.1
kernel-devel-6.4.0-150600.23.138.1
kernel-docs-6.4.0-150600.23.138.1
kernel-macros-6.4.0-150600.23.138.1
kernel-obs-build-6.4.0-150600.23.138.1
kernel-source-6.4.0-150600.23.138.1
kernel-syms-6.4.0-150600.23.138.1
kernel-zfcpdump-6.4.0-150600.23.138.1
ocfs2-kmp-default-6.4.0-150600.23.138.1
reiserfs-kmp-default-6.4.0-150600.23.138.1
SUSE Linux Enterprise Server for SAP Applications 15 SP6
cluster-md-kmp-default-6.4.0-150600.23.138.1
dlm-kmp-default-6.4.0-150600.23.138.1
gfs2-kmp-default-6.4.0-150600.23.138.1
kernel-default-6.4.0-150600.23.138.1
kernel-default-base-6.4.0-150600.23.138.1.150600.12.64.1
kernel-default-devel-6.4.0-150600.23.138.1
kernel-devel-6.4.0-150600.23.138.1
kernel-docs-6.4.0-150600.23.138.1
kernel-macros-6.4.0-150600.23.138.1
kernel-obs-build-6.4.0-150600.23.138.1
kernel-source-6.4.0-150600.23.138.1
kernel-syms-6.4.0-150600.23.138.1
ocfs2-kmp-default-6.4.0-150600.23.138.1
reiserfs-kmp-default-6.4.0-150600.23.138.1

Описание

In the Linux kernel, the following vulnerability has been resolved: rcu/nocb: Fix possible invalid rdp's->nocb_cb_kthread pointer access In the preparation stage of CPU online, if the corresponding the rdp's->nocb_cb_kthread does not exist, will be created, there is a situation where the rdp's rcuop kthreads creation fails, and then de-offload this CPU's rdp, does not assign this CPU's rdp->nocb_cb_kthread pointer, but this rdp's->nocb_gp_rdp and rdp's->rdp_gp->nocb_gp_kthread is still valid. This will cause the subsequent re-offload operation of this offline CPU, which will pass the conditional check and the kthread_unpark() will access invalid rdp's->nocb_cb_kthread pointer. This commit therefore use rdp's->nocb_gp_kthread instead of rdp_gp's->nocb_gp_kthread for safety check.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/srpt: Fix srpt_alloc_rw_ctxs() unwind counters When srpt_alloc_rw_ctxs() fails partway through a multi-buffer indirect descriptor, the unwind path destroys RDMA contexts but leaves stale n_rw_ctx and n_rdma values (and a dangling rw_ctxs pointer). Later sq_wr_avail accounting in srpt_queue_response() or srpt_write_pending() can then subtract the wrong number of send queue credits. Reset the counters and clear rw_ctxs after freeing the heap allocation before returning an error.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net/rds: handle zerocopy send cleanup before the message is queued A zerocopy send can fail after user pages have been pinned but before the message is attached to the sending socket. The purge path currently infers zerocopy state from rm->m_rs, so an unqueued message can be cleaned up as if it owned normal payload pages. However, zerocopy ownership is really determined by the presence of op_mmp_znotifier, regardless of whether the message has reached the socket queue. Capture op_mmp_znotifier up front in rds_message_purge() and use it as the cleanup discriminator. If the message is already associated with a socket, keep the existing completion path. Otherwise, drop the pinned page accounting directly and release the notifier before putting the payload pages. This keeps early send failure cleanup consistent with the zerocopy lifetime rules without changing the normal queued completion path.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: fix race between ICReq handling and queue teardown nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown. If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock. If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue. The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference. Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started. Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: netfilter: bridge: make ebt_snat ARP rewrite writable The ebtables SNAT target keeps the Ethernet source address rewrite behind skb_ensure_writable(skb, 0). This is intentional: at the bridge ebtables hooks the Ethernet header is addressed through skb_mac_header()/eth_hdr(), while skb->data points at the Ethernet payload. Asking skb_ensure_writable() for ETH_HLEN bytes would check the payload, not the Ethernet header, and would reintroduce the small packet regression fixed by commit 63137bc5882a. However, the optional ARP sender hardware address rewrite is different. It writes through skb_store_bits() at an offset relative to skb->data: skb_store_bits(skb, sizeof(struct arphdr), info->mac, ETH_ALEN) skb_header_pointer() only safely reads the ARP header; it does not make the later sender hardware address range writable. If that range is still held in a nonlinear skb fragment backed by a splice-imported file page, skb_store_bits() maps the frag page and copies the new MAC address directly into it. Ensure the ARP SHA range is writable before reading the ARP header and before calling skb_store_bits().


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: i2c: core: fix adapter registration race Adapters can be looked up based on their id using i2c_get_adapter() which takes a reference to the embedded struct device. Make sure that the adapter (including its struct device) has been initialised before adding it to the IDR to avoid accessing uninitialised data which could, for example, lead to NULL-pointer dereferences or use-after-free. Note that the i2c-dev chardev, which is registered from a bus notifier, currently uses i2c_get_adapter() so the adapter needs to be added to the IDR before registration.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: 9p: avoid putting oldfid in p9_client_walk() error path When p9_client_walk() is called with clone set to false, fid aliases oldfid. If the walk subsequently fails after the request has been sent, the error path jumps to clunk_fid, which currently calls p9_fid_put(fid) unconditionally. This drops a reference to oldfid even though ownership of oldfid remains with the caller. If this is the last reference, oldfid can be clunked and destroyed while the caller still expects it to be valid. A later use or put of oldfid can then trigger a use-after-free or refcount underflow. Fix this by only putting fid in the clunk_fid error path when it does not alias oldfid, matching the existing guard in the error path below. This can be triggered when a multi-component walk is split into multiple p9_client_walk() calls and a later non-cloning walk fails. A reproducer and refcount warning logs are available on request.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: i2c: core: fix adapter deregistration race Adapters can be looked up by their id using i2c_get_adapter() which takes a reference to the embedded struct device. Remove the adapter from the IDR before tearing it down during deregistration (and on registration failure) to make sure its resources are not accessed after having been freed (e.g. the device name).


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nvmet-auth: validate reply message payload bounds against transfer length nvmet_auth_reply() accesses the variable-length rval[] array using attacker-controlled hl (hash length) and dhvlen (DH value length) fields without verifying they fit within the allocated buffer of tl bytes. A malicious NVMe-oF initiator can craft a DHCHAP_REPLY message with a small transfer length but large hl/dhvlen values, causing out-of-bounds heap reads when the target processes the DH public key (rval + 2*hl) or performs the host response memcmp. With DH authentication configured, the OOB pointer is passed directly to sg_init_one() and read by crypto_kpp_compute_shared_secret(), reaching up to 526 bytes past the buffer. This is exploitable pre-authentication. Add bounds validation ensuring sizeof(*data) + 2*hl + dhvlen <= tl before any access to the variable-length fields. Discovered by Atuin - Automated Vulnerability Discovery Engine.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nvmet: fix pre-auth out-of-bounds heap read in Discovery Get Log Page nvmet_execute_disc_get_log_page() validates only the dword alignment of the host-supplied Log Page Offset (lpo). The 64-bit offset is then added to a small kzalloc'd buffer that holds the discovery log page and the result is passed straight to nvmet_copy_to_sgl(), which memcpy()s data_len bytes out to the host with no source-side bound check: u64 offset = nvmet_get_log_page_offset(req->cmd); /* 64-bit host */ size_t data_len = nvmet_get_log_page_len(req->cmd); /* 32-bit host */ ... if (offset & 0x3) { ... } /* only check */ ... alloc_len = sizeof(*hdr) + entry_size * discovery_log_entries(req); buffer = kzalloc(alloc_len, GFP_KERNEL); ... status = nvmet_copy_to_sgl(req, 0, buffer + offset, data_len); The Discovery controller is unauthenticated -- nvmet_host_allowed() returns true unconditionally for the discovery subsystem -- so the call is reachable pre-authentication by any TCP/RDMA/FC peer that can reach the nvmet target. With a discovery log page of ~1 KiB, an attacker requesting up to 4 KiB starting at offset == alloc_len reads the next slab page out and gets its content returned over the fabric (an empirical run on a default nvmet-tcp loopback target leaked 81 canonical kernel pointers in one Get Log Page response). Pointing the offset at unmapped kernel memory faults the in-kernel memcpy and crashes (or panics, on panic_on_oops=1) the target host instead. The attacker-controlled source-side offset pattern "nvmet_copy_to_sgl(req, 0, buffer + ATTACKER_OFFSET, ...)" is unique to nvmet_execute_disc_get_log_page in the entire nvmet codebase: every other Get Log Page handler in admin-cmd.c either ignores lpo (and silently starts every response at offset 0) or tracks a local destination offset with a fixed source pointer. Validate the host-supplied offset against the log page size, cap the copy length to what is actually available, and zero-fill any remainder of the host transfer buffer. The zero-fill matches the existing short-response pattern in nvmet_execute_get_log_changed_ns() (admin-cmd.c) and prevents leaking transport SGL contents when the host asks for more bytes than the log page contains.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: ipv4: bound TCP reordering sysctl writes and MTU probe sizes Reject invalid `net.ipv4.tcp_reordering` values before they reach TCP socket state. The sysctl is stored as an `int` but copied into the `u32` `tp->reordering` field for new sockets, so negative writes wrap to large values. With `tcp_mtu_probing=2`, the wrapped value can overflow the `tcp_mtu_probe()` size calculation and drive the MTU probing path into an out-of-bounds read. Route `tcp_reordering` writes through `proc_dointvec_minmax()` and require it to be at least 1. Also require `tcp_max_reordering` to be at least 1 so the configured maximum cannot become negative either. When registering the table for a non-init network namespace, relocate `extra2` pointers that refer into `init_net.ipv4` so the `tcp_reordering` upper bound follows that namespace's `tcp_max_reordering`. Harden `tcp_mtu_probe()` itself by computing `size_needed` as `u64`. This keeps the send queue and window checks from being bypassed through signed integer overflow.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: perf/core: Detach event groups during remove_on_exec perf_event_remove_on_exec() removes events by calling perf_event_exit_event(). For top-level events, this removes the event from the context with DETACH_EXIT only. This can leave inconsistent group state when a removed event is a group leader and the group contains siblings without remove_on_exec. If the group was active, the surviving siblings can remain active and attached to the removed leader's sibling list, but are no longer represented by a valid group leader on the PMU context active lists. A later close of the removed leader uses DETACH_GROUP and can promote the still-active siblings from this stale group state. The next schedule-in can then add an already-linked active_list entry again, corrupting the PMU context active list. With DEBUG_LIST enabled, this is caught as a list_add double-add in merge_sched_in(). Fix this by detaching group relationships when remove_on_exec removes an event. This preserves the existing task-exit and revoke behavior, while ensuring surviving siblings are ungrouped before the removed event leaves the context.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xfrm6: clear dst.dev on error to avoid double netdev_put in xfrm6_fill_dst() On the error path where in6_dev_get(dev) returns NULL, xfrm6_fill_dst() releases the device reference with netdev_put() but leaves xdst->u.dst.dev set. dst_destroy() later calls netdev_put(dst->dev) again, so the same net_device reference is released twice, underflowing its refcount (ref_tracker WARNING + "unregister_netdevice: waiting for <dev> to become free"). Clear xdst->u.dst.dev after the netdev_put(), the same way the XFRM device-offload paths xfrm_dev_state_add() and xfrm_dev_policy_add() in net/xfrm/xfrm_device.c NULL ->dev when releasing the reference on error. ref_tracker: reference already released. ref_tracker: allocated in: xfrm6_fill_dst (net/ipv6/xfrm6_policy.c:86) ... udpv6_sendmsg (net/ipv6/udp.c:1696) ... ref_tracker: freed in: xfrm6_fill_dst (net/ipv6/xfrm6_policy.c:90) ... WARNING: lib/ref_tracker.c:322 at ref_tracker_free+0x58b/0x780 dst_destroy (net/core/dst.c:115) rcu_core handle_softirqs ...


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: avoid auth_enable sysctl UAF during netns teardown proc_sctp_do_auth() updates the SCTP control socket after changing net.sctp.auth_enable. The handler gets the per-net SCTP state from ctl->data, so an already opened sysctl file can still target a network namespace while that namespace is being torn down. SCTP previously registered its per-net sysctls from sctp_defaults_init(), while the control socket is created later from sctp_ctrlsock_init(). This exposed a window during initialization where auth_enable was writable before net->sctp.ctl_sock existed, and a teardown window where auth_enable stayed writable after inet_ctl_sock_destroy() had released the control socket. Move the per-net SCTP sysctl registration into sctp_ctrlsock_init() after sctp_ctl_sock_init() succeeds, and unregister the sysctl table before destroying the control socket in sctp_ctrlsock_exit(). If sysctl registration fails after the control socket was created, destroy the control socket in the same init path. Make sctp_sysctl_net_unregister() tolerate a missing header and clear the saved pointer so init-error and exit paths can safely share the unregister helper.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: rds: tcp: unregister sysctl before tearing down listen socket rds_tcp_exit_net() frees the per-netns RDS TCP listen socket via rds_tcp_kill_sock() before unregistering the per-netns sysctl table. Since rds_tcp_skbuf_handler() derives the netns from rtn->rds_tcp_listen_sock->sk, a concurrent sysctl write can race with netns teardown and dereference the freed socket/sk. KASAN reports the race as: BUG: KASAN: slab-use-after-free in rds_tcp_skbuf_handler+0x2aa/0x2e0 rds_tcp_skbuf_handler net/rds/tcp.c:721 proc_sys_call_handler fs/proc/proc_sysctl.c vfs_write fs/read_write.c __x64_sys_pwrite64 fs/read_write.c Fix this by unregistering the RDS TCP sysctl table before calling rds_tcp_kill_sock(). unregister_net_sysctl_table() prevents new sysctl handlers from starting and waits for in-flight handlers to finish, so the listen socket can then be released safely. The fix was tested against the linked reproducer.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: fix auth_hmacs array size in struct sctp_cookie The auth_hmacs array in struct sctp_cookie is supposed to store a complete SCTP_AUTH_HMAC_ALGO parameter, which consists of a struct sctp_paramhdr followed by N HMAC identifiers. However, the array size was calculated using an extra 2 bytes instead of sizeof(struct sctp_paramhdr), which is 4 bytes. When four HMAC identifiers are configured, the HMAC-ALGO parameter stored in the endpoint is larger than the auth_hmacs buffer in the cookie. As a result, sctp_association_init() copies beyond the end of auth_hmacs when initializing the association, corrupting the adjacent auth_chunks field. This can lead to an invalid HMAC identifier being accepted and later cause an out-of-bounds read in sctp_auth_get_hmac(). Fix the array size calculation by including the full SCTP parameter header size.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: drm/vc4: Prevent shader BO mappings from becoming writable vc4_gem_object_mmap() rejects a writable mapping of a validated shader BO, but leaves VM_MAYWRITE set. Userspace can map the BO read-only and then turn it writable with mprotect(). Validated shader BOs must stay read-only: the validator checks the instructions once and the GPU trusts them afterwards. A writable mapping lets userspace rewrite the code after validation, bypassing the validator. Clear VM_MAYWRITE on the read-only path so the mapping cannot be upgraded, as i915 already does for its read-only objects.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: s390/zcrypt: Validate length for CCA ECC private key requests cca_ecc2protkey() derives the copy length for the CPRB parameter block directly from the length field in the key token. Reject the request early if the token length exceeds the available space in the parameter block.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: s390/zcrypt: Validate length for CCA AES cipher key requests cca_cipher2protkey() derives the copy length for the CPRB parameter block directly from the length field in the key token. Reject the request early if the token length exceeds the available space in the parameter block.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: KVM: s390: pci: Fix handling of AIF enable without AISB When a guest seeks to register IRQs without a summary bit specified, ensure that the associated GAITE then stores 0 for the guest AISB location instead of virt_to_phys(page_address(NULL)).


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: ip6_tunnel: require CAP_NET_ADMIN in the device netns for changelink ip6_tnl_changelink() operates on at most two netns, dev_net(dev) and the tunnel link netns t->net. They differ once the device is created in or moved to a netns other than the one the request runs in. The rtnl changelink path checks CAP_NET_ADMIN only against dev_net(dev), so a caller privileged there but not in t->net can rewrite a tunnel that lives in t->net. Gate ip6_tnl_changelink() on rtnl_dev_link_net_capable() at its top, before any attribute is parsed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: ip6_gre: require CAP_NET_ADMIN in the device netns for changelink ip6gre_changelink() and ip6erspan_changelink() operate on at most two netns, dev_net(dev) and the tunnel link netns t->net. They differ once the device is created in or moved to a netns other than the one the request runs in. The rtnl changelink path checks CAP_NET_ADMIN only against dev_net(dev), so a caller privileged there but not in t->net can rewrite a tunnel that lives in t->net. Gate both ops on rtnl_dev_link_net_capable() at their top, before any attribute is parsed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: ipip: require CAP_NET_ADMIN in the device netns for changelink ipip_changelink() operates on at most two netns, dev_net(dev) and the tunnel link netns t->net. They differ once the device is created in or moved to a netns other than the one the request runs in. The rtnl changelink path checks CAP_NET_ADMIN only against dev_net(dev), so a caller privileged there but not in t->net can rewrite a tunnel that lives in t->net. Gate ipip_changelink() on rtnl_dev_link_net_capable() at its top, before any attribute is parsed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: ip_vti: require CAP_NET_ADMIN in the device netns for changelink vti_changelink() operates on at most two netns, dev_net(dev) and the tunnel link netns t->net. They differ once the device is created in or moved to a netns other than the one the request runs in. The rtnl changelink path checks CAP_NET_ADMIN only against dev_net(dev), so a caller privileged there but not in t->net can rewrite a tunnel that lives in t->net. Gate vti_changelink() on rtnl_dev_link_net_capable() at its top, before any attribute is parsed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: ip6_vti: require CAP_NET_ADMIN in the device netns for changelink vti6_changelink() operates on at most two netns, dev_net(dev) and the tunnel link netns t->net. They differ once the device is created in or moved to a netns other than the one the request runs in. The rtnl changelink path checks CAP_NET_ADMIN only against dev_net(dev), so a caller privileged there but not in t->net can rewrite a tunnel that lives in t->net. Gate vti6_changelink() on rtnl_dev_link_net_capable() at its top, before any attribute is parsed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: sit: require CAP_NET_ADMIN in the device netns for changelink ipip6_changelink() operates on at most two netns, dev_net(dev) and the tunnel link netns t->net. They differ once the device is created in or moved to a netns other than the one the request runs in. The rtnl changelink path checks CAP_NET_ADMIN only against dev_net(dev), so a caller privileged there but not in t->net can rewrite a tunnel that lives in t->net. Gate ipip6_changelink() on rtnl_dev_link_net_capable() at its top, before any attribute is parsed. sit was the one tunnel type not covered by the recent series that added this check to the other changelink() handlers.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: cpu: hotplug: Bound hotplug states sysfs output states_show() adds CPU hotplug state names into a single sysfs buffer using sprintf(). With enough registered states, this can write past the end of the PAGE_SIZE buffer. Use sysfs_emit_at() so output is bounded.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: dm-verity: fix buffer overflow in FEC calculation There's a buffer overflow in dm-verity-fec: if (neras && *neras <= v->fec->roots) fio->erasures[(*neras)++] = i; This allows *neras to reach roots + 1 (the post-increment pushes it past roots). This value is then passed as no_eras to decode_rs8(). Inside the RS decoder (lib/reed_solomon/decode_rs.c:113-121), the erasure locator polynomial loop writes lambda[j] where j can reach nroots + 1 - one element past the end of lambda[] (which is sized nroots + 1, valid indices 0..nroots). The out-of-bounds write lands on syn[0], corrupting the syndrome buffer.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nvmet-rdma: handle inline data with a nonzero offset nvmet_rdma_use_inline_sg() maps the host-controlled inline data offset into the per-command inline scatterlist. The bounds check admits any offset with off + len <= inline_data_size, but the mapping still assumes the data begins in the first inline page: sg->offset = off; sg->length = min_t(int, len, PAGE_SIZE - off); When a port is configured with inline_data_size > PAGE_SIZE (settable up to max(SZ_16K, PAGE_SIZE)), an offset in (PAGE_SIZE, inline_data_size] makes "PAGE_SIZE - off" underflow, so sg->length is set to ~4 GiB and the block backend reads far past the first inline page. num_pages(len) also ignores the offset, so an in-bounds offset whose [off, off+len) span crosses a page boundary under-counts the scatterlist. Map the offset properly: split it into a page index and an in-page offset, start the scatterlist at that page, and size the page count from page_off + len. Because the request scatterlist may now start at inline_sg[page_idx] rather than inline_sg[0], generalize the inline-SGL identity test in nvmet_rdma_release_rsp() to a range test; otherwise the persistent inline scatterlist is mistaken for an allocated one and nvmet_req_free_sgls() frees an inline page (and warns in free_large_kmalloc()).


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xfrm: xfrm_interface: require CAP_NET_ADMIN in the device netns for changelink xfrmi_changelink() operates on at most two netns, dev_net(dev) and the interface link netns xi->net. They differ once the device is created in or moved to a netns other than the one the request runs in. The rtnl changelink path checks CAP_NET_ADMIN only against dev_net(dev), so a caller privileged there but not in xi->net can rewrite an interface that lives in xi->net. Gate xfrmi_changelink() on rtnl_dev_link_net_capable() at its top, before any attribute is parsed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: thunderbolt: Fix frags[] overflow by bounding frame_count tbnet_poll() assembles a multi-frame ThunderboltIP packet into one skb. The first frame goes into the skb linear area and every further frame is added as a page fragment. skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, hdr_size, frame_size, TBNET_RX_PAGE_SIZE - hdr_size); A packet of frame_count frames therefore ends up with frame_count - 1 fragments. tbnet_check_frame() only bounds the peer supplied frame_count to TBNET_RING_SIZE / 4 (64), which is far above MAX_SKB_FRAGS (17 by default). A peer that sends a packet of 19 or more small frames pushes nr_frags past MAX_SKB_FRAGS, so skb_add_rx_frag() writes past skb_shinfo()->frags[] and corrupts memory after the shared info. Tighten the start of packet bound to MAX_SKB_FRAGS + 1 so a packet can never produce more fragments than frags[] can hold. This matches the recent skb frags overflow fixes in other receive paths, for example f0813bcd2d9d ("net: wwan: t7xx: fix potential skb->frags overflow in RX path") and 600dc40554dc ("net: usb: cdc-phonet: fix skb frags[] overflow in rx_complete()").


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ocfs2: avoid moving extents to occupied clusters For non-auto OCFS2_IOC_MOVE_EXT operations, userspace supplies a physical me_goal. ocfs2_move_extent() initializes new_phys_cpos from that goal and expects ocfs2_probe_alloc_group() to replace it with a free run in the target block group. The probe currently leaves *phys_cpos unchanged if the scan reaches the end of the group without finding a free run. An occupied goal at the last bit can therefore survive the probe and be passed to __ocfs2_move_extent(), which copies file data into a cluster still owned by another inode before the bitmap is updated. When the probe does find a free run, it also subtracts move_len from the ending bit. The start of an N-bit run ending at i is i - N + 1, so the current calculation can report the bit immediately before the free run. Clear *phys_cpos before scanning and use the correct free-run start. Callers already treat a zero result as -ENOSPC, so failed probes no longer continue with an occupied caller-controlled goal.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.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.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipv6: mcast: Fix potential UAF in MLD delayed work A race condition exists between device teardown and incoming MLD query processing, leading to a Use-After-Free in the MLD delayed work. During device destruction, the primary reference to inet6_dev is dropped, which can drop its refcount to 0. The actual freeing of inet6_dev memory is deferred via RCU. Concurrently, the packet receive path runs under RCU read lock and obtains the inet6_dev pointer. Because the memory is RCU-protected, CPU-0 can safely dereference inet6_dev even if its refcount has hit 0. However, if CPU-0 calls igmp6_event_query() and schedules delayed work, it attempts to acquire a reference using in6_dev_hold(). This increments the refcount from 0 to 1, triggering a "refcount_t: addition on 0" warning. Since the inet6_dev memory is still scheduled to be freed after the RCU grace period, the device is freed while the work is still scheduled. When the work runs, it accesses the freed memory, causing a kernel panic. Fix this by using refcount_inc_not_zero() (via a new helper in6_dev_hold_safe()) to prevent acquiring a reference if the device is already being destroyed. If the refcount is 0, we do not schedule the work.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipv4: igmp: Fix potential UAF in igmp_gq_start_timer() A race condition exists between device teardown (inetdev_destroy) and incoming IGMP query processing (igmp_rcv), leading to a Use-After-Free in the IGMP timer callback. During device destruction, inetdev_destroy() drops the primary reference to in_device, which can drop its refcount to 0. The actual freeing of in_device memory is deferred via RCU (using call_rcu()). Concurrently, igmp_rcv() runs under RCU read lock and obtains the in_device pointer. Because the memory is RCU-protected, CPU-0 can safely dereference in_device even if its refcount has hit 0. However, if CPU-0 calls igmp_gq_start_timer() and re-arms the timer, it attempts to acquire a reference using in_dev_hold(). This increments the refcount from 0 to 1, triggering a "refcount_t: addition on 0" warning. Since the in_device memory is still scheduled to be freed after the RCU grace period (as the free callback does not check the refcount again), the device is freed while the timer is still armed. When the timer expires, it accesses the freed memory, causing a kernel panic. Fix this by using refcount_inc_not_zero() (via a new helper in_dev_hold_safe()) to prevent acquiring a reference if the device is already being destroyed. If the refcount is 0, we do not arm the timer. A similar issue in IPv6 MLD is fixed in a subsequent patch.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: netfilter: ip6tables: mark malformed IPv6 extension headers for hotdrop The ah, hbh and rt matches check that the fixed extension header is present, then use the header length field to derive the advertised extension header length for matching. For the ah match, add the missing advertised-length check. For hbh and rt, update the existing advertised-length checks. In all three cases, set hotdrop to true before returning false when the advertised extension header length exceeds the available skb data. Returning false treats the packet as a rule mismatch. Set hotdrop to true and drop malformed packets so they cannot bypass rules intended to drop packets with these IPv6 extension headers.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: gue: validate REMCSUM private option length GUE private flags can indicate that remote checksum offload metadata is present. The private flags field itself is accounted for by guehdr_flags_len(), but guehdr_priv_flags_len() currently returns 0 even when GUE_PFLAG_REMCSUM is set. This lets a packet with only the private flags field pass validate_gue_flags(), after which gue_remcsum() and gue_gro_remcsum() read the missing REMCSUM start/offset fields from the following bytes. Account for GUE_PLEN_REMCSUM when GUE_PFLAG_REMCSUM is present so that malformed packets are rejected during option validation.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: fix addr_wq_timer race in sctp_free_addr_wq() sctp_free_addr_wq() previously removed addr_wq_timer using timer_delete() while holding addr_wq_lock. However, timer_delete() does not guarantee that a currently running timer handler has completed. This allows a race with sctp_addr_wq_timeout_handler(), where the handler may still run after addr_waitq has been freed, acquire addr_wq_lock, and access freed memory, leading to a use-after-free. Fix this by calling timer_shutdown_sync() before taking addr_wq_lock. This guarantees that any in-flight timer handler has finished and prevents the timer from being re-armed during teardown, making subsequent cleanup safe.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: add INIT verification after cookie unpacking In SCTP handshake, the INIT chunk is initially processed by the server and embedded into the cookie carried in INIT-ACK. The client then returns this cookie via COOKIE-ECHO, where the server unpacks it and reconstructs the original INIT chunk. When cookie authentication is enabled, the cookie contents are protected against tampering, so reusing the unpacked INIT without re-verification is safe. However, when cookie authentication is disabled, the reconstructed INIT can no longer be trusted. In this case, the INIT must be explicitly validated after unpacking to avoid processing potentially tampered data. Add sctp_verify_init() checks after cookie unpacking in COOKIE-ECHO processing paths (sctp_sf_do_5_1D_ce() and sctp_sf_do_5_2_4_dupcook()) when cookie_auth_enable is disabled. On failure, the new association is freed and the packet is discarded. Also tighten cookie validation in sctp_unpack_cookie() by verifying the embedded chunk type is SCTP_CID_INIT before treating it as an INIT chunk. Finally, update sctp_verify_init() to validate parameter bounds using the actual embedded INIT length instead of chunk->chunk_end, since the INIT stored in COOKIE-ECHO may not span the entire chunk buffer.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: enetc: check the number of BDs needed for xdp_frame The size of xdp_redirect_arr array is ENETC_MAX_SKB_FRAGS. However, the number of fragments contained in xdp_frame may be greater than or equal to ENETC_MAX_SKB_FRAGS, which will cause the access to xdp_redirect_arr to be out of bounds.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: netfilter: ipset: make sure gc is properly stopped Sashiko noticed that when destroying a set, cancel_delayed_work_sync() was called while gc calls queue_delayed_work() unconditionally which can lead not to properly shutting down the gc.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: drm/amdkfd: fix list_del corruption in kfd_criu_resume_svm The cleanup tail of kfd_criu_resume_svm() walks svms->criu_svm_metadata_list and kfree()s each struct criu_svm_metadata without removing it from the list. The list head is left pointing at freed kmalloc-96 objects. A second AMDKFD_IOC_CRIU_OP from the same process re-enters: list_empty() reads the dangling ->next (use-after-free), the loop walks freed entries, and each is kfree()'d again (double-free). This is reachable by an unprivileged render-group user via /dev/kfd with no capabilities required. Add list_del() before the kfree() so the list is properly emptied. The list_for_each_entry_safe() iterator already caches the next pointer, so unlinking during the walk is safe. (cherry picked from commit 6322d278a298e2c1430b9d2697743d3a04b788b1)


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen Whenever codel drops packets during peek, it calls qdisc_tree_reduce_backlog. An issue arises because it calls qdisc_tree_reduce_backlog before it reincrements the qlen. If qlen drops to zero, but peek returns an skb, the parent's qlen_notify callback will be executed even though codel still has 1 packet on the queue and, thus, will mistakenly deactivate the parent's class causing issues like a wild memory access when qfq has codel as a child: [ 36.339843][ T370] Oops: general protection fault, probably for non-canonical address 0xfbd59c0000000024: 0000 [#1] SMP KASAN NOPTI [ 36.340408][ T370] KASAN: maybe wild-memory-access in range [0xdead000000000120-0xdead000000000127] [ 36.340737][ T370] CPU: 2 UID: 0 PID: 370 Comm: tc Not tainted 7.1.0-rc5-00287-g66e13b626592 #87 PREEMPT(full) [ 36.341113][ T370] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 36.341357][ T370] RIP: 0010:qfq_deactivate_agg (include/linux/list.h:1029 (discriminator 2) include/linux/list.h:1043 (discriminator 2) net/sched/sch_qfq.c:1369 (discriminator 2) net/sched/sch_qfq.c:1395 (discriminator 2)) sch_qfq [ 36.342221][ T370] RSP: 0018:ffff8881100ef370 EFLAGS: 00010216 [ 36.342422][ T370] RAX: 0000000000000000 RBX: ffff8881058a9568 RCX: dffffc0000000000 [ 36.342664][ T370] RDX: 1ffff11021064dc3 RSI: ffff888108326e00 RDI: dffffc0000000000 [ 36.342905][ T370] RBP: ffff8881058a8280 R08: dead000000000122 R09: 1bd5a00000000024 [ 36.343140][ T370] R10: fffffbfff2940329 R11: fffffbfff2940329 R12: 0000000000000000 [ 36.343383][ T370] R13: dead000000000100 R14: ffff8881058a9580 R15: ffff8881058a9578 [ 36.343631][ T370] FS: 00007fc04b0ca780(0000) GS:ffff888184fef000(0000) knlGS:0000000000000000 [ 36.343911][ T370] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 36.344116][ T370] CR2: 0000557c02c02000 CR3: 000000010e0ba000 CR4: 0000000000750ef0 [ 36.344359][ T370] PKRU: 55555554 [ 36.344481][ T370] Call Trace: ... [ 36.345054][ T370] qfq_reset_qdisc (net/sched/sch_qfq.c:357 net/sched/sch_qfq.c:1487) sch_qfq [ 36.345222][ T370] qdisc_reset (net/sched/sch_generic.c:1057) [ 36.345503][ T370] __qdisc_destroy (net/sched/sch_generic.c:1096) [ 36.345677][ T370] qdisc_graft (net/sched/sch_api.c:1062 net/sched/sch_api.c:1053 net/sched/sch_api.c:1159) [ 36.346335][ T370] tc_get_qdisc (net/sched/sch_api.c:1528 net/sched/sch_api.c:1556) Fix this by only calling qdisc_tree_reduce_backlog in peek after the qlen is restored.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: tipc: require net admin for TIPCv2 netlink mutators TIPCv2 registers mutating generic-netlink operations without admin permission flags. Generic netlink only checks CAP_NET_ADMIN when an operation sets GENL_ADMIN_PERM or GENL_UNS_ADMIN_PERM, so a local unprivileged process can currently change TIPC state through commands such as TIPC_NL_NET_SET, TIPC_NL_KEY_SET, TIPC_NL_KEY_FLUSH, and bearer enable/disable. The legacy TIPC netlink API already checks netlink_net_capable(..., CAP_NET_ADMIN) for administrative commands. Give the TIPCv2 mutators the equivalent generic-netlink gate. Use GENL_UNS_ADMIN_PERM, which maps to the same namespace-aware CAP_NET_ADMIN check that netlink_net_capable() performs, so the behaviour matches the legacy path and keeps working for CAP_NET_ADMIN holders in a non-initial user namespace (containers). A QEMU/KASAN repro run as uid/gid 65534 with zero effective capabilities previously succeeded in changing the network id and node identity, setting and flushing key material, and enabling/disabling a UDP bearer. With this patch applied the same operations fail with -EPERM.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: configfs: fix lockless traversals of ->s_children Having the parent directory locked protects entries from removal by another thread, but it does *not* protect cursors from being moved around by lseek() - or freed, for that matter.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: vhost: fix vhost_get_avail_idx for a non empty ring vhost_get_avail_idx is supposed to report whether it has updated vq->avail_idx. Instead, it returns whether all entries have been consumed, which is usually the same. But not always - in drivers/vhost/net.c and when mergeable buffers have been enabled, the driver checks whether the combined entries are big enough to store an incoming packet. If not, the driver re-enables notifications with available entries still in the ring. The incorrect return value from vhost_get_avail_idx propagates through vhost_enable_notify and causes the host to livelock if the guest is not making progress, as vhost will immediately disable notifications and retry using the available entries. This goes back to commit d3bb267bbdcb ("vhost: cache avail index in vhost_enable_notify()") which changed vhost_enable_notify() to compare the freshly read avail index against vq->last_avail_idx instead of the previously cached vq->avail_idx. Commit 7ad472397667 ("vhost: move smp_rmb() into vhost_get_avail_idx()") then carried over the same comparison when refactoring vhost_enable_notify() to call the unified vhost_get_avail_idx(). The obvious fix is to make vhost_get_avail_idx do what the comment says it does and report whether new entries have been added.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bpf: fix UAF by restoring RCU-delayed inode freeing in bpffs commit 4f375ade6aa9 ("bpf: Avoid RCU context warning when unpinning htab with internal structs") moved inode cleanup from ->free_inode() into ->destroy_inode() to avoid sleeping in RCU context when calling bpf_any_put(). However this removed the RCU delay on freeing the inode itself and the cached symlink body (i_link), both of which can be accessed by RCU pathwalk (pick_link, may_lookup etc.). This causes a use-after-free when a concurrent unlinkat() drops the last inode reference and destroy_inode() frees the inode immediately, while another task is still walking the path in RCU mode and reads inode->i_opflags (offset +2) inside current_time() -> is_mgtime(). KASAN reports: BUG: KASAN: slab-use-after-free in is_mgtime include/linux/fs.h:2313 Read of size 2 at addr ffff8880407e4282 (offset +2 = i_opflags) The rules (per Al Viro): ->destroy_inode() called immediately, can sleep, use for blocking cleanup e.g. bpf_any_put() ->free_inode() called after RCU grace period, use for freeing inode and anything RCU-accessible e.g. i_link Fix: split the two concerns properly: - keep bpf_any_put() in bpf_destroy_inode() since it is blocking and needs to run promptly - introduce bpf_free_inode() to handle kfree(i_link) and free_inode_nonrcu() with proper RCU delay, preventing the UAF


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ALSA: seq: oss: Fix UAF at handling events with embedded SysEx data The OSS sequencer processes the input MIDI bytes into a sequencer event to be dispatched later (in snd_seq_oss_midi_putc() called from snd_seq_oss_process_event()). When it's a SysEx data, the event record contains data.ext.ptr pointer to the original SysEx bytes, and the referred data is copied into the pool afterwards at dispatching. The problem is that, if the sequencer port gets closed concurrently before the dispatch, the OSS sequencer core also releases the resources (in snd_seq_oss_midi_check_exit_port()), while the pending event may hold a stale pointer, eventually leading to a UAF at a later dispatch. Fortunately, there is already a refcounting mechanism (snd_use_lock_t) for the OSS MIDI device access, and for addressing the issue above, we just need to extend the refcount until the event gets dispatched. This patch extends snd_seq_oss_process_event() to give back the refcount object, which is in turn released after calling the sequencer dispatcher with the given event in the caller side. According to the original report, KASAN report as below: KASAN slab-use-after-free in snd_seq_event_dup+0x40c/0x470 RIP: 0033:0x7f2cb66a6340 Read of size 6 Call trace: dump_stack_lvl+0x73/0xb0 (?:?) print_report+0xd1/0x650 (?:?) srso_alias_return_thunk+0x5/0xfbef5 (?:?) __virt_addr_valid+0x1a7/0x340 (?:?) kasan_complete_mode_report_info+0x64/0x200 (?:?) kasan_report+0xf7/0x130 (?:?) snd_seq_event_dup+0x40c/0x470 (?:?) kasan_check_range+0x10c/0x1c0 (?:?) __asan_memcpy+0x27/0x70 (?:?) snd_seq_event_dup+0x9/0x470 (?:?) snd_seq_client_enqueue_event+0x139/0x240 (?:?) _raw_spin_unlock_irqrestore+0x4b/0x60 (?:?) snd_seq_kernel_client_enqueue+0x102/0x120 (?:?) snd_seq_oss_write+0x416/0x4e0 (?:?) apparmor_file_permission+0x20/0x30 (?:?) odev_write+0x3b/0x60 (?:?) vfs_write+0x1ce/0x850 (?:?) lock_release+0xc8/0x2a0 (?:?) __kasan_check_write+0x18/0x20 (?:?) __mutex_unlock_slowpath+0x129/0x510 (?:?) ksys_write+0xe1/0x180 (?:?) mutex_unlock+0x16/0x20 (?:?) odev_ioctl+0x65/0xc0 (?:?) __x64_sys_write+0x46/0x60 (?:?) x64_sys_call+0x7d/0x20d0 (?:?) do_syscall_64+0xc1/0x360 (arch/x86/entry/syscall_64.c:87) entry_SYSCALL_64_after_hwframe+0x77/0x7f (?:?)


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipv6: addrconf: bail out of dad_failure when state is no longer POSTDAD addrconf_dad_failure() transitions ifp->state from DAD to POSTDAD via addrconf_dad_end(), which drops ifp->lock on return. The lock is re-acquired after net_info_ratelimited(). A concurrent ipv6_del_addr() can take the lock in that window, set ifp->state to DEAD and run list_del_rcu(&ifp->if_list). addrconf_dad_failure() then overwrites DEAD with ERRDAD at errdad: and schedules a new dad_work. The work calls ipv6_del_addr() again, hitting the already-poisoned list entry: general protection fault: 0000 [#1] SMP NOPTI CPU: 4 PID: 217 Comm: kworker/4:1 Workqueue: ipv6_addrconf addrconf_dad_work RIP: 0010:ipv6_del_addr+0xe9/0x280 RAX: dead000000000122 Call Trace: addrconf_dad_stop+0x113/0x140 addrconf_dad_work+0x28c/0x430 process_one_work+0x1eb/0x3b0 worker_thread+0x4d/0x400 kthread+0x104/0x140 ret_from_fork+0x35/0x40 Fold the addrconf_dad_end() logic into addrconf_dad_failure() under a single ifp->lock critical section. The STABLE_PRIVACY branch temporarily drops ifp->lock around address regeneration, so at lock_errdad: verify the state is still POSTDAD before transitioning to ERRDAD; bail out otherwise to avoid overwriting a state set by another path while the lock was released.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: vxlan: Fix potential null-ptr-deref in vxlan_gro_prepare_receive(). udp_tunnel_sock_release() could set sk->sk_user_data to NULL while vxlan_gro_prepare_receive() is running. Let's check if rcu_dereference_sk_user_data() is NULL after skb_gro_remcsum_init().


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: drm/vmwgfx: bound DMA command body size against suffix pointer vmw_cmd_dma() locates the DMA suffix at (unsigned long) &cmd->body + header->size - sizeof(*suffix) without checking that header->size is large enough to contain both cmd->body and the suffix. An undersized header makes the suffix pointer underflow back into the previous command in the bounce buffer. The verifier later writes suffix->maximumOffset, clobbering verified fields of an already-relocated earlier command -- a TOCTOU on the device-visible command stream that lets one command rewrite another's GMR id, surface id, or other authenticated fields. Reject the command if the body is too small for the suffix to fit.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: drm/vmwgfx: validate DRAW_PRIMITIVES header size before division vmw_cmd_draw() computes maxnum = (header->size - sizeof(cmd->body)) / sizeof(*decl); where header->size is u32 and is taken straight from the user-supplied command stream. When header->size is less than sizeof(cmd->body) the unsigned subtraction wraps to nearly 4 GiB, producing a huge maxnum. Any user-controlled cmd->body.numVertexDecls then passes the bound and the loop dereferences decl[i] far past the end of the kernel command bounce buffer, producing an out-of-bounds read of kernel memory. Reject undersized headers up front.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: drm/vc4: Zero the tile state data array before each BIN job The binner BO is a single 16MB buffer split into 512KB slots that are handed out to jobs at submission time and recycled as jobs complete, without ever being cleared. Each slot holds the job's Tile State Data Array (TSDA) at its start, followed by the tile allocation pool. While the tile allocation pool is only walked by the render thread through branches the binner generated during the current job, the TSDA is the PTB's own per-tile bookkeeping and is consumed by the hardware itself. Although the kernel sets the "Auto-initialise Tile State Data Array" flag in the tile binning mode configuration, the PTB demonstrably still acts on stale tile state left by the slot's previous user: the binner ends up creating invalid command streams with invalid primitive streams and branches, which can cause GPU hangs as observed in [1][2]. Zero the TSDA when the job's binning slot is configured. This clears 48 bytes per tile (~24KB for a 1080p frame) in the submission path, and guarantees the PTB never sees another job's tile state. The tile count is only checked for being non-zero today, so the 8-bit fields it comes from can describe a tile state array almost six times larger than the slot it has to live in. Bound it before the slot is handed out, since such size decides how much of the slot is left for the tile alloc pool.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: prevent peer transport count overflow sctp_assoc_add_peer() increments the association's 16-bit transport_count for every new unique peer. Adding the 65,536th transport wraps the count to zero. SCTP sock_diag uses transport_count to reserve the INET_DIAG_PEERS payload, then copies one sockaddr_storage for every entry in transport_addr_list. After the wrap, a diagnostic dump reserves an empty payload and writes 8 MiB of peer addresses past the skb tail. Reject a new unique peer when transport_count has reached U16_MAX. Perform the check after the existing-peer lookup so a duplicate address continues to return its existing transport at the limit.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: vxlan: use pskb_network_may_pull() in route_shortcircuit() route_shortcircuit() currently calls pskb_may_pull(skb, sizeof(struct iphdr)) (or ipv6hdr), which checks if bytes are available starting from skb->data. However, in vxlan_xmit(), skb->data points to the MAC header, so skb_network_offset(skb) is ETH_HLEN (14 bytes). Using pskb_may_pull(skb, 20) only checks 20 bytes from skb->data (which is 14 bytes MAC header + 6 bytes of IP header), leaving the rest of the IP header potentially un-pulled in non-linear frags. Subsequent dereferences of ip_hdr(skb)->daddr can read beyond the pulled linear buffer length. Fix this by using pskb_network_may_pull(), which adds skb_network_offset(skb) to the length check to ensure the full network header is present in the linear buffer.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: veth: convert frag_list skbs before running XDP A frag_list skb can reach veth with data_len set but nr_frags zero. veth_convert_skb_to_xdp_buff() only converts skbs that are shared, locked, have frags[], or do not have enough headroom. It later uses skb_is_nonlinear() to decide whether to set XDP_FLAGS_HAS_FRAGS and xdp_frags_size. That exposes frag_list data to XDP as if it were stored in frags[], but frags[] is empty. AF_XDP copy mode can then trust the bogus XDP fragment metadata, walk an empty fragment entry, and crash in memcpy() from __xsk_rcv(). Route non-linear skbs through skb_pp_cow_data() before exposing them to XDP, and only advertise XDP frags when the resulting skb has frags[]. skb_copy_bits() already handles frag_list input, and skb_pp_cow_data() builds frags[] output with skb_add_rx_frag(), which is the representation XDP multi-buffer expects.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: pktgen: fix proc entry use-after-free pktgen_change_name() replaces pkt_dev->entry while holding t->if_lock. pktgen_remove_device() removes the same entry before _rem_dev_from_if_list() takes that lock. This allows the following interleaving: CPU 0 (NETDEV_CHANGENAME) CPU 1 (kpktgend) if_lock(t) proc_remove(pkt_dev->entry) proc_remove(pkt_dev->entry) pkt_dev->entry = proc_create_data(...) if_unlock(t) The kthread can pass the stale proc_dir_entry to proc_remove() after the rename path has freed it. A reproducer with a widened race window reports: BUG: KASAN: slab-use-after-free in proc_remove+0x78/0x80 Read of size 8 at addr ffff8881478fea70 by task kpktgend_0/67 Call Trace: proc_remove+0x78/0x80 pktgen_remove_device.isra.0+0x11c/0x4c0 pktgen_thread_worker+0x1214/0x6bc0 kthread+0x2c6/0x3b0 Allocated by task 95: __proc_create+0x204/0x790 proc_create_data+0x72/0xe0 pktgen_thread_write+0xd61/0x1510 Freed by task 28: kmem_cache_free+0xcb/0x3d0 proc_free_inode+0x5b/0x80 rcu_core+0x50a/0x1850 The buggy address belongs to the object at ffff8881478fea00 which belongs to the cache proc_dir_entry of size 192 Move proc_remove() into the if_lock-protected list removal helper. Keep it before list_del_rcu() to preserve the ordering required by add_device(). The rename path must then finish replacing the entry before removal, or it observes that the device is no longer on the list.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: bridge: stop fast-leave after deleting a port group br_multicast_leave_group() iterates mp->ports with pp = &p->next in its fast-leave path. After br_multicast_del_pg() removes p, continuing the loop advances pp through the deleted entry. If multicast-to-unicast was enabled, the bridge can hold multiple port groups for the same port and group with different source MAC addresses. Once multicast-to-unicast is disabled, br_port_group_equal() matches those entries by port only. A fast leave can then delete one entry and continue from its stale next pointer, leaving mp->ports pointing at a deleted port group. Fast leave only needs to remove one matching port group. Break after br_multicast_del_pg() so the loop stops before dereferencing the removed entry.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: netfilter: ipset: do not update comments from kernel-side hash adds mtype_resize() copies comment pointers with memcpy(), not the comment objects themselves. During the window after an entry has been copied but before the table swap and backlog replay, the old table is still published for packet-side updates while the replacement-table entry already holds the same ip_set_comment_rcu pointer. If xt_SET --add-set ... --exist hits that old entry in this window, mtype_add() calls ip_set_init_comment() even though packet-side adds carry no comment payload. That call frees the shared comment through the old entry, so the replacement-table entry now holds a stale pointer. When the queued add is replayed on the new table, mtype_add() calls ip_set_init_comment() again and strlen() dereferences the stale pointer. Fix this in mtype_add() by skipping ip_set_init_comment() when ext->target marks a packet-side add. Userspace adds still update comments, while packet-side adds can no longer free comment storage shared with a resize copy.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net/smc: fix socket use-after-free during link group termination __smc_lgr_terminate() drops conns_lock after finding a connection in lgr->conns_all, but before taking a reference on its socket. The connection is embedded in the socket, and its registration reference protects it only while the connection remains in the tree. A concurrent close can unregister the connection and drop that reference, freeing the socket before the termination worker reaches sock_hold(). The race is reachable when close overlaps link group termination. Local stress testing reproduced the use-after-free and KASAN reported: BUG: KASAN: slab-use-after-free in __smc_lgr_terminate.part.0 [smc] Write of size 4 by task kworker/3:3 Workqueue: events smc_lgr_terminate_work [smc] __smc_lgr_terminate.part.0 [smc] The socket was allocated by smc_create(), freed through slab_free_after_rcu_debug(), and was followed by: refcount_t: addition on 0; use-after-free. __smc_lgr_terminate.part.0 [smc] Take the socket reference while conns_lock still protects the tree entry. The unregister path then cannot drop the last reference until termination has finished using the socket.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: fix UAF in l2cap_le_connect_rsp l2cap_le_connect_rsp() obtains a channel via __l2cap_get_chan_by_ident() but neither holds a reference nor uses l2cap_chan_hold_unless_zero() before locking and operating on it. A concurrent l2cap_chan_del() triggered by a remote disconnect can free the channel between the lookup and l2cap_chan_lock(), causing a use-after-free. The BR/EDR counterpart l2cap_connect_rsp() and the sibling handler l2cap_le_command_rej() already use l2cap_chan_hold_unless_zero() to safely hold a reference, but l2cap_le_connect_rsp() was left unprotected. Fix by adding l2cap_chan_hold_unless_zero() after the ident lookup and l2cap_chan_put() on the exit path, consistent with other L2CAP response handlers.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: ISO: clear iso_data always when detaching conn from hcon When setting conn->hcon = NULL, also conn->hcon->iso_data = NULL is necessary, otherwise later iso_conn_free() will UAF. Fix clearing of iso_data in iso_sock_disconn() Fixes KASAN: slab-use-after-free in iso_conn_hold_unless_zero on iso_sock_release() followed by hci_abort_conn_sync().


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: clear new_transport when removing a peer sctp_process_asconf_param() stores a newly added peer transport in asoc->new_transport. After all parameters in the ASCONF chunk have been processed, sctp_sf_do_asconf() uses this pointer to send a HEARTBEAT to the new transport. An authenticated ASCONF from a remote SCTP peer can add a transport and remove it again with a wildcard DEL-IP parameter in the same chunk. The wildcard deletion preserves the transport on which the ASCONF arrived, but removes the newly added transport through sctp_assoc_del_nonprimary_peers(). The removal does not clear asoc->new_transport, leaving it pointing to the removed transport. sctp_sf_do_asconf() then creates a HEARTBEAT whose chunk->transport points to the removed transport without holding a transport reference. During local address replacement, src_out_of_asoc_ok keeps this HEARTBEAT on control_chunk_list. After the transport is freed by RCU, a successful ASCONF_ACK for the replacement address releases the queued HEARTBEAT and sctp_outq_select_transport() reads the freed transport's state. The issue was found during a static audit of SCTP objects. With an authenticated peer, the reproducer triggered the same KASAN report in 2 of 2 unpatched runs on a KASAN-enabled netdev/main kernel: BUG: KASAN: slab-use-after-free in sctp_outq_select_transport Read of size 4 at addr ffff88800b9bd95c by task python3/197 Call Trace: sctp_outq_select_transport+0x549/0x8b0 [sctp] sctp_outq_flush+0x306/0x2c60 [sctp] sctp_transport_immediate_rtx+0xaf/0x260 [sctp] sctp_process_asconf_ack+0xa48/0xf70 [sctp] Allocated by task 197: sctp_transport_new+0x68/0x650 [sctp] sctp_assoc_add_peer+0x258/0x12a0 [sctp] sctp_process_asconf+0x5e9/0x1090 [sctp] Last potentially related work creation: __call_rcu_common.constprop.0+0x77/0xb70 sctp_assoc_del_nonprimary_peers+0x7c/0xd0 [sctp] sctp_process_asconf+0xd9c/0x1090 [sctp] The first invalid access was a four-byte read of transport->state at net/sctp/outqueue.c:833. The same reproducer completed the full authenticated ASCONF and local-address replacement sequence with this change without a KASAN report or oops. Clear new_transport when its peer is removed, before it can be used to create the HEARTBEAT.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: keep chunk->transport in step with the list it is queued on __sctp_outq_flush_rtx() moves a gap-acked chunk onto another transport's transmitted list without updating chunk->transport: if (chunk->tsn_gap_acked) { list_move_tail(&chunk->transmitted_list, &transport->transmitted); continue; } The chunk then sits on a live transport's list while chunk->transport still names a different one. If that transport is removed - sctp_assoc_rm_peer() from an ASCONF Delete-IP - sctp_transport_free() RCU-frees it and the chunk is left with a dangling pointer. sctp_assoc_rm_peer() scrubs peer->transmitted and asoc->outqueue.out_chunk_list, but the chunk is on neither. The pointer is not followed while tsn_gap_acked is set. A SACK that reneges on the TSN clears the flag, and the next SACK reaches tchunk->transport->flight_size -= sctp_data_size(tchunk); inside the freed transport. KASAN reports a slab-use-after-free read in sctp_check_transmitted(), freed from sctp_assoc_rm_peer(). Both the removal and the SACKs come from the association peer. Set chunk->transport at the move. The ordinary resend path needs nothing: it reaches its list_move_tail() only after sctp_packet_append_chunk() returned SCTP_XMIT_OK, and __sctp_packet_append_chunk() has rebound the chunk by then. Discovered by XBOW, triaged by Baul Lee <baul.lee@xbow.com>


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: Fix sk_redir use-after-free in send verdict sk_psock_msg_verdict() takes a socket reference for psock->sk_redir. tcp_bpf_send_verdict() copies that pointer while holding the source socket lock, but does not take a reference for the local copy before dropping the lock around tcp_bpf_sendmsg_redir(). When apply_bytes keeps the cached verdict active, another sendmsg() on the same source socket can consume the remaining bytes and release the cached reference while the first thread still holds only the raw local pointer: CPU 0 CPU 1 sk_redir = psock->sk_redir apply_bytes remains nonzero release_sock(sk) lock_sock(sk) apply_bytes reaches zero psock->sk_redir = NULL release_sock(sk) tcp_bpf_sendmsg_redir(sk_redir) sock_put(sk_redir) tcp_bpf_sendmsg_redir(sk_redir) The final sock_put() can free sk_redir before CPU 0 dereferences it. KASAN reported: BUG: KASAN: slab-use-after-free in tcp_bpf_sendmsg_redir+0xf39/0x1020 Read of size 8 at addr ffff888108537090 by task poc/87 Call Trace: tcp_bpf_sendmsg_redir+0xf39/0x1020 tcp_bpf_sendmsg+0x977/0x1a50 __sys_sendto+0x32c/0x3a0 __x64_sys_sendto+0xdb/0x1b0 Allocated by task 85: sk_prot_alloc+0x56/0x210 sk_clone+0x6f/0x14b0 inet_csk_clone_lock+0x24/0x740 tcp_create_openreq_child+0x25/0x2710 tcp_v4_syn_recv_sock+0x10a/0xe00 Freed by task 0: __kasan_slab_free+0x43/0x70 slab_free_after_rcu_debug+0xa6/0x1e0 rcu_core+0x50a/0x1850 Last potentially related work creation: __sk_destruct+0x3da/0x540 sk_psock_destroy+0x81e/0xab0 process_one_work+0x63a/0x1070 Take a temporary socket reference while the source socket lock still protects psock->sk_redir, and drop it after tcp_bpf_sendmsg_redir() returns. This keeps each unlocked use independent of cached-verdict ownership.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ip6_tunnel: clear skb2->cb[] in ip6ip6_err() ip6ip6_err() clones an outer IPv6 ICMP error skb, pulls it to the quoted inner IPv6 packet, and then passes the clone to icmpv6_send(). The clone still carries the outer packet's inet6_skb_parm in skb->cb. If the outer packet had a Home Address Option, IP6CB(skb2)->dsthao remains non-zero after skb_pull(). icmpv6_send() later calls mip6_addr_swap(), which uses that stale dsthao offset against the quoted inner packet. A malformed inner destination-options header can then make the HAO lookup and address swap run past the end of the quoted packet and corrupt skb_shared_info. Clear skb2->cb[] before pulling the quoted inner IPv6 packet so the reply path does not reuse metadata left by the outer IPv6 stack.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: smb: client: Fix use-after-free in cifs_try_adding_channels() cifs_try_adding_channels() takes a temporary reference to an interface before dropping iface_lock. If cifs_ses_add_channel() fails, it drops that reference and then increments iface->weight_fulfilled. A concurrent interface list refresh can remove the list reference while channel creation is in progress. In that case, the failure-path kref_put() releases the last reference and frees iface. Updating weight_fulfilled afterward then accesses freed memory. Increment weight_fulfilled before dropping the temporary reference, keeping iface alive for the final access.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: tipc: read le->link under the node lock in tipc_node_link_down() tipc_node_link_down() caches the link pointer before taking n->lock: struct tipc_link *l = le->link; /* unlocked */ if (!l) return; tipc_node_write_lock(n); if (!tipc_link_is_establishing(l)) { /* deref l */ ... tipc_link_reset(l); /* write into l */ if (delete) { kfree(l); le->link = NULL; The delete=true caller frees that very object under n->lock, so the lock does not protect the cached pointer against it: - CPU A, delete=false: tipc_rcv() on TIPC_LINK_DOWN_EVT, or the link supervision timer via tipc_node_timeout(), reads l unlocked and then dereferences it under n->lock; - CPU B, delete=true: netlink TIPC_NL_BEARER_DISABLE -> bearer_disable() -> tipc_node_delete_links() -> tipc_node_link_down(n, bearer_id, true) -> kfree(l). The link is freed with plain kfree(), not kfree_rcu(), and for UDP bearers disable_media() only schedules the asynchronous cleanup_bearer() work, so its synchronize_net() runs after the links are already gone. An in-flight CPU A that has read l therefore dereferences freed memory once B frees it: a use-after-free read in tipc_link_is_establishing(), and a use-after-free write via tipc_link_reset() on the establishing branch. The following trace was captured on 7.2.0-rc5-00284-gaf39eb111ce6: BUG: KASAN: slab-use-after-free in tipc_link_is_establishing (net/tipc/link.c:285) Read of size 4 at addr ffff88802e2aa068 by task swapper/2/0 tipc_link_is_establishing (net/tipc/link.c:285) tipc_node_link_down (net/tipc/node.c:1076) tipc_node_timeout (net/tipc/node.c:843) Allocated by task 9549: tipc_link_create (net/tipc/link.c:490) tipc_node_check_dest (net/tipc/node.c:1279) tipc_disc_rcv (net/tipc/discover.c:252) tipc_udp_recv (net/tipc/udp_media.c:389) Freed by task 9549: tipc_node_link_down (net/tipc/node.c:1084) tipc_node_delete_links (net/tipc/node.c:1320) bearer_disable (net/tipc/bearer.c:414) __tipc_nl_bearer_disable (net/tipc/bearer.c:992) Move the le->link read inside tipc_node_write_lock(), so it is serialised against the kfree() in the delete path. A racing teardown now either has not run yet, and we see a valid link, or has already run, and we see NULL.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: vxlan: do not arm the ageing timer on a device that is down vxlan_changelink() arms vxlan->age_timer whenever the requested ageing interval differs from the configured one: if (conf.age_interval != vxlan->cfg.age_interval) mod_timer(&vxlan->age_timer, jiffies); There is no netif_running() test, so the timer is armed even on a device that was never brought up. The only synchronous cancel in the driver is the timer_delete_sync() in vxlan_stop(), which is .ndo_stop. netif_close_many() drops devices without IFF_UP before __dev_close_many() runs, so that cancel is skipped for such a device. vxlan_setup() sets dev->needs_free_netdev = true and age_timer is a member of struct vxlan_dev, so free_netdev() releases the allocation the timer lives in while it is still queued on a timer_base. expire_timers() unlinks the entry before it loads timer->function, so the timer core writes through the freed object's list pointers: BUG: KASAN: slab-use-after-free in __run_timers+0x208/0x654 Write of size 8 at addr ffff00001adace68 by task true/192 __asan_store8+0x84/0xac __run_timers+0x208/0x654 run_timer_softirq+0x154/0x18c Allocated by task 189: alloc_netdev_mqs+0x64/0x720 rtnl_create_link+0x4ac/0x520 rtnl_newlink+0x758/0xd00 Freed by task 191: netdev_release+0x40/0x58 netdev_run_todo+0x4a4/0x8c0 rtnl_dellink+0x200/0x4e8 The rtnl operations involved are netns-scoped, so an unprivileged user can perform them in a new user and network namespace. Arming the timer on a down device never had an effect: vxlan_cleanup() returns early on !netif_running(), and vxlan_open() arms the timer for any non-zero interval once the device is brought up. Add the missing test. Discovered by XBOW, triaged by Baul Lee <baul.lee@xbow.com>


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xdp: reject clones that overrun skb_shared_info tailroom xdpf_clone() clones broadcast copies into a single page and sets frame_sz to PAGE_SIZE. __xdp_build_skb_from_frame() later treats that page like a normal XDP frame and expects the usual skb_shared_info tailroom at the end of the buffer. The current check only rejects frames whose linear xdp_frame header, headroom, and packet data exceed PAGE_SIZE. A source frame backed by a larger allocation can still satisfy that check while extending into the clone's required shared-info area. When such a clone is converted back into an skb, build_skb_around() places skb_shared_info over live packet bytes and later writes can corrupt XDP return metadata. Reject clones unless their linear area fits inside SKB_WITH_OVERHEAD(PAGE_SIZE), matching the tailroom requirement already enforced by the XDP-to-skb conversion path.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipv6: prevent in6_dev_get() from resurrecting inet6_dev in6_dev_get() reads dev->ip6_ptr under RCU and then unconditionally increments its refcount. Device teardown can clear the pointer and drop the last reference between these operations. The increment then resurrects an object whose RCU free has already been queued, so callers can use it after it is freed. Use refcount_inc_not_zero() and return NULL when the object has already reached zero. RCU keeps the memory accessible through the attempted reference acquisition, and a successful increment pins the object for the caller. An independent run on the exact unpatched 6f5156d7a31a (v7.2-rc3) kernel reproduced the invalid reference acquisition as UID 1000: refcount_t: addition on 0; use-after-free. ip6_mc_source+0xef4/0x17e0 It was followed by the corresponding reference underflow in ip6_mc_source(). The supplied trace from the same unpatched revision additionally shows the access after the RCU read-side section ends: BUG: KASAN: slab-use-after-free in mutex_lock+0x76/0xe0 Write of size 8 at addr ffff888015b50240 by task poc/1219 Bug found and triaged by OpenAI Security Research and validated by Trail of Bits.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: smc: fix splice entry lifetime imbalance in smc_rx_splice smc_rx_splice() passes pages to splice_to_pipe() before taking the references that cover the lifetime of each splice entry. In the VM-backed RMB path, splice_to_pipe() may drop unqueued entries through smc_rx_spd_release(), while queued entries are released later via the pipe buffer callback. The old post-splice accounting also derives the number of queued VM pages from an offset mutated while building the descriptor, and a multi-page splice pairs one sock_hold() with multiple sock_put() calls. Take the page and socket references for every candidate entry before splice_to_pipe(), and drop the matching private state, page reference, and socket reference from smc_rx_spd_release() for entries that never get queued. This fixes a refcount imbalance that can underflow page refcounts and trigger a use-after-free.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: clear control chunk transport if it is being removed sctp_make_heartbeat_ack() caches the destination transport in chunk->transport without taking a reference. When src_out_of_asoc_ok is enabled, the HEARTBEAT ACK may remain queued on control_chunk_list instead of being transmitted immediately. If the peer transport is removed while the chunk is still queued, sctp_assoc_rm_peer() drops the transport and schedules it for RCU freeing, but only clears cached transport pointers in out_chunk_list. The queued control chunk therefore retains a dangling transport pointer. Once an ASCONF_ACK clears the suppression and the queued control chunk is transmitted, SCTP dereferences the stale transport pointer, leading to a use-after-free. Fix this by also clearing chunk->transport for queued control chunks in control_chunk_list when removing the transport.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers Another challenge with unlocked filters. There is a short window in tc_new_tfilter where a tcf_proto can be found and briefly referenced by a totally unrelated, unlocked classifier's request and cause a race. Feng created a poc which created this race with two threads, one creating a u32 filter and other a flower filter in the same chain/prio: 1. Both threads enter tc_new_tfilter, both find the chain empty, both drop filter_chain_lock 2. u32 finishes tcf_proto_create("u32") first, calls tcf_chain_tp_insert_unique() -> inserts u32_tp into the chain 3. flower finishes tcf_proto_create("flower") later, calls tcf_chain_tp_insert_unique() -> tcf_chain_tp_find() now sees u32_tp already there, takes a reference on it, destroys flower's own tp_new and returns u32_tp to the caller. Flower then hits the kind mismatch check (because it requested for kind "flower" but tp->ops->kind is "u32") and goes through the errout path which calls tcf_proto_put() on u32_tp. If the u32 thread has already gone through its own errout (its change() call failed on the PoC's empty options) and dropped its create and insert refs, flower's put is the last one and drops u32_tp's refcnt to zero. At this point tp->ops->destroy() runs in a context that never took rtnl_lock. When that happens, it might cause a UAF like the following (illustrated by the PoC): [ +0.000710] BUG: KASAN: slab-use-after-free in u32_init (net/sched/cls_u32.c:393) [ +0.000281] Read of size 8 at addr ffff888120022f00 by task poc_feng_xue/524 Call Trace: u32_init (net/sched/cls_u32.c:393) tc_new_tfilter (net/sched/cls_api.c:2378) Allocated by task 526: u32_init (net/sched/cls_u32.c:378) tc_new_tfilter (net/sched/cls_api.c:2378) Freed by task 522: kfree u32_destroy (net/sched/cls_u32.c:662) tcf_proto_destroy (net/sched/cls_api.c:446) tcf_proto_put (net/sched/cls_api.c:459) tc_new_tfilter (net/sched/cls_api.c:2459) Fix this by having tcf_proto_destroy() take rtnl_lock around tp->ops->destroy() for locked classifiers whenever rtnl is not held. To explain why I used a temp variable "not_lockless" I'd like to point to a semi-related note on rtnl_held vs TCF_PROTO_OPS_DOIT_UNLOCKED (adding here for future cleanup if deemed necessary): The rtnl_held parameter and the TCF_PROTO_OPS_DOIT_UNLOCKED flag are redundant sources of truth for whether rtnl_lock is held. Among the nine classifier destroy(..rtnl_held..) callbacks, only flower consults the rtnl_held parameter which it propagates to tc_setup_cb_destroy() and tc_setup_cb_call(). The other eight (u32, flow, bpf, cgroup, route, basic, fw, mall) ignore it entirely;-> those that call tc_setup_cb_destroy() (u32, bpf, mall) hardcode true always instead of forwarding the parameter. A future cleanup should remove the rtnl_held parameter from the destroy callback signature entirely and have callers rely solely on their knowledge whether they are running in an unlocked context.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net/smc: fix qentry overwrite for CONFIRM_LINK and ADD_LINK_CONT in smc_llc_event_handler() The SMC_LLC_CONFIRM_LINK / SMC_LLC_ADD_LINK_CONT branch in smc_llc_event_handler() stores an incoming qentry into the local LLC flow without first checking whether a qentry is already pending. If a malicious or buggy peer sends a second CONFIRM_LINK or ADD_LINK_CONT request while a flow is active and flow->qentry is already set, smc_llc_flow_qentry_set() overwrites the pointer without freeing the previous allocation, leaking one kmalloc-96 object per spurious message. The sibling SMC_LLC_DELETE_LINK branch already has the correct !flow->qentry guard. Apply the same guard to the CONFIRM_LINK/ADD_LINK_CONT branch so that a duplicate message when qentry is already occupied falls through to break and is freed by the kfree(qentry) at the out: label, rather than silently leaking the existing allocation. The response direction (smc_llc_rx_response()) is unaffected: it already guards with flow->qentry at the equivalent site and drops duplicate responses correctly.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: ethernet: ti: am65-cpsw-nuss: Fix port_id extraction from SRC TAG On the packet reception path, the ID of the MAC Port on which the packet was received, is embedded in the RX DMA Descriptor's metadata. The ID is extracted using the helper function cppi5_desc_get_tags_ids() which fills in the 16-bit Source Tag into the 'port_id' variable. However, it is only the lower 8-bits of the 16-bit Source Tag that represent the MAC Port ID, while the upper 8-bits are Hardware-Reserved and carry an arbitrary value. With the existing logic, sporadic kernel crash is observed due to the subsequent driver code accessing out-of-bound memory because of an invalid port_id. Hence, fix the port_id extraction logic to use only the lower 8-bits of the Source Tag as the MAC Port ID.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: macvlan: inherit needed_headroom and needed_tailroom from lowerdev macvlan devices inherit hard_header_len from lowerdev during macvlan_init(), but leave needed_headroom and needed_tailroom set to 0. When the underlying lowerdev requires extra headroom or tailroom for headers/trailers (e.g. macsec, ipsec, wireguard, tunnels, or veth with rx headroom), upper layers calculating packet headroom and tailroom fail to reserve sufficient space. This can result in reallocation overhead, skb headroom underflows, or KASAN slab-use-after-free crashes when dev_hard_header() / macvlan_hard_header() prepends header data or when lower devices append tailroom. Fix this by: 1. Inheriting needed_headroom and needed_tailroom from lowerdev in macvlan_init(). 2. Propagating needed_headroom and needed_tailroom updates to attached macvlans in macvlan_device_event() when receiving NETDEV_FEAT_CHANGE events.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipvlan: inherit needed_headroom and needed_tailroom from phy_dev ipvlan devices inherit hard_header_len from phy_dev during ipvlan_init(), but leave needed_headroom and needed_tailroom set to 0. When the underlying phy_dev (or stacked lower device) requires extra headroom or tailroom for headers/trailers (e.g. macsec, ipsec, wireguard, tunnels, or veth with rx headroom), upper layers calculating packet headroom and tailroom fail to reserve sufficient space. This can result in reallocation overhead, skb headroom underflows, or KASAN slab-use-after-free crashes when dev_hard_header() / ipvlan_hard_header() prepends header data or when lower devices append tailroom. Fix this by: 1. Inheriting needed_headroom and needed_tailroom from phy_dev in ipvlan_init(). 2. Propagating needed_headroom and needed_tailroom updates to attached ipvlans in ipvlan_device_event() when receiving NETDEV_FEAT_CHANGE events.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: validate cookie AUTH state before use When cookie authentication is disabled, COOKIE_ECHO restores fixed-size AUTH fields directly from peer-controlled cookie bytes. A forged RANDOM length, HMAC list, or CHUNKS list can then reach association consumers with lengths or identifiers that were never validated against the local backing arrays. A forged RANDOM length can cause out-of-bounds reads during key-vector construction. A forged HMAC identifier also caused a 32-byte write past a zero-length AUTH chunk, providing a primitive for a local privilege escalation chain. Validate the cookie's RANDOM, HMACS, and CHUNKS parameters at the cookie trust boundary before copying them into the association. Reject invalid types, malformed lengths, unsupported HMAC identifiers, HMAC lists without SHA1, and forbidden chunk ids.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: Fix UVD decode image min size calculation This needs to use pitch instead of width. Also reject pitch over 4096 to avoid overflow. (cherry picked from commit b41c8cb12e202b220353332ab87dc01a11f69304)


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: fbdev: bound mode sysfs output to the sysfs buffer mode_string() uses snprintf() which can return a value larger than the remaining buffer space. show_modes() accumulates the return value into i without checking whether i has reached PAGE_SIZE, causing the offset to advance past the sysfs buffer if the modelist is long enough. Add a size parameter to mode_string() and use scnprintf() to return only the bytes actually written. Add an early return when offset already exceeds the buffer. In show_modes(), stop accumulating once the buffer is full.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: tools/power/x86/intel-speed-select: Harden daemon pidfile open Avoid symlink-based pidfile clobbering by opening the pidfile with O_NOFOLLOW and validating it with fstat() before locking/writing. The daemon currently uses a fixed pidfile path under /tmp. A local unprivileged user can pre-create a symlink at that path and cause a root-run daemon instance to write into an attacker-chosen file.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipvs: do not propagate one-packet flag to synced conns Synced connections can be created before their destination exists. When the destination is later added, ip_vs_bind_dest() copies connection flags from the destination into cp->flags. IP_VS_CONN_F_ONE_PACKET connections are not synced. If a synced connection inherits IP_VS_CONN_F_ONE_PACKET while it is already hashed, expiry can treat it as a one-packet connection and skip unlinking the existing conn_tab node, leaving stale hash nodes pointing at a freed struct ip_vs_conn. Drop IP_VS_CONN_F_ONE_PACKET from destination flags when binding synced connections.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ALSA: pcm: wake linked drain waiters on unlink snd_pcm_drain() on a linked stream parks an on-stack wait entry on the drained peer's runtime->sleep, and after schedule_timeout() removes it only if that peer is still found in the caller's group. If group membership changes during the wait and the sleep ends by signal or timeout (so autoremove_wake_function() does not run), finish_wait() is skipped and snd_pcm_drain() returns with the entry still queued on that stream's sleep list; a later wake_up() then walks a freed stack frame. This is reachable by unlinking either the drained or the draining stream. Unlike the close path (snd_pcm_drop() -> snd_pcm_post_stop()), snd_pcm_unlink() never wakes the sleep queues. Wake every group member under the group lock before the membership change, so a linked drainer is released and drops its entry while the streams are still grouped. The window was opened when snd_pcm_link_rwsem stopped being held across the wait and the removal became conditional on group membership (see Fixes). The later switch to finish_wait() kept that conditional removal, so the signal/timeout case remained.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: gro: properly validate BIG TCP aggregation criteria When GRO attempts to aggregate packets beyond GRO_LEGACY_MAX_SIZE (64KB), BIG TCP should only be permitted for plain IPv4 TCP and plain IPv6 TCP (with sufficient MAC header room to insert the temporary HBH jumbo header). However, commit b1a78b9b9886 ("net: add support for ipv4 big tcp") loosened the check in skb_gro_receive(), leading to several issues: 1. skb_gro_receive() checked skb_headroom(p) instead of the actual space before the MAC header (p->mac_header). Because skb_headroom(p) includes mac_len, crafted frames (e.g. injected via AF_PACKET) can pass the check with p->mac_header < 8 bytes. When ipv6_gro_complete() inserts the temporary HBH jumbo header, the memmove() starts before skb->head, causing an out-of-bounds write and wrapping skb->mac_header. 2. It allowed non-IP protocols such as software VLAN (ETH_P_8021Q / ETH_P_8021AD) to aggregate beyond 64KB because p->protocol != ETH_P_IPV6 was true. 3. It checked p->encapsulation instead of NAPI_GRO_CB(skb)->encap_mark, allowing encapsulated flows (e.g. SIT / IPv6-in-IPv4) to aggregate beyond 64KB. Fix skb_gro_receive() to strictly enforce: - NAPI_GRO_CB(skb)->proto == IPPROTO_TCP - Not encapsulated (!NAPI_GRO_CB(skb)->encap_mark && !p->encapsulation) - Protocol must be either ETH_P_IP or ETH_P_IPV6 - If ETH_P_IPV6, p->mac_header must be at least sizeof(struct hop_jumbo_hdr) Returning -E2BIG from skb_gro_receive() ensures that packets which cannot become BIG TCP are cleanly flushed at <= 64KB and delivered intact without dropping. This issue does not exist in mainline (7.0+) because the subsystem was rewritten in commit 81be30c1f5f2 ("net/ipv6: Drop HBH for BIG TCP on RX side"), making this fix relevant only for older stable branches like 6.18.y.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: serial: amba-pl011: synchronize DMA teardown dmaengine_terminate_all() does not wait for a running callback, so the TX callback can still touch the TX buffer after it is freed. The RX poll timer reads the RX buffers without the port lock. Switch to dmaengine_terminate_sync() and delete the RX timer before freeing the buffers.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: fbdev: serialize mode sysfs access with lock_fb_info() show_mode(), show_modes(), and store_mode() access fb_info->modelist and fb_info->mode without holding lock_fb_info(). store_modes() takes lock_fb_info() while replacing the modelist and freeing the old one. A concurrent reader or writer can load a pointer to an old modelist entry before store_modes() frees it, then dereference freed memory or store a stale freed pointer in fb_info->mode. Take lock_fb_info() in show_mode(), show_modes(), and store_mode() to serialize with store_modes(). In show_mode(), copy the mode to the stack and format after dropping the lock. In store_mode(), split activate() into a _locked variant to avoid double-locking, and hold the locks for the modelist walk, mode conversion, activation, and fb_info->mode assignment together.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: bound SGL data length before allocating command buffers nvmet_tcp_map_data() reads the host-controlled 32-bit sgl->length and, for the in-capsule offset descriptor (type 0x01), checks it against port->inline_data_size before use. Any other SGL descriptor type -- including the non-inline transport SGL data-block descriptor (type (NVME_TRANSPORT_SGL_DATA_DESC << 4) | NVME_SGL_FMT_TRANSPORT_A, the type a real host uses for out-of-capsule writes) skips that check entirely and falls straight through to: cmd->req.sg = sgl_alloc(len, GFP_KERNEL, &cmd->req.sg_cnt); with len taken directly from the wire, unbounded up to 4 GiB. nvmet_req_init() only parses the command and never inspects sgl->length, and nvmet_check_transfer_len() -- the only other place transfer_len is validated -- runs later, from req->execute(), after the allocation has already happened. For a write command the target responds with an R2T and parks the command waiting for the host to send the data; if the host (or an unauthenticated peer that simply never follows up) never does, the sgl_alloc() buffer stays resident for the life of the command. NVMe/TCP has no mandatory authentication in the default configuration, so any peer able to reach the target portal and complete a Fabrics connect can drive this with a single crafted command, repeatable across queues and connections for amplification. This is unbounded kernel memory allocation triggered by a remote, effectively unauthenticated peer. Validate len against the same NVMET_TCP_MAXH2CDATA ceiling this file already uses to bound per-PDU H2C data, for every SGL descriptor type, before doing any allocation. This closes the gap for the non-inline descriptor while leaving the existing, tighter inline_data_size check in place for the in-capsule case. Runtime-verified on a v6.19 KASAN stand: with this bound in place, a crafted write command carrying an oversized non-inline SGL length is rejected before sgl_alloc() runs, where the same request previously drove an unbounded ~256 MiB kernel allocation (up to 4 GiB) that stayed resident pending an R2T the host never satisfies.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers nfc_llcp_parse_gb_tlv() and nfc_llcp_parse_connection_tlv() contain three related bugs in their TLV parsing loops: 1. 'offset' is declared u8 but tlv_array_len is u16. When TLV data advances offset past 255 it silently wraps to zero, causing infinite loops or double-processing of buffer data. 2. Before reading tlv[0] (type) and tlv[1] (length) there is no check that offset+2 <= tlv_array_len. A truncated TLV causes an OOB read of one byte past the buffer end. 3. After reading the length field, the value bytes are accessed without checking offset+2+length <= tlv_array_len. A crafted length=0xFF on a short buffer causes up to 255 bytes of OOB read past the buffer end. Both functions are reachable without authentication via nfc_llcp_set_remote_gb() which feeds remote LLCP general bytes directly into nfc_llcp_parse_gb_tlv() with no additional validation. Fix all three issues by widening offset from u8 to u16 and adding bounds checks for both the TLV header and value field before each access.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ipv6: seg6: clear IPv4 control block on IPIP decapsulation End.DX4 and End.DT4 decapsulate an IPv4 packet through decap_and_validate() and send it directly to IPv4 routing. The inner packet therefore bypasses ip_rcv_core(), which normally clears IPCB before IPv4 interprets skb->cb. The skb instead retains IP6CB data from the outer packet. IP6CB and IPCB use the same skb->cb storage, so IP6CB(skb)->lastopt overlaps IPCB(skb)->opt.optlen and srr, while IP6CB(skb)->nhoff overlaps rr and ts. The sender can make the stale optlen byte nonzero with a valid outer extension-header chain. The reproducers put an eight-byte Destination Options header immediately after the 40-byte IPv6 header and before the Segment Routing Header. ipv6_destopt_rcv() records the sender-controlled Destination Options offset in both lastopt and nhoff, setting them to 40. On the reproduced little-endian x86-64 kernel, IPv4 therefore sees optlen = 40 and rr = 40. Both tcp_v4_save_options() and __ip_options_echo() skip option copying when optlen is zero. Here optlen is 40, so the TCP SYN path allocates room for 40 bytes of option data and calls __ip_options_echo(). The stale rr value makes that function read inner packet byte 41 as the Record Route option length. The reproducers set that sender-controlled byte to 255, so __ip_options_echo() copies 255 bytes into the 40-byte option-data area. Separate End.DX4 and End.DT4 reproducers on the unpatched v7.2-rc5 kernel both produced: BUG: KASAN: slab-out-of-bounds in __ip_options_echo() Write of size 255 The relevant End.DX4 call path is: __ip_options_echo tcp_v4_route_req tcp_conn_request tcp_v4_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish ip_local_deliver input_action_end_dx4_finish input_action_end_dx4 The relevant End.DT4 call path is: __ip_options_echo tcp_v4_route_req tcp_conn_request tcp_v4_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish ip_local_deliver input_action_end_dt4 tcp_v4_save_options() is inlined into the tcp_v4_route_req() path, so it does not appear as a separate frame. When decap_and_validate() handles IPPROTO_IPIP, save the ingress interface from IP6CB, clear IPCB, and restore the saved value. Doing this in the common decapsulation path covers End.DX4, End.DT4, and End.DT46's IPv4 arm. Use IP6CB(skb)->iif rather than skb->skb_iif. These actions run after l3mdev processing, which can replace skb_iif with the L3 master; IP6CB iif still records the receiving interface set at IPv6 ingress.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net/packet: defer vmalloc TX_RING free until skbs finish AF_PACKET TX_RING skbs keep a raw pointer to their ring frame. The skb page references preserve page-backed ring blocks after pg_vec is freed, but they do not preserve a vmalloc mapping. tpacket_destruct_skb() currently drops the pending reference before writing the timestamp and TP_STATUS_AVAILABLE to the frame. Move the decrement after those stores. The smp_wmb() in __packet_set_status() orders the frame stores before the decrement. Also recheck pending TX frames under pg_vec_lock before non-closing ring replacement, so a racing send cannot add a pending skb between the initial check and the ring swap. Ring allocation can produce a mixture of page-backed and vmalloc-backed blocks. Allocate deferred-work storage during TX ring setup when the first vmalloc-backed block is encountered, and keep its pointer in the pg_vec allocation header. If allocation fails, return -ENOMEM from ring setup. On socket close, a non-NULL pointer identifies a vmalloc-backed vector without a scan. If TX skbs remain, defer the whole vector to system_long_wq. After pg_vec is detached, a late destructor can skip the pending decrement. Use socket write-memory accounting as the deferred lifetime gate instead: an skb remains charged through its final sock_wfree(), after all ring-frame accesses. The delayed work retains a socket reference and reschedules itself until no TX skbs remain. Move pending_refcnt release to packet_sock_destruct() so late skb destructors and deferred cleanup can safely use it after packet_release(). Page-backed teardown remains synchronous, and no lock is added to the TX completion hot path.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: xfrm: ah6: validate routing header segments_left AH6 rearranges routing-header addresses before computing or verifying the ICV. ipv6_rearrange_rthdr() assumes that segments_left is not larger than the number of addresses described by the routing header's hdrlen field. That assumption does not hold for raw IPv6 HDRINCL packets. A packet with hdrlen equal to 2 describes one address, but can carry an arbitrary segments_left value. With segments_left equal to 255, the function moves its address pointer 4,064 bytes backwards and passes a 4,064-byte length to memmove(), resulting in an out-of-bounds access. Validate the invariant locally before modifying the routing header or performing any address-pointer arithmetic, and propagate malformed-header errors to the existing AH6 input and output error paths.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: tls: device: fix out-of-bounds write in tls_append_frag() Found with syzkaller and a local syzbot instance running on top of a netdevsim TLS offload emulation; tls_device.c is otherwise only reachable on a machine with a NIC that implements the offload. tls_push_data() only checks whether the open record still has room for another frag at the bottom of its loop, and the MSG_MORE early break skips that check. The record survives to the next syscall with the frag count it already had, and tls_append_frag() does not check either, so with TLS_TX_ZEROCOPY_RO every splice(SPLICE_F_MORE) of a byte or two adds a non-coalescing pipe page and num_frags walks off the end of tls_record_info.frags[MAX_SKB_FRAGS]. Once the record is pushed, tls_push_record() runs the same index over sg_tx_data[MAX_SKB_FRAGS] and the sg_set_page() writes land on the destruct_work that follows it, which the workqueue then calls. The byte limit is fine because copy drops to 0 and the loop falls through to the same check; the frag count has no such feedback. Push the record rather than keep a full one open, which is what a plain TCP socket does - tcp_sendmsg_locked() uses tcp_mark_push() and new_segment in both the copy and the MSG_SPLICE_PAGES paths, and tls_sw already sets full_record when the sk_msg ring fills up, MSG_MORE or not. BUG: KASAN: slab-out-of-bounds in tls_append_frag ( net/tls/tls_device.c:269) Write of size 8 at addr ffff8881104d1530 by task tls_oob/450 CPU: 2 UID: 0 PID: 450 Comm: tls_oob Not tainted 7.2.0-rc7+ #329 PREEMPT Call Trace: <TASK> dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120) print_report (mm/kasan/report.c:378 mm/kasan/report.c:482) kasan_report (mm/kasan/report.c:595) tls_append_frag (net/tls/tls_device.c:269) tls_push_data (net/tls/tls_device.c:518) tls_device_sendmsg (net/tls/tls_device.c:583) inet_sendmsg (net/ipv4/af_inet.c:865) sock_sendmsg (net/socket.c:775 net/socket.c:790 net/socket.c:813) splice_to_socket (fs/splice.c:884) do_splice (fs/splice.c:936 fs/splice.c:1349) __do_splice (fs/splice.c:1431) __x64_sys_splice (fs/splice.c:1634 fs/splice.c:1616) do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121) </TASK> and, once the record is pushed: UBSAN: array-index-out-of-bounds in net/tls/tls_device.c:300:24 index 18 is out of range for type 'skb_frag_t [17]' UBSAN: array-index-out-of-bounds in net/tls/tls_device.c:301:41 index 18 is out of range for type 'scatterlist [17]' UBSAN: array-index-out-of-bounds in net/tls/tls_device.c:302:39 index 18 is out of range for type 'scatterlist [17]' UBSAN: array-index-out-of-bounds in net/tls/tls_device.c:307:38 index 26 is out of range for type 'scatterlist [17]' kernel tried to execute NX-protected page - exploit attempt? (uid: 0) BUG: unable to handle page fault for address: ffffea000411a680 #PF: supervisor instruction fetch in kernel mode #PF: error_code(0x0011) - permissions violation Oops: Oops: 0011 [#1] SMP KASAN PTI Workqueue: ktls_device_destruct 0xffffea000411a680 RIP: 0010:0xffffea000411a680 Call Trace: <TASK> worker_thread (kernel/workqueue.c:3405 kernel/workqueue.c:3486) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:158) ret_from_fork_asm (arch/x86/entry/entry_64.S:245) </TASK>


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: Reject UVD message with invalid number of h265 refs Same change as for h264, avoids overflow later when calculating min dpb size. (cherry picked from commit a4b0720e4f1601f97f59a2be9c1b4b94fa6527d5)


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: seg6: reset IP6CB after IPv6 decapsulation decap_and_validate() pulls the outer SRv6 headers and makes the inner packet the skb network header. The IPv6 control block still contains values collected while parsing the outer packet, including nhoff and extension-header flags. End.DX6 and End.DT6 route the inner IPv6 packet directly to the IPv6 input path. An unprivileged user can reach End.DT6 from a user and net namespace by installing a local SID and injecting an outer packet with Hop-by-Hop and Destination Options headers followed by an SRH and a minimal inner IPv6 packet. The outer extension headers leave a large nhoff in IP6CB. After decapsulation, ip6_protocol_deliver_rcu() uses that stale offset on the inner packet and reads beyond the skb head. KASAN reports: BUG: KASAN: slab-out-of-bounds in ip6_protocol_deliver_rcu ip6_protocol_deliver_rcu+0x1118/0x1450 ip6_input_finish+0x11b/0x240 seg6_local_input_core+0xed/0x2e0 lwtunnel_input+0x1e9/0x4e0 ipv6_rthdr_rcv+0x525f/0x6c50 ip6_protocol_deliver_rcu+0xcb7/0x1450 Before clearing IP6CB for an inner IPv6 packet, save its incoming interface index and L3 slave state. Restore both after the clear and set nhoff to the inner IPv6 base-header nexthdr field. Use IP6CB(skb)->iif rather than skb->skb_iif because VRF processing can replace skb_iif with the L3 master while IP6CB keeps the receiving interface. Preserve IP6SKB_L3SLAVE for the same reason.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: net: tun: bound receive headroom tun_get_user() uses tun->align both as skb headroom and when choosing how much packet data to keep linear. OVS can propagate an oversized headroom request from another port to TUN or TAP. When align is larger than the usable space in a one-page skb head, SKB_MAX_HEAD(align) underflows and the result becomes negative when stored in good_linear. That value later wraps when assigned to the size_t linear variable, and tun_alloc_skb() can place skb->data outside the allocated head. Bound the headroom stored by TUN to the one-page skb-head budget and the largest non-sentinel 16-bit skb header offset. Leave one linear byte for raw TUN and a complete Ethernet header for TAP, including NET_IP_ALIGN. Also pull the raw-TUN protocol byte and the TAP Ethernet header before accessing them, so these checks remain safe for nonlinear skbs supplied by other allocation paths.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: sctp: stop processing a packet once its association is deleted sctp_endpoint_bh_rcv() looks the association up only when chunk->asoc is NULL, and caches the result in chunk->asoc and chunk->transport without taking a reference. A packet that matches no association is handed to the endpoint, so a peer can bundle COOKIE ECHO, SHUTDOWN and SHUTDOWN ACK in one packet. The COOKIE ECHO creates the association, the SHUTDOWN chunk caches it, and with the outqueue empty the SHUTDOWN ACK reaches sctp_sf_do_9_2_final(), so the association and its transports are freed. The endpoint loop has no counterpart to the asoc->base.dead check in sctp_assoc_bh_rcv(). The next chunk writes to last_time_heard in the freed transport and is then passed to sctp_do_sm() with the freed association. The transport is freed through RCU, so this needs the packet to come off the socket backlog, where the loop runs in task context. The endpoint loop cannot do the same check: it holds no reference on the association, so reading asoc->base.dead would itself be a use-after-free. Mark the packet for discard in the command interpreter, just before it deletes the association. That is also before sctp_inq_free() releases the chunk on the association receive path. sctp_sf_do_5_2_4_dupcook() issues SCTP_CMD_DELETE_TCB for the temporary association, while the one the packet belongs to stays alive. A restarting peer can bundle DATA behind its COOKIE ECHO, so compare against chunk->asoc and leave that case alone.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nvme-tcp: do not accept C2HData based on blk_rq_payload_bytes() alone Commit 25e5cb780e62 ("nvme-tcp: fix possible crash in write_zeroes processing") established that blk_rq_payload_bytes() must not be read without first checking blk_rq_nr_phys_segments(), and recorded the result in nvme_tcp_setup_cmd_pdu() as req->data_len. The receive side was left as it was. The two differ for REQ_OP_WRITE_ZEROES, which has no physical segments but a non-zero blk_rq_bytes(), so setup leaves req->iter untouched while the receive gate lets a C2HData through and nvme_tcp_recv_data() copies into whatever the previous command on that tag left there. The driver-private area is zeroed only when the tag set is allocated. Reproduced with a test target that leaves a residual iterator on a tag and then sends a C2HData for a WRITE_ZEROES command on the same tag: BUG: KASAN: wild-memory-access in _copy_to_iter+0x642/0x1330 Write of size 512 at addr ffe728c2175dfa81 by task kworker/0:1H/103 CPU: 0 UID: 0 PID: 103 Comm: kworker/0:1H Not tainted 7.2.0-rc5-NVMETCP-gf5098b6bae76 #1 PREEMPT(lazy) 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: nvme_tcp_wq nvme_tcp_io_work Call Trace: <TASK> dump_stack_lvl+0x53/0x70 kasan_report+0xce/0x100 ? _copy_to_iter+0x642/0x1330 kasan_check_range+0x105/0x1b0 __asan_memcpy+0x3c/0x60 _copy_to_iter+0x642/0x1330 ? __pfx_sock_has_perm+0x10/0x10 ? worker_thread+0x45b/0xd10 ? __pfx__copy_to_iter+0x10/0x10 ? _raw_spin_lock_bh+0x83/0xe0 ? __pfx__raw_spin_lock_bh+0x10/0x10 __skb_datagram_iter+0xf3/0x820 ? __pfx_simple_copy_to_iter+0x10/0x10 ? __asan_memcpy+0x3c/0x60 ? skb_copy_bits+0x58d/0x830 skb_copy_datagram_iter+0x37/0x120 nvme_tcp_recv_skb+0xa07/0x4320 ? __pfx_nvme_tcp_recv_skb+0x10/0x10 __tcp_read_sock+0x1ab/0x810 ? __pfx_nvme_tcp_recv_skb+0x10/0x10 ? __pfx_lock_sock_nested+0x10/0x10 ? __pfx___tcp_read_sock+0x10/0x10 nvme_tcp_try_recv+0x152/0x1e0 ? __pfx_nvme_tcp_try_recv+0x10/0x10 ? __pfx_mutex_unlock+0x10/0x10 nvme_tcp_io_work+0x1e4/0x6c0 ? __schedule+0x181a/0x49f0 ? __pfx_nvme_tcp_io_work+0x10/0x10 process_one_work+0x633/0x1030 Keep the blk_rq_payload_bytes() test and add req->data_len to it. The old test is what rejects a C2HData naming a tag that is no longer in flight, because blk_update_request() zeroes rq->__data_len on completion; req->data_len and req->curr_bio are driver-private and survive completion, so they cannot stand in for it. Setup initialises the iterator only when both req->curr_bio and req->data_len are set, so the gate now tests the same two.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: svcrdma: Fix pcl_for_each_segment for empty chunks When a parsed chunk list contains a chunk whose ch_segcount is zero, pcl_for_each_segment computes its inclusive upper bound as &chunk->ch_segments[ch_segcount - 1]. ch_segcount is u32, so the subtraction wraps to 0xFFFFFFFF and the bound lands far past the ch_segments flex array. The loop body then walks unrelated memory at sizeof(struct svc_rdma_segment) stride until it faults. A zero-segcount chunk is reachable from the wire: xdr_check_write_chunk() only rejects segcount values greater than rc_maxpages, and pcl_alloc_write() links a freshly allocated chunk onto rc_write_pcl/rc_reply_pcl before its segment-fill loop runs, so a Write or Reply chunk advertising zero segments leaves ch_segcount == 0 on the list. When the transport has negotiated Send-With-Invalidate, svc_rdma_get_inv_rkey() iterates all four PCLs with pcl_for_each_segment and dereferences segment->rs_handle on each iteration, turning the underflow into an out-of-bounds read and a general protection fault. xdr_check_write_list / xdr_check_reply_chunk pcl_alloc_write() chunk = pcl_alloc_chunk(...) /* ch_segcount = 0 */ list_add_tail(&chunk->ch_list, &pcl->cl_chunks) /* fill loop iterates zero times for wire segcount 0 */ svc_rdma_get_inv_rkey() pcl_for_each_chunk(rc_write_pcl) pcl_for_each_segment(segment, chunk) pos <= &ch_segments[0u - 1u] /* 0xFFFFFFFF */ segment->rs_handle /* OOB read -> GPF */ Fix by switching the macro to a half-open upper bound that uses ch_segcount directly. For ch_segcount == 0 the loop start equals the loop end and the body is skipped; for ch_segcount > 0 the iteration range is unchanged. All six existing call sites in net/sunrpc/xprtrdma/svc_rdma_recvfrom.c and net/sunrpc/xprtrdma/svc_rdma_rw.c remain correct under the new bound, so no caller changes are needed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: svcrdma: Fix offset arithmetic in read_chunk_range svc_rdma_read_chunk_range() walks a Read chunk's segment list to build a sub-range starting at byte offset and spanning length bytes for a Position-Zero or Call chunk. Two arithmetic defects in the per-segment loop produce wrong DMA lengths and a u32 underflow: pcl_for_each_segment(segment, chunk) { if (offset > segment->rs_length) { offset -= segment->rs_length; continue; } dummy.rs_handle = segment->rs_handle; dummy.rs_length = min_t(u32, length, segment->rs_length) - offset; dummy.rs_offset = segment->rs_offset + offset; First, the skip predicate uses '>' instead of '>='. When offset equals the segment's full rs_length, the segment is fully consumed and should be skipped, but the loop falls through into the body. The resulting dummy.rs_length is min_t(u32, length, rs_length) - rs_length, which underflows to a near-UINT_MAX u32 when length is smaller than rs_length, or is zero otherwise. Second, the length formula subtracts offset from the min_t() result rather than from segment->rs_length before the cap. For offset > 0 the segment's residual is rs_length - offset, not rs_length, so the cap must be applied to the residual. With the current bracketing, whenever length is smaller than rs_length - offset the per-segment length becomes length - offset instead of length, silently dropping offset bytes from the rebuilt chunk. Combined with the boundary case above it also enables the u32 underflow path, which propagates a huge nr_bvec into svc_rdma_build_read_segment() and a multi-MiB kmalloc_array_node() in svc_rdma_get_rw_ctxt(). Additionally, svc_rdma_read_call_chunk() can invoke this function with length == 0 when the last Read chunk ends exactly at the end of the Call chunk. With the corrected >= predicate, every segment is skipped and the function returns the initial -EINVAL, rejecting a valid request. Return success immediately when length is zero. Also break out of the loop once length is fully consumed to avoid passing zero-length segments to svc_rdma_build_read_segment(). Fix by using '>=' so a fully-consumed segment is skipped, by moving '- offset' inside min_t() so the cap is applied to the segment's residual length, by returning success for zero-length requests, and by stopping iteration when the requested range has been consumed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.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.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: SUNRPC: fix gssx_dec_option_array error path bugs Four coupled defects in the gssx XDR option-array decoder make the error paths unsafe: a NULL deref in the caller, a refcount leak on the decoded group_info, and a latent use-after-free that the leak fix would otherwise expose. gssx_dec_option_array() sets oa->count = 1 before allocating oa->data. If that allocation fails, -ENOMEM is returned with oa->count == 1 and oa->data == NULL. All other error paths jump to free_oa: which frees oa->data and NULLs it but also leaves oa->count == 1. The caller trusts the count: gssp_accept_sec_context_upcall() gssx_dec_accept_sec_context() gssx_dec_option_array() /* fails, count=1 data=NULL */ data = res.options.data[0].value /* NULL deref */ Independently, free_creds: releases the partially decoded svc_cred with a bare kfree(creds). gssx_dec_linux_creds() installs a groups_alloc() result into creds->cr_group_info; that object is kvmalloc-backed and refcounted, and only put_group_info() reaches kvfree(). A plain kfree(creds) drops the wrapper and leaks the group_info allocation. The natural fix for the leak is to call free_svc_cred(creds) before kfree(creds), but free_svc_cred() invokes put_group_info() on creds->cr_group_info unconditionally when non-NULL. The existing out_free_groups: path in gssx_dec_linux_creds() already called groups_free() on that pointer without clearing it, so once free_svc_cred() is wired in, the subsequent put_group_info() would touch freed memory. Fix all four together: - Move the oa->count = 1 assignment below the oa->data allocation so it is never set when oa->data is NULL. - Reset oa->count to 0 at free_oa: so count and data stay coherent and the caller sees an empty option array. - Call free_svc_cred(creds) before kfree(creds) at free_creds: so the refcounted cr_group_info is released. free_svc_cred() either NULL-guards each field explicitly (cr_group_info has an if() check) or delegates to a helper that is NULL-safe itself (kfree for the string fields, gss_mech_put() which guards with if(gm) at gss_mech_switch.c:342), so it is safe to call on a partially decoded svc_cred where only cr_uid/cr_gid/cr_group_info have been written and everything else is zero from kzalloc. - In gssx_dec_linux_creds()'s out_free_groups: path, release cr_group_info with put_group_info() rather than groups_free() so the teardown matches free_svc_cred()'s refcount-aware path, and clear the pointer so a later free_svc_cred() on the same creds does not release it a second time.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: SUNRPC: xdr_buf_trim: clamp buf->len to avoid underflow xdr_buf_trim() trims `len` bytes from the tail of an xdr_buf by walking the tail, pages, and head iovecs. Each per-section step uses min_t() so it never removes more bytes than that section holds, but the final accounting at the fix_len label subtracts the total bytes actually consumed from buf->len without any clamp: fix_len: buf->len -= (len - trim); When the caller has set buf->len to a value smaller than the sum of the iov_lens, (len - trim) can exceed buf->len and the unsigned subtraction wraps to near UINT_MAX. gss_krb5_unwrap_v2() reaches xdr_buf_trim() in exactly that state: buf->head[0].iov_len -= GSS_KRB5_TOK_HDR_LEN + headskip; buf->len = len - (GSS_KRB5_TOK_HDR_LEN + headskip); xdr_buf_trim(buf, ec + GSS_KRB5_TOK_HDR_LEN + tailskip); buf->len is a small wire-derived value while the iov_lens are at page scale, so the per-section loops legitimately consume far more bytes than buf->len records. The wrapped buf->len then propagates as the authoritative stream bound into every downstream XDR decoder. Fix by clamping the decrement so buf->len bottoms out at zero: buf->len -= min_t(unsigned int, buf->len, len - trim); On the normal path where the iov_lens sum to buf->len, (len - trim) is always <= buf->len and the result is identical to before. No callers change behavior outside the underflow case.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: RFCOMM: serialize security confirmation handling rfcomm_security_cfm() looks up a session on session_list and then walks its DLC list without holding rfcomm_mutex. Since RFCOMM session teardown uses rfcomm_mutex, krfcommd can close and free the same session and DLCs concurrently: hci_rx_work krfcommd ----------- --------- rfcomm_session_get() rfcomm_lock() rfcomm_session_close() rfcomm_dlc_unlink() rfcomm_session_del() kfree(s) rfcomm_unlock() walk s->dlcs The callback can then read a freed session list head and touch freed DLCs while updating their flags or timers. Serialize the session lookup and DLC traversal in rfcomm_security_cfm() with rfcomm_mutex. This matches the existing RFCOMM session lifetime rules and prevents concurrent rfcomm_session_del() / rfcomm_dlc_unlink() from tearing the objects down while the callback is using them. KASAN reported: BUG: KASAN: slab-use-after-free in rfcomm_security_cfm+0x41c/0x440 Read of size 8 at addr ffff888111fb3960 by task kworker/u17:1/89 Workqueue: hci0 hci_rx_work Call Trace: rfcomm_security_cfm+0x41c/0x440 hci_encrypt_cfm+0x139/0x590 hci_encrypt_change_evt+0x37b/0xc40 hci_event_packet+0x71b/0xb20 hci_rx_work+0x293/0x730 Allocated by task 69: rfcomm_session_add+0x9e/0x2f0 rfcomm_run+0x44b/0x41e0 Freed by task 69: kfree+0x131/0x3c0 rfcomm_session_del+0x188/0x220 rfcomm_run+0x1985/0x41e0


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: entry: Fix seccomp bypass after ptrace with TSYNC Sashiko review pointed out the following issue. If a thread is stopped in syscall_trace_enter() for ptrace, another thread can install a seccomp filter with SECCOMP_FILTER_FLAG_TSYNC (e.g., via seccomp_attach_filter()). This will successfully set SYSCALL_WORK_SECCOMP on the stopped thread, but syscall_trace_enter() evaluates a cached 'work' variable sampled on entry. Consequently, the subsequent check for SYSCALL_WORK_SECCOMP misses the newly assigned flag, and the filter is silently bypassed. This race condition could allow an unprivileged process to execute a prohibited system call (e.g., execve) that the newly installed filter was intended to block, especially since the tracer might have modified the system call number during the ptrace stop. Fix this by re-reading the syscall_work flags after ptrace handling, so that any new SYSCALL_WORK_SECCOMP flag set by another thread via TSYNC during the ptrace stop is observed before the subsequent seccomp check.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: smb: client: reject a tree connect response whose byte count is too small CIFSTCon() bounds its strnlen() over the byte area with the server's ByteCount minus two, which for ByteCount 0 or 1 goes negative as an int and converts to a huge size_t. The later subtraction wraps the __u16 bytes_left, and that is what bounds cifs_strndup_from_utf16(): a bound of up to 65535 against a ~16 KB cifs_req_poolp object runs off the end of the slab object, and the bytes reach userspace through tcon->nativeFileSystem in /proc/fs/cifs/DebugData. Reject a byte area too small for what the parser consumes. Two bytes is the least it can consume, and no conformant response carries fewer. The new trace point is the 129th smb_eio_trace entry, which __mode(byte) cannot represent, so the attribute goes with it.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: smb: client: clear ce->tgthint in free_tgts() When free_tgts() frees all structures in ce->tlist, ce->tgthint is left pointing to one of the freed cache_dfs_tgt structures. If ce->tgthint is not reset before it is used later, it results in a use-after-free. Set ce->tgthint to NULL in free_tgts() after the elements are freed to reflect that no elements remain.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: smb: client: clear setuid/setgid bit on write with cifsacl/modefromsid/posix extensions When a file has the setuid or setgid bit set and is written to, the VFS strips those bits and issues a setattr with ATTR_KILL_SUID/ATTR_KILL_SGID together with an ATTR_MODE carrying the already-cleared mode. Both cifs_setattr_unix() and cifs_setattr_nounix() unconditionally dropped ATTR_MODE in that case: /* skip mode change if it's just for clearing setuid/setgid */ if (attrs->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) attrs->ia_valid &= ~ATTR_MODE; This is fine for the default mount, where the mode is only emulated via the DOS read-only attribute and cannot represent the setuid/setgid bits anyway. However, with the "cifsacl" or "modefromsid" mount options the mode is stored on the server through an ACL (id_mode_to_cifs_acl()), with the SMB3.1.1 POSIX extensions the mode is sent to the server directly, and with the SMB1 Unix extensions (cifs_setattr_unix) the mode is sent via CIFSSMBUnixSetPathInfo(). In all those cases dropping ATTR_MODE means the cleared mode is never pushed to the server, so the setuid/setgid bit survives the write. This is a security issue: on local filesystems the setuid bit is stripped when a file is written, but over these cifs.ko mounts the bit persists on the server, potentially allowing an unexpected privilege escalation on subsequent execution. Fix this in two places: 1. cifs_setattr_nounix(): only take the "skip mode change" shortcut when the mode is emulated via the DOS read-only attribute (i.e. neither cifsacl/modefromsid nor the SMB3.1.1 POSIX extensions are in effect), so that the cleared mode is propagated to the server in the ACL / POSIX cases. 2. cifs_setattr_unix(): this function is only called when Unix extensions are in effect, so the mode is always stored on the server. Remove the shortcut entirely so that the cleared mode is always pushed.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nfsd: fix XDR length calculation in nfsd4_ff_encode_layoutget The XDR buffer size calculation in nfsd4_ff_encode_layoutget() has multiple errors that can result in either an out-of-bounds write or leaking uninitialized kernel memory to the client: - fh_len doesn't account for XDR padding on the file handle data - uid and gid lengths use "8 + len" but xdr_encode_opaque() actually writes "4 + xdr_align_size(len)" bytes - ds_len omits the flags and stats_collect_hint fields (8 bytes), while len's header constant overestimates by 8 bytes -- these partially cancel but leave a net mismatch The worst case occurs with short strings (e.g. uid=0, gid=0 with an odd-sized file handle), where the function writes up to 5 bytes past the reserved XDR buffer. Conversely, when string lengths happen to be 4-byte aligned, the reservation is too large and stale buffer content is sent to the client. Fix this by breaking out every encoded field explicitly in the ds_len calculation, using xdr_align_size() for all variable-length opaque fields, and correcting the header constants.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nfsd: size fh_verify server sockaddr slot by xpt_locallen The nfsd_fh_verify and nfsd_fh_verify_err tracepoints declare the server sockaddr slot sized by xpt_remotelen but fill it from xpt_local using xpt_locallen: TP_STRUCT__entry( ... __sockaddr(server, rqstp->rq_xprt->xpt_remotelen) ... ) TP_fast_assign( ... __assign_sockaddr(server, &rqstp->rq_xprt->xpt_local, rqstp->rq_xprt->xpt_locallen); ... ) When xpt_locallen exceeds xpt_remotelen, __assign_sockaddr's memcpy writes past the reserved ring-buffer slot. In the reverse direction (xpt_locallen < xpt_remotelen) the slot is oversized and the unwritten tail leaks prior ring-buffer contents to trace consumers. The write-past-end case is reachable on NFS/UDP. svc_xprt_set_remote() is only called from svc_tcp_accept() (net/sunrpc/svcsock.c) and from the RDMA connect path; svc_create_socket() for UDP calls only svc_xprt_set_local(), so xpt_remotelen stays 0 for the xprt's lifetime. Every fh_verify trace for an NFSv2/v3-over-UDP request then copies 16 or 28 bytes from xpt_local into a zero-byte slot. The other NFSD tracepoints that record the server address (NFSD_TRACE_PROC_CALL_FIELDS, NFSD_TRACE_PROC_RES_FIELDS, SVC_RQST_ENDPOINT_FIELDS) already size the server slot by xpt_locallen; nfsd_fh_verify and nfsd_fh_verify_err were the only exceptions. Fix by sizing the server slot with xpt_locallen so the declared slot matches the copy length. The client slot and its assignment already agree on xpt_remotelen and are left untouched.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: media: cec: disable delayed work before freeing an interrupted transmit cec_transmit_msg_fh() drops adap->lock to wait for a blocking transmit in wait_for_completion_killable(). If that wait is interrupted by a signal, cancel_delayed_work_sync() can run before the CEC kthread arms the reply timeout via schedule_delayed_work(&data->work) in cec_transmit_done_ts(). The work is then armed after the cancel, and the data is freed with its delayed_work still pending: ODEBUG: free active (active state 0) object: ... hint: cec_wait_timeout Use disable_delayed_work_sync(): it cancels the work and disables it, so the later schedule_delayed_work() becomes a no-op and the work cannot be re-armed. The data is freed right after, so it need not be re-enabled.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: KVM: nVMX: Ensure KVM_REQ_GET_NESTED_STATE_PAGES is cleared on VM-Exit Always check and clear KVM_REQ_GET_NESTED_STATE_PAGES when emulating a nested VM-Exit to ensure the request is cleared, even when KVM was built with CONFIG_KVM_HYPERV=n, as KVM subtly relies on the "check" to clear the flag and thus avoid double-mapping the vmcs12 pages, e.g. if KVM manages to bail from VM-Enter without processing the request, and then emulates VMLAUNCH or VMRESUME.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: reject unsolicited H2CData PDUs nvmet_tcp_handle_h2c_data_pdu() accepts an H2CData PDU after only checking that its TTAG is a valid in-range command index and that the command's data buffers are mapped. It never checks that the target has actually solicited that data by sending an R2T for the command. A remote host can abuse this. It submits a write command that takes the R2T path and, before the target transmits the R2T, sends an H2CData PDU for that command's tag. The data completes the command early, and when the command then fails synchronously (e.g. a length mismatch caught by nvmet_check_transfer_len()), it is completed a second time. Each completion calls nvmet_tcp_queue_response(), so the same command is added to queue->resp_list twice while it is still linked; the second llist_add() makes the node point to itself (lentry->next == lentry). nvmet_tcp_process_resp_list() then walks that self-referential node and adds the command to resp_send_list twice. With CONFIG_DEBUG_LIST this trips the "list_add double add" check (kernel BUG); without it the loop never terminates and the nvmet_tcp workqueue wedges (soft-lockup). It is remotely triggerable and needs no authentication on an allow_any_host subsystem. Track whether an R2T has been transmitted for a command and reject an H2CData PDU that arrives before it. The flag is cleared on command reuse (nvmet_tcp_get_cmd() zeroes cmd->flags) and stays set across the multiple H2CData PDUs of a single solicited transfer.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: futex: Prevent rcuwait use-after-free during requeue PI On PREEMPT_RT, FUTEX_CMP_REQUEUE_PI can trigger a KASAN report (slab-out-of-bounds) in futex_requeue_pi_complete() invocation of rcuwait_wake_up(). The futex_q used by futex_wait_requeue_pi() is allocated on the waiter's stack. An early wakeup can race with a PI requeue as follows: waiter requeue task ------ ------------ futex_wait_requeue_pi() futex_do_wait() schedule() futex_requeue futex_proxy_trylock_atomic() futex_requeue_pi_prepare() Q_REQUEUE_PI_NONE -> Q_REQUEUE_PI_IN_PROGRESS * timeout/ signal wakes waiter * futex_requeue_pi_wakeup_sync() Q_REQUEUE_PI_IN_PROGRESS -> Q_REQUEUE_PI_WAIT requeue_pi_wake_futex futex_requeue_pi_complete() cmpxchg Q_REQUEUE_PI_WAIT -> Q_REQUEUE_PI_LOCKED rcuwait_wait_event() if (atomic_read(&q->requeue_state) != Q_REQUEUE_PI_WAIT) break /* no schedule() */ /* q.pi_state->owner == current */ futex_private_hash_put() /* return from syscall */ rcuwait_wake_up(&q->requeue_wait) /* q is gone */ futex_requeue_pi_complete() publishes Q_REQUEUE_PI_LOCKED before calling rcuwait_wake_up(). The waiter observes this state in rcuwait_wait_event() before invoking schedule() in rcuwait_wait_event(). Here, the waiter is free leave the syscall before requeue task can complete the wake. To address this race skip rcuwait_wake_up() in the Q_REQUEUE_PI_LOCKED case. This state is only published by requeue_pi_wake_futex(), which saves q->task before futex_requeue_pi_complete() and wakes the waiter via wake_up_state(). This wake is intended to wake the waiter from its futex_do_wait() sleep. If the waiter is still sleeping there, it can not get into the Q_REQUEUE_PI_WAIT state (and require this removed wake). Should the waiter be woken up from futex_do_wait() by other means (as in this example) and sleep in futex_requeue_pi_wakeup_sync() then the wake_up_state() from requeue_pi_wake_futex() will wake it, too. Should the waiter task terminate before wake_up_state() had a chance to wake the task then the task pointer does not become invalid because the futex_hash_bucket::lock is held and the task pointer is RCU protected. [bigeasy: Updated comment and commit message]


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.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().


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: NFSv4.1: zero referring call lists before decoding decode_cb_sequence_args() allocates csa_rclists with kmalloc_objs(), so each referring_call_list starts uninitialized. decode_rc_list() assigns rcl_refcalls only when rcl_nrefcalls is nonzero. A valid list with zero referring calls therefore leaves the pointer uninitialized, and nfs4_callback_sequence() later passes stale slab contents to kfree(). Allocate csa_rclists with kzalloc_objs() so every rcl_refcalls member is NULL from the beginning, including valid empty referring call lists.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: ALSA: core: Fix use-after-free in snd_card_do_free() A use-after-free was detected in snd_card_do_free() when a sound card managed by devres is unbound while a user-space application still holds an open file descriptor. For managed cards, the memory is allocated using devres_alloc(), and its release function is set to __snd_card_release(), which calls snd_card_free(). When the device is unbound, the unbind thread calls snd_card_free(), which drops a reference to the card's device. If the user thread still has an open file descriptor, the reference count does not reach zero, and the unbind thread blocks on wait_for_completion(&released). When the user thread closes the file descriptor, it drops the final reference, invoking the device release callback release_card_device(), which calls snd_card_do_free(). snd_card_do_free() performs cleanup and calls complete(card->release_completion). This wakes up the unbind thread, which returns from snd_card_free() and __snd_card_release(). The devres core then immediately frees the memory block containing the snd_card structure. Meanwhile, the user thread continues execution in snd_card_do_free() and evaluates `if (!card->managed)`. It reads the `managed` boolean from the snd_card structure that was just freed by the unbind thread, triggering a KASAN use-after-free. Fix this by caching the value of card->managed in a local variable before calling complete(). This ensures that the card pointer is not dereferenced after the unbind thread has been woken up and potentially freed the card. BUG: KASAN: use-after-free in snd_card_do_free sound/core/init.c:604 [inline] BUG: KASAN: use-after-free in release_card_device+0x1ab/0x1b0 sound/core/init.c:153 Read of size 1 at addr ffff8881912ec909 by task syz-executor130/5857 Call Trace: <TASK> dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120 print_address_description+0x55/0x1e0 mm/kasan/report.c:378 print_report+0x58/0x70 mm/kasan/report.c:482 kasan_report+0x117/0x150 mm/kasan/report.c:595 snd_card_do_free sound/core/init.c:604 [inline] release_card_device+0x1ab/0x1b0 sound/core/init.c:153 device_release+0xc4/0x1f0 drivers/base/core.c:-1 kobject_cleanup lib/kobject.c:689 [inline] kobject_release lib/kobject.c:720 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0x222/0x550 lib/kobject.c:737 snd_card_file_remove+0x331/0x390 sound/core/init.c:1125 snd_pcm_release+0x12c/0x160 sound/core/pcm_native.c:2986 __fput+0x418/0xa50 fs/file_table.c:512 fput_close_sync+0x11f/0x240 fs/file_table.c:617 __do_sys_close fs/open.c:1511 [inline] __se_sys_close fs/open.c:1496 [inline] __x64_sys_close+0x7e/0x110 fs/open.c:1496 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x174/0x580 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f </TASK>


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: btrfs: qgroup: fix a wrong length calculation in qgroup_free_reserved_data() In that function, we round down the start position and round up the ending position. But during the calculation of @len, we use "round_up(start + len, sectorsize)", which is the rounded up end position, not the rounded up length. Which results a much larger length, and later we are still using "start + len", which is completely incorrect. Fix it by declaring a local @aligned_start and @aligned_len and use them instead.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/erdma: Hold QP references for AE and CM processing AE QP fatal events and iWARP CM paths load QPs from dev->qp_xa and then use or reference them outside the xarray lock. erdma_destroy_qp() can drop the destroy-path reference and free QP resources while such a lookup is in flight. Add erdma_qp_get_by_qpn() to acquire a kref under the xarray lock with kref_get_unless_zero(). Remove the QP from the xarray before dropping the destroy-path reference so no new lookup can acquire it while destruction waits for existing users.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/erdma: Hold CQ references when processing EQ events EQ handlers look up CQs from dev->cq_xa and invoke CQ completion or error callbacks outside the xarray lock. erdma_destroy_cq() can erase the CQ from the xarray and free its queue buffer and doorbell record while a previously scheduled EQ handler is still using the CQ. Add a CQ refcount and take a reference under the xarray lock with refcount_inc_not_zero(). Remove the CQ from the xarray before dropping the destroy-path reference, then wait for in-flight EQ users before releasing CQ resources.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: IB/isert: reject login PDUs declaring more data than was received isert_login_recv_done() records how many bytes the HCA actually placed in the login buffer, but nothing compares that against the length the login PDU's BHS declares. isert_rx_login_req() copies min(login_req_len, MAX_KEY_VALUE_PAIRS) bytes into login->req_buf, and the login code then reads the declared length back out of that buffer - for the first PDU in iscsi_target_locate_portal(), payload_length = ntoh24(login_req->dlength); tmpbuf = kmemdup_nul(login->req_buf, payload_length, GFP_KERNEL); and for the ones after it in iscsi_decode_text_input(), reached from iscsi_target_do_login(). login->req_buf is a fixed MAX_KEY_VALUE_PAIRS (8192) byte allocation, so an initiator that declares more than it sends reads off the end of it, before authentication and with the length under its control: BUG: KASAN: slab-out-of-bounds in kmemdup_nul+0x43/0x80 Read of size 8193 at addr ffff8881056a8000 by task iscsi_np/167 __asan_memcpy+0x23/0x60 kmemdup_nul+0x43/0x80 iscsi_target_locate_portal+0x48d/0x1180 iscsi_target_login_thread+0x19a9/0x3350 Allocated by task 167: __kmalloc_cache_noprof+0x158/0x370 iscsi_target_login_thread+0x971/0x3350 which belongs to the cache kmalloc-8k of size 8192 allocated 8192-byte region Falsifying the second login PDU instead reaches the other reader, on the same buffer: BUG: KASAN: slab-out-of-bounds in kmemdup_nul+0x43/0x80 Read of size 8193 at addr ffff888104d10000 by task kworker/1:1/50 Workqueue: isert_login_wq iscsi_target_do_login_rx __asan_memcpy+0x23/0x60 kmemdup_nul+0x43/0x80 iscsi_decode_text_input+0xc6/0x11c0 iscsi_target_do_login+0x261/0x1470 iscsi_target_do_login_rx+0x51d/0x7d0 iscsit over TCP is not exposed: iscsit_get_login_rx() validates the declared length with iscsi_target_check_login_request() and then reads exactly that many bytes off the socket, so the declared length governs how much arrives rather than how much is copied out of an already-filled buffer. isert does not call iscsi_target_check_login_request() at all. Reject a login PDU whose declared DataSegmentLength exceeds what was received, in both paths that reach isert_rx_login_req(): isert_get_login_rx() for the first login PDU and isert_login_recv_done() for the ones after it. dlength <= login_req_len is allowed because the received count can include up to three bytes of iSCSI padding. Once the check is in place the copy out can no longer exceed the copy in: the posted login SGE is ISER_RX_PAYLOAD_SIZE, so login_req_len cannot exceed MAX_KEY_VALUE_PAIRS and the min() in isert_rx_login_req() is login_req_len. Like the existing short-PDU check added by 29e7b925ae6d, the reject in isert_login_recv_done() returns without completing login_req_comp, so a malformed subsequent PDU leaves the login to be torn down by the login timer rather than failing immediately. The first-PDU path returns an error and fails straight away. Reproduced on 7.2.0-rc4 with soft-RoCE (rdma_rxe) under KASAN, using an initiator that sends the real key=value payload while declaring 8193 in the BHS, on the first login PDU and on the second in separate runs. The reported read size tracks the declared value exactly; 16384 and 61440 behave the same. Unpatched 3 of 3 runs report on each of the two paths, patched 0 of 3 on both, run alternately in a single session, and a normal login still completes on the patched build.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: IB/isert: reject PDUs declaring more data than was received isert_recv_done() hands each received PDU to the opcode handlers without ever looking at wc->byte_len, the number of bytes the HCA actually placed in the receive descriptor. The handlers then copy that many bytes - the data-segment length the initiator declared in the BHS (ntoh24(hdr->dlength), via the derived unsol_data_len / imm_data_len) - out of the fixed-size descriptor: isert_handle_iscsi_dataout(): sg_copy_from_buffer(sg_start, sg_nents, isert_get_data(rx_desc), unsol_data_len); isert_handle_scsi_cmd(): sg_copy_from_buffer(cmd->se_cmd.t_data_sg, sg_nents, isert_get_data(rx_desc), imm_data_len); Because the declared length is never checked against wc->byte_len, an initiator can declare a data segment larger than the bytes it actually sent (and larger than the descriptor) and cause an out-of-bounds read of the receive buffer. Nothing upstream of isert closes this door: - __iscsit_check_dataout_hdr() bounds the inbound payload against conn_ops->MaxXmitDataSegmentLength (MXDSL) - a transmit parameter, used here for the inbound check. - iscsi_set_connection_parameters() sets ops->MaxXmitDataSegmentLength = ops->TargetRecvDataSegmentLength; and TARGETRECVDATASEGMENTLENGTH is absent from the min()-clamp list in iscsi_check_acceptor_state(), so the value the initiator declares is adopted verbatim (type range 512..16777215). The initiator effectively raises its own ceiling. - isert never clamps the negotiated value to its own fixed receive descriptor (ISER_RX_SIZE, 9216 bytes), so the target core's bound and the descriptor size are unrelated. The imm_data_len == data_len path is more than an over-read: it aliases the receive descriptor via sg_set_buf() and passes it to the backend as the data source for the SCSI WRITE, so an over-declared length causes heap contents past the descriptor to be written through the backend to the backing store. The backend is the victim of the oversized scatterlist isert hands it, not the cause; no read-back of the written bytes was demonstrated. Trigger: after login completes (full feature phase), an initiator that has declared a large TargetRecvDataSegmentLength and a FirstBurstLength that permits unsolicited/immediate data sends a PDU whose declared data-segment length exceeds what was received. With KASAN: BUG: KASAN: slab-out-of-bounds in sg_copy_buffer+0x150/0x1c0 Read of size 4096 at addr ffff888109720800 by task kworker/1:0H/25 Workqueue: ib-comp-wq ib_cq_poll_work Call Trace: sg_copy_buffer+0x150/0x1c0 isert_recv_done+0xba6/0x2390 __ib_process_cq+0xe1/0x390 ib_cq_poll_work+0x46/0x150 isert_recv_done+0xba6 resolves to isert_handle_iscsi_dataout() (ib_isert.c:1160), inlined through isert_rx_opcode(). Validate wc->byte_len against the framing in isert_recv_done() before the PDU reaches any handler, and reinstate the connection if it is short. Because the test compares without subtracting the header length, it also rejects PDUs shorter than the iSER and iSCSI headers, which would otherwise be parsed out of stale descriptor contents. The login handler rejects PDUs shorter than ISER_HEADERS_LEN (commit 29e7b925ae6d ("IB/isert: Reject login PDUs shorter than ISER_HEADERS_LEN")) but does not bound the declared length either; that is fixed in the next patch. The data handlers had no length check at all. isert reads the data segment from a fixed offset: isert_get_data() returns the iSER header plus ISER_HEADERS_LEN and makes no adjustment for an AHS. The bytes the handlers touch are therefore exactly [ISER_HEADERS_LEN, ISER_HEADERS_LEN + dlength), and comparing that sum against wc->byte_len bounds precisely the region that is read. An AHS term would only make the test stricter without bounding anything furth ---truncated---


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: RDMA/rvt: Return NULL after port allocation failure rvt_alloc_device() deallocates the IB device when its port array cannot be allocated but then returns the pointer to the released allocation. Callers treat any non-NULL value as valid and dereference it, resulting in a use-after-free. Return NULL immediately after deallocation so callers can propagate the allocation failure.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

Ссылки

Описание

In the Linux kernel, the following vulnerability has been resolved: vhost-scsi: flush backend after device ioctls vhost-scsi translates guest response descriptors into userspace iovecs when commands are submitted. Target-core completes those commands asynchronously, so VHOST_SET_MEM_TABLE can replace the memory table while an in-flight command still retains response iovecs translated through the old table. If the old mapping is reused after VHOST_SET_MEM_TABLE returns, command completion can write the response to an unrelated userspace object. Flush the vhost-scsi backend after vhost_dev_ioctl() handles a device ioctl. This waits for in-flight commands that can still use the old response iovecs before the ioctl returns.


Затронутые продукты
Image SLES15-SP6-BYOS-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-BYOS:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-GCE:kernel-default-6.4.0-150600.23.138.1
Image SLES15-SP6-SAP-BYOS-GCE:cluster-md-kmp-default-6.4.0-150600.23.138.1

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