JVNDB-2026-028065 | |
LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました:vsock/vmciにおける、ハンドシェイク中にピアが接続をリセットした際に発生するUse-After-Free(UAF)問題の修正です。vmci_transport_recv_connecting_server()はデフォルトのswitch文のアームで、ピアのRSTを受け取るとerr = 0を返していました: err = pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST ? 0 : -EINVAL;これにより、vmci_transport_recv_listen()はvsock_remove_pending()をスキップし、待機中のソケットがリスナーのpending_linksにsk_state = TCP_CLOSEのまま残されてしまっていました。一方、destroy処理ではschedule_delayed_work()実行前に取得した明示的な参照が破棄されていました。1秒後、vsock_pending_work()はis_pending=trueを検出し、完全なクリーンアップを実行しました。具体的には、vsock_remove_pending()および続く2回のsock_put(sk)呼び出しです。最初の呼び出しで参照カウントは0になりソケットは__sk_freedされましたが、2回目の呼び出しは解放済みオブジェクトに書き込みを行いました。その結果、BUGが発生しました:KASANによるslab-use-after-freeエラー refcount_warn_saturate の中で4バイトの書き込みがタスクkworkerによって行われ、Workqueue eventsのvsock_pending_workで問題が生じたのです。この問題を解決するため、ピアのRSTは他の予期しないパケットタイプと同様に扱うように変更されました(err = -EINVALとしました)。すべてのdestroyアームはerr < 0を返すため、vmci_transport_recv_listen()はpending_linksから待機中のソケットを同期的に削除し、vsock_pending_work()はis_pending=falseかつ!rejectedの分岐を通って自身の作業参照のみを破棄します。これにより、Sashiko氏がv2で報告したマルチパケットの競合状態も解消しました。待機リストからの削除が行われてから次のパケットが検出されるためです。また、Sashiko氏が指摘したvmci_transport_recv_listen()のerr < 0パスにおける既存のsk_acceptq_removed()のギャップは、このパッチによって新たに導入・変更されたものではありません。テストはlts-6.12.79上でKASANを有効にして実施され、修正前には100回中52回発生していた問題が、修正後は100回中0回になりました。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 8.8 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/19 |
| 登録日 | 2026/08/13 |
| 最終更新日 | 2026/08/13 |



