CVE-2026-68191 in Linux
요약
\~에 의해 VulDB • 2026. 08. 11.
리눅스 커널에서 다음 취약점이 해결되었습니다:
wifi: ath12k: rhashtable destroy 중 NULL 포인터 역참조 수정
ath12k 드라이버를 언바인딩(unbinding)할 때, `rhashtable_destroy()`에서 호출되는 `irq_work_sync()` 내에서 커널의 NULL 포인터 역참조가 발생합니다.
다음 두 개의 해시 테이블이 영향을 받습니다: 1. ath12k_base 내의 ath12k_link_sta 해시 테이블 2. ath12k_dp 내의 ath12k_dp_link_peer 해시 테이블
이 문제는 destroy 함수들이 cleanup 경로에서 조건 없이 호출되지만, 해당 해시 테이블들은 각각의 init 함수 내에서 나중에 초기화되기 때문에 발생합니다. 장치가 완전히 시작되지 않았거나 해시 테이블을 초기화하기 전에 init 함수가 실패한 경우 포인터는 NULL 상태가 됩니다. MSI 주소 지정 초기화가 항상 실패하므로 이 문제는 VM에서 항상 재현 가능합니다.
ath12k_link_sta_rhash_tbl_destroy에 대한 호출 추적(Call trace): RIP: irq_work_sync+0x1e/0x70 rhashtable_destroy+0x12/0x60 ath12k_link_sta_rhash_tbl_destroy+0x19/0x40 [ath12k]
ath12k_core_stop+0xe/0x80 [ath12k]
ath12k_core_hw_group_cleanup+0x6b/0xb0 [ath12k]
ath12k_pci_remove+0x60/0x110 [ath12k]
ath12k_dp_link_peer_rhash_tbl_destroy에 대한 호출 추적(Call trace): RIP: irq_work_sync+0x1e/0x70 rhashtable_destroy+0x12/0x60 ath12k_dp_link_peer_rhash_tbl_destroy+0x29/0x50 [ath12k]
ath12k_dp_cmn_device_deinit+0x21/0x140 [ath12k]
ath12k_core_hw_group_cleanup+0x6b/0xb0 [ath12k]
ath12k_pci_remove+0x60/0x110 [ath12k]
두 destroy 함수 모두에서 `rhashtable_destroy()`를 호출하기 전에 NULL 체크를 추가하여 이 문제를 해결합니다.
NULL 체크 방식이 선택된 이유는 rhashtable 포인터가 초기화 상태 표시자로 사용되기 때문입니다. init은 여러 지점에서 실패할 수 있으며, 이로 인해 일부 구성 요소들이 초기화되지 않은 상태로 남을 수 있습니다. 별도의 동기화가 필요한 상태 플래그를 추가하는 것보다 포인터 자체를 확인하는 것이 더 간단합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.