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-33317 — Prueba de concepto para CVE-2026-33317, una escritura fuera de límites en OP-TEE PKCS#11 TA, que demuestra la corrupción del montón del Secure World mediante una plantilla de atributos malformada. | Kitploit
Herramientas/GitHubGitHub/0xbbdd/cve-2026-33317
Seguridad de Sistemas EmbebidosAnálisis de VulnerabilidadesExplotaciónFuzzingSeguridad de Hardware e IoTExplotación de Binarios
GitHub0xbbdd/cve-2026-33317

CVE-2026-33317

Prueba de concepto para CVE-2026-33317, una escritura fuera de límites en OP-TEE PKCS#11 TA, que demuestra la corrupción del montón del Secure World mediante una plantilla de atributos malformada.

Ver Repositorio
hace 3 mesesAú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

CVE-2026-33317 PoC de OP-TEE PKCS#11

Este repositorio contiene la prueba de concepto del Mundo Normal, notas de reproducción y registros capturados para CVE-2026-33317 / GHSA-8cqw-mg7v-c9p9.

El aviso oficial de OP-TEE describe una validación faltante en entry_get_attribute_value() para PKCS11_CMD_GET_ATTRIBUTE_VALUE. El error puede causar lecturas fuera de los límites del montículo de la TA de PKCS#11 y, con una plantilla de atributos malformada, escrituras más allá del búfer temporal de la plantilla. Esta PoC apunta al caso de escritura fuera de los límites y demuestra la corrupción del montículo del Mundo Seguro en la TA de PKCS#11.

  • Aviso: https://github.com/OP-TEE/optee_os/security/advisories/GHSA-8cqw-mg7v-c9p9
  • CVE: CVE-2026-33317
  • Paquete afectado: TA de OP-TEE PKCS#11
  • Versiones afectadas según el aviso: >= 3.13.0
  • Versiones corregidas según el aviso: 4.11 y posteriores
  • CVSS v3.1 según el aviso: 8.7 Alta
  • Debilidades según el aviso: CWE-125, CWE-787

Úselo únicamente en un laboratorio local u otro entorno donde esté autorizado a probar OP-TEE.

Qué Hay En Esta Carpeta

La copia de trabajo local desde la que se preparó este README era un espacio de trabajo aplanado de OP-TEE QEMUv8. El directorio .repo y todos los metadatos de git (archivos/directorios .git) se eliminaron, por lo que ese archivo local ya no es utilizable con repo sync ni con comandos normales de historial de git.

El repositorio de GitHub excluye intencionalmente los árboles de código fuente de OP-TEE/QEMU, las cadenas de herramientas y los resultados de compilación, que son voluminosos. Recreelos a partir de qemu-v8-setup.md, o copie los archivos de la PoC en una raíz de compilación qemu_v8 de OP-TEE existente, antes de ejecutar la reproducción automatizada de QEMU desde un clon nuevo.

Archivos importantes de nivel superior:

El archivo local preparado también tenía directorios de código fuente/compilación como optee_os, optee_client, qemu, linux, trusted-firmware-a, u-boot, buildroot, out-br y toolchains; estos se ignoran para la publicación.

Resumen de la Vulnerabilidad

En el árbol vulnerable de optee_os, ta/pkcs11/src/object.c itera sobre una plantilla de atributos serializada proporcionada por el cliente:

root@kitploit:~
cur = (char *)template + sizeof(struct pkcs11_object_head);
end = cur + template->attrs_size;
...
data_ptr = cli_head.size ? cli_ref->data : NULL;
rc = get_attribute(obj->attributes, cli_head.id, data_ptr, &cli_head.size);

El bucle no demuestra que cada cabecera de atributo y su área de datos estén completamente dentro de la plantilla asignada. La PoC envía:

  • attrs_size = 8, exactamente una pkcs11_attribute_head y sin bytes de datos.
  • attrs_count = 1.
  • cli_head.id = CKA_LABEL.
  • cli_head.size = 16, que coincide con la etiqueta de 16 bytes del objeto creado.

Eso crea una asignación de plantilla de 16 bytes:

root@kitploit:~
sizeof(pkcs11_object_head) + attrs_size = 8 + 8 = 16

cli_ref->data apunta entonces a template + 16, exactamente un byte más allá del final de la asignación. get_attribute() en ta/pkcs11/src/attributes.c ve que el tamaño proporcionado por el llamador es suficientemente grande y copia la etiqueta de 16 bytes a ese puntero fuera de los límites, corrompiendo el montículo de la TA de PKCS#11.

Inicio Rápido

Requisitos previos utilizados por el espacio de trabajo QEMUv8 preparado:

  • Host Linux x86-64
  • expect
  • Un espacio de trabajo qemu_v8 de OP-TEE con resultados de compilación, cadenas de herramientas y binario de QEMU distribuidos como el archivo local descrito en qemu-v8-setup.md

Compile la PoC:

root@kitploit:~
./build_poc.sh

Resultado de compilación esperado:

root@kitploit:~
Built: out/bin/c01_poc

Ejecute la reproducción automatizada de QEMUv8:

root@kitploit:~
./run_c01.sh

El script contenedor verifica estos archivos preparados antes de arrancar:

  • out/bin/bl1.bin
  • out/bin/Image
  • out/bin/rootfs.cpio.gz
  • out/bin/c01_poc

Si faltan los artefactos de compilación, primero recreé/compile el espacio de trabajo de OP-TEE y luego vuelva a ejecutar ./build_poc.sh.

Resultado Esperado

El registro del Mundo Normal debería mostrar la solicitud manipulada:

root@kitploit:~
[+] TEEC session with PKCS#11 TA opened
[+] INIT_TOKEN  rc=0x00000000 OK
[+] OPEN_SESSION rc=0x00000000, session_handle=0x00000001
[+] CREATE_OBJECT rc=0x00000000, obj_handle=0x00000001
[+] Object has CKA_LABEL = "AAAAAAAAAAAAAAAA" (16 bytes)
[+] Sending malicious C_GetAttributeValue (attrs_size=8, cli_head.size=16)...
[+] GET_ATTRIBUTE_VALUE[0] rc=0xffffffff

El registro del Mundo Seguro debería contener la aserción del asignador y el pánico de la TA:

root@kitploit:~
E/TA:  assertion 'BH((char *) b - b->bh.bsize)->prevfree == 0' failed at lib/libutils/isoc/bget.c:1022 in brel()
E/TC:? 0 TA panicked with code 0xffff0000
E/LD:  Status of TA fd02c9da-306c-48c7-a49c-bbd827ae86ee

Los registros capturados de una ejecución exitosa ya están presentes en:

  • out/bin/c01_nw.log
  • out/bin/c01_sw.log

Flujo de la PoC

c01_poc.c invoca el UUID de la TA de PKCS#11 fd02c9da-306c-48c7-a49c-bbd827ae86ee mediante libteec:

  1. Abre una sesión TEEC con la TA de PKCS#11.
  2. Inicializa la ranura de token 0.
  3. Abre una sesión PKCS#11 de lectura/escritura.
  4. Crea un objeto de sesión AES con CKA_LABEL = "AAAAAAAAAAAAAAAA".
  5. Envía una solicitud malformada CMD_GET_ATTRIBUTE_VALUE con attrs_size = 8 y cli_head.size = 16.

La primera solicitud maliciosa es suficiente para corromper los metadatos del montículo. La TA entonces entra en pánico cuando el asignador bget de OP-TEE detecta los metadatos de bloque corruptos.

Notas

  • run_c01.sh comparte out/bin con el invitado a través de virtio-9p y escribe los registros de vuelta en el mismo directorio.
  • En un archivo local completo, los enlaces de artefactos de arranque preparados en out/bin deberían apuntar a artefactos dentro de ese archivo. El repositorio de GitHub publicado solo rastrea los archivos out/bin/c01_*.log capturados.
  • C-01-reproduction.md documenta un enfoque anterior con el entorno ASAN para x86. La PoC ejecutable en esta carpeta es la PoC TEEC de QEMUv8: c01_poc.c.
  • Dado que se eliminaron los metadatos de repo, trate este directorio como un espacio de trabajo de PoC archivado en lugar de un checkout de OP-TEE sincronizado con el upstream.
Descargar herramienta
RutaPropósito
c01_poc.cPoC del Mundo Normal para AArch64 que usa llamadas directas a libteec
build_poc.shCompila de forma cruzada c01_poc.c en out/bin/c01_poc
run_c01.shArranca QEMUv8 y ejecuta la PoC mediante expect
c01_check.expAutomatiza el inicio de sesión del invitado, el montaje virtio-9p y la ejecución de la PoC
out/bin/c01_nw.logRegistro de reproducción del Mundo Normal capturado
out/bin/c01_sw.logRegistro del Mundo Seguro capturado con el pánico de la TA de PKCS#11
reproduction-log.mdNotas completas de reproducción en QEMUv8
qemu-v8-setup.mdNotas de configuración y validación de referencia de OP-TEE QEMUv8
C-01-reproduction.mdNotas anteriores del entorno ASAN; no es la PoC ejecutable principal en esta carpeta
AGENTS.mdNotas de mantenimiento para futuros agentes de IA/código