【活用ガイド】

JVNDB-2026-031749

LinuxのLinux KernelにおけるNULL ポインタデリファレンスに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。ovpn: tcp - ovpn_tcp_close()内でキャッシュされたpeerポインターを使用します。ovpn_tcp_close()はrcu_read_lock()の下でrcu_dereference_sk_user_data()を使いovpn_socketを読み込み、sock->peerの参照を取得し、peerポインターをローカル変数にキャッシュした後、読み取りロックを解除します。その後、キャッシュされたローカル変数ではなくsock->peerをovpn_peer_del()に渡し、RCU読み取りセクション終了後にovpn_socketを再参照しています。同じ「RCU下で読み込み、ロック解除後に使用する」というパターンを用いていますが、ovpn_tcp_sendmsg()は関数全体でlock_sock()による保護がある一方、ovpn_tcp_close()はソケットロックなしで動作します。inet_release()はlock_sockを取得せずにsk_prot->close()を呼び出します。したがって、ovpn_socket_release()はovpn_tcp_close()がrcu_read_lock()を解除した後、sock->peerを再参照する前にkref_put -> detach -> synchronize_rcu -> kfree(sock)のシーケンスを並行して完了させることが可能です。ovpn_socket_release()内のsynchronize_rcu()はRCU読み取りセクション内でポインターを使用するリーダーを保護しますが、そのポインターをローカル変数に逃して後で使用する場合には保護しません。再現手順はコミット94560267d6c4("ovpn: tcp - tcp_close()後にNULLのsk_socketメンバーをデリファレンスしない")のパターンに従います。ユーザースペースがTCPファイルディスクリプタを閉じる瞬間にピア削除(キープアライブ期限切れやnetlinkのOVPN_CMD_DEL_PEER)をトリガーします。このコミットでは同じレースウィンドウのdetach側が修正されており、今回の修正は異なる対象であるclose側を修正します。エントリーブロックを厳密にし、sock->peerを1回だけキャッシュされたpeerローカル変数に読み込んで、その後のすべての使用(ホールドチェック、ovpn_peer_del()呼び出し、prot->close()呼び出し)をそのローカル変数を経由して行うようにします。sock->peerはovpn_socket_new()内でlock_sock()中に一度だけ書き込まれ、rcu_assign_sk_user_data()でovpn_socketが公開された後は再代入されませんが、以前の複数回読込のパターンではこの不変条件が暗黙的でした。同じ複数回読込パターンはovpn_tcp_recvmsg()、ovpn_tcp_sendmsg()、ovpn_tcp_data_ready()、ovpn_tcp_write_space()にも存在します。これらは後続のnet-nextシリーズの専用ヘルパーによってクリーンアップされます。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 8.4 (重要) [その他]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 不要
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): 高
  • 完全性への影響(I): 高
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 6.16 以上 6.18.34 未満
  • Linux Kernel 6.19 以上 7.0.11 未満
  • Linux Kernel 7.1

想定される影響

・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。
・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。
・当該ソフトウェアが完全に停止する可能性があります。
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

  1. NULL ポインタデリファレンス(CWE-476) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-64045
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-64045
  2. 関連文書 : https://git.kernel.org/stable/c/d3ef441907fca7c340979e577a3db3bb634bf166
  3. 関連文書 : ovpn: tcp - use cached peer pointer in ovpn_tcp_close() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/e5460eb7238c19d651a9b22b2378b587033a4095)
  4. 関連文書 : ovpn: tcp - use cached peer pointer in ovpn_tcp_close() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/775d8d7ad02aa345e1588424a6a8b9ae49fb9012)
更新履歴

  • [2026年09月03日]
      掲載