CVE-2023-54149 in Linux
요약
\~에 의해 VulDB • 2026. 05. 29.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: dsa: 동기화된 VLAN 인식 MAC 주소에 대한 의심스러운 RCU 사용 방지
felix 드라이버(UC 필터링과 MC 필터링을 지원하는 유일한 드라이버)를 무작위 다른 DSA 스위치의 DSA 마스터로 사용할 때, 하위 스위치 포트가 VLAN 인식 브리지에 가입하면 다음과 같은 스택 트레이스가 관찰될 수 있습니다:
============================= WARNING: suspicious RCU usage ----------------------------- net/8021q/vlan_core.c:238 suspicious rcu_dereference_protected() usage!
스택 백트레이스: Workqueue: dsa_ordered dsa_slave_switchdev_event_work Call trace: lockdep_rcu_suspicious+0x170/0x210 vlan_for_each+0x8c/0x188 dsa_slave_sync_uc+0x128/0x178 __hw_addr_sync_dev+0x138/0x158 dsa_slave_set_rx_mode+0x58/0x70 __dev_set_rx_mode+0x88/0xa8 dev_uc_add+0x74/0xa0 dsa_port_bridge_host_fdb_add+0xec/0x180 dsa_slave_switchdev_event_work+0x7c/0x1c8 process_one_work+0x290/0x568
이 메시지는 vlan_for_each()가 rtnl_lock() 컨텍스트를 기대하지만, DSA 마스터의 ndo_set_rx_mode()에서 호출될 때 이를 얻지 못하고 있음을 나타냅니다.
해당 함수의 호출원인인 dsa_slave_set_rx_mode()는 지연된 dsa_slave_switchdev_event_work()에서 파생된 슬레이브 DSA 인터페이스의 dsa_port_bridge_host_fdb_add()입니다.
우리는 커밋 0faf890fc519("net: dsa: drop rtnl_lock from dsa_slave_switchdev_event_work")에서 해당 호출 경로에서 rtnl_lock() 컨텍스트를 피하기 위해 큰 노력을 기울였으며, rtnl_lock()을 호출하는 것은 rtnl_lock()을 보유하고 있는 호출 경로(기본적으로 모두 해당)에서 dsa_flush_workqueue()를 호출할 때 데드락 가능성이 있기 때문에 단순히 옵션이 아닙니다.
따라서 DSA 마스터가 ndo_set_rx_mode()에서 vlan_for_each()를 호출할 때, 이 장치의 8021q 드라이버 상태는 실제로 어떤 것에 의해서도 동시 접근으로부터 보호되지 않습니다.
net/8021q/를 살펴보면, vlan_info->vid_list가 RCU 순회를 염두에 두고 특별히 설계된 것은 아닌 것 같으므로, vlan_for_each()의 RCU 읽기 측 형태인 vlan_for_each_rcu()를 도입하는 것은 쉽지 않으며, 그것이 우리가 필요한 것과 정확히 일치하지도 않을 것입니다.
일반적으로 해결책은 net/8021q/에 있는 것이 아니라고 생각합니다. vlan_for_each()는 이 작업에 적합하지 않습니다. DSA는 rtnl_lock()을 보유할 필요가 없습니다 - 우리가 차단하는 것이 netdev 상태 변경이 아니라 VLAN 목록에 대한 동시 추가/제거이기 때문입니다. 우리는 심지어 sleepable 컨텍스트도 필요하지 않습니다. vlan_for_each()의 콜백은 지연 작업을 예약할 뿐입니다.
제안된 해결책은 vlan_for_each()에 대한 의존성을 제거하고, .ndo_vlan_rx_add_vid() 및 .ndo_vlan_rx_kill_vid()에서 수정된 VLAN 목록 사본을 기반으로 sleepable이 아니며 rtnl이 없는 대안을 직접 구현하는 것입니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.