CVE-2026-98014 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 25.

리눅스 커널에서 다음 취약점이 해결되었습니다:

net/mlx5: E-Switch, vport 비활성화 중 mc_list 재채우기 방지

mlx5_esw_vport_disable() 함수 내에서 esw_apply_vport_rx_mode()를 esw_vport_change_handle_locked() 앞에 배치하여 변경 핸들러가 이를 관찰하기 전에 vport->allmulti_rule이 NULL이 되도록 합니다.

FW 치명적 복구(FW-fatal recovery) 중 비활성화는 dev->state == INTERNAL_ERROR 상태에서 실행됩니다. esw_update_vport_rx_mode() 내부의 promisc 쿼리가 실패하고 조기에 반환되어, vport->allmulti_rule이 그대로 유지됩니다. 이로 인해 esw_update_vport_mc_promisc()가 실행되고 vport->mc_list에 MLX5_ACTION_ADD 항목이 추가되며, 해당 흐름 규칙(flow rules)은 이후 esw_add_mc_addr()를 통해 FDB에 설치됩니다. 그러나 esw_destroy_legacy_table()는 이러한 참조(refs)가 여전히 유지된 상태에서 FDB를 해제하여 서브트리를 손상시키고 vport->mc_list 내에 덩글링 포인터(dangling flow_rule pointers)를 남깁니다.

`echo 1 > /sys/bus/pci/devices//reset`에서의 두 단계 실패:

refcount_t: underflow; use-after-free. tree_put_node+0xef/0x110 [mlx5_core]
clean_tree+0x44/0xd0 [mlx5_core] (x5)
mlx5_fs_core_cleanup+0x57/0x1c0 [mlx5_core]
mlx5_unload+0x65/0xd0 [mlx5_core]
... mlx5_health_try_recover

BUG: unable to handle page fault for address: 0000000003000055 down_write+0x1c/0x60 mlx5_del_flow_rules+0x33/0x1f0 [mlx5_core]
esw_del_mc_addr+0x7b/0x170 [mlx5_core]
esw_apply_vport_addr_list+0x56/0xf0 [mlx5_core]
esw_vport_change_handle_locked+0x28b/0x310 [mlx5_core]
mlx5_esw_vport_enable+0x270/0x4a0 [mlx5_core]
... mlx5_load ... mlx5_health_try_recover

esw_apply_vport_rx_mode(false, false)는 FW 삭제가 실패하더라도 로컬 상태 머신을 통해 vport->allmulti_rule을 지웁니다. 규칙이 NULL이 되면 변경 핸들러 내의 !IS_ERR_OR_NULL(allmulti_rule) 가드가 닫히며, 비활성화 중에는 규칙이 설치되지 않고 리로드(clean mc_list로 시작됨)가 진행됩니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

출처

Might our Artificial Intelligence support you?

Check our Alexa App!