CVE-2023-54019 in Linux
요약
\~에 의해 VulDB • 2026. 05. 31.
리눅스 커널에서 다음 취약점이 해결되었습니다:
sched/psi: PSI 트리거 폴링을 위해 kernfs 폴링 함수 사용
cgroup_file_release에서 psi 트리거를 삭제하면, 폴링 중인 프로세스가 있는 상태에서 cgroup이 제거될 때 UAF(Use-After-Free) 문제가 발생합니다. 이는 cgroup 제거가 실제 파일이 아직 살아있는 동안 cgroup_file_release를 호출하기 때문에 발생합니다. 이 시점에 트리거를 삭제하면 해당 waitqueue head도 삭제되는데, 해당 파일을 통해 waitqueue에 접근하는 폴링 중인 프로세스가 여전히 존재한다면 해제된 포인터를 참조하게 됩니다:
do_select vfs_poll do_rmdir cgroup_rmdir kernfs_drain_open_files cgroup_file_release cgroup_pressure_release psi_trigger_destroy wake_up_pollfree(&t->event_wait) // vfs_poll이 차단 해제됨 synchronize_rcu kfree(t) poll_freewait -> 트리거의 waitqueue head에 대한 UAF 접근
패치 [1]은 wake_up_pollfree()를 사용하여 epoll() 사례에 대해 이 문제를 해결했지만, 동기식 poll() 사례에도 동일한 문제가 존재합니다. 이 문제의 근본 원인은 psi 트리거의 waitqueue 수명 주기와 트리거와 관련된 파일의 수명 주기가 다르다는 것입니다. cgroup 전용 psi 트리거에 대한 폴링 시 kernfs_generic_poll 함수를 사용하여 이를 수정합니다. 이 함수는 내부적으로 kernfs_open_node->poll waitqueue head를 사용하며, 이는 파일의 수명 주기에 묶여 있습니다. 이로 인해 [1]의 수정 사항이 더 이상 필요 없게 되므로 이를 되돌립니다.
[1] 커밋 c2dbe32d5db5 ("sched/psi: Fix use-after-free in ep_remove_wait_queue()")
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.