
Una PoC de la vulnerabilidad CVE-2024-56426.
Herramientas unificadas para CVE-2024-56426 en las familias Exynos 990 Galaxy S20, S20 FE y Note20. El exploit acepta los diez nombres de modelo y los asigna a seis familias de bootloader de fábrica verificadas.
[!CAUTION] El paquete de claves rastreado y las imágenes generadas son capaces de fusionar. La fusión es irreversible. Un teléfono fusionado con una clave solo puede arrancar imágenes compatibles con esa clave. Un modelo, revisión de rollback, conjunto de parches o paquete de claves incorrectos pueden dejar el dispositivo en un bucle de arranque fusionado. Use claves de desarrollo y el payload UFS mientras itera. Añada
--no-fusea cada comando de preparación/firma a menos que la fusión con clave personalizada sea explícitamente intencionada.
El modelo seleccionado controla tanto el ID de modelo de BL1 como el TSV de parche LK específico del modelo. Runtime artifact controla qué
firmware de fábrica e imágenes divididas cifradas utiliza el preflight. Los cuatro flags no-5G que usan artefactos de runtime 5G emparejados
también parchean la comprobación de ID de modelo de LK y la ruta de programación del ID de modelo.
[!IMPORTANT] En las compilaciones de firmware de fábrica listadas a continuación, G780F, N980F, N981B, N985F y N986B no pueden usar el método UH-to-BOOTLOADER para entrar en EUB. Sus bootloaders LK llaman a
Check_signinfo(), que compara elBinaryNameincrustado en la imagen (uh.bin) con el nombre de archivo esperado de la partición BOOTLOADER (sboot.bin). La discrepancia produceBinaryname has changed (uh.bin) -> (sboot.bin)y rechaza el flasheo.Use los puntos de prueba específicos del modelo apropiado para entrar en EUB en estos dispositivos en lugar del método UH.
| Flag de modelo | Artefacto de runtime | Firmware de runtime | ID de modelo | EVT | Rollback | Probado | Método UH / entrada EUB |
|---|---|---|---|---|---|---|---|
G780F | G780F | G780FXXSOFYJ1 | 0x154 | 11 | 24 | ❌ | Bloqueado — use puntos de prueba |
G980F | G981B | G981BXXSNHYB1 | 0x143 | 11 | 23 | ✅ | Sin bloqueo de nombre de archivo |
G981B | G981B | G981BXXSNHYB1 | 0x13D | 11 | 23 | ❌ | Sin bloqueo de nombre de archivo |
G985F | G986B | G986BXXSNHYB1 | 0x142 | 11 | 23 | ✅ | Sin bloqueo de nombre de archivo |
G986B | G986B | G986BXXSNHYB1 | 0x13C | 11 | 23 | ✅ | Sin bloqueo de nombre de archivo |
G988B | G988B | G988BXXSNHYB1 | 0x13E | 11 | 23 | ❌ | Sin bloqueo de nombre de archivo |
N980F | N981B | N981BXXSIHYH3 | 0x153 | 11 | 18 | ❌ | Bloqueado — use puntos de prueba |
N981B | N981B | N981BXXSIHYH3 | 0x14E | 11 | 18 | ❌ | Bloqueado — use puntos de prueba |
N985F | N986B | N986BXXSIHYH3 | 0x152 | 11 | 18 | ❌ | Bloqueado — use puntos de prueba |
N986B | N986B | N986BXXSIHYH3 | 0x14D | 11 | 18 | ❌ | Bloqueado — use puntos de prueba |
Los diez flags de modelo compatibles de Galaxy S20, S20 FE y Note20 tienen un perfil de arranque KVM
opcional solo por CLI. Compile una rama
del kernel Exynos 990
cuyo nombre contenga kvm, y añada --kvm al comando del modelo exacto, por ejemplo:
python3 exploit/exploit.py --build-sboot --model G985F --no-fuse --kvm
Este perfil elimina la ruta LK H-Arx/UH, solicita a EL3 que entre en el kernel en EL2 y aplica la tabla de parches del monitor EL3 descifrada/recifrada correspondiente. Permanece no disponible para los modos de flasheo de bootloader stock/alterado. El centro de control web intencionalmente no tiene control de KVM. Con el kernel correspondiente y WindowsInQemu, Windows puede ejecutarse en QEMU en el teléfono a plena velocidad mediante KVM.
No trates cada modo como una única secuencia de instalación numerada. Elige un objetivo:
| Objetivo | Ruta |
|---|---|
| Instalar una ROM personalizada firmada | Modelo/configuración exactos → EUB → cadena temporal --signed --no-fuse → flashear la salida firmada completa de la ROM → primer arranque desde UFS |
| Probar el exploit | Opcional --prepare --no-fuse → EUB → --signed --no-fuse → detener |
| Desarrollar la cadena de arranque (solo CLI) | Prueba temporal sin fusibles → compilar → flashear SBoot/TZSW/LDFW generados → UFS |
| Volcado / recuperación | Usa su flujo de trabajo independiente y las comprobaciones del estado de los fusibles |
--prepare realiza una preparación solo en el host: reemplaza las imágenes de trabajo generadas y compila y firma archivos locales,
sin abrir USB. No es una ejecución de prueba de solo lectura ni un predecesor obligatorio: --signed repite la verificación previa.
El comando Heimdall de tres partes generado es una herramienta de desarrollo de la cadena de arranque; no es un flasheo de ROM personalizada.
Lee USER_GUIDE.md y elige su flujo de trabajo correspondiente antes de tocar un dispositivo. Incluye la transferencia de la ROM completa más las reglas de recuperación para estados sin fusibles, con fusibles e inciertos.
El servidor HTTP de la interfaz del navegador usa la biblioteca estándar de Python y llama a la CLI existente exploit/exploit.py.
La validación del paquete de claves y la ejecución de herramientas también requieren los paquetes en requirements.txt. El desarrollo de la cadena de arranque y
su comando Heimdall de tres partes generado siguen siendo herramientas exclusivas de terminal.
Inícialo desde la raíz del repositorio:
python3 exynos990_control_center.py
El lanzador se enlaza a 127.0.0.1, genera un nuevo token de acceso, imprime la URL local completa y la abre en el navegador predeterminado. Use --no-browser cuando no se deba abrir un navegador automáticamente:
python3 exynos990_control_center.py --no-browser
La interfaz de usuario proporciona: