【活用ガイド】

JVNDB-2026-028252

LinuxのLinux Kernelにおける不特定の脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました:phonet/pepに関するものです。転送されたsk_receive_skb()の周囲でBHが無効化される問題があります。ネットワークの受信パスは通常softirqコンテキストで実行されますが、ソケットロックを取得するプロトコルの場合、パケットがバックログに蓄積され、後でプロセスコンテキストから処理されることがあります。その際、release_sock() -> __release_sock()はspin_unlock_bh()でslockを解放し、その後BHが有効な状態でsk->sk_backlog_rcv()を呼び出します。一般的なsk_backlog_rcvハンドラは、バックログを消費しているソケットを処理するため、エントリ時のBH状態は彼らが操作するslockに関しては無関係です。しかしpep_do_rcv()は異なります。受信したskbが既存のPEPパイプをターゲットにしている場合、skbはsk_receive_skb()経由で異なる子ソケットに転送されます。このヘルパーはbh_lock_sock_nested()(spin_lock_nested()に相当し、BHが既に無効であることを前提)で子ソケットのslockを取得します。したがって、同じ子ソケットのslockはBHが有効なパス(プロセスパス)とBHが無効なパス(softirqパス)の両方で取得されてしまいます。 プロセスコンテキスト        softirqコンテキスト----------------------        ----------------------release_sock(listener)        __netif_receive_skb()__release_sock()           phonet_rcv()spin_unlock_bh()           __sk_receive_skb(listener)[BHはここで有効]          [BHは既に無効]sk_backlog_rcv:           sk_backlog_rcv:pep_do_rcv()             pep_do_rcv()sk_receive_skb(child)         sk_receive_skb(child)bh_lock_sock_nested(child)       bh_lock_sock_nested(child)=> SOFTIRQ-ON-W           => IN-SOFTIRQ-WLockdepはこれを不整合なロック状態として検知し、同じCPU上でsoftirqが同じ子ソケットに対し、BH有効パスでslockが保持されている状態で受信しようとすると、実際のセルフデッドロックが発生します。 警告: ロック状態の不整合不整合な{SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W}の使用。(slock-AF_PHONET/1){+.?.}-{3:3}, 場所: __sk_receive_skb+0x1cf/0x900 __sk_receive_skb net/core/sock.c:563 sk_receive_skb include/net/sock.h:2022 [インライン] pep_do_rcv net/phonet/pep.c:675 sk_backlog_rcv include/net/sock.h:1190 __release_sock net/core/sock.c:3216 release_sock net/core/sock.c:3815 pep_sock_accept net/phonet/pep.c:879転送されたsk_receive_skb()をlocal_bh_disable()/local_bh_enable()で囲み、子ソケットのslockが常にBH無効状態で取得されるようにしました。local_bh_disable()はsoftirqパスで安全にネストできます。この問題は社内のsyzkallerファジングにより発見され、同じ根本原因がlinux-6.1.yのsyzbotダッシュボード(extid 44f0626dd6284f02663c)にも存在しました。KASAN + LOCKDEP + PROVE_LOCKING環境下で再現可能で、再現コードは以下のURLで確認できます: https://pastebin.com/A3t8xzCR
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 2.6.28 以上 5.10.258 未満
  • Linux Kernel 5.11 以上 5.15.209 未満
  • Linux Kernel 5.16 以上 6.1.175 未満
  • Linux Kernel 6.13 以上 6.18.34 未満
  • Linux Kernel 6.19 以上 7.0.11 未満
  • Linux Kernel 6.2 以上 6.6.142 未満
  • Linux Kernel 6.7 以上 6.12.92 未満
  • Linux Kernel 7.1

想定される影響

・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
・当該ソフトウェアが扱う情報について、書き換えは発生しません。
・当該ソフトウェアが完全に停止する可能性があります。
対策

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

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

  1. 情報不足(CWE-noinfo) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-64177
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-64177
  2. 関連文書 : phonet/pep: disable BH around forwarded sk_receive_skb() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/f08c45076e4fd8b0adbc5eb186d6e6a3e7350d7b)
  3. 関連文書 : phonet/pep: disable BH around forwarded sk_receive_skb() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/8420aa4900417797323dd567ba9d1512280c2dc3)
  4. 関連文書 : phonet/pep: disable BH around forwarded sk_receive_skb() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/b2606c302d7f2b4ee48da05e32ed60aed1b0cd53)
  5. 関連文書 : phonet/pep: disable BH around forwarded sk_receive_skb() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/84bc87beb4cd77670939b446326788e4c9b3db37)
  6. 関連文書 : phonet/pep: disable BH around forwarded sk_receive_skb() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/a3fc8f2dacd1c37325977fc1fbbf3d52141df99e)
  7. 関連文書 : phonet/pep: disable BH around forwarded sk_receive_skb() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/02c04df84de709060f63e1d52ec67488c4f6f212)
  8. 関連文書 : phonet/pep: disable BH around forwarded sk_receive_skb() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/bd795f106b3889fb0706c6e4831c4b27e2b5666b)
  9. 関連文書 : phonet/pep: disable BH around forwarded sk_receive_skb() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/dbc81608e3a653dea6cf403f20cae35468b8ab9c)
更新履歴

  • [2026年08月17日]
      掲載