
CVE-2023-35674에 대한 가이드 및 이론적 코드
CVE-2023-35674에 대한 가이드 및 이론적 코드
Android는 제 실력 밖이니, 이 글은 제 관점에서 이 CVE를 어떻게 익스플로잇할지에 대한 개괄적인 개요로 봐주세요. 코드 스니펫은 그냥 뼈대일 뿐입니다. 도와주세요 :) 우선 CVE-2023-35674만으로는 익스플로잇할 수 없습니다. 왜냐하면 CVE-2023-35674는 논리 오류로 인해 백그라운드 액티비티를 시작하는 것만 허용하기 때문입니다. 그래서 본질적으로 이 CVE를 사용해 앱을 백그라운드에서 실행하고, CVE-2021-0307 같은 것을 사용해 권한 상승을 해야 합니다. 한 가지 조언하자면, 이 두 취약점을 완전히 익스플로잇(즉, 체인으로 사용)하는 유일한 방법은 Android 11을 사용하는 경우뿐입니다.
이제 CVE-2023-35674에 대해 알아보겠습니다. 근본 원인은 기본적으로 가상 프레젠테이션이 비공개 가상 디스플레이에서만 표시될 수 있다고 간주되고, 그로 인해 앱이 포그라운드로 간주되어서는 안 된다는 점입니다. 그래서 Google Docs에서 가져온 코드인 Presentation.java를 포함해 가상 프레젠테이션을 시작하고 그 안에서 클래스의 인스턴스를 시작하도록 했습니다(앱을 시작하는 방식으로 대체되어야 합니다). 이렇게 하면 기본적으로 앱이 백그라운드에서 시작됩니다.[1]
이제 EoP(권한 상승) 부분으로 넘어갑니다... CVE-2021-0307의 경우 이 글(https://blog.thalium.re/posts/leveraging-android-permissions/)을 참고했습니다.... 좀 더 정확히 말하자면? 바로 이것입니다.

그래서 자연스럽게 뼈대 코드를 짜야겠다고 생각했습니다. 다시 말하지만 Android는 제 실력 밖이고 저는 게을러서요. 그렇게 MainActivity.java가 탄생했습니다. 이제 조금 더 이해하게 되었으니 익스플로잇 흐름이 조금 달라져야 한다고 생각합니다. 어떻게요?
음, 백그라운드에서 앱을 시작하는 부분 [1]은 여전히 유지되어야 합니다. 그러나 EoP의 경우 아래 이미지와 같은 방식이어야 합니다.

보시다시피 익스플로잇 흐름은 동일합니다. 다만 EoP처럼 익스플로잇을 끝내는 것이 아니라, 익스플로잇을 시작한 앱이 백그라운드에 있는 상태로 끝납니다.
전반적으로 EoP를 얻는 두 가지 방법을 설명했다고 생각합니다. 다만 CVE-2023-35674만으로는 백그라운드에서 코드를 실행하는 것까지만 가능할 것 같습니다. 여담이지만, 이 CVE-2023-35674를 익스플로잇하는 방법은 두 가지가 있다고 생각합니다:
제가 여기에 쓴 모든 내용은 그냥 가볍게 받아들여 주세요. 제가 Android 익스플로잇을 아는 사람과 협업할 사람을 찾을 때까지(즉, 추후 공지가 있을 때까지) 말이죠....