
CVE-2025-31207 완화 및 iOS 17 Relaxin/rootHide용 샌드박스 테스터
AppEnumGuard는 설치된 앱 열거 사이드 채널(추적 ID: CVE-2025-31207)을 차단하는 방어용 rootHide 트윅입니다. iOS 17.0–17.3.1용 Relaxin 탈옥을 위해 설계되었으며 Relaxin의 rootHide 아키텍처를 사용합니다. 이 저장소에는 취약한 결과를 시연하고 완화 조치를 검증하는 일반 샌드박스 iOS 테스트 앱도 포함되어 있습니다.
CVE-2025-31207은 Apple FrontBoard의 앱 실행 로직에 존재하는 정보 노출 취약점입니다. 샌드박스 앱이 비공개 SpringBoardServices 실행 함수를 통해 임의의 번들 식별자를 제출할 수 있으며, 서로 다른 반환 코드를 사용해 설치된 앱과 존재하지 않는 앱을 구분할 수 있습니다. 이를 통해 사용자가 설치한 애플리케이션(금융, 메신저, 보안, 사이드로딩, 탈옥 관련 앱 포함)에 대한 개인 정보가 드러날 수 있습니다.
Apple은 이 문제를 앱이 설치된 앱을 열거할 수 있는 로직 문제로 설명합니다. Apple은 iOS 및 iPadOS 18.5의 개선된 검사로 이를 수정했습니다. 결과적으로 iOS 17.0–17.3.1은 OS 수준에서 여전히 영향을 받습니다.
| 구성 요소 | 지원 대상 |
|---|---|
| iOS | 17.0–17.3.1 |
| 탈옥 | Relaxin |
| 부트스트랩/패키지 아키텍처 | rootHide / iphoneos-arm64e |
| 기기 아키텍처 | arm64e; 트윅 바이너리는 arm64e 슬라이스만 포함 |
| 패키지 | 일반적인 rootless 빌드가 아닌 rootHide .deb 설치 |
Relaxin은 rootHide 부트스트랩/패키지 아키텍처를 사용하므로 AppEnumGuard는 rootHide Theos로 빌드되며 rootHide .jbroot 로더 경로를 포함합니다. 패키지는 firmware (>= 17.0) 및 firmware (<< 17.4)를 선언하여 지원되는 Relaxin 범위인 17.0–17.3.1과 일치합니다.
트윅과 테스터는 실제 Relaxin/rootHide 기기에서 함께 검증되었습니다. 트윅을 제거한 상태에서는 테스터가 누출을 감지했으며, 트윅을 설치한 후에는 녹색 통과를 반환했습니다.
공개된 프리미티브는 비공개 SpringBoardServices 함수 SBSLaunchApplicationWithIdentifierAndURLAndLaunchOptions를 호출합니다. 취약한 시스템에서는 설치된 앱과 존재하지 않는 앱에 대해 서로 다른 오류를 반환합니다.
9: 대상이 존재하지만 정책에 의해 실행이 거부됨7: 대상이 존재하지 않음이 트윅은 UIKit 애플리케이션 프로세스에 주입됩니다. 일반 컨테이너 설치 앱의 경우 비공개 실행 요청을 제출하지 않고 7을 반환합니다. 앱 컨테이너 외부의 Apple 및 기타 시스템 프로세스는 원래 동작을 유지합니다.
각 GitHub 릴리스에는 두 가지 설치 가능한 아티팩트가 포함됩니다.
AppEnumGuard_1.0.0_roothide_iphoneos-arm64e.deb — rootHide 트윅AppEnumGuardTester_1.0.0_sandboxed.ipa — 샌드박스 검증 앱.deb를 설치하고 respring합니다.WhatsApp이 설치된 상태에서 예상되는 결과:
| 상태 | 대상 | 누락 | 테스터 결과 |
|---|---|---|---|
| 트윅 없음 | 9 | 7 | Red / FAIL |
| 트윅 활성 | 7 | 7 | Green / PASS |
원래 기기 테스트는 두 상태를 모두 재현했습니다. 트윅을 제거하면 빨간색 9 / 7 결과가 나왔고, 설치하면 녹색 7 / 7 결과가 나왔습니다.
rootHide Theos를 설치한 후 다음을 실행합니다:
cd Tweak
THEOS=/path/to/theos-roothide \
make clean package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=roothide
테스터는 Xcode의 iPhoneOS SDK로 컴파일되며 탈옥 또는 권한 상승 엔타이틀먼트가 없습니다:
./scripts/build-tester-ipa.sh
결과 IPA는 dist/에 생성됩니다. 애드혹(ad-hoc) 서명되어 있으므로 설치 프로그램이 일반 개발 ID로 다시 서명할 수 있습니다. 테스트는 일반 애플리케이션 샌드박스에서 실행되도록 의도되었으므로 platform-application 또는 com.apple.private.security.no-sandbox를 부여하지 마십시오.
7 / 7 테스트는 대상 애플리케이션이 설치된 것으로 알려진 경우에만 의미가 있습니다.MIT