Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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 권한을 획득합니다.

저장소 보기
50644348일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Bad Epoll: Mythos가 놓친 버그

Bad Epoll 익스플로잇 실행: 비특권 프로세스가 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+의 상금을 지급합니다. Bad Epoll 제보는 $92,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년의 단일 커밋이 전체 약 2,500줄에 불과한 epoll 코드에 두 개의 별개 경쟁 조건을 도입했습니다. 둘 다 권한 상승으로 이어질 수 있는 치명적인 버그로 밝혀졌습니다.

첫 번째는 Anthropic의 Mythos가 발견하여 CVE-2026-43074로 제보되었으며, 자세한 내용은 Anthropic의 공개 보고서, ANT-2026-CM0TCREP에 있습니다. 이 결과 자체만으로도 인상적인데, 커널 경쟁 조건 버그는 발견하기 어렵기로 알려져 있기 때문입니다. 이는 최전선 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 모델이 존재하는 상황에서도 여전히 탐구할 가치가 있는 취약점 연구 방향을 시사합니다. 바로 좁은 타이밍 조건과 약한 증거 뒤에 숨은 실제 보안 영향을 밝혀내는 것입니다.

[!NOTE] 독립 연구자 Qi Tang과 Junxi Qian도 Anthropic과 같은 날인 2026년 3월 30일에 CVE-2026-43074를 Linux 커널 팀에 제보했습니다. 그들의 이름은 업스트림 수정의 크레딧에서 실수로 누락되었습니다. 이 독립적인 제보들을 지적해 준 Guidong Han에게 감사드립니다. 세 연구자는 이후 epoll에서 또 다른 경쟁 조건 use-after-free를 발견했습니다.


공격은 어떻게 작동하는가

호기심 많은 분들을 위해 공격의 개략적인 개요를 소개합니다.

ep_waiter가 ep_target을 감시: 버그 뒤의 epoll 구조체

연결된 두 epoll 객체. 둘을 동시에 닫으면 경쟁 조건이 발생합니다.

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

close-vs-close 경쟁 윈도우와 익스플로잇이 타이머 인터럽트를 통해 이를 유도하는 방법

경쟁 윈도우와 익스플로잇이 이를 유도하는 방법.

익스플로잇은 네 개의 epoll 객체를 두 쌍으로 묶어 사용합니다. 한 쌍은 경쟁 조건을 트리거하고, 다른 한 쌍은 희생자가 됩니다. 그런 다음 익스플로잇은 8바이트 UAF 쓰기를 file 객체에 대한 UAF로 전환하고, cross-cache 공격을 사용하여 파일의 내용을 완전히 제어합니다.

임의 커널 읽기: pipe가 뒷받침하는 dangling struct file이 /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.1 기반 커널은 버그가 v6.4에서 도입되었으므로 영향을 받지 않습니다.

현재 익스플로잇은 다음 Google kernelCTF 타깃용으로 작성되었습니다.

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

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

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

타임라인

날짜사건
2023-04-08버그가 epoll에 도입됨 (커밋 58c9b016e128).
2026-02-17[email protected]에 버그를 제보함.
2026-02-17메인테이너가 패치 프로토타입을 제안했으나 올바른 수정이 아니었고 논의가 중단됨.
2026-03-30CVE-2026-43074가 Anthropic과 독립 연구자 Qi Tang, Junxi Qian에 의해 Linux 커널 팀에 제보됨.
2026-04-02CVE-2026-43074의 수정이 메인라인에 반영됨.
2026-04-22남은 문제를 다시 제보함.
2026-04-24이 버그의 수정이 메인라인에 반영됨 (커밋 a6dc643c6931).

FAQ

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

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

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

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

도구 다운로드