CVE-2026-98562 in Linux
요약
\~에 의해 VulDB • 2026. 10. 18.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: libwx: Tx 타임스탬프 처리에서의 Race Condition 수정
wx->ptp_tx_skb는 Tx 경로, PTP 보조 워커 및 타임스탬프 정리 경로 간에 공유됩니다. WX_STATE_PTP_TX_IN_PROGRESS 비트는 여러 Tx 경로의 타임스탬프 요청 제출을 방지하지만, 워커와 정리 작업 간의 직렬화(serialization)는 수행하지 않습니다.
그 결과, wx_ptp_clear_tx_timestamp() 함수가 wx_ptp_tx_hwtstamp_work()에서 포인터를 획득한 후에 skb를 해제(free)할 수 있습니다. 이후 워커는 해지된 skb를 skb_tstamp_tx()에 전달하고 동일한 참조(reference)를 다시 릴리스(release)합니다.
정리 경로도 워커가 이전 skb를 처리하는 동안InProgress 비트를 지울 수 있습니다. 이로 인해 Tx 경로는 새로운 skb를 게시할 수 있으며, 워커는 이를 나중에 NULL로 덮어쓰게 되어 해당 참조가 누설(leaking)됩니다.
Tx 타임스탬프 skb의 게시 및 소비를 보호하기 위해 전용 spinlock을 추가합니다. 잠금을 유지한 상태에서 skb를 분리하고 in-progress 비트를 지운 후, 참조 카운트를 감소시킨 후에 타임스탬프를 전달하고 skb를 릴리스합니다. quiesce 경로에서도 동일한 잠금 기반 정리를 사용하되, 해당 위치에서는 레지스터 접근 없이 분리를 수행합니다: quiesce는 PCIe 오류 복구 중에 실행되며, 이 시점에는 MMIO가 신뢰할 수 없으며 이전에도 의도적으로 장치를 건드리지 않았습니다. netpoll이 hard 인터럽트가 이미 꺼진 상태에서 ndo_start_xmit()를 호출할 수 있으므로, 인터럽트를 비활성화한 상태로 잠금을 획득합니다.
Tx DMA 매핑 실패 처리 시, 잠금 하에서 skb를 비교하기까지 전송 경로 참조를 유지합니다. 이는 skb 주소 재사용으로 인해 오류 경로가 실패한 요청보다 새로운 타임스탬프 요청을 잘못 인식하는 것을 방지합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.