CVE-2026-23368 in Linux
요약
\~에 의해 VulDB • 2026. 06. 06.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: phy: AB-BA 교착 상태(deadlock)를 피하기 위해 probe 단계에서 phy led_triggers를 등록합니다.
LEDS_TRIGGER_NETDEV과 LED_TRIGGER_PHY가 모두 활성화되어 있을 때 AB-BA 교착 상태가 발생합니다:
[ 1362.049207] [<8054e4b8>] led_trigger_register+0x5c/0x1fc <-- "triggers_list_lock" 잠금을 down_write(&triggers_list_lock);를 통해 획득 시도 중
[ 1362.054536] [<80662830>] phy_led_triggers_register+0xd0/0x234
[ 1362.060329] [<8065e200>] phy_attach_direct+0x33c/0x40c
[ 1362.065489] [<80651fc4>] phylink_fwnode_phy_connect+0x15c/0x23c
[ 1362.071480] [<8066ee18>] mtk_open+0x7c/0xba0
[ 1362.075849] [<806d714c>] __dev_open+0x280/0x2b0
[ 1362.080384] [<806d7668>] __dev_change_flags+0x244/0x24c
[ 1362.085598] [<806d7698>] dev_change_flags+0x28/0x78
[ 1362.090528] [<807150e4>] dev_ioctl+0x4c0/0x654 <-- rtnl_lock(); 호출을 통해 "rtnl_mutex" 잠금 보유 중
[ 1362.094985] [<80694360>] sock_ioctl+0x2f4/0x4e0
[ 1362.099567] [<802e9c4c>] sys_ioctl+0x32c/0xd8c
[ 1362.104022] [<80014504>] syscall_common+0x34/0x58
여기서 LED_TRIGGER_PHY는 RTNL을 보유하는 동안 phy_attach 중에 LED 트리거를 등록한 후 triggers_list_lock을 획득합니다.
[ 1362.191107] [<8054e4b8>] led_trigger_register+0x5c/0x1fc <-- "triggers_list_lock" 잠금을 down_write(&triggers_list_lock);를 통해 획득 시도 중
[ 1362.196636] [<80662830>] phy_led_triggers_register+0xd0/0x234
[ 1362.202550] [<8065e200>] phy_attach_direct+0x33c/0x40c
[ 1362.207710] [<80651fc4>] phylink_fwnode_phy_connect+0x15c/0x23c
[ 1362.213701] [<8066ee18>] mtk_open+0x7c/0xba0
[ 1362.218150] [<806d714c>] __dev_open+0x280/0x2b0
[ 1362.222685] [<806d7668>] __dev_change_flags+0x244/0x24c
[ 1362.227899] [<806d7698>] dev_change_flags+0x28/0x78
[ 1362.232829] [<807150e4>] dev_ioctl+0x4c0/0x654 <-- rtnl_lock(); 호출을 통해 "rtnl_mutex" 잠금 보유 중
[ 1362.237284] [<80694360>] sock_ioctl+0x2f4/0x4e0
[ 1362.241765] [<802e9c4c>] sys_ioctl+0x32c/0xd8c
[ 1362.245799] [<80014504>] syscall_common+0x34/0x58
반대로 LEDS_TRIGGER_NETDEV은 triggers_list_lock을 먼저 획득한 후 RTNL을 획득합니다. 고전적인 AB-BA 교착 상태입니다.
phy_led_triggers_register()는 RTNL이 필요하지 않으며, 보호가 필요한 네트워크 스택으로의 호출을 수행하지 않습니다. 또한 PHY가 MAC에 연결될 필요가 없으며, 트리거는 phydev 상태만 사용합니다. 이를 통해 phy_led_triggers_register() 호출을 다른 위치로 이동할 수 있습니다. PHY probe() 및 release()는 RTNL을 보유하지 않으므로 AB-BA 교착 상태를 해결할 수 있습니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.