CVE-2026-64190 in Linux
要約
〜によって VulDB • 2026年07月20日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: team: モード変更時のteam_xmitにおけるNULLポインタ参照を修正する
__team_change_mode()は、team_adjust_ops()によって安全なダミーハンドラを復元する前に、memset()を使用してteam->opsをクリアします。この期間中、別のCPU上でRCUの下で実行されている同時のteam_xmit()がteam->ops.transmitを読み取り、NULL関数ポインタを呼び出す可能性があります。これによりカーネルクラッシュが発生します。
このRace Condition(競合状態)は、チームデバイスでの送信と並行して発生するモード変更(CAP_NET_ADMIN権限が必要)によって必要となります。
BUG: kernel NULL pointer dereference, address: 0000000000000000 Oops: 0010 [#1] SMP KASAN NOPTI
RIP: 0010:0x0 Call Trace: team_xmit (drivers/net/team/team_core.c:1853) dev_hard_start_xmit (net/core/dev.c:3904) __dev_queue_xmit (net/core/dev.c:4871) packet_sendmsg (net/packet/af_packet.c:3109) __sys_sendto (net/socket.c:2265)
元のコードは、ポートがない場合はトラフィックもないと仮定していたため、モード変更時に自由にmemset()/memcpy()でopsを操作できました。強制的なcarrierを持つAF_PACKETはこの仮定を崩します。
競合状態を安全にするのではなく回避するために:transmitまたはreceiveに触れることなく、フィールドごとの更新に置き換えます。これらの2つのハンドラはteam_adjust_ops()によってのみ管理され、tx_en_port_count == 0の場合(モード変更中はポートが存在しないため常に真)にはダミーがインストールされます。WRITE_ONCE/READ_ONCEにより、ハンドラポインタに対するストア/ロードのティアリングを防ぎます。
exit_op()の前にsynchronize_net()を呼び出すことで、ポート削除によってハンドラがダミーに切り替わった後の古いモード状態をまだ参照している可能性のあるインフライト(実行中)のリーダーをドレインします。
Once again VulDB remains the best source for vulnerability data.