| 概要 | In the Linux kernel, the following vulnerability has been resolved: bridge: cfm: Fix race condition in peer_mep deletion When a peer MEP is being deleted, cancel_delayed_work_sync() is called The following is a simple race scenario: cpu0 cpu1 mep_delete_implementation() To prevent this, cancel_delayed_work_sync() is replaced with The cc_peer_disable() helper retains cancel_delayed_work_sync() |
|---|---|
| 概要 | En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: bridge: cfm: Corrección de condición de carrera en la eliminación de peer_mep Cuando se está eliminando un MEP par, se llama a cancel_delayed_work_sync() en ccm_rx_dwork antes de la liberación. Sin embargo, br_cfm_frame_rx() se ejecuta en contexto de softirq bajo rcu_read_lock (sin RTNL) y puede reprogramar ccm_rx_dwork a través de ccm_rx_timer_start() entre el retorno de cancel_delayed_work_sync() y la llamada a kfree_rcu(). El siguiente es un escenario de condición de carrera simple: cpu0 cpu1 mep_delete_implementation() Para evitar esto, cancel_delayed_work_sync() se reemplaza por disable_delayed_work_sync() en ambas rutas de eliminación de MEP par, de modo que las llamadas posteriores a queue_delayed_work() desde br_cfm_frame_rx() sean rechazadas silenciosamente. La función auxiliar cc_peer_disable() mantiene cancel_delayed_work_sync() porque también se utiliza para la ruta de alternancia de habilitación/deshabilitación de CC donde el trabajo debe permanecer reprogramable. |
| 公表日 | 2026年3月25日20:16 |
| 登録日 | 2026年4月27日12:19 |
| 最終更新日 | 2026年4月25日3:39 |
| CVSS3.1 : HIGH | |
| スコア | 7.8 |
|---|---|
| ベクター | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 攻撃元区分(AV) | ローカル |
| 攻撃条件の複雑さ(AC) | 低 |
| 攻撃に必要な特権レベル(PR) | 低 |
| 利用者の関与(UI) | 不要 |
| 影響の想定範囲(S) | 変更なし |
| 機密性への影響(C) | 高 |
| 完全性への影響(I) | 高 |
| 可用性への影響(A) | 高 |
| 構成1 | 以上 | 以下 | より上 | 未満 | |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11.1 | 6.12.78 | |||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 | 6.18.20 | |||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 | 6.19.10 | |||
| cpe:2.3:o:linux:linux_kernel:5.11:-:*:*:*:*:*:* | |||||
| 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:*:*:*:*:*:* | |||||
| タイトル | LinuxのLinux Kernelにおける競合状態に関する脆弱性 |
|---|---|
| 概要 | Linuxカーネルにおいて、以下の脆弱性が修正されました。bridge: cfm: peer_mep削除時の競合状態を修正しました。peer MEPが削除される際、解放前にcancel_delayed_work_sync()がccm_rx_dworkに対して呼び出されます。しかし、br_cfm_frame_rx()はsoftirqコンテキスト下でrcu_read_lock(RTNLなし)で動作し、cancel_delayed_work_sync()の戻りとkfree_rcu()の呼び出しの間にccm_rx_timer_start()を通じてccm_rx_dworkを再スケジュールすることがあります。単純な競合シナリオは以下の通りです。cpu0ではmep_delete_implementation()内でcancel_delayed_work_sync(ccm_rx_dwork)が呼ばれ、その間にcpu1のbr_cfm_frame_rx()がpeer_mepがまだhlistに存在する状態でpeer_mep-ccm_defectをチェックし、ccm_rx_timer_start()を呼び、queue_delayed_work(ccm_rx_dwork)を実行します。その後cpu0はhlist_del_rcu(&peer_mep-head)とkfree_rcu(peer_mep, rcu)を実行し、cpu1のccm_rx_work_expired()は既に解放されたpeer_mepにアクセスしてしまいます。これを防ぐため、cancel_delayed_work_sync()はpeer MEP削除の両パスでdisable_delayed_work_sync()に置き換えられました。また、br_cfm_frame_rx()からの後続のqueue_delayed_work()呼び出しは黙って拒否されるようになりました。cc_peer_disable()ヘルパーは、CCの有効/無効切り替えパスで再スケジュール可能な作業が必要なため、引き続きcancel_delayed_work_sync()を保持しています。 |
| 想定される影響 | 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| 対策 | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| 公表日 | 2026年3月25日0:00 |
| 登録日 | 2026年4月27日10:53 |
| 最終更新日 | 2026年4月27日10:53 |
| Linux |
| Linux Kernel 5.11 |
| Linux Kernel 5.11.1 以上 6.12.78 未満 |
| Linux Kernel 6.13 以上 6.18.20 未満 |
| Linux Kernel 6.19 以上 6.19.10 未満 |
| Linux Kernel 7.0 |
| No | 変更内容 | 変更日 |
|---|---|---|
| 1 | [2026年04月27日] 掲載 |
2026年4月27日10:53 |