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 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/05/06 |
| 登録日 | 2026/05/13 |
| 最終更新日 | 2026/05/13 |



