
CVE-2024-56426 취약점의 PoC입니다.
Exynos 990 Galaxy S20, S20 FE, Note20 제품군을 위한 통합 CVE-2024-56426 도구 모음입니다. 이 익스플로잇은 열 개의 모델 이름을 모두 받아들이고, 검증된 여섯 개의 순정 부트로더 제품군에 매핑합니다.
[!CAUTION] 추적되는 키 번들과 생성된 이미지는 퓨징(fusing)이 가능합니다. 퓨징은 되돌릴 수 없습니다. 키에 퓨징된 휴대폰은 해당 키와 호환되는 이미지만 부팅할 수 있습니다. 잘못된 모델, 롤백 리비전, 패치 세트 또는 키 번들은 기기를 퓨징 부트 루프에 빠뜨릴 수 있습니다. 반복 작업 중에는 개발 키와 UFS 페이로드를 사용하십시오. 커스텀 키 퓨징이 명시적으로 의도된 경우가 아니라면 모든 준비/서명 명령에
--no-fuse를 추가하십시오.
선택된 모델은 BL1 모델 ID와 정확한 모델용 LK 패치 TSV를 모두 제어합니다. Runtime artifact는 preflight에서 어떤
순정 펌웨어와 암호화된 분할 이미지가 사용되는지를 제어합니다. 페어링된 5G 런타임
아티팩트를 사용하는 네 개의 비-5G 플래그는 LK의 모델 ID 검사와 모델 ID 프로그래밍 경로도 패치합니다.
[!IMPORTANT] 아래 나열된 순정 펌웨어 빌드에서 G780F, N980F, N981B, N985F, N986B는 UH-to-BOOTLOADER 방식으로 EUB에 진입할 수 없습니다. 이들의 LK 부트로더는
Check_signinfo()를 호출하는데, 이는 이미지에 내장된BinaryName(uh.bin)을 BOOTLOADER 파티션의 예상 파일명(sboot.bin)과 비교합니다. 불일치가 발생하면Binaryname has changed (uh.bin) -> (sboot.bin)이 출력되고 플래시가 거부됩니다.이 기기들에서 EUB에 진입하려면 UH 방식 대신 적절한 모델별 테스트 포인트를 사용하십시오.
| Model flag | Runtime artifact | Runtime firmware | Model ID | EVT | Rollback | Tested | UH method / EUB entry |
|---|---|---|---|---|---|---|---|
G780F | G780F | G780FXXSOFYJ1 | 0x154 | 11 | 24 | ❌ | Blocked — use test points |
G980F | G981B | G981BXXSNHYB1 | 0x143 | 11 | 23 | ✅ | No filename block |
G981B | G981B | G981BXXSNHYB1 | 0x13D | 11 | 23 | ❌ | No filename block |
G985F | G986B | G986BXXSNHYB1 | 0x142 | 11 | 23 | ✅ | No filename block |
G986B | G986B | G986BXXSNHYB1 | 0x13C | 11 | 23 | ✅ | No filename block |
G988B | G988B | G988BXXSNHYB1 | 0x13E | 11 | 23 | ❌ | No filename block |
N980F | N981B | N981BXXSIHYH3 | 0x153 | 11 | 18 | ❌ | Blocked — use test points |
N981B | N981B | N981BXXSIHYH3 | 0x14E | 11 | 18 | ❌ | Blocked — use test points |
N985F | N986B | N986BXXSIHYH3 | 0x152 | 11 | 18 | ❌ | Blocked — use test points |
N986B | N986B | N986BXXSIHYH3 | 0x14D | 11 | 18 | ❌ | Blocked — use test points |
지원되는 열 개의 Galaxy S20, S20 FE, Note20 모델 플래그 모두 옵트인 방식의
CLI 전용 KVM 부팅 프로파일을 가지고 있습니다. 이름에 kvm이 포함된
Exynos 990 커널 브랜치를 빌드하고, 정확한 모델 명령에 --kvm을 추가하십시오. 예를 들어:
python3 exploit/exploit.py --build-sboot --model G985F --no-fuse --kvm
이 프로파일은 LK H-Arx/UH 경로를 제거하고, EL3가 EL2에서 커널로 진입하도록 요청하며, 일치하는 복호화/재암호화된 EL3 모니터 패치 테이블을 적용합니다. 이는 스톡/변조된 부트로더 플래시 모드에서는 사용할 수 없습니다. 웹 제어 센터에는 의도적으로 KVM 제어가 없습니다. 일치하는 커널 및 WindowsInQemu를 사용하면 KVM을 통해 휴대폰의 QEMU에서 Windows를 최고 속도로 실행할 수 있습니다.
모든 모드를 하나의 번호가 매겨진 설치 순서로 취급하지 마십시오. 목표를 선택하십시오:
| 목표 | 경로 |
|---|---|
| 서명된 커스텀 ROM 설치 | 정확한 모델/설정 → EUB → 임시 --signed --no-fuse 체인 → ROM의 완전한 서명된 출력 플래시 → UFS 첫 부팅 |
| 익스플로잇 테스트 | 선택적 --prepare --no-fuse → EUB → --signed --no-fuse → 중지 |
| 부트 체인 개발 (CLI 전용) | 임시 no-fuse 테스트 → 빌드 → 생성된 SBoot/TZSW/LDFW 플래시 → UFS |
| 덤프 / 복구 | 별도의 워크플로우 및 퓨즈 상태 확인 사용 |
--prepare는 호스트 전용 준비를 수행합니다: 생성된 작업 이미지를 교체하고 로컬 파일을 빌드 및 서명하지만,
USB를 열지 않습니다. 이는 읽기 전용 드라이런이나 필수 선행 작업이 아닙니다: --signed는 사전 점검을 반복합니다.
생성된 3부분 Heimdall 명령은 부트 체인 개발 도구이며, 커스텀 ROM 플래시가 아닙니다.
기기를 만지기 전에 USER_GUIDE.md를 읽고 일치하는 워크플로우를 선택하십시오. 여기에는 완전한 ROM 핸드오프와 언퓨즈드, 퓨즈드, 불확실 상태 복구 규칙이 포함되어 있습니다.
브라우저 UI의 HTTP 서버는 Python 표준 라이브러리를 사용하며 기존 exploit/exploit.py CLI를 호출합니다.
키 번들 검증 및 도구 실행에는 requirements.txt의 패키지도 필요합니다. 부트 체인 개발 및
생성된 3부분 Heimdall 명령은 터미널 전용 도구로 남아 있습니다.
저장소 루트에서 시작하십시오:
python3 exynos990_control_center.py
런처는 127.0.0.1에 바인딩하고, 새 액세스 토큰을 생성하며, 전체 로컬 URL을 출력하고 기본 브라우저에서 엽니다. 브라우저를 자동으로 열지 않아야 할 때는 --no-browser를 사용하십시오:
python3 exynos990_control_center.py --no-browser
UI는 다음을 제공합니다:
또한 CLI 전용 Exynos 990 KVM 공지를 표시하지만, 의도적으로 KVM 옵션을 노출하지 않으며 --kvm을 어떤 웹 작업에도 전달하지 않습니다.
USB 접근은 컨트롤 센터를 실행한 프로세스의 권한을 따릅니다. 시작하기 전에 제공된 udev/driver 권한을 구성하십시오. UI는 권한 자격 증명을 요청, 보관 또는 전달하지 않습니다. 출력된 토큰 URL을 비공개로 유지하고 사용 후 즉시 서버를 중지하십시오.
터미널 사용자는 exynos990_control_center.py를 무시해도 됩니다. 아래에 문서화된 모든 CLI 명령은 변경 없이 그대로 유지되며 완전히 지원됩니다.
Python 3.10 이상이 필요합니다.
Windows 10/11 (네이티브 PowerShell):
.\windows\setup.ps1
. .\windows\activate.ps1
python .\exploit\exploit.py --prepare --model G985F --no-fuse
설정은 고정된 네이티브 AArch64 툴체인, LZ4, Heimdall, 그리고 저장소 가상 환경을 설치한 다음, 모든 페이로드를 빌드합니다. BootROM WinUSB 드라이버는 업스트림 자체 서명 인증서가 머신 신뢰 저장소를 변경하기 때문에 명시적인 Administrator 옵트인입니다. 전체 설정, 드라이버 설치, Download Mode 구분, 검증 및 문제 해결 과정은 WINDOWS.md를 참조하세요.
Windows 활성화 후에는 나머지 크로스 플랫폼 예제에서 python3가 표시된 곳에 python을 사용하세요.
Linux:
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu lz4
macOS:
brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu lz4