製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける競合状態に関する脆弱性
Title LinuxのLinux Kernelにおける競合状態に関する脆弱性
Summary

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()を保持しています。

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

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

Publication Date March 25, 2026, midnight
Registration Date April 27, 2026, 10:53 a.m.
Last Update April 27, 2026, 10:53 a.m.
CVSS3.0 : 重要
Score 7.8
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Affected System
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
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年04月27日]
  掲載
April 27, 2026, 10:53 a.m.

NVD Vulnerability Information
CVE-2026-23393
Summary

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
on ccm_rx_dwork before freeing. However, br_cfm_frame_rx() runs in
softirq context under rcu_read_lock (without RTNL) and can re-schedule
ccm_rx_dwork via ccm_rx_timer_start() between cancel_delayed_work_sync()
returning and kfree_rcu() being called.

The following is a simple race scenario:

cpu0 cpu1

mep_delete_implementation()
cancel_delayed_work_sync(ccm_rx_dwork);
br_cfm_frame_rx()
// peer_mep still in hlist
if (peer_mep->ccm_defect)
ccm_rx_timer_start()
queue_delayed_work(ccm_rx_dwork)
hlist_del_rcu(&peer_mep->head);
kfree_rcu(peer_mep, rcu);
ccm_rx_work_expired()
// on freed peer_mep

To prevent this, cancel_delayed_work_sync() is replaced with
disable_delayed_work_sync() in both peer MEP deletion paths, so
that subsequent queue_delayed_work() calls from br_cfm_frame_rx()
are silently rejected.

The cc_peer_disable() helper retains cancel_delayed_work_sync()
because it is also used for the CC enable/disable toggle path where
the work must remain re-schedulable.

Summary

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()
cancel_delayed_work_sync(ccm_rx_dwork);
br_cfm_frame_rx()
// peer_mep todavía en hlist
if (peer_mep->ccm_defect)
ccm_rx_timer_start()
queue_delayed_work(ccm_rx_dwork)
hlist_del_rcu(&peer_mep->head);
kfree_rcu(peer_mep, rcu);
ccm_rx_work_expired()
// en peer_mep liberado

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.

Publication Date March 25, 2026, 8:16 p.m.
Registration Date April 27, 2026, 12:19 p.m.
Last Update April 25, 2026, 3:39 a.m.
Affected software configurations
Configuration1 or higher or less more than less than
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:*:*:*:*:*:*
Related information, measures and tools
Common Vulnerabilities List