1P by GN⁺ | ★ favorite | 댓글 1개
  • 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: 커밋 58c9b016e128epoll에 버그가 도입됨
  • 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 분석과 익스플로잇 문서, 코드는 별도 링크로 제공됨

댓글과 토론

Lobste.rs 의견들
  • 이 취약점이 Chrome 샌드박스에서 도달 가능하다는 건 정말 큰일인데, kCTF로 보고됐고 보상이 $71k에 그쳤다는 점이 좀 놀라움

  • Bryan Cantrill이 또 맞았네

    • 인정하긴 좀 민망하지만, 솔직히 나도 첫 생각이 같았음
    • 궁금함. 그가 뭘 맞혔다는 건지 맥락을 모르겠음
    • 가능하면 맥락을 좀 알려주면 좋겠음
  • 겉보기엔 비어 보이는 저장소에 속지 말 것. 익스플로잇은 README 아래쪽에 링크돼 있음
    아직 테스트해보진 않았고, 완화책은 없음. 작성자들은 Android 루팅도 가능하다고 주장하니, Android 생태계를 생각하면 내 제조사가 한 달쯤 뒤에나 패치를 줄 것 같음. 게다가 Chrome 렌더러 샌드박스에서도 동작함

    • 2023년에 Android 폰을 샀는데 마지막 커널 업데이트가 2024년 중반이었음. 이 버그가 그 시기 것이라면, 패치를 받는 쪽이 오히려 드문 축일 수 있음
  • 이거 Android에서도 동작함?

    • 두 번째 문장에 적혀 있잖아
  • 이게 어떻게 발견됐는지 정보가 있나? Mythos는 놓쳤다는데, 다른 대형 언어 모델 도움으로 찾은 건지 아니면 사람이 검토해서 찾은 건지 궁금함
    그렇다면 왜 이 부분을 들여다봤는지도 궁금함

  • “많은 Linux 배포판은 v6.4 이상 기반 커널을 쓰고 아직 수정 사항을 백포트하지 않았다면 영향을 받을 수 있음. 위 수정 커밋의 백포트 여부는 배포판의 커널 보안 업데이트를 확인할 것. 오래된 v6.1 기반 커널은 버그가 v6.4에서 도입됐기 때문에 영향받지 않음.”
    아쉽네. 폰 루팅에 좋은 방법이 되길 바랐는데, 너무 최신이라 특별히 유용하진 않을 듯함. 내 폰은 5.15