CVE-2026-64251 in Linux
요약
\~에 의해 VulDB • 2026. 07. 24.
리눅스 커널에서 다음 취약점이 해결되었습니다:
pwrseq: core: pwrseq_debugfs_seq_next()에서의 use-after-free 수정
pwrseq_debugfs_seq_next()는 '__free(put_device)'로 'next'를 선언하므로, 변수가 스코프 밖으로 나가면 반환된 포인터에 대해 put_device()가 호출됩니다. 이로 인해 참조 카운트가 이미 감소한 포인터가 seq_file 프레임워크에서 수신되므로 use-after-free가 발생합니다.
__free(put_device)를 단순히 제거하면 UAF는 해결되지만, bus_find_next_device()로 획득된 참조가 누수됩니다. 이는 stop()이 up_read(&pwrseq_sem)만 호출하고 장치 참조를 해제하지 않기 때문입니다.
이를 모든 seq_file 콜백에서 참조 카운팅을 일관되게 맞추어 PCI 및 SCSI에서 사용되는 표준 패턴과 일치시킴으로써 수정합니다:
- start(): get_device()를 사용하여 참조된 포인터를 반환하도록 합니다. - next(): 이전 장치의 참조를 해제하기 위해 명시적으로 put_device(curr)를 호출합니다 (NULL 체크는 필요 없음 - seq_file 프레임워크는 이전 반환값이 NULL이 아닌 경우에만 next()를 호출함). - stop(): 마지막으로 반복된 장치의 참조를 해제하기 위해 put_device(data)를 호출하며, start()가 NULL을 반환하거나 next()가 시퀀스 끝에 도달했을 때 stop()이 NULL로 호출될 수 있으므로 NULL 가드를 사용합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.