LinuxのLinux Kernelにおける型の取り違えに関する脆弱性
タイトル LinuxのLinux Kernelにおける型の取り違えに関する脆弱性
概要

Linuxカーネルにおいて、teamにおける非イーサネットポートに対するheader_opsタイプ混同の脆弱性が修正されました。コミット950803f72547("bonding: fix type confusion in bond_setup_by_slave()")と同様に、teamにも同種のheader_opsタイプ混同が存在していました。非イーサネットポートの場合、team_setup_by_port()はport_dev-header_opsを直接コピーします。teamデバイスが後にdev_hard_header()やdev_parse_header()を呼び出すと、これらのコールバックは本来の下位デバイスではなくteamのnet_device上で実行されるため、netdev_priv(dev)が誤ったプライベートタイプとして解釈され、クラッシュが発生する可能性がありました。syzbotのレポートはbond_header_create()でのクラッシュを示していますが、その根本原因はteamにありました。トポロジはgre - bond - teamであり、teamは継承されたheader_opsを下位デバイスではなく自身のnet_device上で呼び出します。そのため、bond_header_create()はteamデバイスを受け取り、netdev_priv()をbondingのプライベートデータとして誤認し、タイプ混同によるクラッシュを引き起こしていました。これを修正するために、createおよびparse用のteam header_opsラッパーを導入し、RCU下でteamポートを選択して下位デバイスのコールバックをport-devで呼び出し、各コールバックが常に正しいnet_deviceコンテキストを参照するようにしました。また、選択された下位デバイスを下位のparseコールバックに渡すことで、非イーサネット積層トポロジにおける再帰を制限し、parseコールバックが常に正しいデバイスコンテキストで実行されるようにしています。

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

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

公表日 2026年4月22日0:00
登録日 2026年4月30日12:15
最終更新日 2026年4月30日12:15
CVSS3.0 : 重要
スコア 7.8
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
影響を受けるシステム
Linux
Linux Kernel 3.7
Linux Kernel 3.7.1 以上 6.12.80 未満
Linux Kernel 6.13 以上 6.18.21 未満
Linux Kernel 6.19 以上 6.19.11 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年04月30日]
  掲載
2026年4月30日12:15

NVD脆弱性情報
CVE-2026-31502
概要

In the Linux kernel, the following vulnerability has been resolved:

team: fix header_ops type confusion with non-Ethernet ports

Similar to commit 950803f72547 ("bonding: fix type confusion in
bond_setup_by_slave()") team has the same class of header_ops type
confusion.

For non-Ethernet ports, team_setup_by_port() copies port_dev->header_ops
directly. When the team device later calls dev_hard_header() or
dev_parse_header(), these callbacks can run with the team net_device
instead of the real lower device, so netdev_priv(dev) is interpreted as
the wrong private type and can crash.

The syzbot report shows a crash in bond_header_create(), but the root
cause is in team: the topology is gre -> bond -> team, and team calls
the inherited header_ops with its own net_device instead of the lower
device, so bond_header_create() receives a team device and interprets
netdev_priv() as bonding private data, causing a type confusion crash.

Fix this by introducing team header_ops wrappers for create/parse,
selecting a team port under RCU, and calling the lower device callbacks
with port->dev, so each callback always sees the correct net_device
context.

Also pass the selected lower device to the lower parse callback, so
recursion is bounded in stacked non-Ethernet topologies and parse
callbacks always run with the correct device context.

公表日 2026年4月22日23:16
登録日 2026年4月25日4:05
最終更新日 2026年4月28日23:47
影響を受けるソフトウェアの構成
構成1 以上 以下 より上 未満
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 3.7.1 6.12.80
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 6.18.21
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 6.19.11
cpe:2.3:o:linux:linux_kernel:3.7:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*
関連情報、対策とツール
共通脆弱性一覧