kernel-5.14.0-427.31.1.el9_4
エラータID: AXSA:2024-8705:26
以下項目について対処しました。
[Security Fix]
- net/netlink/af_netlink.c の netlink_sendmsg() 関数には、
ソケットバッファのデータ長のチェック処理の欠落に起因した
ゼロ除算の問題があるため、ローカルの攻撃者により、サービス
拒否攻撃を可能とする脆弱性が存在します。(CVE-2021-47606)
- drivers/net/wireless/ath/ath10k/wmi-tlv.c の
ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev() 関数には、特定の
データのチェック処理の欠落に起因した NULL ポインタデリファレンス
の問題があるため、ローカルの攻撃者により、サービス拒否攻撃を可能
とする脆弱性が存在します。(CVE-2023-52651)
- drivers/platform/x86/wmi.c の wmi_char_open() 関数には、適切な
ドライバを見つけられなかった場合におけるメモリ破壊の問題があるため、
ローカルの攻撃者により、サービス拒否攻撃を可能とする脆弱性が
存在します。(CVE-2023-52864)
- 一部のインテル社製第 4 世代および第 5 世代の Xeon プロセッサー
には、インテル DSA および インテル IAA 機能のハードウェアの実装
に問題があるため、ローカルの攻撃者により、サービス拒否攻撃を可能
とする脆弱性が存在します。(CVE-2024-21823)
- テキサスインスツルメンツ社製 OMAP SoC の USB ドライバの
drivers/phy/ti/phy-omap-usb2.c には、PHY 側に send_srp() 関数を
実装していない場合における NULL ポインタデリファレンスの問題が
あるため、ローカルの攻撃者により、サービス拒否攻撃を可能とする
脆弱性が存在します。(CVE-2024-26600)
- net/netfilter/nft_chain_filter.c の nf_tables_netdev_event()
関数には、NETDEV_UNREGISTER イベントを処理する際、inet/ingress
チェーンからの netdevice の削除処理が欠落しているため、ローカル
の攻撃者により、サービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-26808)
- CIFS の fs/smb/client/smb2ops.c の parse_server_interfaces()
関数には、符号有無が異なる型の取り違えに起因したアンダーフローの
問題があるため、近隣ネットワーク上の攻撃者により、データ破壊、
およびサービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-26828)
- drivers/net/ethernet/intel/igc/igc_main.c の igc_xdp_xmit()
関数には、XDP_REDIRECT でフレームの送信に失敗した場合、誤って
xdp_return_frame_rx_napi() 関数を呼び出していることに起因した
メモリ破壊の問題があるため、ローカルの攻撃者により、サービス
拒否攻撃を可能とする脆弱性が存在します。(CVE-2024-26853)
- NFS の fs/nfs/flexfilelayout/flexfilelayout.c の
ff_layout_cancel_io() 関数には、内部で呼び出している
nfs4_ff_layout_prepare_ds() 関数が失敗した際の処理に
問題があるため、ローカルの攻撃者により、サービス拒否攻撃を
可能とする脆弱性が存在します。(CVE-2024-26868)
- Atheros 製 ath9k 無線デバイスドライバーには、初期化が完了する
前に ath9k_wmi_event_tasklet() 関数の処理を開始してしまう問題が
あるため、ローカルの攻撃者により、サービス拒否攻撃を可能とする
脆弱性が存在します。(CVE-2024-26897)
- drivers/net/wireless/mediatek/mt76/mt7925/pci.c の
mt7925_pci_remove() 関数には、ドライバーの削除を示すビット処理が
欠落しているため、ローカルの攻撃者により、共有 IRQ ハンドラー関数の
登録解除後に意図しないイベントを発生させることを介して、サービス
拒否攻撃を可能とする脆弱性が存在します。(CVE-2024-27049)
- drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c の
rtl8xxxu_stop() 関数 には、ワークキューを停止せずにドライバーを
停止させてしまう問題があるため、ローカルの攻撃者により、サービス
拒否攻撃を可能とする脆弱性が存在します。(CVE-2024-27052)
- net/netfilter/nf_tables_api.c の nf_tables_updtable() 関数には、
テーブルのフラグ値の判定条件の不備に起因して、本来処理をスキップ
するトランザクションを誤って処理してしまう問題があるため、ローカル
の攻撃者により、サービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-27065)
- net/ipv6/addrconf.c の inet6_rtm_getaddr() 関数には、意図せず
net 構造体の参照カウンタをカウントし、-EINVAL エラー値を返して
しまう問題があるため、ローカルの攻撃者により、IFA_TARGET_NETNSID
値のみを与え、IFA_ADDRESS および IFA_LOCAL 属性を与えない形での
当該関数の利用を介して、サービス拒否攻撃を可能とする脆弱性が存在
します。(CVE-2024-27417)
- drivers/net/wireless/intel/iwlwifi/mvm/mld-key.c の
iwl_mvm_get_sec_flags() 関数には、MFP フラグの利用方法に問題が
あるため、ローカルの攻撃者により、iwlwifi デバイスドライバーが
適用される無線 LAN デバイスの利用を介して、サービス拒否攻撃
(ファームウェアのクラッシュの発生) を可能とする脆弱性が存在します。
(CVE-2024-27434)
- drivers/net/ipvlan/ipvlan_core.c の
ipvlan_process_v4_outbound() 関数 および
ipvlan_process_v6_outbound() 関数には、ソケットバッファを誤って
操作していることに起因して意図しない警告メッセージが出力されて
しまう問題があるため、ローカルの攻撃者により、サービス拒否攻撃を
可能とする脆弱性が存在します。(CVE-2024-33621)
- net/mac80211/cfg.c の ieee80211_change_station() 関数には、
メモリ領域の解放後利用の問題があるため、ローカルの攻撃者により、
VLAN として利用していたステーションからの移動と、それによる
使用済み VLAN の削除を介して、サービス拒否攻撃を可能とする
脆弱性が存在します。(CVE-2024-35789)
- drivers/firmware/efi/efi.c の generic_ops_supported() 関数には、
get_next_variable() 関数を呼び出す前の関数ポインターのチェック
処理が欠落しているため、ローカルの攻撃者により、サービス拒否攻撃
(kexec カーネル起動時のパニックの発生) を可能とする脆弱性が存在
します。(CVE-2024-35800)
- VT ドライバーの drivers/tty/vt/vt.c の vc_uniscr_delete()
関数には、転送元と転送先の一部が重複した Unicode 文字列の
バッファー間のデータ転送に memcpy() 関数を利用している問題が
あるため、ローカルの攻撃者により、文字列の削除処理を介して、
サービス拒否攻撃を可能とする脆弱性が存在します。(CVE-2024-35823)
- wifi: iwlwifi: dbg-tlv には、文字列のNULL終端を確認していない
問題があるため、ローカルの攻撃者により、悪意ある設定を介して、
サービス妨害を可能とする脆弱性が存在します。(CVE-2024-35845)
- drivers/misc/eeprom/at24.c の at24_probe() 関数には、nvmem
デバイスの登録処理の実行タイミングに問題があるため、ローカルの
攻撃者により、サービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-35848)
- drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c の
mlxsw_sp_acl_tcam_vregion_destroy() 関数には、ACL 領域の
削除処理の保留時にキャンセル処理が実行された場合、特定のデータが
メモリリークしてしまう問題があるため、ローカルの攻撃者により、
サービス拒否攻撃を可能とする脆弱性が存在します。(CVE-2024-35852)
- net/netfilter/nf_tables_api.c の nf_tables_module_exit() 関数
には、nf_tables_trans_destroy_flush_work() 関数の呼び出しの欠落
に起因するレースコンディションの問題があるため、ローカルの攻撃者
により、サービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-35899)
- drivers/net/ethernet/intel/ice/ice_lib.c の ice_vsi_rebuild()
関数には、サスペンド後のリビルド処理の際のメモリ領域の確保処理の
実行タイミングの不備に起因したメモリ破壊の問題があるため、ローカル
の攻撃者により、サービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-35911)
- net/wireless/util.c には、A-MSDU フレーム内のサブフレームの
チェック処理の不備に起因したメモリ領域の範囲外読み取りの問題が
あるため、Wi-Fi 通信が可能な範囲内の攻撃者により、実態が存在
しないサブフレームが存在しているように細工された A-MSDU フレーム
を介して、情報の漏洩、およびサービス拒否攻撃を可能とする脆弱性が
存在します。(CVE-2024-35937)
- net/ipv6/addrconf.c の ipv6_get_ifaddr() 関数と
ipv6_del_addr() 関数には、レースコンディションに起因して内部の
リストから削除されたデータを誤って返却してしまう問題があるため、
ローカルの攻撃者により、サービス拒否攻撃を可能とする脆弱性が
存在します。(CVE-2024-35969)
- net/netfilter/nft_chain_filter.c の nft_netdev_event() 関数
には、テーブル休止フラグのチェック処理が欠落していることに起因した
フック処理の二重登録解除の問題があるため、ローカル攻撃者により、
サービス拒否攻撃を可能とする脆弱性が存在します。(CVE-2024-36005)
- net/core/rtnetlink.c の do_setvfinfo() 関数には、データサイズ
のチェック処理の条件の不備に起因したメモリ領域の範囲外読み取りの
問題があるため、ローカルの攻撃者により、サービス拒否攻撃を可能と
する脆弱性が存在します。(CVE-2024-36017)
- drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c には、無効
な VF ポインターを処理してしまう問題があるため、ローカルの攻撃者
により、サービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-36020)
- net/tls/tls_main.c の tls_ctx_create() 関数には、メモリの書き
込みバリアがされず NULL ポインタデリファレンスを起こす問題がある
ため、ローカルの攻撃者により、サービス拒否攻撃を可能とする脆弱性
が存在します。(CVE-2024-36489)
- net/ipv6/ip6_output.c の __ip6_make_skb() 関数には、潜在的に
初期化されていない値へアクセスしてしまう問題があるため、ローカル
の攻撃者により、特定のフラグを立てた設定を介して、サービス妨害を
可能とする脆弱性が存在します。(CVE-2024-36903)
- drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c の
iwl_mvm_mld_rm_sta_id() 関数には、エラー処理における配列の範囲外
アクセスの問題があるため、ローカルの攻撃者により、利用者による
ドライバーの削除を介して、特権の昇格、およびサービス拒否攻撃
(クラッシュの発生) を可能とする脆弱性が存在します。
(CVE-2024-36921)
- drivers/net/wireless/intel/iwlwifi/queue/tx.c の
iwl_txq_reclaim() 関数には、ロックを獲得せずに変数を読み取る
問題があるため、ローカルの攻撃者により、サービス拒否攻撃を
可能とする脆弱性が存在します。(CVE-2024-36922)
- net/core/skbuff.c には、SKB_GSO_FRAGLIST オプションが
指定されたソケットバッファを誤ってリニアライズしている問題が
あるため、リモートの攻撃者により、サービス拒否攻撃 (クラッシュ
の発生) を可能とする脆弱性が存在します。(CVE-2024-36929)
- net/wireless/nl80211.c の nl80211_set_coalesce() 関数には、
NULL ポインタデリファレンスの問題があるため、近隣ネットワーク上
の攻撃者により、サービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-36941)
- ネットワークスタックの __dst_negative_advice() 関数には、
特定のデータを初期化する際に RCU ルールを遵守していないことに
起因したメモリ領域の解放後利用の問題があるため、ローカルの攻撃者
により、特定のネットワークコネクションの動作に対する不正な変更を
可能とする脆弱性が存在します。(CVE-2024-36971)
- drivers/virtio/virtio_pci_common.c の vp_find_vqs_msix() 関数
には、request_irq() 関数が失敗した際の内部データの削除処理が欠落
していることに起因したメモリ領域の二重解放の問題があるため、
ローカルの攻撃者により、サービス拒否攻撃を可能とする脆弱性が
存在します。(CVE-2024-37353)
- TCP の net/ipv4/tcp_dctcp.c には、変数の型の上限を超えるような
指数を設定できてしまう問題があるため、ローカルの攻撃者により、
巧妙に細工された設定を介して、サービス妨害を可能とする脆弱性が
存在します。(CVE-2024-37356)
- drivers/cxl/core/region.c の cxl_pmem_region_alloc() 関数には、
メモリの解放忘れの問題があるため、ローカルの攻撃者により、
サービス妨害を可能とする脆弱性が存在します。(CVE-2024-38391)
- net/openvswitch/flow.c の parse_icmpv6() 関数には、ICMPv6 の
ND 以外のパケットの ND フィールドを誤って初期化してしまう問題が
あるため、ローカルの攻撃者により、サービス拒否攻撃を可能とする
脆弱性が存在します。(CVE-2024-38558)
- drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c には、
利用可能なメモリ量が不足している場合における NULL ポインタ
デリファレンス、およびスタックオーバーフローの問題があるため、
ローカルの攻撃者により、サービス拒否攻撃を可能とする脆弱性が
存在します。(CVE-2024-38575)
- drivers/net/bonding/bond_options.c の
bond_option_arp_ip_targets_set() 関数には、メモリ領域の範囲外
読み取りの問題があるため、ローカルの攻撃者により、サービス拒否攻撃
を可能とする脆弱性が存在します。(CVE-2024-39487)
- net/ethtool/ioctl.c の ethtool_get_phy_stats_ethtool() 関数
には、ポインタ値のチェック処理の欠落に起因した NULL ポインタ
デリファレンスの問題があるため、ローカルの攻撃者により、サービス
拒否攻撃を可能とする脆弱性が存在します。(CVE-2024-40928)
- net/core/sock.c の sk_common_release() 関数には、ソケットの
作成に失敗した際におけるスラブ領域の解放後利用の問題があるため、
ローカルの攻撃者により、サービス拒否攻撃を可能とする脆弱性が
存在します。(CVE-2024-40954)
- net/core/net_namespace.c の get_net_ns() 関数には、
参照カウンタがゼロの場合におけるデータの返却処理の不備に
起因したメモリ領域の解放後利用の問題があるため、ローカルの
攻撃者により、サービス拒否攻撃を可能とする脆弱性が存在します。
(CVE-2024-40958)
- net/ipv6/route.c b/net/ipv6/route.c の fib6_nh_init() 関数
には、NULL ポインタデリファレンスを起こす問題があるため、
ローカルの攻撃者により、サービス拒否攻撃 を可能とする脆弱性が
存在します。(CVE-2024-40961)
パッケージをアップデートしてください。
In the Linux kernel, the following vulnerability has been resolved: net: netlink: af_netlink: Prevent empty skb by adding a check on len. Adding a check on len parameter to avoid empty skb. This prevents a division error in netem_enqueue function which is caused when skb->len=0 and skb->data_len=0 in the randomized corruption step as shown below. skb->data[prandom_u32() % skb_headlen(skb)] ^= 1<<(prandom_u32() % 8); Crash Report: [ 343.170349] netdevsim netdevsim0 netdevsim3: set [1, 0] type 2 family 0 port 6081 - 0 [ 343.216110] netem: version 1.3 [ 343.235841] divide error: 0000 [#1] PREEMPT SMP KASAN NOPTI [ 343.236680] CPU: 3 PID: 4288 Comm: reproducer Not tainted 5.16.0-rc1+ [ 343.237569] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-2.el7 04/01/2014 [ 343.238707] RIP: 0010:netem_enqueue+0x1590/0x33c0 [sch_netem] [ 343.239499] Code: 89 85 58 ff ff ff e8 5f 5d e9 d3 48 8b b5 48 ff ff ff 8b 8d 50 ff ff ff 8b 85 58 ff ff ff 48 8b bd 70 ff ff ff 31 d2 2b 4f 74
** REJECT ** This CVE ID has been rejected or withdrawn by its CVE Numbering Authority.
In the Linux kernel, the following vulnerability has been resolved: platform/x86: wmi: Fix opening of char device Since commit fa1f68db6ca7 ("drivers: misc: pass miscdevice pointer via file private data"), the miscdevice stores a pointer to itself inside filp->private_data, which means that private_data will not be NULL when wmi_char_open() is called. This might cause memory corruption should wmi_char_open() be unable to find its driver, something which can happen when the associated WMI device is deleted in wmi_free_devices(). Fix the problem by using the miscdevice pointer to retrieve the WMI device data associated with a char device using container_of(). This also avoids wmi_char_open() picking a wrong WMI device bound to a driver with the same name as the original driver.
Hardware logic with insecure de-synchronization in Intel(R) DSA and Intel(R) IAA for some Intel(R) 4th or 5th generation Xeon(R) processors may allow an authorized user to potentially enable escalation of privilege local access
In the Linux kernel, the following vulnerability has been resolved: phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP If the external phy working together with phy-omap-usb2 does not implement send_srp(), we may still attempt to call it. This can happen on an idle Ethernet gadget triggering a wakeup for example: configfs-gadget.g1 gadget.0: ECM Suspend configfs-gadget.g1 gadget.0: Port suspended. Triggering wakeup ... Unable to handle kernel NULL pointer dereference at virtual address 00000000 when execute ... PC is at 0x0 LR is at musb_gadget_wakeup+0x1d4/0x254 [musb_hdrc] ... musb_gadget_wakeup [musb_hdrc] from usb_gadget_wakeup+0x1c/0x3c [udc_core] usb_gadget_wakeup [udc_core] from eth_start_xmit+0x3b0/0x3d4 [u_ether] eth_start_xmit [u_ether] from dev_hard_start_xmit+0x94/0x24c dev_hard_start_xmit from sch_direct_xmit+0x104/0x2e4 sch_direct_xmit from __dev_queue_xmit+0x334/0xd88 __dev_queue_xmit from arp_solicit+0xf0/0x268 arp_solicit from neigh_probe+0x54/0x7c neigh_probe from __neigh_event_send+0x22c/0x47c __neigh_event_send from neigh_resolve_output+0x14c/0x1c0 neigh_resolve_output from ip_finish_output2+0x1c8/0x628 ip_finish_output2 from ip_send_skb+0x40/0xd8 ip_send_skb from udp_send_skb+0x124/0x340 udp_send_skb from udp_sendmsg+0x780/0x984 udp_sendmsg from __sys_sendto+0xd8/0x158 __sys_sendto from ret_fast_syscall+0x0/0x58 Let's fix the issue by checking for send_srp() and set_vbus() before calling them. For USB peripheral only cases these both could be NULL.
In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_chain_filter: handle NETDEV_UNREGISTER for inet/ingress basechain Remove netdevice from inet/ingress basechain in case NETDEV_UNREGISTER event is reported, otherwise a stale reference to netdevice remains in the hook list.
In the Linux kernel, the following vulnerability has been resolved: cifs: fix underflow in parse_server_interfaces() In this loop, we step through the buffer and after each item we check if the size_left is greater than the minimum size we need. However, the problem is that "bytes_left" is type ssize_t while sizeof() is type size_t. That means that because of type promotion, the comparison is done as an unsigned and if we have negative bytes left the loop continues instead of ending.
In the Linux kernel, the following vulnerability has been resolved: igc: avoid returning frame twice in XDP_REDIRECT When a frame can not be transmitted in XDP_REDIRECT (e.g. due to a full queue), it is necessary to free it by calling xdp_return_frame_rx_napi. However, this is the responsibility of the caller of the ndo_xdp_xmit (see for example bq_xmit_all in kernel/bpf/devmap.c) and thus calling it inside igc_xdp_xmit (which is the ndo_xdp_xmit of the igc driver) as well will lead to memory corruption. In fact, bq_xmit_all expects that it can return all frames after the last successfully transmitted one. Therefore, break for the first not transmitted frame, but do not call xdp_return_frame_rx_napi in igc_xdp_xmit. This is equally implemented in other Intel drivers such as the igb. There are two alternatives to this that were rejected: 1. Return num_frames as all the frames would have been transmitted and release them inside igc_xdp_xmit. While it might work technically, it is not what the return value is meant to represent (i.e. the number of SUCCESSFULLY transmitted packets). 2. Rework kernel/bpf/devmap.c and all drivers to support non-consecutively dropped packets. Besides being complex, it likely has a negative performance impact without a significant gain since it is anyway unlikely that the next frame can be transmitted if the previous one was dropped. The memory corruption can be reproduced with the following script which leads to a kernel panic after a few seconds. It basically generates more traffic than a i225 NIC can transmit and pushes it via XDP_REDIRECT from a virtual interface to the physical interface where frames get dropped. #!/bin/bash INTERFACE=enp4s0 INTERFACE_IDX=`cat /sys/class/net/$INTERFACE/ifindex` sudo ip link add dev veth1 type veth peer name veth2 sudo ip link set up $INTERFACE sudo ip link set up veth1 sudo ip link set up veth2 cat << EOF > redirect.bpf.c SEC("prog") int redirect(struct xdp_md *ctx) { return bpf_redirect($INTERFACE_IDX, 0); } char _license[] SEC("license") = "GPL"; EOF clang -O2 -g -Wall -target bpf -c redirect.bpf.c -o redirect.bpf.o sudo ip link set veth2 xdp obj redirect.bpf.o cat << EOF > pass.bpf.c SEC("prog") int pass(struct xdp_md *ctx) { return XDP_PASS; } char _license[] SEC("license") = "GPL"; EOF clang -O2 -g -Wall -target bpf -c pass.bpf.c -o pass.bpf.o sudo ip link set $INTERFACE xdp obj pass.bpf.o cat << EOF > trafgen.cfg { /* Ethernet Header */ 0xe8, 0x6a, 0x64, 0x41, 0xbf, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, const16(ETH_P_IP), /* IPv4 Header */ 0b01000101, 0, # IPv4 version, IHL, TOS const16(1028), # IPv4 total length (UDP length + 20 bytes (IP header)) const16(2), # IPv4 ident 0b01000000, 0, # IPv4 flags, fragmentation off 64, # IPv4 TTL 17, # Protocol UDP csumip(14, 33), # IPv4 checksum /* UDP Header */ 10, 0, 1, 1, # IP Src - adapt as needed 10, 0, 1, 2, # IP Dest - adapt as needed const16(6666), # UDP Src Port const16(6666), # UDP Dest Port const16(1008), # UDP length (UDP header 8 bytes + payload length) csumudp(14, 34), # UDP checksum /* Payload */ fill('W', 1000), } EOF sudo trafgen -i trafgen.cfg -b3000MB -o veth1 --cpp
In the Linux kernel, the following vulnerability has been resolved: nfs: fix panic when nfs4_ff_layout_prepare_ds() fails We've been seeing the following panic in production BUG: kernel NULL pointer dereference, address: 0000000000000065 PGD 2f485f067 P4D 2f485f067 PUD 2cc5d8067 PMD 0 RIP: 0010:ff_layout_cancel_io+0x3a/0x90 [nfs_layout_flexfiles] Call Trace:
In the Linux kernel, the following vulnerability has been resolved: wifi: ath9k: delay all of ath9k_wmi_event_tasklet() until init is complete The ath9k_wmi_event_tasklet() used in ath9k_htc assumes that all the data structures have been fully initialised by the time it runs. However, because of the order in which things are initialised, this is not guaranteed to be the case, because the device is exposed to the USB subsystem before the ath9k driver initialisation is completed. We already committed a partial fix for this in commit: 8b3046abc99e ("ath9k_htc: fix NULL pointer dereference at ath9k_htc_tx_get_packet()") However, that commit only aborted the WMI_TXSTATUS_EVENTID command in the event tasklet, pairing it with an "initialisation complete" bit in the TX struct. It seems syzbot managed to trigger the race for one of the other commands as well, so let's just move the existing synchronisation bit to cover the whole tasklet (setting it at the end of ath9k_htc_probe_device() instead of inside ath9k_tx_init()).
In the Linux kernel, the following vulnerability has been resolved: wifi: mt76: mt7925e: fix use-after-free in free_irq() From commit a304e1b82808 ("[PATCH] Debug shared irqs"), there is a test to make sure the shared irq handler should be able to handle the unexpected event after deregistration. For this case, let's apply MT76_REMOVED flag to indicate the device was removed and do not run into the resource access anymore.
In the Linux kernel, the following vulnerability has been resolved: wifi: rtl8xxxu: add cancel_work_sync() for c2hcmd_work The workqueue might still be running, when the driver is stopped. To avoid a use-after-free, call cancel_work_sync() in rtl8xxxu_stop().
In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_tables: do not compare internal table flags on updates Restore skipping transaction if table update does not modify flags.
In the Linux kernel, the following vulnerability has been resolved: ipv6: fix potential "struct net" leak in inet6_rtm_getaddr() It seems that if userspace provides a correct IFA_TARGET_NETNSID value but no IFA_ADDRESS and IFA_LOCAL attributes, inet6_rtm_getaddr() returns -EINVAL with an elevated "struct net" refcount.
In the Linux kernel, the following vulnerability has been resolved: wifi: iwlwifi: mvm: don't set the MFP flag for the GTK The firmware doesn't need the MFP flag for the GTK, it can even make the firmware crash. in case the AP is configured with: group cipher TKIP and MFPC. We would send the GTK with cipher = TKIP and MFP which is of course not possible.
In the Linux kernel, the following vulnerability has been resolved: ipvlan: Dont Use skb->sk in ipvlan_process_v{4,6}_outbound Raw packet from PF_PACKET socket ontop of an IPv6-backed ipvlan device will hit WARN_ON_ONCE() in sk_mc_loop() through sch_direct_xmit() path. WARNING: CPU: 2 PID: 0 at net/core/sock.c:775 sk_mc_loop+0x2d/0x70 Modules linked in: sch_netem ipvlan rfkill cirrus drm_shmem_helper sg drm_kms_helper CPU: 2 PID: 0 Comm: swapper/2 Kdump: loaded Not tainted 6.9.0+ #279 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 RIP: 0010:sk_mc_loop+0x2d/0x70 Code: fa 0f 1f 44 00 00 65 0f b7 15 f7 96 a3 4f 31 c0 66 85 d2 75 26 48 85 ff 74 1c RSP: 0018:ffffa9584015cd78 EFLAGS: 00010212 RAX: 0000000000000011 RBX: ffff91e585793e00 RCX: 0000000002c6a001 RDX: 0000000000000000 RSI: 0000000000000040 RDI: ffff91e589c0f000 RBP: ffff91e5855bd100 R08: 0000000000000000 R09: 3d00545216f43d00 R10: ffff91e584fdcc50 R11: 00000060dd8616f4 R12: ffff91e58132d000 R13: ffff91e584fdcc68 R14: ffff91e5869ce800 R15: ffff91e589c0f000 FS: 0000000000000000(0000) GS:ffff91e898100000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f788f7c44c0 CR3: 0000000008e1a000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace:
In the Linux kernel, the following vulnerability has been resolved: wifi: mac80211: check/clear fast rx for non-4addr sta VLAN changes When moving a station out of a VLAN and deleting the VLAN afterwards, the fast_rx entry still holds a pointer to the VLAN's netdev, which can cause use-after-free bugs. Fix this by immediately calling ieee80211_check_fast_rx after the VLAN change.
In the Linux kernel, the following vulnerability has been resolved: efi: fix panic in kdump kernel Check if get_next_variable() is actually valid pointer before calling it. In kdump kernel this method is set to NULL that causes panic during the kexec-ed kernel boot. Tested with QEMU and OVMF firmware.
In the Linux kernel, the following vulnerability has been resolved: vt: fix unicode buffer corruption when deleting characters This is the same issue that was fixed for the VGA text buffer in commit 39cdb68c64d8 ("vt: fix memory overlapping when deleting chars in the buffer"). The cure is also the same i.e. replace memcpy() with memmove() due to the overlaping buffers.
In the Linux kernel, the following vulnerability has been resolved: wifi: iwlwifi: dbg-tlv: ensure NUL termination The iwl_fw_ini_debug_info_tlv is used as a string, so we must ensure the string is terminated correctly before using it.
In the Linux kernel, the following vulnerability has been resolved: eeprom: at24: fix memory corruption race condition If the eeprom is not accessible, an nvmem device will be registered, the read will fail, and the device will be torn down. If another driver accesses the nvmem device after the teardown, it will reference invalid memory. Move the failure point before registering the nvmem device.
In the Linux kernel, the following vulnerability has been resolved: mlxsw: spectrum_acl_tcam: Fix memory leak when canceling rehash work The rehash delayed work is rescheduled with a delay if the number of credits at end of the work is not negative as supposedly it means that the migration ended. Otherwise, it is rescheduled immediately. After "mlxsw: spectrum_acl_tcam: Fix possible use-after-free during rehash" the above is no longer accurate as a non-negative number of credits is no longer indicative of the migration being done. It can also happen if the work encountered an error in which case the migration will resume the next time the work is scheduled. The significance of the above is that it is possible for the work to be pending and associated with hints that were allocated when the migration started. This leads to the hints being leaked [1] when the work is canceled while pending as part of ACL region dismantle. Fix by freeing the hints if hints are associated with a work that was canceled while pending. Blame the original commit since the reliance on not having a pending work associated with hints is fragile. [1] unreferenced object 0xffff88810e7c3000 (size 256): comm "kworker/0:16", pid 176, jiffies 4295460353 hex dump (first 32 bytes): 00 30 95 11 81 88 ff ff 61 00 00 00 00 00 00 80 .0......a....... 00 00 61 00 40 00 00 00 00 00 00 00 04 00 00 00 ..a.@........... backtrace (crc 2544ddb9): [<00000000cf8cfab3>] kmalloc_trace+0x23f/0x2a0 [<000000004d9a1ad9>] objagg_hints_get+0x42/0x390 [<000000000b143cf3>] mlxsw_sp_acl_erp_rehash_hints_get+0xca/0x400 [<0000000059bdb60a>] mlxsw_sp_acl_tcam_vregion_rehash_work+0x868/0x1160 [<00000000e81fd734>] process_one_work+0x59c/0xf20 [<00000000ceee9e81>] worker_thread+0x799/0x12c0 [<00000000bda6fe39>] kthread+0x246/0x300 [<0000000070056d23>] ret_from_fork+0x34/0x70 [<00000000dea2b93e>] ret_from_fork_asm+0x1a/0x30
In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_tables: flush pending destroy work before exit_net release Similar to 2c9f0293280e ("netfilter: nf_tables: flush pending destroy work before netlink notifier") to address a race between exit_net and the destroy workqueue. The trace below shows an element to be released via destroy workqueue while exit_net path (triggered via module removal) has already released the set that is used in such transaction. [ 1360.547789] BUG: KASAN: slab-use-after-free in nf_tables_trans_destroy_work+0x3f5/0x590 [nf_tables] [ 1360.547861] Read of size 8 at addr ffff888140500cc0 by task kworker/4:1/152465 [ 1360.547870] CPU: 4 PID: 152465 Comm: kworker/4:1 Not tainted 6.8.0+ #359 [ 1360.547882] Workqueue: events nf_tables_trans_destroy_work [nf_tables] [ 1360.547984] Call Trace: [ 1360.547991]
In the Linux kernel, the following vulnerability has been resolved: ice: fix memory corruption bug with suspend and rebuild The ice driver would previously panic after suspend. This is caused from the driver *only* calling the ice_vsi_free_q_vectors() function by itself, when it is suspending. Since commit b3e7b3a6ee92 ("ice: prevent NULL pointer deref during reload") the driver has zeroed out num_q_vectors, and only restored it in ice_vsi_cfg_def(). This further causes the ice_rebuild() function to allocate a zero length buffer, after which num_q_vectors is updated, and then the new value of num_q_vectors is used to index into the zero length buffer, which corrupts memory. The fix entails making sure all the code referencing num_q_vectors only does so after it has been reset via ice_vsi_cfg_def(). I didn't perform a full bisect, but I was able to test against 6.1.77 kernel and that ice driver works fine for suspend/resume with no panic, so sometime since then, this problem was introduced. Also clean up an un-needed init of a local variable in the function being modified. PANIC from 6.8.0-rc1: [1026674.915596] PM: suspend exit [1026675.664697] ice 0000:17:00.1: PTP reset successful [1026675.664707] ice 0000:17:00.1: 2755 msecs passed between update to cached PHC time [1026675.667660] ice 0000:b1:00.0: PTP reset successful [1026675.675944] ice 0000:b1:00.0: 2832 msecs passed between update to cached PHC time [1026677.137733] ixgbe 0000:31:00.0 ens787: NIC Link is Up 1 Gbps, Flow Control: None [1026677.190201] BUG: kernel NULL pointer dereference, address: 0000000000000010 [1026677.192753] ice 0000:17:00.0: PTP reset successful [1026677.192764] ice 0000:17:00.0: 4548 msecs passed between update to cached PHC time [1026677.197928] #PF: supervisor read access in kernel mode [1026677.197933] #PF: error_code(0x0000) - not-present page [1026677.197937] PGD 1557a7067 P4D 0 [1026677.212133] ice 0000:b1:00.1: PTP reset successful [1026677.212143] ice 0000:b1:00.1: 4344 msecs passed between update to cached PHC time [1026677.212575] [1026677.243142] Oops: 0000 [#1] PREEMPT SMP NOPTI [1026677.247918] CPU: 23 PID: 42790 Comm: kworker/23:0 Kdump: loaded Tainted: G W 6.8.0-rc1+ #1 [1026677.257989] Hardware name: Intel Corporation M50CYP2SBSTD/M50CYP2SBSTD, BIOS SE5C620.86B.01.01.0005.2202160810 02/16/2022 [1026677.269367] Workqueue: ice ice_service_task [ice] [1026677.274592] RIP: 0010:ice_vsi_rebuild_set_coalesce+0x130/0x1e0 [ice] [1026677.281421] Code: 0f 84 3a ff ff ff 41 0f b7 74 ec 02 66 89 b0 22 02 00 00 81 e6 ff 1f 00 00 e8 ec fd ff ff e9 35 ff ff ff 48 8b 43 30 49 63 ed <41> 0f b7 34 24 41 83 c5 01 48 8b 3c e8 66 89 b7 aa 02 00 00 81 e6 [1026677.300877] RSP: 0018:ff3be62a6399bcc0 EFLAGS: 00010202 [1026677.306556] RAX: ff28691e28980828 RBX: ff28691e41099828 RCX: 0000000000188000 [1026677.314148] RDX: 0000000000000000 RSI: 0000000000000010 RDI: ff28691e41099828 [1026677.321730] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 [1026677.329311] R10: 0000000000000007 R11: ffffffffffffffc0 R12: 0000000000000010 [1026677.336896] R13: 0000000000000000 R14: 0000000000000000 R15: ff28691e0eaa81a0 [1026677.344472] FS: 0000000000000000(0000) GS:ff28693cbffc0000(0000) knlGS:0000000000000000 [1026677.353000] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [1026677.359195] CR2: 0000000000000010 CR3: 0000000128df4001 CR4: 0000000000771ef0 [1026677.366779] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [1026677.374369] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [1026677.381952] PKRU: 55555554 [1026677.385116] Call Trace: [1026677.388023]
In the Linux kernel, the following vulnerability has been resolved: wifi: cfg80211: check A-MSDU format more carefully If it looks like there's another subframe in the A-MSDU but the header isn't fully there, we can end up reading data out of bounds, only to discard later. Make this a bit more careful and check if the subframe header can even be present.
In the Linux kernel, the following vulnerability has been resolved: ipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr Although ipv6_get_ifaddr walks inet6_addr_lst under the RCU lock, it still means hlist_for_each_entry_rcu can return an item that got removed from the list. The memory itself of such item is not freed thanks to RCU but nothing guarantees the actual content of the memory is sane. In particular, the reference count can be zero. This can happen if ipv6_del_addr is called in parallel. ipv6_del_addr removes the entry from inet6_addr_lst (hlist_del_init_rcu(&ifp->addr_lst)) and drops all references (__in6_ifa_put(ifp) + in6_ifa_put(ifp)). With bad enough timing, this can happen: 1. In ipv6_get_ifaddr, hlist_for_each_entry_rcu returns an entry. 2. Then, the whole ipv6_del_addr is executed for the given entry. The reference count drops to zero and kfree_rcu is scheduled. 3. ipv6_get_ifaddr continues and tries to increments the reference count (in6_ifa_hold). 4. The rcu is unlocked and the entry is freed. 5. The freed entry is returned. Prevent increasing of the reference count in such case. The name in6_ifa_hold_safe is chosen to mimic the existing fib6_info_hold_safe. [ 41.506330] refcount_t: addition on 0; use-after-free. [ 41.506760] WARNING: CPU: 0 PID: 595 at lib/refcount.c:25 refcount_warn_saturate+0xa5/0x130 [ 41.507413] Modules linked in: veth bridge stp llc [ 41.507821] CPU: 0 PID: 595 Comm: python3 Not tainted 6.9.0-rc2.main-00208-g49563be82afa #14 [ 41.508479] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) [ 41.509163] RIP: 0010:refcount_warn_saturate+0xa5/0x130 [ 41.509586] Code: ad ff 90 0f 0b 90 90 c3 cc cc cc cc 80 3d c0 30 ad 01 00 75 a0 c6 05 b7 30 ad 01 01 90 48 c7 c7 38 cc 7a 8c e8 cc 18 ad ff 90 <0f> 0b 90 90 c3 cc cc cc cc 80 3d 98 30 ad 01 00 0f 85 75 ff ff ff [ 41.510956] RSP: 0018:ffffbda3c026baf0 EFLAGS: 00010282 [ 41.511368] RAX: 0000000000000000 RBX: ffff9e9c46914800 RCX: 0000000000000000 [ 41.511910] RDX: ffff9e9c7ec29c00 RSI: ffff9e9c7ec1c900 RDI: ffff9e9c7ec1c900 [ 41.512445] RBP: ffff9e9c43660c9c R08: 0000000000009ffb R09: 00000000ffffdfff [ 41.512998] R10: 00000000ffffdfff R11: ffffffff8ca58a40 R12: ffff9e9c4339a000 [ 41.513534] R13: 0000000000000001 R14: ffff9e9c438a0000 R15: ffffbda3c026bb48 [ 41.514086] FS: 00007fbc4cda1740(0000) GS:ffff9e9c7ec00000(0000) knlGS:0000000000000000 [ 41.514726] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 41.515176] CR2: 000056233b337d88 CR3: 000000000376e006 CR4: 0000000000370ef0 [ 41.515713] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 41.516252] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 41.516799] Call Trace: [ 41.517037]
In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_tables: honor table dormant flag from netdev release event path Check for table dormant flag otherwise netdev release event path tries to unregister an already unregistered hook. [524854.857999] ------------[ cut here ]------------ [524854.858010] WARNING: CPU: 0 PID: 3386599 at net/netfilter/core.c:501 __nf_unregister_net_hook+0x21a/0x260 [...] [524854.858848] CPU: 0 PID: 3386599 Comm: kworker/u32:2 Not tainted 6.9.0-rc3+ #365 [524854.858869] Workqueue: netns cleanup_net [524854.858886] RIP: 0010:__nf_unregister_net_hook+0x21a/0x260 [524854.858903] Code: 24 e8 aa 73 83 ff 48 63 43 1c 83 f8 01 0f 85 3d ff ff ff e8 98 d1 f0 ff 48 8b 3c 24 e8 8f 73 83 ff 48 63 43 1c e9 26 ff ff ff <0f> 0b 48 83 c4 18 48 c7 c7 00 68 e9 82 5b 5d 41 5c 41 5d 41 5e 41 [524854.858914] RSP: 0018:ffff8881e36d79e0 EFLAGS: 00010246 [524854.858926] RAX: 0000000000000000 RBX: ffff8881339ae790 RCX: ffffffff81ba524a [524854.858936] RDX: dffffc0000000000 RSI: 0000000000000008 RDI: ffff8881c8a16438 [524854.858945] RBP: ffff8881c8a16438 R08: 0000000000000001 R09: ffffed103c6daf34 [524854.858954] R10: ffff8881e36d79a7 R11: 0000000000000000 R12: 0000000000000005 [524854.858962] R13: ffff8881c8a16000 R14: 0000000000000000 R15: ffff8881351b5a00 [524854.858971] FS: 0000000000000000(0000) GS:ffff888390800000(0000) knlGS:0000000000000000 [524854.858982] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [524854.858991] CR2: 00007fc9be0f16f4 CR3: 00000001437cc004 CR4: 00000000001706f0 [524854.859000] Call Trace: [524854.859006]
In the Linux kernel, the following vulnerability has been resolved: rtnetlink: Correct nested IFLA_VF_VLAN_LIST attribute validation Each attribute inside a nested IFLA_VF_VLAN_LIST is assumed to be a struct ifla_vf_vlan_info so the size of such attribute needs to be at least of sizeof(struct ifla_vf_vlan_info) which is 14 bytes. The current size validation in do_setvfinfo is against NLA_HDRLEN (4 bytes) which is less than sizeof(struct ifla_vf_vlan_info) so this validation is not enough and a too small attribute might be cast to a struct ifla_vf_vlan_info, this might result in an out of bands read access when accessing the saved (casted) entry in ivvl.
In the Linux kernel, the following vulnerability has been resolved: i40e: fix vf may be used uninitialized in this function warning To fix the regression introduced by commit 52424f974bc5, which causes servers hang in very hard to reproduce conditions with resets races. Using two sources for the information is the root cause. In this function before the fix bumping v didn't mean bumping vf pointer. But the code used this variables interchangeably, so stale vf could point to different/not intended vf. Remove redundant "v" variable and iterate via single VF pointer across whole function instead to guarantee VF pointer validity.
In the Linux kernel, the following vulnerability has been resolved: tls: fix missing memory barrier in tls_init In tls_init(), a write memory barrier is missing, and store-store reordering may cause NULL dereference in tls_{setsockopt,getsockopt}. CPU0 CPU1 ----- ----- // In tls_init() // In tls_ctx_create() ctx = kzalloc() ctx->sk_proto = READ_ONCE(sk->sk_prot) -(1) // In update_sk_prot() WRITE_ONCE(sk->sk_prot, tls_prots) -(2) // In sock_common_setsockopt() READ_ONCE(sk->sk_prot)->setsockopt() // In tls_{setsockopt,getsockopt}() ctx->sk_proto->setsockopt() -(3) In the above scenario, when (1) and (2) are reordered, (3) can observe the NULL value of ctx->sk_proto, causing NULL dereference. To fix it, we rely on rcu_assign_pointer() which implies the release barrier semantic. By moving rcu_assign_pointer() after ctx->sk_proto is initialized, we can ensure that ctx->sk_proto are visible when changing sk->sk_prot.
In the Linux kernel, the following vulnerability has been resolved: ipv6: Fix potential uninit-value access in __ip6_make_skb() As it was done in commit fc1092f51567 ("ipv4: Fix uninit-value access in __ip_make_skb()") for IPv4, check FLOWI_FLAG_KNOWN_NH on fl6->flowi6_flags instead of testing HDRINCL on the socket to avoid a race condition which causes uninit-value access.
In the Linux kernel, the following vulnerability has been resolved: wifi: iwlwifi: mvm: guard against invalid STA ID on removal Guard against invalid station IDs in iwl_mvm_mld_rm_sta_id as that would result in out-of-bounds array accesses. This prevents issues should the driver get into a bad state during error handling.
In the Linux kernel, the following vulnerability has been resolved: wifi: iwlwifi: read txq->read_ptr under lock If we read txq->read_ptr without lock, we can read the same value twice, then obtain the lock, and reclaim from there to two different places, but crucially reclaim the same entry twice, resulting in the WARN_ONCE() a little later. Fix that by reading txq->read_ptr under lock.
In the Linux kernel, the following vulnerability has been resolved: net: core: reject skb_copy(_expand) for fraglist GSO skbs SKB_GSO_FRAGLIST skbs must not be linearized, otherwise they become invalid. Return NULL if such an skb is passed to skb_copy or skb_copy_expand, in order to prevent a crash on a potential later call to skb_gso_segment.
In the Linux kernel, the following vulnerability has been resolved: wifi: nl80211: don't free NULL coalescing rule If the parsing fails, we can dereference a NULL pointer here.
In the Linux kernel, the following vulnerability has been resolved: net: fix __dst_negative_advice() race __dst_negative_advice() does not enforce proper RCU rules when sk->dst_cache must be cleared, leading to possible UAF. RCU rules are that we must first clear sk->sk_dst_cache, then call dst_release(old_dst). Note that sk_dst_reset(sk) is implementing this protocol correctly, while __dst_negative_advice() uses the wrong order. Given that ip6_negative_advice() has special logic against RTF_CACHE, this means each of the three ->negative_advice() existing methods must perform the sk_dst_reset() themselves. Note the check against NULL dst is centralized in __dst_negative_advice(), there is no need to duplicate it in various callbacks. Many thanks to Clement Lecigne for tracking this issue. This old bug became visible after the blamed commit, using UDP sockets.
** REJECT ** This CVE ID has been rejected or withdrawn by its CVE Numbering Authority.
In the Linux kernel, the following vulnerability has been resolved: tcp: Fix shift-out-of-bounds in dctcp_update_alpha(). In dctcp_update_alpha(), we use a module parameter dctcp_shift_g as follows: alpha -= min_not_zero(alpha, alpha >> dctcp_shift_g); ... delivered_ce <<= (10 - dctcp_shift_g); It seems syzkaller started fuzzing module parameters and triggered shift-out-of-bounds [0] by setting 100 to dctcp_shift_g: memcpy((void*)0x20000080, "/sys/module/tcp_dctcp/parameters/dctcp_shift_g\000", 47); res = syscall(__NR_openat, /*fd=*/0xffffffffffffff9cul, /*file=*/0x20000080ul, /*flags=*/2ul, /*mode=*/0ul); memcpy((void*)0x20000000, "100\000", 4); syscall(__NR_write, /*fd=*/r[0], /*val=*/0x20000000ul, /*len=*/4ul); Let's limit the max value of dctcp_shift_g by param_set_uint_minmax(). With this patch: # echo 10 > /sys/module/tcp_dctcp/parameters/dctcp_shift_g # cat /sys/module/tcp_dctcp/parameters/dctcp_shift_g 10 # echo 11 > /sys/module/tcp_dctcp/parameters/dctcp_shift_g -bash: echo: write error: Invalid argument [0]: UBSAN: shift-out-of-bounds in net/ipv4/tcp_dctcp.c:143:12 shift exponent 100 is too large for 32-bit type 'u32' (aka 'unsigned int') CPU: 0 PID: 8083 Comm: syz-executor345 Not tainted 6.9.0-05151-g1b294a1f3561 #2 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014 Call Trace:
** REJECT ** This CVE ID has been rejected or withdrawn by its CVE Numbering Authority.
In the Linux kernel, the following vulnerability has been resolved: net: openvswitch: fix overwriting ct original tuple for ICMPv6 OVS_PACKET_CMD_EXECUTE has 3 main attributes: - OVS_PACKET_ATTR_KEY - Packet metadata in a netlink format. - OVS_PACKET_ATTR_PACKET - Binary packet content. - OVS_PACKET_ATTR_ACTIONS - Actions to execute on the packet. OVS_PACKET_ATTR_KEY is parsed first to populate sw_flow_key structure with the metadata like conntrack state, input port, recirculation id, etc. Then the packet itself gets parsed to populate the rest of the keys from the packet headers. Whenever the packet parsing code starts parsing the ICMPv6 header, it first zeroes out fields in the key corresponding to Neighbor Discovery information even if it is not an ND packet. It is an 'ipv6.nd' field. However, the 'ipv6' is a union that shares the space between 'nd' and 'ct_orig' that holds the original tuple conntrack metadata parsed from the OVS_PACKET_ATTR_KEY. ND packets should not normally have conntrack state, so it's fine to share the space, but normal ICMPv6 Echo packets or maybe other types of ICMPv6 can have the state attached and it should not be overwritten. The issue results in all but the last 4 bytes of the destination address being wiped from the original conntrack tuple leading to incorrect packet matching and potentially executing wrong actions in case this packet recirculates within the datapath or goes back to userspace. ND fields should not be accessed in non-ND packets, so not clearing them should be fine. Executing memset() only for actual ND packets to avoid the issue. Initializing the whole thing before parsing is needed because ND packet may not contain all the options. The issue only affects the OVS_PACKET_CMD_EXECUTE path and doesn't affect packets entering OVS datapath from network interfaces, because in this case CT metadata is populated from skb after the packet is already parsed.
In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: pcie: handle randbuf allocation failure The kzalloc() in brcmf_pcie_download_fw_nvram() will return null if the physical memory has run out. As a result, if we use get_random_bytes() to generate random bytes in the randbuf, the null pointer dereference bug will happen. In order to prevent allocation failure, this patch adds a separate function using buffer on kernel stack to generate random bytes in the randbuf, which could prevent the kernel stack from overflow.
In the Linux kernel, the following vulnerability has been resolved: bonding: Fix out-of-bounds read in bond_option_arp_ip_targets_set() In function bond_option_arp_ip_targets_set(), if newval->string is an empty string, newval->string+1 will point to the byte after the string, causing an out-of-bound read. BUG: KASAN: slab-out-of-bounds in strlen+0x7d/0xa0 lib/string.c:418 Read of size 1 at addr ffff8881119c4781 by task syz-executor665/8107 CPU: 1 PID: 8107 Comm: syz-executor665 Not tainted 6.7.0-rc7 #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace:
In the Linux kernel, the following vulnerability has been resolved: net: ethtool: fix the error condition in ethtool_get_phy_stats_ethtool() Clang static checker (scan-build) warning: net/ethtool/ioctl.c:line 2233, column 2 Called function pointer is null (null dereference). Return '-EOPNOTSUPP' when 'ops->get_ethtool_phy_stats' is NULL to fix this typo error.
In the Linux kernel, the following vulnerability has been resolved: net: do not leave a dangling sk pointer, when socket creation fails It is possible to trigger a use-after-free by: * attaching an fentry probe to __sock_release() and the probe calling the bpf_get_socket_cookie() helper * running traceroute -I 1.1.1.1 on a freshly booted VM A KASAN enabled kernel will log something like below (decoded and stripped): ================================================================== BUG: KASAN: slab-use-after-free in __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29) Read of size 8 at addr ffff888007110dd8 by task traceroute/299 CPU: 2 PID: 299 Comm: traceroute Tainted: G E 6.10.0-rc2+ #2 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 Call Trace:
In the Linux kernel, the following vulnerability has been resolved: netns: Make get_net_ns() handle zero refcount net Syzkaller hit a warning: refcount_t: addition on 0; use-after-free. WARNING: CPU: 3 PID: 7890 at lib/refcount.c:25 refcount_warn_saturate+0xdf/0x1d0 Modules linked in: CPU: 3 PID: 7890 Comm: tun Not tainted 6.10.0-rc3-00100-gcaa4f9578aba-dirty #310 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 RIP: 0010:refcount_warn_saturate+0xdf/0x1d0 Code: 41 49 04 31 ff 89 de e8 9f 1e cd fe 84 db 75 9c e8 76 26 cd fe c6 05 b6 41 49 04 01 90 48 c7 c7 b8 8e 25 86 e8 d2 05 b5 fe 90 <0f> 0b 90 90 e9 79 ff ff ff e8 53 26 cd fe 0f b6 1 RSP: 0018:ffff8881067b7da0 EFLAGS: 00010286 RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff811c72ac RDX: ffff8881026a2140 RSI: ffffffff811c72b5 RDI: 0000000000000001 RBP: ffff8881067b7db0 R08: 0000000000000000 R09: 205b5d3730353139 R10: 0000000000000000 R11: 205d303938375420 R12: ffff8881086500c4 R13: ffff8881086500c4 R14: ffff8881086500b0 R15: ffff888108650040 FS: 00007f5b2961a4c0(0000) GS:ffff88823bd00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000055d7ed36fd18 CR3: 00000001482f6000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace:
In the Linux kernel, the following vulnerability has been resolved: ipv6: prevent possible NULL deref in fib6_nh_init() syzbot reminds us that in6_dev_get() can return NULL. fib6_nh_init() ip6_validate_gw( &idev ) ip6_route_check_nh( idev ) *idev = in6_dev_get(dev); // can be NULL Oops: general protection fault, probably for non-canonical address 0xdffffc00000000bc: 0000 [#1] PREEMPT SMP KASAN PTI KASAN: null-ptr-deref in range [0x00000000000005e0-0x00000000000005e7] CPU: 0 PID: 11237 Comm: syz-executor.3 Not tainted 6.10.0-rc2-syzkaller-00249-gbe27b8965297 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024 RIP: 0010:fib6_nh_init+0x640/0x2160 net/ipv6/route.c:3606 Code: 00 00 fc ff df 4c 8b 64 24 58 48 8b 44 24 28 4c 8b 74 24 30 48 89 c1 48 89 44 24 28 48 8d 98 e0 05 00 00 48 89 d8 48 c1 e8 03 <42> 0f b6 04 38 84 c0 0f 85 b3 17 00 00 8b 1b 31 ff 89 de e8 b8 8b RSP: 0018:ffffc900032775a0 EFLAGS: 00010202 RAX: 00000000000000bc RBX: 00000000000005e0 RCX: 0000000000000000 RDX: 0000000000000010 RSI: ffffc90003277a54 RDI: ffff88802b3a08d8 RBP: ffffc900032778b0 R08: 00000000000002fc R09: 0000000000000000 R10: 00000000000002fc R11: 0000000000000000 R12: ffff88802b3a08b8 R13: 1ffff9200064eec8 R14: ffffc90003277a00 R15: dffffc0000000000 FS: 00007f940feb06c0(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000 CR3: 00000000245e8000 CR4: 00000000003506f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace:
N/A
SRPMS
- kernel-5.14.0-427.31.1.el9_4.src.rpm
MD5: c974165fe6addfbe2c7e2e3fe62ac0a0
SHA-256: 556244f1b1206a2135949ab79bc02bcabc6c7e6336f920e4d8d0d083fd0b9cbc
Size: 138.29 MB
Asianux Server 9 for x86_64
- bpftool-7.3.0-427.31.1.el9_4.x86_64.rpm
MD5: 1c6b771ba17563ce4e77b5b91037dd3d
SHA-256: 4c9d7a54288dea6a5054a304e8626f1e36e38e891461f2275c426dd979e482be
Size: 5.61 MB - kernel-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: d67e283eac67d219788d78df9ac6d563
SHA-256: 001dbff8529c5c7dce1d09d3dfb646fe1cc38ac3b30e716c1b8f9576acdb505b
Size: 4.85 MB - kernel-abi-stablelists-5.14.0-427.31.1.el9_4.noarch.rpm
MD5: b04cbe443ed9c99afee87f7950414225
SHA-256: 89a067f43af2c3b51888e3511f3c462f24342f1b1e01f3ec8bb9056dba492f03
Size: 4.87 MB - kernel-core-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 763fd1b19eb14c72932ebc5672d554b5
SHA-256: 02ea6b268f611bec66dd0c89ce1c088e0b0c5257333d5c4202f1f5e91248aaab
Size: 19.71 MB - kernel-cross-headers-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 1647499b266e8958bdc5672da5253126
SHA-256: 173f1233f230672f54d5a72a6d9d56c922dc3364049551f35a81f9f2d3b5db76
Size: 11.45 MB - kernel-debug-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: c64979d9dfb473fc182678cf1179bad7
SHA-256: a5a8ac99a83ee4c8b20b57dd4b2d19dc6aaa1a80443ba32190d438bb852df0e5
Size: 4.85 MB - kernel-debug-core-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 60a482be338a632981dfffc787ad3459
SHA-256: e19f7a2f67991e7cc044b5acfd1a0e91f273ad308bb8b990f4b841c60043b8d5
Size: 32.37 MB - kernel-debug-devel-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: ba41cbd1cc5918a71ae52d66cf41418b
SHA-256: 9d0186278ccc3e1c0be27c6524cb5b8c1dad096c9fff8617e5a609727952cb25
Size: 24.32 MB - kernel-debug-devel-matched-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 6fc2e70e4092ba82aaa6e0bd183964b2
SHA-256: 65bb3ea2b490fe201de35da542aa4ea8f1b1c60905dd11e8e192eeb073760d07
Size: 4.85 MB - kernel-debug-modules-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 97858c9d61b3dc18347d8b504d18cd07
SHA-256: 206d8ab5dda42847056b9a470e023f2685789a25efe7da86b1b946c086634f8b
Size: 63.85 MB - kernel-debug-modules-core-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: b14eb0ee5b341dd4420f4f248bf1a64c
SHA-256: 9a4c92d512794a7c20a7f29320ab0e4c79cacfad05b8a3a556c56c9f85f634e0
Size: 50.03 MB - kernel-debug-modules-extra-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: b1889551c320c13c2fc0c52261b820a3
SHA-256: 23e1c73d75bf5a5917ef5e05ff1015ff3175f5ca1356c7c07455f4735bec73bc
Size: 5.68 MB - kernel-debug-uki-virt-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 665b0516e044afc38bdedbe7b5f352bd
SHA-256: 4e943db2a1a17ca3cf49713c4615affd3983e396ed853171a106eb6152cd5896
Size: 81.69 MB - kernel-devel-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: ba2bfcb9e26990476d20688117a026df
SHA-256: c78157955a331aba2eb69102f74f46c11d8242d7e315a5f96536981d2639d32d
Size: 24.14 MB - kernel-devel-matched-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: e1c88ada89edc8fccd9ae57d637a4aee
SHA-256: 4984e4d6962e1090590a160c426b1c3b85455458fac6a60e94ce3e58c14d7a4b
Size: 4.85 MB - kernel-doc-5.14.0-427.31.1.el9_4.noarch.rpm
MD5: f691a042fb92bf86c73ef94e570893d2
SHA-256: 448a22a3dc34638876c6dbbfaf729d31dcb521f2b9c7586721382a570bed0bb0
Size: 38.29 MB - kernel-headers-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: fa8b37a3f919079ae91595d3df8135cd
SHA-256: 8ac67895aaa49afc7488662ad391f57cfe3cef6e2e316fb868a13a902ee839a1
Size: 6.52 MB - kernel-modules-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 2e6a6f76e520f07b897af733a9084626
SHA-256: 82cb2ab9e92a0f49d336c657fbd953cbb5a62f93eccf943ef2d81ac98c080b9c
Size: 38.47 MB - kernel-modules-core-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 3543d833f360a24e1ea375bcd454b8ff
SHA-256: 9e9f8157397f709c8a952e449b2014d136dd0ebff451b2da848ab183bcb73b5b
Size: 32.67 MB - kernel-modules-extra-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: c296aafa9a589e5225fc3165b35f8007
SHA-256: 8e5885d92baec4fbee7bce426da91c3b6adb901a921921e4e23f7cb360bd4ec8
Size: 5.30 MB - kernel-tools-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 839b495fcf5b2f36d34616063cec31b5
SHA-256: b4d42e9c5c1528595c2b7d0e1db82d351af974c7dd0955263766db1dde98052e
Size: 5.10 MB - kernel-tools-libs-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: fecae33e7fdeb462854c42b10729ce16
SHA-256: bf61208408e220de01e7b1a9937339507df7efb41b6587c1ec87c118749b0e55
Size: 4.86 MB - kernel-tools-libs-devel-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: ca57953ca5ca1e452bfc0d13c94cb039
SHA-256: d82035597fae1bae27c61fb0f7b1250b2e7869a58345d8303ad9ad518a242f8a
Size: 4.85 MB - kernel-uki-virt-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 40281406b239784af84d5ad0eab9a187
SHA-256: 30e9164918d4bf773465f8936226d8ceef77d5e064e7a56a81ba1ca925adce7e
Size: 61.56 MB - libperf-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 2cf63b6a0957b6316541616eb15263f2
SHA-256: 311abb7fb6c82bd8efbf035da30c54e4abebc990231c0bd8783823a4bf52b81e
Size: 4.87 MB - perf-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 321476641f06349ef11bf8734e0d1fe1
SHA-256: bdb577fc2b881abdb757dca856e20e004703747afa290f065c4b38dfa6b828d1
Size: 6.87 MB - python3-perf-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: a787834ee1b85a2573de3ee2db8e5ac8
SHA-256: 533f0fd4bc1e4a8930d2132e5d2473c4353bd0464ab786fec9434a3794ba7c01
Size: 4.95 MB - rtla-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: fbf7534d242a9dad4daf5e44a5bf98b5
SHA-256: 257f20d14b91fb8c5751381126f5f8dcf3a2b9885a25d912eff8d53f858d2470
Size: 4.90 MB - rv-5.14.0-427.31.1.el9_4.x86_64.rpm
MD5: 391c28b946b7ad1f7041b962a59772ed
SHA-256: e378ae580091c186921a364ff68a9400aff04f4287b306d656fcc286d8d781d1
Size: 4.86 MB