脆弱性情報(JVN)
脆弱性情報(JVN)検索・一覧
JVN(IPA/JPCERT/CC 提供)の脆弱性情報 289,735 件を、製品・ベンダ・脆弱性タイプ(CWE)で 全文検索し、深刻度(CVSS)で絞り込めます。発表日の新しい順。各タイトルから詳細(CVSS内訳・関連脆弱性)へ。
種別 解放済みメモリの使用 の検索結果:721–760 件目を表示(ページ 19)
深刻度は CVSS(共通脆弱性評価システム・0〜10 のスコア)に基づく区分:Critical 9.0以上/High 7.0〜8.9/Medium 4.0〜6.9/Low 0.1〜3.9。
Linuxカーネルのdrm/xe/pfにおいて、xe_sriov_pf_migration_restore_produce()がエラーを返した際にデータポインタがNULLに設定されず、その後のwrite()呼び出しでuse-after-freeが発生する脆弱性が修正されました。この問題により、メモリの安全性が向上します。コミット4f53d8c6d23527d734fe3531d08e15cb170a0819からチェリーピックされています。
Linuxカーネルにおいて、以下の脆弱性が修正されました:RDMA/efaに関して、解放後の完了コンテキストの使用問題を修正しました。管理キューの完了処理において、管理コマンドがエラーで完了した場合でも、完了コンテキストからデータを出力していました。問題の原因は、ポーリングや割り込みハンドラ内で既に完了コンテキストを解放しているため、不明な状態のコンテキスト(再利用されている可能性もあります)からデータを出力してしまう点にあります。管理サブミッションのフローを変更し、コンテキストの割り当てと解放を対称的にしました。また、コンテキストの潜在的な使用後に解放を呼び出すように修正しました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。Bluetoothのbtintelモジュールにおいて、btintel_hw_error()関数をhci_req_sync_lockで直列化しました。btintel_hw_error()はhci_req_sync_lock()を保持せずに2回の__hci_cmd_sync()呼び出し(HCI_OP_RESETとIntelの例外情報取得)を発行します。このため、同じロック下で__hci_cmd_sync()を実行するhci_dev_do_close()→btintel_shutdown_combined()と競合状態が発生します。両方のパスが同時にhdev-req_statusやreq_rspを操作すると、closeパスが最初にレスポンスskbを解放し、まだ実行中のhw_errorパスがkfree_skb()でスラブ使用後解放(use-after-free)エラーに遭遇しました。回復手順全体をhci_req_sync_lock/unlockでラップし、すべての同期HCIコマンド発行者と直列化されるように改善しました。以下はデータ競合およびkasanレポートの内容です。BUG: __hci_cmd_sync_sk / btintel_shutdown_combinedにおけるデータ競合が発生しました。net/bluetooth/hci_sync.cの199行でのhdev-req_rspの読み取り(kworker/u17:1/83による)とioctl/22580タスクによる書き込みおよび解放(drivers/bluetooth/btintel.cの3648行など)が競合していました。さらに、kasanによりslab-use-after-freeがnet/core/skbuff.cの1202行、sk_skb_reason_drop+0x43/0x380で検出され、アドレスffff888144a738dcのサイズ4の読み取りがkworker/u17:1/83タスクによって発生しました。
Linuxカーネルにおいて、以下の脆弱性が修正されました:net: ti: icssg-pruethのRXパスにおけるCPPIディスクリプタの使用後解放の問題です。cppi5_hdesc_get_psdata()はCPPIディスクリプタへのポインタを返します。emac_rx_packet()とemac_rx_packet_zc()の両方で、このディスクリプタはpsdataポインタがemac_rx_timestamp()で使用される前にk3_cppi_desc_pool_free()を介して解放されていました。emac_rx_timestamp()はpsdata[0]とpsdata[1]を参照しており、これはタイムスタンプ経路を通るすべての受信パケットに対して使用後解放(use-after-free)を引き起こしていました。そこで、psdataポインタを介したすべてのアクセスが完了するまでディスクリプタの解放を延期するようにしました。emac_rx_packet()では、free処理をrequeueラベルに移動し、早期終了パスと成功パスの両方でアクセス完了後にディスクリプタを解放するように改善しました。emac_rx_packet_zc()では、free処理をループ本体の最後、emac_dispatch_skb_zc()(これはemac_rx_timestamp()を呼び出します)が戻った後に移動しました。
LinuxカーネルにおけるNETDEV_UP競合により、packet_release()内のfanoutでUse After Free(UAF)が発生する脆弱性が修正されました。
Linuxカーネルにおいて、以下の脆弱性が解決されました。media: mc、v4l2ではreq_queue_mutexを使用してREINITとREQBUFSの整列化を行います。MEDIA_REQUEST_IOC_REINITはVIDIOC_REQBUFS(0)のキュー破棄パスと同時に実行される可能性があります。これにより、リクエストオブジェクトのクリーンアップがvb2キューのキャンセルと競合し、use-after-freeの問題が発生することがあります。req_queue_mutexはすでにSTREAMON/OFFに対するリクエストキューイングで整列化に使用されています。この整列化をREQBUFSにまで拡張し、media_request_ioctl_reinit()でも同じミューテックスを取得してREINITを同じ排他領域に収めます。これにより、リクエスト対応デバイスのリクエストクリーンアップとキューキャンセルが並行して実行されることを防ぎます。
Linuxカーネルにおいて、以下の脆弱性が修正されました。can: isotp: isotp_sendmsg()内のtx.bufの使用後解放の修正です。isotp_sendmsg()は、so-tx.bufへのアクセスを直列化するために、so-tx.stateに対してcmpxchg()のみを使用しています。isotp_release()はwait_event_interruptible()でISOTP_IDLEを待機し、その後kfree(so-tx.buf)を呼び出します。もしclose()内のwait_event_interruptible()がシグナルによって中断され、tx.stateがISOTP_SENDINGである場合、ループが早期に終了し、releaseは強制的にISOTP_SHUTDOWNへ進みます。sendmsgがまだisotp_fill_dataframe()で最終的なCANフレームのためにso-tx.bufを読み込んでいる最中にkfree(so-tx.buf)を続行してしまいます。so-tx.bufは、標準のtx.buf長を拡張する必要がある場合に1度だけ割り当てられます。この潜在的に拡張されたtx.bufのkfree()の呼び出しは、isotp_sendmsg()とisotp_release()のいずれも終了した時点のsk_destructのタイミングに移動されました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。futex: sys_futex_requeue()が同一のフラグを持つことを要求します。Nicholasは、彼のLLMがsys_futex_requeue()が異なるフラグで使用された場合にUse-after-free(UaF)を引き起こす可能性があることを報告しました。異なるフラグを許容する初期の動機は可変サイズのfutexでしたが、それはまだマージされていないため、旧式のsys_futex()のrequeue操作と同様にフラグを同一にすることを単純に義務付けました。
Linuxカーネルのamdgpuドライバーにおいて、amdgpu_amdkfd_submit_ib関数内でフェンスの待機前に参照を解放してしまう問題がありました。この問題により、無効になったフェンスに対して待機を行うUse-After-Freeの脆弱性が発生する可能性がありました。この脆弱性は、フェンスの待機を先に行い、その後に参照を解放するように修正されました。
Linuxカーネルにおいて以下の脆弱性が修正されました。Bluetooth: MGMT: mgmt_add_adv_patterns_monitor_completeにおけるダングリングポインタの問題を修正しました。この修正では、statusが-ECANCELEDでない場合に常にmgmt_pending_validが実行されるように条件チェックを修正しています。そうしなければ、mgmt_pending_free(cmd)が呼ばれた際に、cmdがリストからunlinkされることなくkfreeされてしまい、ダングリングポインタが残る可能性がありました。その結果、リストの後続の走査(例えば__mgmt_power_off中のmgmt_pending_foreachや他のmgmt_pending_valid呼び出し時)において、解放済みメモリへのデリファレンスが発生してしまいます。
Linuxカーネルにおいて、driver coreのplatform部分で、driver_overrideインフラストラクチャの使用に起因する脆弱性が修正されました。この脆弱性は、__driver_attach()を介してドライバがプローブされる際に、busのmatch()コールバックがデバイスロックを保持せずに呼び出されることで、driver_overrideフィールドへのロックなしのアクセスがUse-After-Free(UAF)につながる可能性がある問題です。本脆弱性はdriver coreのdriver_overrideインフラストラクチャを修正することで解決されました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。cxl/portのcxl_detach_ep()におけるparent_portの使用後解放の問題を修正しました。cxl_detach_ep()は、スイッチポート配下のすべてのCXLメモリデバイスが削除された際にボトムアップ削除処理として呼び出されます。階層内の各ポートに対して、そのポートと親ポートの両方をロックし、エンドポイントを削除します。ポートが空になった場合は死んだ状態とマークし、delete_switch_port()を呼び出してポートの登録解除を行います。この処理中にparent_portが解放後に使用される可能性がある箇所が2つ存在します。1つ目は、同時にデタッチが進行している場合です。bus_find_device()で2番目の作業者がポートを見つけた時点で既にそのポートが処理済みの場合、parent_portをピン留めしていなければport-deadの検出および親ポートのロック解除を試みる際にすでに解放されている可能性があります。プロダクション環境のカーネルではこれは無音のメモリ破損となり、ロックデバッグ有効時には以下のように現れます。[]DEBUG_LOCKS_WARN_ON(__owner_task(owner) != get_current()) []WARNING: kernel/locking/mutex.c:949 at __mutex_unlock_slowpath+0x1ee/0x310 []Call Trace: []mutex_unlock+0xd/0x20 []cxl_detach_ep+0x180/0x400 [cxl_core] []devm_action_release+0x10/0x20 []devres_release_all+0xa8/0xe0 []device_unbind_cleanup+0xd/0xa0 []really_probe+0x1a6/0x3e0です。2つ目はdelete_switch_port()がparent_portに登録された3つのdevmアクションを解放するときです。その最後のアクションであるunregister_port()が子ポートに対してdevice_unregister()を呼び出し、それが連鎖的に発生する可能性があります。もしparent_portもこの時点で空であれば、デバイスコアがそれも登録解除・解放してしまいます。したがってdelete_switch_port()の戻り時点でparent_portが解放されており、その後のdevice_unlock(&parent_port-dev)が解放済みメモリに対して操作を行います。カーネルログは上述と同様ですが、cxl_detach_ep()内のオフセットが異なります。これら2つの問題は、子ポートと親ポート間のライフタイム保証が欠如していることに起因します。ポートのライフタイムルールを確立し、子ポートは解放されるまで親デバイスの参照を保持するようにしました。ポート割り当て時に参照を取り、解放時に参照を解放します。これにより親は子のライフタイム全体で有効であることが保証され、cxl_detach_ep()での使用後解放の問題を排除できます。この問題はCXLデバイスが存在するQEMU上でcxl_acpiのリロードを行うことで容易に再現できます。
LinuxカーネルにおけるCANサブシステムの脆弱性を修正する内容です。raw_rcv()関数内でro-uniqに対して解放後参照(use-after-free)が発生する問題がありました。raw_release()はraw CAN受信フィルタの登録解除を行いますが、削除処理が遅延されるため、ro-uniqが解放された後もraw_rcv()がそれにアクセスする可能性があります。この問題は、ro-uniqの解放をraw_release()から削除し、ソケットデストラクタ内で実施することで解決されます。これにより、関連するコールバックが終了するまでpercpuメモリが解放されず、安全性が確保されます。
Linuxカーネルのnet/tlsにおいて、tls_do_encryptionの-EBUSYエラーパスで発生するuse-after-freeの脆弱性が修正されました。この問題は、crypto_aead_encrypt()が-EBUSYを返した際に、非同期コールバックtls_encrypt_done()と同期的なクリーンアップ処理がencrypt_pendingを二重にデクリメントし、scatterlistの復元が二重に行われることで発生しました。その結果、encrypt_pendingの管理が破損し、後続の処理で解放済みのリソースにアクセスするuse-after-freeが引き起こされました。本問題は、-EBUSYの非同期待機がエラーを返した場合に同期的なクリーンアップ処理をスキップすることで修正されました。
Linuxカーネルにおいて、tracing: trace_markerコピーのリンクリスト更新の修正が行われました。インスタンスに"copy_trace_marker"オプションが有効な場合、/sys/kernel/tracing/trace_markerに書き込まれた内容はそのインスタンスのバッファにもコピーされます。オプションが設定されていると、そのインスタンスのtrace_arrayディスクリプタはmarker_copiesリンクリストに追加され、このリストはRCUで保護されています。インスタンスが削除されると、すべてのフラグはクリアされ、リストからも適切に削除されなければなりません。修正前は、フラグのクリア後に同期処理が適切に行われない場合があり、Use-After-Freeの脆弱性が存在していました。今回の修正では、フラグのクリア処理を更新後に移動し、同期処理が確実に行われるようにしました。また、フラグの状態を基に処理を判定するよう改善しています。
Linuxカーネルのmm: blk-cgroupにおいて、cgwb_release_workfn()内でuse-after-freeの脆弱性が修正されました。この関数はcss_put(wb-blkcg_css)を呼び出した後にblkcg_unpin_online()で再びwb-blkcg_cssにアクセスしますが、もしcss_put()によって最後の参照が解放されると、blkcgが非同期的に解放されます。その後、解放済みのポインタにアクセスすることでuse-after-freeが発生します。この問題はblkcg_unpin_online()をcss_put()の前に移動させることで解決されました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。ASoC: qcom: q6apmでは、コンポーネント登録が管理対象バージョンから非管理対象バージョンへ移動されました。q6apmコンポーネントはASoCトポロジーから動的にdaiを登録しますが、これらはデバイス管理バージョンAPIを使用して割り当てられていました。コンポーネントと動的daiの両方を管理対象バージョンで割り当てると、誤った解放順序が発生し、コンポーネントがまだ参照を保持している間にdaiが解放されてしまう可能性があります。この問題を解決するため、コンポーネントを非管理対象バージョンに移動し、daiポインタがコンポーネントの削除後にのみ解放されるようにしました。==================================================================バグ: KASAN: snd_soc_del_component_unlocked+0x3d4/0x400 [snd_soc_core]におけるスラブ使用後解放エラーが発生しました。サイズ8の読み取りがタスクkworker/u48:0/3426によってアドレスffff00084493a6e8で行われました。汚染状態は[W]=警告です。ハードウェア名はLENOVO 21N2ZC5PUS/21N2ZC5PUS、BIOSはN42ET57W (1.31)、2024/08/08のものです。ワークキューはpdr_notifier_wq、pdr_notifier_work [pdr_interface]です。呼び出しトレースは省略しました。割り当てはタスク77で実行され、解放はタスク3426で行われました。詳細には、管理対象割り当てAPIでdaiが割り当てられ、その後コンポーネント削除時に参照が残ったまま解放されるため、使用後解放が発生しクラッシュにつながっていました。この修正により、daiポインタの解放順序が正しく制御されるようになり、安定性と安全性が向上しました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。KVMのx86に関して、MMIOフラグメントのスクラッチフィールドを使用して小さな書き込み値を保持します。エミュレートされたMMIO書き込みサービスがユーザースペースに戻る際、データペイロードのサイズが8バイト以下(つまり単一のチャンクに収まる場合)は、フラグメントを直接ソース値に指すのではなく、MMIOフラグメントのスクラッチフィールドに書き込み予定の値をコピーします。これにより、エミュレータがスタック上のローカル変数をソースとして書き込みを開始し、書き込みがページ境界をまたぎ、かつ両方のページがMMIOページである場合に発生するuse-after-freeバグの一種が修正されます。KVMのABIは物理的に連続したMMIOリクエストのみを許可するため、MMIOページをまたぐアクセスは2つのフラグメントに分割され、ユーザースペースに一度に1つずつ送信されます。KVMは最初のフラグメントの後にKVM_RUN応答でユーザースペースMMIOを完了しようとすると、2つ目のフラグメントを検出して2回目のユーザースペース退出を生成し、スタック上の変数を参照します。この問題は、2回目のKVM_RUNが別のタスクによって実行された場合に最も顕著で、その場合は開始したタスクのスタックが実際に解放されたデータとして現れます。バグはKASANのuse-after-freeエラーで検出され、具体的なスタックトレースが示されます。このバグはKVM-Unit-Testでも再現可能で、complete_emulated_mmio()内で大きなスタック変数をゴミ値で上書きするようKVMを改変して再現されます。スクラッチフィールドの使用は8バイト以下の書き込みに限定され、より大きなアクセスや読み取りはエミュレータの実装詳細に影響を与えません。将来的な変更に備えて整合性チェックも追加されています。
Linuxカーネルにおいて、mm: folio_unmap_invalidate() 内で -free_folio() を直接呼び出していた問題が修正されました。この問題は、filemap_free_folio() がマッピングへの参照やロックを保持している場合にのみ呼び出される必要があり、そうでない場合はフォリオの削除によって use-after-free 脆弱性が発生する可能性がありました。__remove_mapping() と同様に、ロックを解除する前に free_folio 関数ポインタを取得するように変更されました。これにより、本関数は filemap.c 外から呼び出される唯一の関数として静的に定義されました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。ocfs2におけるVM_FAULT_RETRY時のocfs2_fault()関数に存在したuse-after-freeの問題です。filemap_fault()関数はVM_FAULT_RETRYを返す前にmmap_lockを解放することがあります。これはmm/filemap.cに記載されており、「返り値にVM_FAULT_RETRYが設定されている場合、それはI/Oを行う前またはlock_folio_maybe_drop_mmap()によってmmap_lockが解放される可能性があるためです。」と説明されています。この状況下で、同時に実行されているmunmap()関数がremove_vma()を呼び出し、RCUを介してvm_area_structを解放する可能性があります。その結果、ocfs2_fault()内に保存されている'vma'ポインタがダングリングポインタとなり、後続のtrace_ocfs2_fault()呼び出し時に参照されてuse-after-freeが発生していました。修正内容として、filemap_fault()を呼び出す前にip_blknoを単純な整数として保存し、トレースイベントからvmaを除去しました。ip_blknoはロックが解放される前に値としてコピーされるため、その後vmaやinodeに何が起きても問題なく有効な状態を維持します。
Microsoft Office ExcelのUse after freeの脆弱性により、不正な攻撃者がローカル環境でコードを実行できる可能性があります。
Microsoft Office Excel の Use after free 脆弱性により、不正な攻撃者がローカルでコードを実行できる可能性があります。
Microsoft Office ExcelにおけるUse after freeの脆弱性により、認可されていない攻撃者がローカルでコードを実行できる可能性があります。
Microsoft Office PowerPoint における Use after free の脆弱性により、不正な攻撃者がローカルでコードを実行できる可能性があります。
アプリケーションのリストボックス計算配列ロジックは、ページまたはフォームオブジェクトが削除または再作成された後でも古い参照を保持し続けるため、悪意のあるドキュメントが計算実行時に使用後解放(use-after-free)を引き起こし、任意のコードを実行させる可能性があります。
wolfSSLのTLS 1.3ポスト量子暗号(PQC)ハイブリッドKeyShare処理に、ヒープの使用後解放(use-after-free)脆弱性が存在します。src/tls.cのTLSX_KeyShare_ProcessPqcHybridClient()のエラー処理パスにおいて、内部関数TLSX_KeyShare_ProcessPqcClient_ex()がエラー発生時にKyberKeyオブジェクトを解放します。呼び出し元は続いてTLSX_KeyShare_FreeAll()を呼び出し、既に解放されたKyberKeyに対してForceZero()を実行しようとします。そのため、解放済みヒープメモリ上にゼロバイトを書き込む状況が発生します。
Linuxカーネルにおいて、以下の脆弱性が修正されました。crypto: ccpにおけるエラーパスでのuse-after-free問題です。sev_tsm_init_locked()関数のエラーパスで、コードがkfree()により解放された後に't'をデリファレンスしていました。pr_err()ステートメントは、メモリ解放後にt-tio_enおよびt-tio_init_doneにアクセスしようとしていました。pr_err()の呼び出しをkfree(t)の前に移動し、メモリがまだ有効な間にフィールドへアクセスするよう修正しています。この問題はSmatch静的解析ツールによって報告されました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。netfilterのnft_set_pipapoに関して、ガベージコレクションをunlinkフェーズとreclaimフェーズに分割しました。Yiming QianがpipapoセットタイプにおけるUse-after-freeの脆弱性を報告しています。多数の期限切れ要素が存在する場合、コミット時のGCが非プリエンプティブルなコンテキストで非常に長時間実行され、ソフトロックアップ警告やRCUスタールレポート(ローカルサービス拒否)を引き起こす可能性があります。そのため、GCをunlinkフェーズとreclaimフェーズに分割する必要があります。ポインタがスワップされるまで、要素の解放をキューに入れることはできません。期限切れ要素は、データ構造のライブコピーを介してパケットパスおよびユーザースペースのダンプ操作の両方から依然としてアクセス可能です。call_rcu()は保護にならず、call_rcuが発火した後に開始されたダンプ操作や要素の検索は、コミットフェーズがクローンとライブポインタのスワップを行うまで、解放された要素を観察する可能性があります。これは、最近のrbtreeバックエンドのコミット35f83a75529a("netfilter: nft_set_rbtree: don't gc elements on insert")で採用されたアプローチと類似しています。
Linuxカーネルにおいて、以下の脆弱性が修正されました。bpf_trampoline_link_cgroup_shimにおけるUse-After-Free(UAF)問題が修正されました。このバグの根本原因は、'bpf_link_put'が'shim_link-link.link'の参照カウントをゼロに減らしたときにリソースを解放済みとみなす一方で、'cgroup_shim_find'内の'tr-progs_hlist'を介して依然として参照される可能性があることにあります。実際の'tr-progs_hlist'のクリーンアップは'bpf_shim_tramp_link_release'で遅延されます。この間に別のプロセスが'bpf_trampoline_link_cgroup_shim'を介してUse-After-Freeを引き起こす可能性があります。Martin KaFai Lauの提案に基づき、簡単なパッチが作成されました。修正内容は、'bpf_trampoline_link_cgroup_shim'で非ゼロの原子チェックを追加し、参照カウントがすでにゼロでない場合のみインクリメントすることです。テストでは、バグのトリガーを容易にするために'bpf_shim_tramp_link_release'に遅延(msleep(100))を挿入し、PoCを実行するとパッチ適用前はほぼ100%の確率でクラッシュが再現され、パッチ適用後は数百万回の反復実行後もバグが発生しなくなりました。
Linuxカーネルにおいて、ipmi送信エラー時にuse-after-freeおよびリスト破損が発生する脆弱性が修正されました。この問題は、送信エラー時にメッセージが適切にクリーンアップされず、同じメッセージが重複して処理されることでリストが二重に追加され、結果としてメモリ破損やNULLポインタ参照が発生していました。修正により、送信エラー時にメッセージが正しく解放され、メモリリークやリスト破損を防止できるようになりました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。wifi: cfg80211において、wiphy_unregister()でrfkill_block作業のキャンセル漏れがありました。syzkallerによって発見されたcfg80211_shutdown_all_interfacesにおけるuse-after-freeエラーでは、BUG: KASAN: cfg80211_shutdown_all_interfaces+0x213/0x220でuse-after-freeが発生していました。サイズ8の読み取りが作業タスクkworker/0:5/5326によってアドレスffff888112a78d98で行われました。CPUは0、UIDは0、PIDは5326、Commはkworker/0:5偽りなし6.19.0-rc2 #2 PREEMPT(voluntary)です。ハードウェア名はQEMU Standard PC (i440FX + PIIX, 1996)、BIOSは1.15.0-1 2014年4月1日です。Workqueueはevents cfg80211_rfkill_block_workです。コールトレースはdump_stack_lvl+0x116/0x1f0、print_report+0xcd/0x630、kasan_report+0xe0/0x110、cfg80211_shutdown_all_interfaces+0x213/0x220、cfg80211_rfkill_block_work+0x1e/0x30、process_one_work+0x9cf/0x1b70、worker_thread+0x6c8/0xf10、kthread+0x3c5/0x780、ret_from_fork+0x56d/0x700、ret_from_fork_asm+0x1a/0x30でした。この問題は、wiphyが登録解除される際にrfkill_block作業がキャンセルされなかったことにより発生しました。問題を修正するために、wiphy_unregister()で対応する作業をキャンセルするようにしました。Linux Verification Center (linuxtesting.org)によるSyzkallerを用いた検出結果です。
Linuxカーネルにおいて、net: schedのlockless qdiscsでqdisc_reset_all_tx_gt()とdequeueの競合を回避するための修正が行われました。この問題はnetif_set_real_num_tx_queues()が現在のtxキューの数を縮小する際に、使われなくなるキューのqdiscをフラッシュする過程で発生していました。lockless qdiscsでは、qdisc_reset()が__qdisc_run()と同時に実行される可能性があり、skbがまだdequeuingされている間に解放されてUse-After-Freeが発生していました。これはvirtio-netなどで多くのトラフィックを発生させつつキューペア数を頻繁に変更することで再現できました。修正ではqdisc_reset_all_tx_gt()をqdisc-seqlockで直列化し、dev_reset_queue()での動作と合わせました。さらにリセット後にQDISC_STATE_NON_EMPTYをクリアし、不要な再スケジューリングを回避します。
Linuxカーネルにおいて、以下の脆弱性が修正されました。ksmbdにおけるアクティブなファイルハンドルの耐久性v2リプレイでのuse-after-freeの問題を修正しました。parse_durable_handle_context()関数は、SMB2_FLAGS_REPLAY_OPERATIONを持つDURABLE_REQ_V2コンテキストを処理する際に、dh_info-fp-connを無条件で現在の接続に割り当てます。ksmbd_lookup_fd_cguid()関数はfp-connでフィルタリングしないため、既にアクティブな接続が確立されているファイルハンドルを返します。この無条件の上書きによりfp-connが置き換えられ、その後上書きされた接続が解放されると、__ksmbd_close_fd()関数がspin_lock(&fp-conn-llist_lock)を用いて古いfp-connを参照し、use-after-freeが発生します。KASANレポートでは、_raw_spin_lock関数内でuse-after-freeが検出され、タスクkworker/1:2により問題のアドレスに対して4バイトの書き込みが行われたことが示されています。問題のアドレスは、サイズ1024バイトのkmalloc-1kキャッシュに属するオブジェクトの396バイト目に位置し、解放済み領域にアクセスしていました。
Linuxカーネルにおいて、以下の脆弱性が修正されました。ksmbdのコンパウンドリクエスト内でのshare_confのuse-after-freeを修正しました。smb2_get_ksmbd_tcon()はコンパウンドリクエストでwork-tconをtcon-t_stateを検証せずに再利用していました。ksmbd_tree_conn_lookup()は初回のルックアップパスでt_stateがTREE_CONNECTEDかをチェックしますが、コンパウンド再利用パスはこのチェックを完全にバイパスしていました。コンパウンド内の前のコマンド(SMB2_TREE_DISCONNECT)がt_stateをTREE_DISCONNECTEDに設定し、ksmbd_share_config_put()でshare_confを解放すると、後続のコマンドがwork-tcon-share_confを通じて解放済みのshare_confを参照してしまいます。KASANレポートでは、smb2_write関数内でスラブの使用後解放(use-after-free)が検出されており、具体的なコールトレースとメモリアロケーションおよび解放の詳細が報告されています。この問題によってメモリの無効なアクセスが発生する恐れがあり、ksmbdのコンパウンドリクエスト処理の安全性を向上させる修正が含まれています。
Linuxカーネルにおいて、以下の脆弱性が修正されました:mshv_map_user_memory()のエラーパスにおけるuse-after-freeの問題を修正しました。具体的には、mshv_map_user_memory()のエラーパスでvfree()を直接呼び出すと、MMUノーティファイヤが登録されたままになる問題がありました。ユーザースペースが後でメモリのマップを解除すると、ノーティファイヤが発火し、解放済みの領域にアクセスしてuse-after-freeおよびカーネルパニックが発生する可能性がありました。これを防ぐために、領域を解放する前にMMUノーティファイヤの登録を適切に解除し、vfree()の呼び出しをmshv_partition_put()に置き換えました。
Windows Server Update Service において、共有資源の不適切な同期(「レースコンディション」)を利用した同時実行により、権限を持つ攻撃者がローカルで権限を昇格させることが可能になる。
Windows Ancillary Function Driver for WinSock における use after free により、認可された攻撃者がローカルで権限を昇格させることが可能となります。
Microsoft Brokering File System における Use after free の脆弱性により、認可された攻撃者がローカルで権限を昇格させることが可能です。
Windows Ancillary Function Driver for WinSock における Use after free の脆弱性により、認証された攻撃者がローカルで権限を昇格させることが可能です。
Linuxカーネルにおいて、以下の脆弱性が修正されました:netfilterのnf_tablesにおいてエラー時にRCU猶予期間後にフローテーブルを解放します。エラーパスではフックの登録解除後にsynchronize_rcu()を呼び出します。すでにこのフローテーブルを参照しているフックが登録されている可能性があり、このフローテーブルがパケットパスおよびnfnetlink_hook制御プレーンに露出する可能性があるためです。このエラーパスは稀に発生し、最大数のフックに達するか、ハードウェアオフロードの設定に失敗した場合にのみ起こります。この場合、単にsynchronize_rcu()を呼び出します。異なるフローテーブルによってすでに使用されているデバイスフックをチェックする箇所があり、この段階でEEXISTが発生する可能性があります。フックパーサはこのチェックをもっと早い段階で実行するよう更新でき、このエラーパスが実際には稀にしか発生しなくなります。KASANによってフックをダンプする際のnfnetlink_hook経路におけるuse-after-freeが報告され、発見されました。
出典:JVN(Japan Vulnerability Notes・独立行政法人情報処理推進機構(IPA)/JPCERT コーディネーションセンター/jvn.jp)を加工して作成。 全文検索は当サイト収録分(全289,735件)を対象とし、発表日の新しい順に表示しています。 本情報の最新性・正確性・完全性は保証されません。詳細は各 JVN 詳細ページをご確認ください。 なお本情報は製品・ソフトウェアの脆弱性に関するものであり、特定の法人・製品ベンダの評価や信用性を示すものではありません。