Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-33317 — Prova de conceito para CVE-2026-33317, uma escrita fora dos limites no OP-TEE PKCS#11 TA, demonstrando corrupção de heap no Secure World por meio de um modelo de atributo malformado. | Kitploit
Ferramentas/GitHubGitHub/0xbbdd/cve-2026-33317
Segurança de Sistemas EmbarcadosAnálise de VulnerabilidadesExploraçãoFuzzingSegurança de Hardware e IoTExploração de Binários
GitHub0xbbdd/cve-2026-33317

CVE-2026-33317

Prova de conceito para CVE-2026-33317, uma escrita fora dos limites no OP-TEE PKCS#11 TA, demonstrando corrupção de heap no Secure World por meio de um modelo de atributo malformado.

Ver Repositório
há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

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

Este repositório contém a prova de conceito (PoC) do Mundo Normal, notas de reprodução e logs capturados para CVE-2026-33317 / GHSA-8cqw-mg7v-c9p9.

O aviso oficial do OP-TEE descreve validação ausente em entry_get_attribute_value() para PKCS11_CMD_GET_ATTRIBUTE_VALUE. O bug pode causar leituras fora dos limites do heap da TA PKCS#11 e, com um template de atributos malformado, gravações além do buffer temporário do template. Esta PoC tem como alvo o caso de gravação fora dos limites e demonstra corrupção do heap do Mundo Seguro na TA PKCS#11.

  • Aviso: https://github.com/OP-TEE/optee_os/security/advisories/GHSA-8cqw-mg7v-c9p9
  • CVE: CVE-2026-33317
  • Pacote afetado: TA PKCS#11 do OP-TEE
  • Versões afetadas no aviso: >= 3.13.0
  • Versões corrigidas no aviso: 4.11 e posteriores
  • CVSS v3.1 no aviso: 8.7 Alta
  • Fraquezas no aviso: CWE-125, CWE-787

Use isto apenas em um laboratório local ou em outro ambiente onde você esteja autorizado a testar o OP-TEE.

O Que Há Nesta Pasta

A cópia de trabalho local a partir da qual este README foi preparado era um espaço de trabalho QEMUv8 do OP-TEE achatado. O diretório .repo e todos os metadados .git (arquivos/diretórios) foram removidos, portanto esse arquivo local não é mais utilizável com repo sync ou comandos normais de histórico do git.

O repositório GitHub exclui intencionalmente as árvores de código-fonte volumosas do OP-TEE/QEMU, toolchains e saídas de build. Recrie-os a partir de qemu-v8-setup.md, ou copie os arquivos da PoC para uma raiz de build qemu_v8 existente do OP-TEE, antes de executar a reprodução automatizada do QEMU a partir de um clone novo.

Arquivos importantes de nível superior:

O arquivo local preparado também tinha diretórios de código-fonte/build como optee_os, optee_client, qemu, linux, trusted-firmware-a, u-boot, buildroot, out-br e toolchains; estes são ignorados para publicação.

Resumo da Vulnerabilidade

Na árvore optee_os vulnerável, ta/pkcs11/src/object.c itera sobre um template de atributos serializado fornecido pelo 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);

O loop não prova que cada cabeçalho de atributo e sua área de dados estão totalmente dentro do template alocado. A PoC envia:

  • attrs_size = 8, exatamente um pkcs11_attribute_head e nenhum byte de dados.
  • attrs_count = 1.
  • cli_head.id = CKA_LABEL.
  • cli_head.size = 16, correspondendo ao rótulo de 16 bytes do objeto criado.

Isso cria uma alocação de template de 16 bytes:

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

cli_ref->data então aponta para template + 16, exatamente um byte além do final da alocação. get_attribute() em ta/pkcs11/src/attributes.c vê que o tamanho fornecido pelo chamador é grande o suficiente e copia o rótulo de 16 bytes para esse ponteiro fora dos limites, corrompendo o heap da TA PKCS#11.

Início Rápido

Pré-requisitos usados pelo espaço de trabalho QEMUv8 preparado:

  • Host Linux x86-64
  • expect
  • Um espaço de trabalho qemu_v8 do OP-TEE com saídas de build, toolchains e binário QEMU organizados como o arquivo local descrito em qemu-v8-setup.md

Compile a PoC:

root@kitploit:~
./build_poc.sh

Resultado esperado do build:

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

Execute a reprodução automatizada do QEMUv8:

root@kitploit:~
./run_c01.sh

O wrapper verifica estes arquivos preparados antes de inicializar:

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

Se os artefatos de build estiverem ausentes, recrie/compile o espaço de trabalho do OP-TEE primeiro e então execute novamente ./build_poc.sh.

Resultado Esperado

O log do Mundo Normal deve mostrar a solicitação elaborada:

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

O log do Mundo Seguro deve conter a asserção do alocador e o pânico da 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

Logs capturados de uma execução bem-sucedida já estão presentes em:

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

Fluxo da PoC

c01_poc.c invoca o UUID da TA PKCS#11 fd02c9da-306c-48c7-a49c-bbd827ae86ee através de libteec:

  1. Abre uma sessão TEEC com a TA PKCS#11.
  2. Inicializa o slot de token 0.
  3. Abre uma sessão PKCS#11 de leitura/gravação.
  4. Cria um objeto de sessão AES com CKA_LABEL = "AAAAAAAAAAAAAAAA".
  5. Envia uma solicitação malformada CMD_GET_ATTRIBUTE_VALUE com attrs_size = 8 e cli_head.size = 16.

A primeira solicitação maliciosa é suficiente para corromper os metadados do heap. A TA então entra em pânico quando o alocador bget do OP-TEE detecta os metadados de bloco corrompidos.

Notas

  • run_c01.sh compartilha out/bin com o convidado via virtio-9p e grava logs de volta no mesmo diretório.
  • Em um arquivo local completo, os links de artefatos de inicialização preparados em out/bin devem apontar para artefatos dentro desse arquivo. O repositório GitHub publicado rastreia apenas os arquivos out/bin/c01_*.log capturados.
  • C-01-reproduction.md documenta uma abordagem anterior de harness ASAN x86. A PoC executável nesta pasta é a PoC TEEC QEMUv8: c01_poc.c.
  • Como os metadados do repo foram removidos, trate este diretório como um espaço de trabalho de PoC arquivado em vez de um checkout do OP-TEE sincronizado com upstream.
Baixar ferramenta
CaminhoFinalidade
c01_poc.cPoC do Mundo Normal AArch64 usando chamadas libteec brutas
build_poc.shCompila de forma cruzada c01_poc.c em out/bin/c01_poc
run_c01.shInicializa o QEMUv8 e executa a PoC via expect
c01_check.expAutomatiza login do convidado, montagem virtio-9p e execução da PoC
out/bin/c01_nw.logLog de reprodução capturado do Mundo Normal
out/bin/c01_sw.logLog capturado do Mundo Seguro com o pânico da TA PKCS#11
reproduction-log.mdNotas completas de reprodução do QEMUv8
qemu-v8-setup.mdNotas de configuração e validação de linha de base do QEMUv8 do OP-TEE
C-01-reproduction.mdNotas anteriores do harness ASAN; não é a PoC executável principal nesta pasta
AGENTS.mdNotas de manutenção para futuros agentes de IA/código