이 익스플로잇은 상당히 오래된 것이며, 이미 패치되었습니다: Panther|Quest 3s는 1176880085300610 (79.0.0.1187.593.767170732) 버전에서, Eureka|Quest 3는 51154110129000520 (79.0.0.1145.506.774349433) 버전에서 패치되었으며 - 사용자의 장치는 아마도 이미 패치되었을 것입니다. 더 최근의 임시(temproot) 솔루션들이 존재합니다; 신뢰할 수 있는 솔루션 중 하나는 Singularity by Lumi (클로즈드 소스)입니다.
이 저장소에서 어떤 것을 실행하기 전에 다음 내용을 반드시 읽어주십시오!!!
[!NOTE]
본 내용은 zhuowei의 cheese를 포크(fork)한 것이며, Meta 보안팀이 조치를 취하지 못한 Common Vulnerabilities and Exposures CVE-2025-21479에 기록된 핵심 취약점을 재구현한 것입니다. 이를 통해 저희는 화이트햇(white-hat) 방식으로 루트 권한 상승을 수행할 수 있게 되었습니다. FreeXR 프로젝트는 미공개 취약점(undisclosed vulnerabilities)을 공개하지 않으며, Meta 플랫폼 개발자들과의 협력을 포함하여 제품 보안 개선에 대한 윤리적 가이드라인을 따르고 오용 방지를 관리합니다. 루트 권한 자체가 제품 오용을 가능하게 하는 것은 아니며, 단지 더 쉽게 만들 뿐이며, 이 익스플로잇은 'Meta Horizon OS' 플랫폼에서 공개된 이후 Eureka/Panther (Quest 3 및 3s) 장치에 영향을 미칩니다. 저희는 이 문제에 대한 관심을 제기하고 추가 연구를 위해 공적으로 기록할 뿐입니다.
[!TIP]
위키를 읽어보세요. 장치를 벽돌(bricking) 상태로 만들지 않고 익스플로잇을 실행하는 방법과, 이 익스플로잇이 어떻게 작동하는지에 대한 유용한 정보가 많이 담겨 있습니다 :)
[!NOTE]
Pico 4 ultra를 사용 중이라면, Mittron과 zhuowei의 익스플로잇을 여기에서 확인하세요.
[!주의] META Quest 3/3S에서 루팅(rooting)을 사용하는 것은 매우 위험합니다. 부트로더 파티션(bootloader partition)의 단 하나의 변경만으로도 하드 브릭(hard brick)이 발생하여 기기를 사용할 수 없게 만들며!!! 이 경우 UFS 칩(UFS chip)을 납땜하여 분리한 후 외부의 (그리고 비싼) 하드웨어로 재프로그래밍해야 합니다. Meta가 QFPROM 구현에서 시큐어 부팅(secure boot) 인증에 필요한 암호화 키를 사용자에게 제공하기를 거부했기 때문에, EDL을 통한 기기 플래싱은 불가능합니다.
근본적으로 이것은 잘못된 명령어를 실행할 경우 기기를 영구적으로 브릭(brick)시킬 수 있다는 의미입니다!!!
[!경고]
무엇을 하는지 모른다면 이 익스플로잇을 사용하지 마십시오!
[!경고]
Magisk에서 'INSTALL' 버튼을 누르는 것은 부트로더 파티션에 변경을 가하기 때문에 헤드셋을 브릭(brick)시킬 것입니다! 절대 그 버튼을 누르지 마십시오!!!
[!팁]
릴리스(releases)에 패키징된 Magisk를 설치하십시오. 그러면 'INSTALL' 버튼이 숨겨질 것입니다. 또한 @VeygaX'의 공식 저장소 여기에서 릴리스를 가져올 수도 있습니다.
[!경고]
/system 파티션에 대한 모든 변경은 Meta가 암호화 키를 제공하기를 거부했기 때문에 하드 브릭(hard brick)을 초래할 것입니다!
[!경고]
시작하기 전에 계정의 비밀 정보, 즉 deviceKey와 MetaProfileGenericAuthMap, 그리고 Meta User ID를 백업하는지 확인하십시오. 지침은 우리의 비공개 Quest 설정 가이드를 참조하십시오. 이러한 비밀 정보 없이는 소프트 브릭(soft-bricked)된 헤드셋에서 완전히 복구할 수 없을 것입니다.
커뮤니티에 참여하여 루팅을 안전하게 사용하는 방법에 대해 논의하는 것을 환영합니다. 저희는 또한 설치를 수행하기 위해 루팅을 활용하는 대체 운영 체제도 개발하고 있습니다. 절대로 자신이 무엇을 하는지 100% 확신하지 못하는 명령어는 실행하지 마십시오!!! 확실하지 않다면, 리서치하거나 저희 디스코드(DISCORD)에 참여하십시오
⚠️ [경고]
당사는 귀하의 장치에 발생하는 모든 것에 대해 책임을 지지 않습니다. 이 코드를 다운로드, 컴파일 또는 실행함으로써, 귀하는 다음 사항에 동의합니다:
- 귀하가 소유했거나 사용 허가를 받은 장치에서만 사용할 것입니다.
- 취약점(exploit)을 사용하는 것이 관할 지역에서 불법일 수 있음을 인지합니다.
- 이 소프트웨어를 실행하는 것은 장치의 보증을 무효화하거나, 영구적인 손상을 일으키거나, 데이터 손실을 초래할 수 있습니다.
- 저자 및 기여자들은 어떠한 손해, 보증 무효화, 장치 오작동 또는 법적 결과에 대해서도 책임을 지지 않습니다.
- 본 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증 없이 "있는 그대로(AS IS)" 제공됩니다.
⚠️ [경고]
위 약관에 동의하지 않는 경우, 본 소프트웨어를 사용하거나 배포하지 마십시오.
이제 재미있는 부분으로 넘어가겠습니다 :)
eureka_panther-adreno-gpu-exploit-1
Eureka/Panther (3/3s) 기기의 Adreno GPU 드라이버에 존재하는 메모리 손상 취약점(memory corruption vulnerability)을 이용한 익스플로잇으로, 임의 커널 메모리 읽기/쓰기 및 권한 상승(privilege escalation)이 가능합니다.
Quest 3/3s Adreno GPU Root Exploit
개요 (Overview)
본 저장소는 Meta Quest 3/3s 기기(코드명: eureka/panther)를 대상으로 하며, Adreno GPU 드라이버(/dev/kgsl-3d0)의 메모리 손상 취약점을 활용하는 전체 익스플로잇 체인을 포함하고 있습니다. 이 익스플로잇은 임의 커널 메모리 읽기/쓰기를 달성하고, SELinux를 비활성화하며, 권한을 root로 상승시킵니다. 또한 커널 덤퍼(kernel dumper)와 kallsyms 심볼 리졸버도 포함되어 있습니다.
[TIP]
모든 정보가 이제 Wiki로 이동했습니다! 여기에서 확인해 보세요.
참고 자료 (References)
익스플로잇 개발에 도움을 준 모든 분들께 감사드립니다! 여러분 모두 최고예요!!! -cats
회고록 -cats
모두에게 감사합니다.
FreeXR 프로젝트는 작은 것에서 시작되었습니다. 바로 제가 QuestEscape 저장소에 생성한 이슈였습니다. 제가 원했던 것은 친구들과의 다가오는 LAN 파티를 위해 Quest 3를 마인크래프트 서버로 사용하고 온도를 낮게 유지하기 위해 디스플레이를 끄는 것이었고, 이를 위해서는 root 권한이 필요했습니다. 당시 저의 '무기고'는 MacBook Air M3 (16/256)와 학교에서 받은 노트북(i5-1135G7/8/256)뿐이었습니다. 저는 2월 26일에 “Quest 3 Exploits” 서버를 시작했습니다.
6개월 전의 저라면 오늘 우리가 여기에 있을 것이라고는 상상조차 못했을 겁니다.
이제 반년이 지난 지금, 우리는 개발자, 하드웨어 해커, 일반 VR 사용자(그리고 고양이들!!), 그리고 1,000명에 가까운 활발한 커뮤니티로 성장했습니다. (현재 시점 기준) 모든 Quest 3 및 3s 기기에 작동하는 root 익스플로잇을 개발했죠.
이 과정에서 저는 배움과 성장의 거친 여정을 거쳤습니다. Quest 3는 저의 첫 안드로이드 장치였습니다. 저는 익스플로잇을 구축하면서 C 언어에 더 깊이 빠져들었습니다. 서버 내 수많은 대화 속 오르막과 내리막길을 헤쳐나갔습니다. 가벼운 농담부터 격렬한 토론까지, #remote-access-shell에서 Mandi가 크게 충돌했던 일, Noah와 제가 FreeXR Discord Bot를 작성하며 겪었던 엄청난 두통들—그리고 네, 심지어 Reddit을 트롤링했던 경험까지..."
여기서 겪은 모든 도전, 모든 작은 승리, 그리고 제가 만든 모든 연결고리가 저를 형성했습니다. 저는 정말 많은 멋진 사람들을 만났고, 여러분 각자는 (남아 있든 떠나갔든) 이 여정의 일부였습니다.
첫 번째 GitHub 이슈를 열었을 때 막 VR 세계에 발을 들인 호주 십대였던 저는, 일이 이렇게까지 잘 될 거라고는 예상하지 못했습니다. 하지만 우리가 여기에 있습니다—그리고 함께 만들어낸 것에 대해 이보다 더 행복하거나 자랑스러울 수 없습니다.
모두 감사합니다. 앞으로 펼쳐질 모든 멋진 일들을 응원합니다.
<sup><sub>p.s. 저는 마인크래프트 라이선스를 얻지 못했어요. Wooting 80HE를 위해 돈을 모으고 있어요 😤😤😤</sub></sup>