OWN NEWS GATHER
← 戻る
cve

LinuxカーネルのTLS実装に脆弱性「CVE-2025-39682」が判明、受信リスト上のゼロ長レコード処理不備を修正

要点

  • Linuxカーネル内部のTLS(通信暗号化技術)実装において、受信リスト(rx_list)上のゼロ長レコード処理に関する脆弱性「CVE-2025-39682」が公表された。

  • TLSレコードの復号およびキューイング処理において、特定の境界条件下で発生する例外パターンのチェック漏れが原因となっている。

  • 深刻度を示すCVSS v3.1基本値は、CVE採番機関のkernel.orgが9.8(緊急)、米NISTが7.1(高)と評価している。

  • 開発コミュニティによってすでに複数の修正パッチが公開されており、関連ベンダーからのアドバイザリも提示されている。

  • 2026年9月16日、米国立標準技術研究所(NIST)が管理する脆弱性データベース「NVD」において、Linuxカーネルを対象とした脆弱性情報「CVE-2025-39682」が公開された。

  • 本脆弱性は、Linuxカーネル内部で動作するTLS(Transport Layer Security:インターネット通信を暗号化して保護するプロトコル)の受信処理において、例外的な条件チェックが不適切であったことに起因するものである。すでにLinuxカーネルの開発リポジトリにおいて複数の修正パッチがコミットされており、不具合の解消が図られている。

発見された問題の概要とTLS処理の仕組み

今回報告されたCVE-2025-39682は、LinuxカーネルのインカーネルTLS受信処理における「rx_list(受信リスト)」と呼ばれるキュー構造の制御不備に関する脆弱性である。

Linuxカーネル内でTLS通信を処理する際、アプリケーションがネットワークからデータを受け取るために呼び出す「recvmsg()(ソケットからメッセージを受信するシステムコール)」には明確な処理規則が存在する。recvmsg()の1回の呼び出しにおいて処理できる対象は、「任意の数の連続したDATA(データ)レコード」または「1つだけのnon-DATA(非データ)レコード」のいずれか一方に限られる。

もし処理の途中で次に現れたレコードが、それまでに処理していたものと異なるタイプであった場合、カーネルはメインの処理ループを中断して抜け出す設計となっている。さらに、TLS 1.3のように復号を実行するまでレコードの種別が特定できないケースでは、すでに復号済みの保留レコードを一時的に「rx_list」へとキューイングし、次回以降のrecvmsg()呼び出し時にそこから取り出して順次処理を継続する仕組みが採用されていた。

ゼロコピー復号と「ゼロ長レコード」の見落とし

この処理フローにおいて、特に「ゼロコピー復号」との兼ね合いで実装上の盲点が存在していた。ゼロコピー復号とは、カーネル内の中継バッファを経由せず、ユーザー空間が指定したバッファ領域へ直接復号して書き込む高速化手法である。

ゼロコピー復号を実行した場合、復号結果は直接ユーザー空間のメモリへと展開されるため、カーネル内にはキューイング対象となる「skb(struct sk_buff:パケットやメタデータを管理するカーネル内データ構造体)」が存在しなくなる。このとき内部のポインタ(darg.skb)は、暗号文側のメタデータ(データ長など)を参照するために残されているに過ぎない。

カーネルの設計上、ゼロコピー復号が許可されるのは通常のDATAレコードのみであり、非データレコードを処理した直後には必ず処理ループを抜ける構成となっていた。そのため、開発上の前提として「ゼロコピー復号を実行した後に、実はレコードタイプが途中で変化していたと後から判明するような事態は発生しない」と考えられていた。

しかし、最初のレコードがrx_listから取得され、かつそのレコードの長さが「0(ゼロ長)」であった場合に、この前提が崩れるコーナーケース(極端な境界条件)が存在していたことが判明した。この例外的なパターンのハンドリングが欠落していたため、意図しない状態遷移や不適切な条件判定が引き起こされる恐れがあったという。

CVSSスコアの評価と組織間の差異

本脆弱性に対する深刻度の評価については、脆弱性を登録・分析した組織間でCVSS(Common Vulnerability Scoring System:脆弱性の深刻度を共通基準で数値化する指標)のスコアに差異が生じている。

Linuxカーネルの公式採番機関であるkernel.org(CNA:CVE番号の採番組織)による評価では、CVSS v3.1のベーススコアが「9.8(CRITICAL / 緊急)」と算出されている。この評価ベクター(CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)によれば、ネットワーク経由(AV:N)で攻撃が可能であり、事前の特権(PR:N)やユーザー操作(UI:N)を必要とせず、機密性・完全性・可用性のすべてに重大な影響(C:H/I:H/A:H)を及ぼし得ると分類されている。

一方で、米NIST(NVD)が算出したベーススコアは「7.1(HIGH / 高)」となっている。NVDの評価ベクター(CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H)では、攻撃元がローカル環境(AV:L)に限定され、低い権限(PR:L)が必要とされる一方、機密性と可用性に大きな影響を与えるものの完全性への影響はない(I:N)と分析されている。

現在、NVDの専門チームによって本脆弱性のエンリッチメント(関連リンク、CVSS、CWE、CPE適用性ステートメントなどのデータ紐付け)が進められており、追加の分析作業が継続されている。

修正パッチの適用と関連アドバイザリ

本脆弱性の修正に向けて、Linuxカーネルの公式Gitリポジトリ(git.kernel.org)上では複数のパッチコミットが公開されている。

公開されたコミットには「2902c3ebcca52ca845c03182000e8d71d3a5196f」「29c0ce3c8cdb6dc5d61139c937f34cb888a6f42e」「3439c15ae91a517cf3c650ea15a8987699416ad9」「62708b9452f8eb77513115b17c4f8d1a22ebf843」などが含まれており、安定版ツリーへのバックポートを含めた修正が順次適用されている。

また、シーメンス(Siemens)も自社製品に関連するセキュリティアドバイザリ(ssa-032379)を公開しており、Linuxカーネルを利用する各環境において対応が進められている。

元URL