【活用ガイド】

JVNDB-2026-016726

LinuxのLinux Kernelにおける到達可能なアサーションに関する脆弱性

概要

Linuxカーネルにおいて、次の脆弱性が修正されました:ipv6のip6_datagram_send_ctl()におけるオーバーフローを回避する問題です。イーミン・チアン氏より報告されました。IPv6のsendmsg補助データパスにてローカルでトリガ可能なカーネルバグが発見されました。これによりskb_under_panic()を介してカーネルパニックが発生し(ローカルDoS)、システムが停止します。根本原因は16ビット長のアキュムレータ(struct ipv6_txoptions::opt_flen、型__u16)と最後の宛先オプションヘッダーを指すポインタ(opt-dst1opt)との不整合にあります。複数のIPV6_DSTOPTS制御メッセージ(cmsg)が渡された際にこの問題が発生します。include/net/ipv6.hにおいてstruct ipv6_txoptions::opt_flenは__u16型であり、ラップの可能性があります(291-307行、特に298行)。net/ipv6/datagram.cのip6_datagram_send_ctl()関数では繰り返されるIPV6_DSTOPTSを受け入れopt_flenを加算しますが、重複は排除されません(909-933行)。net/ipv6/ip6_output.cの__ip6_append_data()関数はopt-opt_flen+opt-opt_nflenでヘッダーサイズやヘッドルームを計算しています(1448-1466行、特に1463-1465行)。__ip6_make_skb()はopt-opt_flenが非ゼロの場合にipv6_push_frag_opts()を呼び出します(1930-1934行)。ipv6_push_frag_opts()やipv6_push_exthdr()はdst1optに基づくipv6_optlen(opt-dst1opt)でプッシュサイズを決定しています(1179-1185行および1206-1211行)。問題点は次の通りです。1. opt_flenは16ビットのアキュムレータであること(include/net/ipv6.hの298行で定義)。2. ip6_datagram_send_ctl()は繰り返しのIPV6_DSTOPTS cmsgを受け入れ、毎回opt_flenを加算していますが、重複排除措置がありません(net/ipv6/datagram.cの909-933行)。大量の大きなIPV6_DSTOPTS cmsgを提供するとopt_flenはラップしますが、dst1optは依然として大きな(2048バイトの)宛先オプションヘッダーを指し続けます。PoC(poc.c)では32個のhdrlen=255のcmsg(長さ2048バイト)と1個のhdrlen=0のcmsg(長さ8バイト)を送り、合計65544バイト加算してopt_flenは16ビットのため8にラップし、一方でdst1optは2048バイトの最後のcmsgを指します。3. 送信パスはラップしたopt_flenに基づきヘッダーサイズを計算するため(net/ipv6/ip6_output.cの1463-1465行)、実際にプッシュされる長さを過小評価します。4. skbを構築するときはdst1optの長さに基づいてプッシュされるため、opt_flenのラップは制限になりません(net/ipv6/ip6_output.cの1930-1934行、net/ipv6/exthdrs.cの1179-1185および1206-1211行)。ヘッドルームが不足してskb_push()がアンダーフローするとskb_under_panic()を引き起こしBUG()となり、それによりカーネルパニックが発生します。IPV6_DSTOPTS cmsg経路は対象のネットワーク名前空間にCAP_NET_RAW権限を要求します。ルートまたはCAP_NET_RAW権限を持つ任意のプロセスがこの脆弱性を発動可能であり、ユーザー名前空間が有効な場合は権限のないuid=1000のユーザでも名前空間CAP_NET_RAWを取得してトリガ可能です。影響はローカルDoSであり、カーネルのBUGパニックやクラッシュを引き起こします。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 2.6.14 以上 5.10.253 未満
  • Linux Kernel 5.11 以上 5.15.203 未満
  • Linux Kernel 5.16 以上 6.1.168 未満
  • Linux Kernel 6.13 以上 6.18.22 未満
  • Linux Kernel 6.19 以上 6.19.12 未満
  • Linux Kernel 6.2 以上 6.6.134 未満
  • Linux Kernel 6.7 以上 6.12.81 未満
  • Linux Kernel 7.0

想定される影響

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

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

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

  1. 到達可能なアサーション(CWE-617) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-31415
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-31415
  2. 関連文書 : ipv6: avoid overflows in ip6_datagram_send_ctl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/9ed81d692758dfb9471d7799b24bfa7a08224c31)
  3. 関連文書 : ipv6: avoid overflows in ip6_datagram_send_ctl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/2dbfb003bbf3fc0e94f07efefab0ebcf83029a2a)
  4. 関連文書 : ipv6: avoid overflows in ip6_datagram_send_ctl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/5e4ee5dbea134e9257f205e31a96040bed71e83f)
  5. 関連文書 : ipv6: avoid overflows in ip6_datagram_send_ctl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/4082f9984a694829153115d28c956a3534f52f29)
  6. 関連文書 : ipv6: avoid overflows in ip6_datagram_send_ctl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/4e453375561fc60820e6b9d8ebeb6b3ee177d42e)
  7. 関連文書 : ipv6: avoid overflows in ip6_datagram_send_ctl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/0bdaf54d3aaddfe8df29371260fa8d4939b4fd6f)
  8. 関連文書 : ipv6: avoid overflows in ip6_datagram_send_ctl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/63fda74885555e6bd1623b5d811feec998740ba4)
  9. 関連文書 : ipv6: avoid overflows in ip6_datagram_send_ctl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/872b74900d5daa37067ac676d9001bb929fc6a2a)
更新履歴

  • [2026年05月22日]
      掲載