Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-33317 — Proof-of-concept per CVE-2026-33317, una scrittura fuori dai limiti in OP-TEE PKCS#11 TA, che dimostra la corruzione dell'heap del Secure World tramite un template di attributi malformato. | Kitploit
Strumenti/GitHubGitHub/0xbbdd/cve-2026-33317
Sicurezza Sistemi EmbeddedAnalisi delle VulnerabilitàExploitFuzzingSicurezza Hardware e IoTBinary Exploitation
GitHub0xbbdd/cve-2026-33317

CVE-2026-33317

Proof-of-concept per CVE-2026-33317, una scrittura fuori dai limiti in OP-TEE PKCS#11 TA, che dimostra la corruzione dell'heap del Secure World tramite un template di attributi malformato.

Vedi Repository
3 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

Questo repository contiene la proof of concept per il Normal World, le note di riproduzione e i log catturati per CVE-2026-33317 / GHSA-8cqw-mg7v-c9p9.

L'avviso ufficiale OP-TEE descrive una validazione mancante in entry_get_attribute_value() per PKCS11_CMD_GET_ATTRIBUTE_VALUE. Il bug può causare letture fuori dai limiti dall'heap della TA PKCS#11 e, con un template di attributi malformato, scritture oltre il buffer temporaneo del template. Questa PoC mira al caso di scrittura fuori dai limiti e dimostra la corruzione dell'heap del Secure World nella TA PKCS#11.

  • Avviso: https://github.com/OP-TEE/optee_os/security/advisories/GHSA-8cqw-mg7v-c9p9
  • CVE: CVE-2026-33317
  • Pacchetto interessato: OP-TEE PKCS#11 TA
  • Versioni interessate nell'avviso: >= 3.13.0
  • Versioni corrette nell'avviso: 4.11 e successive
  • CVSS v3.1 nell'avviso: 8.7 Alto
  • Debolezze nell'avviso: CWE-125, CWE-787

Utilizzare questo solo in un laboratorio locale o in un altro ambiente in cui sei autorizzato a testare OP-TEE.

Cosa Contiene Questa Cartella

La copia di lavoro locale da cui è stato preparato questo README era uno spazio di lavoro OP-TEE QEMUv8 appiattito. La directory .repo e tutti i file/directory di metadati .git sono stati rimossi, quindi quell'archivio locale non è più utilizzabile con repo sync o i normali comandi della cronologia git.

Il repository GitHub esclude intenzionalmente i voluminosi alberi sorgente OP-TEE/QEMU, le toolchain e gli output di build. Ricreali da qemu-v8-setup.md, oppure copia i file PoC in una radice di build OP-TEE qemu_v8 esistente, prima di eseguire la riproduzione QEMU automatizzata da un clone fresco.

File di primo livello importanti:

L'archivio locale preparato conteneva anche directory sorgente/build come optee_os, optee_client, qemu, linux, trusted-firmware-a, u-boot, buildroot, out-br e toolchains; queste sono ignorate per la pubblicazione.

Riepilogo della Vulnerabilità

Nell'albero optee_os vulnerabile, ta/pkcs11/src/object.c itera su un template di attributi serializzato fornito dal client:

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);

Il ciclo non dimostra che ogni header di attributo e la sua area dati siano completamente all'interno del template allocato. La PoC invia:

  • attrs_size = 8, esattamente un pkcs11_attribute_head e nessun byte di dati.
  • attrs_count = 1.
  • cli_head.id = CKA_LABEL.
  • cli_head.size = 16, corrispondente all'etichetta di 16 byte dell'oggetto creato.

Questo crea un'allocazione del template di 16 byte:

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

cli_ref->data punta quindi a template + 16, esattamente un byte oltre la fine dell'allocazione. get_attribute() in ta/pkcs11/src/attributes.c vede che la dimensione fornita dal chiamante è sufficientemente grande e copia l'etichetta di 16 byte a quel puntatore fuori dai limiti, corrompendo l'heap della TA PKCS#11.

Avvio Rapido

Prerequisiti utilizzati dallo spazio di lavoro QEMUv8 preparato:

  • Host Linux x86-64
  • expect
  • Uno spazio di lavoro OP-TEE qemu_v8 con output di build, toolchain e binario QEMU disposti come l'archivio locale descritto in qemu-v8-setup.md

Compila la PoC:

root@kitploit:~
./build_poc.sh

Risultato di build previsto:

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

Esegui la riproduzione QEMUv8 automatizzata:

root@kitploit:~
./run_c01.sh

Il wrapper controlla questi file preparati prima dell'avvio:

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

Se gli artefatti di build mancano, ricrea/compila prima lo spazio di lavoro OP-TEE e poi riesegui ./build_poc.sh.

Risultato Previsto

Il log del Normal World dovrebbe mostrare la richiesta costruita:

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

Il log del Secure World dovrebbe contenere l'asserzione dell'allocatore e il panic della 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

I log catturati da un'esecuzione riuscita sono già presenti in:

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

Flusso della PoC

c01_poc.c invoca l'UUID della TA PKCS#11 fd02c9da-306c-48c7-a49c-bbd827ae86ee tramite libteec:

  1. Apre una sessione TEEC con la TA PKCS#11.
  2. Inizializza lo slot token 0.
  3. Apre una sessione PKCS#11 R/W.
  4. Crea un oggetto sessione AES con CKA_LABEL = "AAAAAAAAAAAAAAAA".
  5. Invia una richiesta CMD_GET_ATTRIBUTE_VALUE malformata con attrs_size = 8 e cli_head.size = 16.

La prima richiesta dannosa è sufficiente a corrompere i metadati dell'heap. La TA poi va in panic quando l'allocatore bget di OP-TEE rileva i metadati del blocco corrotti.

Note

  • run_c01.sh condivide out/bin nell'ospite tramite virtio-9p e scrive i log di nuovo nella stessa directory.
  • In un archivio locale completo, i collegamenti degli artefatti di avvio preparati in out/bin dovrebbero puntare agli artefatti all'interno di quell'archivio. Il repository GitHub pubblicato traccia solo i file out/bin/c01_*.log catturati.
  • C-01-reproduction.md documenta un approccio precedente con l'harness ASAN x86. La PoC eseguibile in questa cartella è la PoC QEMUv8 TEEC: c01_poc.c.
  • Poiché i metadati del repository sono stati rimossi, tratta questa directory come uno spazio di lavoro PoC archiviato piuttosto che un checkout OP-TEE sincronizzato a monte.
Scarica lo strumento
PercorsoScopo
c01_poc.cPoC AArch64 Normal World che utilizza chiamate libteec grezze
build_poc.shCompila in modo incrociato c01_poc.c in out/bin/c01_poc
run_c01.shAvvia QEMUv8 ed esegue la PoC tramite expect
c01_check.expAutomatizza il login ospite, il mount virtio-9p e l'esecuzione della PoC
out/bin/c01_nw.logLog di riproduzione Normal World catturato
out/bin/c01_sw.logLog Secure World catturato con il panic della TA PKCS#11
reproduction-log.mdNote complete di riproduzione QEMUv8
qemu-v8-setup.mdNote di configurazione e validazione di base OP-TEE QEMUv8
C-01-reproduction.mdNote precedenti dell'harness ASAN; non è la PoC eseguibile principale in questa cartella
AGENTS.mdNote di manutenzione per futuri agenti AI/codice