CVE-2026-46242
eventpoll: ep_remove struct eventpoll / struct file UAF 수정
- 게시됨
- 2026. 5. 30.
- 업데이트됨
- 2026. 8. 5.
- CNA 할당 중
- Linux
- 증거 관찰됨
- 2026. 8. 8.
기본 CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H낮음 · 다음 30일
- 백분위수
- 87.4%
- 모델 날짜
- 2026. 9. 21.
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
요약
Linux 커널에서 다음 취약점이 해결되었습니다: eventpoll: ep_remove struct eventpoll / struct file UAF 수정 ep_remove() (ep_remove_file() 경유)는 file->f_lock 아래에서 file->f_ep를 지웠지만, 이후 임계 구역 내부에서 @file을 계속 사용했습니다 (is_file_epoll(), hlist_del_rcu()를 통한 head, spin_unlock). 그 창에서 eventpoll_release() 고속 경로를 취한 동시적 __fput()이 일시적인 NULL을 관찰하고, eventpoll_release_file()을 건너뛴 후 f_op->release / file_free()로 진행했습니다. epoll이 epoll을 감시하는 경우, f_op->release는 ep_eventpoll_release() -> ep_clear_and_put() -> ep_free()이며, 이는 감시 대상 struct eventpoll을 kfree()합니다. 그 안에 내장된 ->refs hlist_head는 정확히 epi->fllink.pprev가 가리키는 위치이므로, 이후 hlist_del_rcu()의 "*pprev = next"는 해제된 kmalloc-192 메모리에 기록됩니다. 또한 struct file은 SLAB_TYPESAFE_BY_RCU이므로, ep_remove()가 여전히 해당 잠금 내부에 있는 동안 @file을 뒷받침하는 슬롯이 alloc_empty_file()에 의해 재활용되어 f_lock과 f_ep를 다시 초기화할 수 있습니다. 결과적으로 공격자가 제어할 수 있는 kmem_cache_free()가 잘못된 slab cache에 대해 발생합니다. ep_remove()의 상단에서 epi_fget()을 통해 @file을 고정(pin)하고, 고정 성공 여부에 따라 임계 구역을 제어합니다. 고정이 유지되는 동안 @file은 refcount 0에 도달할 수 없으며, 이는 __fput()을 지연시키고 결과적으로 감시 대상 struct eventpoll이 hlist_del_rcu()와 f_lock 사용 전반에 걸쳐 유지되도록 하여 두 UAF를 모두 차단합니다. 고정이 실패하면 @file은 이미 refcount 0에 도달했으며 해당 __fput()이 진행 중입니다. f_ep를 지우기 전에 중단했기 때문에 해당 경로는 eventpoll_release()의 느린 경로를 통해 eventpoll_release_file()로 진입하여, 대기 측의 ep_clear_and_put()이 해제할 때까지 ep->mtx에서 차단됩니다. 중단된 epi의 ep->refcount 몫은 그대로 유지되므로, ep_clear_and_put()의 마지막 ep_refcount_dec_and_test()가 eventpoll_release_file() 아래에서 eventpoll을 해제할 수 없습니다. 이후 고아가 된 epi는 거기서 정리됩니다. 고정 성공은 또한 이 epi에 대해 eventpoll_release_file()과 경쟁하지 않음을 증명하므로, 이제 중복된 f_lock 아래의 epi->dying 재확인을 제거합니다. 저비용의 무잠금 READ_ONCE(epi->dying) 고속 경로 탈출은 유지됩니다.
소스
5- bad-epoll익스플로잇
CVE-2026-46242에 대한 Linux 커널 권한 상승 익스플로잇으로, epoll의 경쟁 조건(race-condition) use-after-free 취약점을 악용하며 데스크톱, 서버 및 Android 기기에서 99% 신뢰도로 root 권한을 획득합니다.
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.