Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
bad-epoll — CVE-2026-46242에 대한 Linux 커널 권한 상승 익스플로잇으로, epoll의 경쟁 조건(race-condition) use-after-free 취약점을 악용하며 데스크톱, 서버 및 Android 기기에서 99% 신뢰도로 root 권한을 획득합니다. | Kitploit
도구/GitHubGitHub/j-jaeyoung/bad-epoll
Android SecurityPrivilege EscalationVulnerability AnalysisExploitationCTFLearning & EducationBinary Exploitation
GitHubj-jaeyoung/bad-epoll

bad-epoll

CVE-2026-46242에 대한 Linux 커널 권한 상승 익스플로잇으로, epoll의 경쟁 조건(race-condition) use-after-free 취약점을 악용하며 데스크톱, 서버 및 Android 기기에서 99% 신뢰도로 root 권한을 획득합니다.

저장소 보기
506441개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Bad Epoll: Mythos가 놓친 버그

Bad Epoll exploit running: an unprivileged process escalating to root

권한이 없는 프로세스가 Google kernelCTF에서 root로 권한을 상승시키는 모습.

Bad Epoll(CVE-2026-46242)은 Linux 커널의 epoll 서브시스템에서 발생하는 레이스 컨디션 use-after-free 취약점입니다. 이 버그는 권한이 없는 프로세스가 Linux 데스크톱과 서버뿐만 아니라 Android 기기에서도 root가 될 수 있게 합니다.

Bad Epoll은 Jaeyoung Chung이 Google kernelCTF에 0-day로 제보하고 익스플로잇한 것으로, Linux 커널 익스플로잇에 대해 $71,337+의 보상금이 걸려 있습니다.

[!NOTE] Anthropic의 AI인 Mythos는 동일한 epoll 코드에서 또 다른 레이스 버그를 발견했지만 Bad Epoll은 놓쳤습니다.


왜 심각한가

  1. Android를 root로 만들 수 있는 희귀한 버그. 대부분의 Linux 권한 상승 버그는 Android를 전혀 root로 만들 수 없습니다. 예를 들어 Copy Fail과 그 변종들은 Android가 결코 로드하지 않는 모듈이 필요합니다. Google kernelCTF에서 익스플로잇된 약 130개의 취약점 중 Android를 root로 만들 수 있는 후보는 약 10개에 불과합니다. Bad Epoll은 그중 하나입니다.

    • Bad Epoll은 거의 모든 다른 커널 버그를 차단하는 Chrome 렌더러 샌드박스 내부에서도 트리거할 수 있습니다. 따라서 렌더러 익스플로잇은 Bad Epoll과 체인되어 커널 코드 실행을 달성할 수 있으며, 이는 Project Zero가 "From Chrome renderer code exec to kernel with MSG_OOB"에서 입증한 것과 동일한 영향입니다.
  2. 킬 스위치가 없음. Copy Fail과 그 변종들은 취약한 모듈을 언로드하여 무력화할 수 있지만, epoll에는 그러한 옵션이 없습니다. epoll은 운영 체제, 네트워크 서비스, 브라우저가 모두 의존하는 핵심 커널 기능입니다. 이를 해결하는 유일한 방법은 패치를 적용하는 것입니다.

  3. 레이스 윈도우가 아주 작지만, 공격은 99% 신뢰할 수 있음. 이 버그의 레이스 윈도우는 폭이 약 6개의 명령어에 불과하며, 일반적인 시도로는 거의 맞히지 못합니다. 이 익스플로잇은 그 윈도우를 넓히고 커널을 크래시시키지 않는 재시도 루프를 실행합니다. 그 결과 아래의 공격 개요에서 설명하는 것처럼 99% 신뢰할 수 있는 익스플로잇이 됩니다.


Mythos가 놓친 버그

2023년의 단일 커밋이 epoll 코드(전체 약 2,500줄)에 두 개의 별도 레이스 컨디션을 도입했습니다. 둘 다 권한 상승으로 이어질 수 있는 치명적인 버그로 판명되었습니다.

첫 번째는 Anthropic의 Mythos가 발견하여 CVE-2026-43074로 보고했습니다. 커널 레이스 버그는 찾기 어렵기로 유명하기 때문에, 그 결과만으로도 인상적입니다. 이는 프론티어 AI 모델이 레이스 버그를 찾는 능력을 보여주었습니다. 이후 독립 연구자가 kernelCTF에 1-day 익스플로잇을 제출했습니다.

다른 레이스는 Mythos가 놓친 Bad Epoll입니다. Mythos가 이 작은 epoll 코드 경로에서 첫 번째 버그를 찾았다는 점을 고려하면, 같은 영역을 상당한 깊이로 조사했을 가능성이 높습니다. Mythos가 Bad Epoll을 정확히 왜 놓쳤는지는 알 수 없지만, 두 가지 요인이 발견을 어렵게 만들었을 가능성이 높습니다.

  • 레이스 윈도우가 아주 작습니다. 폭이 약 6개의 명령어에 불과하므로, 취약한 코드를 직접 보더라도 정확한 스레드 인터리빙을 상상하기 어렵습니다.

  • 런타임 증거가 거의 없었습니다. CVE-2026-43074가 수정된 후, Bad Epoll의 use-after-free는 일반적으로 커널의 주요 메모리 오류 탐지기인 KASAN을 트리거하지 않습니다. 그러한 신호가 없으면 Mythos가 이를 실제 버그로 보고할 만한 충분한 확신을 갖지 못했을 수 있습니다.

Bad Epoll은 수정하기도 어려웠습니다. 메인테이너들의 첫 패치는 문제를 완전히 해결하지 못했고, 올바른 패치는 버그가 처음 보고된 지 두 달이 지나서야 적용되었습니다. 보안 문제를 보통 긴급하게 처리하는 커널로서는 긴 시간입니다.

전반적으로 Bad Epoll은 레이스 컨디션이 모든 단계에서 얼마나 어려운지 보여줍니다. 이는 프론티어 모델에게도 찾기 어렵고, 올바르게 수정하기도 어려우며, 다음 섹션에서 보여주듯 안정적으로 익스플로잇하기도 어렵습니다. 또한 프론티어 AI 모델이 존재하는 환경에서 계속 탐구할 가치가 있는 취약점 연구 방향을 시사합니다: 좁은 타이밍 조건과 약한 증거 뒤에 숨은 실제 보안 영향을 발굴하는 것입니다.


공격이 작동하는 방식

궁금한 분들을 위한 공격의 높은 수준의 개요입니다.

ep_waiter watches ep_target: the epoll structures behind the bug

서로 연결된 두 개의 epoll 객체. 둘을 동시에 닫으면 레이스가 트리거됩니다.

epoll의 두 닫기(close) 경로가 동시에 실행되어 충돌합니다. 하나가 객체를 해제하는 동안 다른 하나가 여전히 그 객체에 쓰고 있으며, 이것이 use-after-free(UAF)입니다.

The close-vs-close race window and how the exploit drives it through a timer interrupt

레이스 윈도우와 익스플로잇이 이를 구동하는 방식.

익스플로잇은 두 쌍으로 그룹화된 4개의 epoll 객체를 사용합니다. 한 쌍은 레이스를 트리거하고, 다른 쌍은 희생자가 됩니다. 여기서부터 익스플로잇은 8바이트 UAF 쓰기를 파일 객체에 대한 UAF로 바꾸고, 크로스 캐시 공격을 사용하여 파일의 내용을 완전히 제어합니다.

Arbitrary kernel read: a dangling struct file backed by a pipe leaks kernel addresses through /proc/self/fdinfo

버그를 /proc/self/fdinfo를 통한 임의 커널 메모리 읽기로 전환.

이러한 제어를 바탕으로 익스플로잇은 /proc/self/fdinfo를 통해 커널 메모리에 대한 임의 읽기를 획득합니다. 마지막으로 제어 흐름을 가로채고 ROP 체인을 실행하여 root 셸을 획득합니다.

자세한 내용은 전체 익스플로잇 writeup 및 코드에서 확인할 수 있습니다.


완화 방법

epoll은 비활성화할 수 없기 때문에 Bad Epoll에는 간단한 해결 방법이 없습니다. 유일한 해결책은 패치를 적용하는 것입니다.

  • 업스트림 커밋 a6dc643c6931을 적용하거나, 배포판의 백포트가 제공되면 이를 적용하십시오.

영향을 받는 버전

Bad Epoll은 58c9b016e128 (2023-04-08)에 도입되었고 a6dc643c6931 (2026-04-24)에 수정되었습니다.

많은 Linux 배포판이 v6.4 이상 기반 커널을 사용하고 수정을 아직 백포트하지 않았다면 영향을 받을 수 있습니다. 배포판의 커널 보안 업데이트에서 위 수정 커밋의 백포트를 확인하십시오. 이 버그는 v6.4에서 도입되었으므로 이전 v6.1 기반 커널은 영향을 받지 않습니다.

현재 익스플로잇은 다음 Google kernelCTF 대상을 위해 작성되었습니다.

  • lts-6.12.67 (LTS), 99% 신뢰도
  • cos-121-18867.294.100 (COS), 98% 신뢰도

Android 익스플로잇은 아직 진행 중입니다.

  • Pixel 10 (커널 v6.6+): 현재 PoC는 UAF를 트리거하며 전체 root 익스플로잇이 진행 중입니다. 완성되면 Android 익스플로잇과 writeup을 공개할 예정입니다.
  • Pixel 8 및 기타 v6.1 기반 기기: 이 버그는 v6.4에서 도입되었으므로 영향을 받지 않습니다.

타임라인


FAQ

왜 "Bad Epoll"이라고 부르나요?

이 이름은 Android를 root로 만드는 커널 버그의 "Bad" 시리즈를 따르는 것으로, 이전 항목으로는 Bad Binder, Bad IO_uring, Bad Spin이 있습니다. Bad Epoll은 epoll 버전입니다.

기술적 세부 사항은 어디서 찾을 수 있나요?

이 페이지는 짧은 버전입니다. 전체 근본 원인 분석, 익스플로잇 writeup, 익스플로잇 코드는 다음 링크에서 확인할 수 있습니다.

  • 근본 원인 writeup
  • 익스플로잇 writeup
  • 익스플로잇 코드

크레딧

Bad Epoll은 Jaeyoung Chung이 보고하고 익스플로잇했습니다.

연구 그룹인 CompSec Lab, 특히 Eulgyu Kim, Woohyuk Choi, Dae R. Jeong 및 지도 교수이신 Byoungyoung Lee님께 지도와 지원에 대해 큰 감사를 드립니다.

도구 다운로드
날짜이벤트
2023-04-08버그가 epoll에 도입됨(커밋 58c9b016e128).
2026-02-17[email protected]에 버그를 보고함.
2026-02-17메인테이너가 패치 프로토타입을 제안했지만 올바른 수정이 아니었고 논의가 중단됨.
2026-04-02Mythos가 찾은 버그(CVE-2026-43074)에 대한 수정이 메인라인에 적용됨.
2026-04-22남은 문제를 다시 보고함.
2026-04-24이 버그에 대한 수정이 메인라인에 적용됨(커밋 a6dc643c6931).