Bad Epoll (CVE-2026-46242)
요약
Linux 커널의 epoll 서브시스템에서 발견된 심각한 Use-After-Free(UAF) 취약점인 CVE-2026-46242(Bad Epoll)를 분석합니다. 이 취약점은 비권한 프로세스가 Android 및 Linux 서버에서 root 권한을 획득할 수 있게 하며, Anthropic의 AI Mythos조차 탐지하지 못한 매우 좁은 경쟁 조건(race condition)을 가지고 있습니다.
핵심 포인트
- Linux 및 Android 기기에서 root 권한 상승이 가능한 심각한 UAF 취약점
- 경쟁 창(race window)이 약 6개 명령어 수준으로 매우 좁아 탐지가 극도로 어려움
- Anthropic의 AI Mythos가 동일 코드 영역에서 다른 버그는 찾았으나 이를 놓침
- epoll은 핵심 커널 기능으로 비활성화가 불가능하며 패치 적용만이 유일한 해결책임
Linux 커널 epoll
서브시스템의 경쟁 조건 UAF 취약점으로, 비권한 프로세스가 Linux 데스크톱·서버뿐 아니라 Android 기기에서도 root 권한을 얻을 수 있음
이 취약점은 Jaeyoung Chung이 Google kernelCTF 에 0-day로 제출해 보고·익스플로잇했으며, kernelCTF는 Linux 커널 익스플로잇에 $71,337+ 보상을 제공함
Anthropic의 AI Mythos 는 같은 epoll
코드에서 다른 경쟁 조건 버그인 CVE-2026-43074를 찾았지만, Bad Epoll은 놓쳤음
epoll
은 운영체제, 네트워크 서비스, 브라우저가 의존하는 코어 커널 기능 이라 비활성화할 수 없고, 단순 우회책 없이 패치 적용만이 해결책임
취약점은 2023-04-08 커밋 58c9b016e128
에서 도입되고 2026-04-24 커밋 a6dc643c6931
로 수정됐으며, v6.4 이상 기반 커널 중 수정 백포트가 없는 배포판이 영향받을 수 있음
Bad Epoll의 성격과 심각도
Bad Epoll 은 Linux 커널 epoll
서브시스템의 경쟁 조건 use-after-free(UAF) 취약점이며, 식별자는 CVE-2026-46242 임
비권한 프로세스가 root 권한을 얻을 수 있으며, Linux 데스크톱·서버뿐 아니라 Android 기기 에도 영향을 줄 수 있음
Google kernelCTF 에 0-day로 제출됐고, Jaeyoung Chung이 보고 및 익스플로잇함
kernelCTF는 Linux 커널 익스플로잇에 $71,337+ 보상을 제공함
왜 위험한가
Android root 가능성 이 드문 Linux 권한 상승 버그임
많은 Linux 권한 상승 취약점은 Android가 로드하지 않는 모듈을 필요로 해 Android root로 이어지지 않음
Google kernelCTF에서 익스플로잇된 약 130개 취약점 중 Android root 후보는 약 10개이며, Bad Epoll이 그중 하나임
Chrome renderer sandbox 안에서도 트리거될 수 있음
이 샌드박스는 거의 모든 다른 커널 버그를 막음
renderer 익스플로잇과 Bad Epoll을 체인하면 Project Zero가 MSG_OOB
로 보인 사례와 같은 커널 코드 실행 영향에 이를 수 있음
epoll
에는 kill-switch 가 없음
Copy Fail 계열은 취약 모듈을 언로드해 무력화할 수 있음
epoll
은 운영체제, 네트워크 서비스, 브라우저가 의존하는 코어 기능이라 비활성화할 수 없음
해결 방법은 패치 적용뿐임
경쟁 창은 약 6개 명령어 수준으로 매우 작음
일반적인 시도는 거의 맞지 않음
익스플로잇은 경쟁 창을 넓히고 커널을 크래시하지 않는 재시도 루프를 실행함
결과적으로 kernelCTF 대상에서 99% 수준의 신뢰도를 보임
Mythos가 놓친 버그
2023년 단일 커밋 58c9b016e128
이 약 2,500줄 규모의 epoll
코드에 두 개의 별도 경쟁 조건을 도입함
Anthropic의 Mythos 는 그중 하나를 찾아 CVE-2026-43074 로 보고함
해당 결과는 커널 경쟁 조건 버그 탐지가 어렵다는 점에서 의미 있는 사례임
이후 독립 연구자가 이 취약점의 1-day 익스플로잇을 kernelCTF에 제출함
다른 경쟁 조건이 Bad Epoll 이며, Mythos는 이를 놓침
Mythos가 같은 작은 epoll
코드 경로에서 첫 번째 버그를 찾았기 때문에, 같은 영역을 의미 있게 조사했을 가능성이 있음
Bad Epoll을 놓친 정확한 이유는 알 수 없음
Bad Epoll 탐지가 어려웠을 수 있는 요인
경쟁 창 이 약 6개 명령어에 불과해, 취약 코드만 보고 정확한 스레드 인터리빙을 상상하기 어려움
CVE-2026-43074 수정 이후 Bad Epoll의 UAF는 보통 KASAN을 트리거하지 않음
KASAN 신호가 없으면 Mythos가 실제 버그로 보고할 충분한 확신을 갖지 못했을 수 있음
수정도 쉽지 않았음
유지보수자의 첫 패치는 문제를 완전히 고치지 못함
올바른 패치는 최초 보고 후 두 달 뒤에 mainline에 들어감
공격 흐름
두 개의 epoll
close 경로가 동시에 실행되며 충돌함
한 경로가 객체를 해제하는 동안 다른 경로가 그 객체에 계속 쓰면서 UAF 가 발생함
익스플로잇은 네 개의 epoll
객체를 두 쌍으로 구성함
한 쌍은 경쟁 조건을 트리거함
다른 한 쌍은 피해 객체가 됨
이후 8바이트 UAF write를 file 객체 UAF 로 전환함
cross-cache 공격으로 file 내용 전체를 제어함
제어권을 얻은 뒤 /proc/self/fdinfo
를 통해 임의 커널 메모리 읽기를 확보함
마지막 단계에서 제어 흐름을 하이재킹하고 ROP 체인 을 실행해 root shell을 얻음
상세 기술 자료
완화와 영향 버전
epoll
은 비활성화할 수 없어 간단한 우회책 이 없음
해결 방법은 upstream 커밋 a6dc643c6931
또는 배포판 백포트를 적용하는 것임
취약점 도입 및 수정 시점
도입: [58c9b016e128
], 2023-04-08
수정: [a6dc643c6931
], 2026-04-24
v6.4 이상 기반 커널을 쓰고 수정 백포트를 아직 적용하지 않은 Linux 배포판이 영향받을 수 있음
v6.1 기반 오래된 커널은 취약점이 v6.4에서 도입됐기 때문에 영향받지 않음
익스플로잇 대상과 Android 상태
현재 익스플로잇은 Google kernelCTF 대상에 맞춰 작성됨
lts-6.12.67
(LTS): 99% reliable
cos-121-18867.294.100
(COS): 98% reliable
Android 익스플로잇은 아직 진행 중임
Pixel 10, kernel v6.6+: 현재 PoC가 UAF를 트리거하며, 전체 root 익스플로잇이 진행 중임
Android 익스플로잇과 writeup은 완성 후 공개 예정임
Pixel 8 및 다른 v6.1 기반 기기는 취약점이 v6.4에서 도입됐기 때문에 영향받지 않음
타임라인
2023-04-08 : 커밋 58c9b016e128
로 epoll
에 버그가 도입됨
2026-02-17 : security@kernel.org에 버그를 보고함
2026-02-17 : 유지보수자가 패치 프로토타입을 제안했지만 올바른 수정이 아니었고 논의가 멈춤
2026-04-02 : Mythos가 찾은 CVE-2026-43074 수정이 mainline에 들어감
2026-04-22 : 남아 있는 문제를 다시 보고함
2026-04-24 : Bad Epoll 수정 커밋 a6dc643c6931
이 mainline에 들어감
이름과 참고 자료
Bad Epoll 이라는 이름은 Android root 가능 커널 버그의 “Bad” 시리즈를 따름
이 페이지는 짧은 버전이며, 전체 root-cause 분석과 익스플로잇 문서, 코드는 별도 링크로 제공됨
댓글과 토론
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기