CVE-2024-26837 in Linux情報

要約

〜によって VulDB • 2026年06月02日

Linuxカーネルにおいて、以下の脆弱性が修正されました。

net: bridge: switchdev: オフロード時の遅延イベントのMDBリプレイをスキップする

この変更以前は、リプレイするMDBイベントのリストを生成する処理が、IGMP/MLDスヌーピングロジックまたはユーザー設定から新しいグループメンバーシップが作成される処理と競合状態(race condition)を引き起こしていました。

新しいメンバーシップはbr->mdb_listを走査するプロセスからは即座に可視化されますが、switchdevイベント購読者に対するその存在の通知は、後で遅延されます。したがって、リプレイリストがそのような時間的窓と重なるタイミングで生成された場合、まだ配信されていないイベントのリプレイも含まれることになります。

その結果、ドライバはブリッジが内部的に1つのイベントと見なしていたものの2つのコピーを受信することになります。ブリッジの破棄時には、メンバーシップ削除イベントが1回だけ送信されるため、メンバーシップを参照カウントで管理するドライバ(少なくともDSA)では、ブリッジが破棄された際にハードウェアデータベース内に孤児化したグループが残ってしまうという結果になりました。

これは追加イベントのリプレイ時のみ問題となります。削除イベントは遅延キューに保留されている場合もありますが、それらはすでにbr->mdb_listから削除されているため、このシナリオでは重複は生成されません。

ユーザーにとって、これは以前ポートが接続されていたブリッジからの古いグループメンバーシップが、そのポートが新しいブリッジに参加した際に、新しいブリッジの認識なしに(ハードウェア上で)復活することを意味しました。

例えば、mv88e6xxxシステムにおいて、スヌーピング有効のブリッジを作成し、すぐにポートを追加します。

root@infix-06-0b-00:~$ ip link add dev br0 up type bridge mcast_snooping 1 && \ > ip link set dev x3 up master br0

そして、ブリッジを破棄します。

root@infix-06-0b-00:~$ ip link del dev br0 root@infix-06-0b-00:~$ mvls atu ADDRESS FID STATE Q F 0 1 2 3 4 5 6 7 8 9 a DEV:0 Marvell 88E6393X 33:33:00:00:00:6a 1 static - - 0 . . . . . . . . . . 33:33:ff:87:e4:3f 1 static - - 0 . . . . . . . . . . ff:ff:ff:ff:ff:ff 1 static - - 0 1 2 3 4 5 6 7 8 9 a root@infix-06-0b-00:~$

2つのIPv6グループは、ポート(x3)がまだ接続されているため、ポート0(CPU)にのみ転送されるようにハードウェアデータベースに残ります。

そして、同じポート(または同じハードウェアドメインに属する別のポート)を、スヌーピング無効の新しいブリッジに追加します。

root@infix-06-0b-00:~$ ip link add dev br1 up type bridge mcast_snooping 0 && \ > ip link set dev x3 up master br1

br1の方針に従い、すべてのマルチキャスト(br0からの2つのIPv6グループを含む)がフラッディングされるはずですが、代わりに古いメンバーシップがハードウェアデータベースでまだ有効なため、スイッチはCPU(ポート0)へのグループ向けトラフィックの転送を制限したままになります。

この競合状態を2つのステップで解消します。

1. リプレイリストを生成する際に、MDBの書き込み側ロックを取得する。

これにより、リプレイリストを生成している間に新しいメンバーシップが発生するのを防ぎます。しかし、ロックを取得する前に遅延イベントが生成され、まだ配信されていないシナリオは残ります。したがって:

2. リプレイ追加を行う際、リプレイリストに追加する前に、そのリプレイイベントの遅延バージョンがすでにswitchdevの遅延キューにエンキューされていないことを確認する。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

予約する

2024年02月19日

モデレーション

承諾済み

エントリ

VDB-261219

EPSS

0.00166

アクティビティ

非常低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!