【活用ガイド】

JVNDB-2026-015186

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

概要

Linuxカーネルにおいて、以下の脆弱性が解決されました。net: GSOフレームの送信(xmit)エラーを適切に処理するようになりました。現在、udpgro_frglist.shとudpgro_bench.shはNIPAで最も不安定なテストであり、両方とも同じ方法で失敗します。また、TCP GROテストは時々停止し、約10分後にテストが終了します。これらのテストはvethを使用してGROをシミュレートし、単純な(「return XDP_PASS;」)XDPプログラムをvethにアタッチしてTSOをオフにし、NAPIをオンにしています。障害モードを調査した結果、接続はパケットドロップの連続後に完全に停止していることが判明しました。送信者のsnd_nxtはシーケンス番号Nですが、受信者はN + 3 * MSSまで受信したと主張しています。問題の最後の部分では、送信者の再送キューが空でなく(キューのブロックはシーケンス番号N - 4 * MSSにあると仮定)、送信者はこの状態で再送キューから単一セグメント(シーケンス番号N-4*MSSからN-3*MSS)を再送します。受信者はそれを受け入れてACKをN + 3 * MSSまで返しますが、送信者はこれをTCP_ACK_UNSENT_DATAとして拒否します。なぜなら、その範囲までデータを送信した記憶がないからです。そして、システムは停止します。根本原因はxmitの戻り値コードの混乱にあります。vethはフレームを送信できない場合にエラーを返しますが、これにより損失イベントが発生します。図ではGSOスーパーフレームの各セグメントのうち1番目と8番目のパケットがvethで失われています。vethはこのテストでTSOを無効にしているため個々のセグメントを見ており、セグメント1は再送キューにあり再送されます。ではなぜ送信者は8番目のセグメントまで送信しているにもかかわらずsnd_nxtを進めないのでしょうか。tcp_write_xmit()はコアからの戻り値をデータが送信されていないと解釈しているからです。TCPはGSOスーパーフレーム単位で処理しているため、単一セグメントの損失を全体の損失と見なしてしまうことが問題の核心です。TCPはGSOフレームの最後のセグメントの戻り値コードのみを参照します。この問題の発生にはQdiscがない環境やデバイスが必要です。通常、Qdiscはプロトコル層をデバイスエラーから切り離しています。修正方法はいくつかあります。1) vethがパケットを失ってもエラーを返さないようにする方法。過去にこの方法を試みましたが問題は繰り返し発生し、デバッグが困難でした。2) 戻り値コードを修正する方法。ドキュメントではNETDEV_TX_OKとNETDEV_TX_BUSYのみが言及されているため、ndo_start_xmit()の戻り値をbooleanにするのが良いかもしれません。ただし古い非ネットワークプロトコルに影響が出る可能性があります。3) TCPがエラーを無視する方法。ip_queue_xmit()の結果をTCPが解釈する利点は不明であり、接続確立後のデータ送信中はパケット損失を単なる損失として扱うべきかもしれません。4) 今回の修正方法。QdiscがなくかつGSOケースで戻り値を無視し、TCQ_F_CAN_BYPASSの場合は常にOKを返しますが、QdiscなしではGSOエラーのみをマスクします。この方法はCANやMCTPなどの非IPネットワークにも影響を及ぼすため古い環境での後退が懸念されます。これが最も単純である反面、最もハッキング的な修正かもしれません。似た修正は以前Ericにより提案されましたが、報告者がアウトオブツリーのドライバを使用しフィードバックがなかったため採用されませんでした(詳細は参照してください)。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 3.18 以上 5.10.252 未満
  • Linux Kernel 5.11 以上 5.15.202 未満
  • Linux Kernel 5.16 以上 6.1.165 未満
  • Linux Kernel 6.13 以上 6.18.16 未満
  • Linux Kernel 6.19 以上 6.19.6 未満
  • Linux Kernel 6.2 以上 6.6.128 未満
  • Linux Kernel 6.7 以上 6.12.75 未満
  • Linux Kernel 7.0

想定される影響

当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
また、当該ソフトウェアが扱う情報について、書き換えは発生しません。
さらに、当該ソフトウェアが完全に停止する可能性があります。
そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。
対策

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

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

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

  1. CVE-2026-43194
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-43194
  2. 関連文書 : net: consume xmit errors of GSO frames - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/ea5d7787635e26ec1194ec7eec0e8e5ae3bd10a5)
  3. 関連文書 : net: consume xmit errors of GSO frames - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/4cb163e9efcac4cd35c3043e097f25081a5c015c)
  4. 関連文書 : net: consume xmit errors of GSO frames - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/9ac6aebef4b4bfc5ed408b0b65645981574bc780)
  5. 関連文書 : net: consume xmit errors of GSO frames - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/56bd32c0edca34041a5c215887fcf562fae2e2db)
  6. 関連文書 : net: consume xmit errors of GSO frames - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/7aa767d0d3d04e50ae94e770db7db8197f666970)
  7. 関連文書 : net: consume xmit errors of GSO frames - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/0c9de092ef8c50a7ee9612811566f0aa81d8d7b6)
  8. 関連文書 : net: consume xmit errors of GSO frames - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/ae3f627b45fbc3c776a4e484696f3cad7cbb4eca)
  9. 関連文書 : net: consume xmit errors of GSO frames - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/c86901d22c89a6bf4e2f013e948aaabc60869893)
更新履歴

  • [2026年05月13日]
      掲載