[하루한줄] CVE-2021-20226: 리눅스 커널의 UAF 취약점

URL

CVE-2021–20226 a reference counting bug which leads to local privilege escalation in io_uring.

Target

io_uring in Linux kernel 5.6

Explain

Linux kernel 비동기 I/O 메커니즘인 io_uring에서 발생하는 Use-after-free 취약점에 대한 새로운 write-up이 공개되었습니다. File structure를 worker 스레드가 사용할 메모리로 옮기는 과정에서 reference 카운터를 늘리지 않고 file descriptor table을 공유하면 취약점이 발생합니다.

Worker 스레드는 file_struct 구조체에 대한 reference를 찾기 위해 함수 fdget()를 사용합니다. 하지만 fdget()는 file_struct에 대한 reference counter가 1일 때 이를 증가시키지 않으므로 fdget()에 의해 얻은 파일은 이미 닫히고 해제되어 있을 수도 있습니다.

이미 닫히고 해제된 파일에 접근해 작업한다는 것은 Use-after-free 취약점으로 해커는 이를 악용해 로컬 시스템에 서비스 거부 공격을 할 수 있습니다.