Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-33317 — Доказательство концепции для CVE-2026-33317, записи за пределами границ в OP-TEE PKCS#11 TA, демонстрирующей повреждение кучи Secure World через некорректный шаблон атрибутов. | Kitploit
Инструменты/GitHubGitHub/0xbbdd/cve-2026-33317
Безопасность встроенных системАнализ уязвимостейЭксплуатацияФаззингБезопасность оборудования и IoTЭксплуатация Бинарных Файлов
GitHub0xbbdd/cve-2026-33317

CVE-2026-33317

Доказательство концепции для CVE-2026-33317, записи за пределами границ в OP-TEE PKCS#11 TA, демонстрирующей повреждение кучи Secure World через некорректный шаблон атрибутов.

Репозиторий
3 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

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

Этот репозиторий содержит proof of concept для Normal World, заметки по воспроизведению и захваченные журналы для CVE-2026-33317 / GHSA-8cqw-mg7v-c9p9.

Официальный advisory OP-TEE описывает отсутствие проверки в entry_get_attribute_value() для PKCS11_CMD_GET_ATTRIBUTE_VALUE. Ошибка может вызывать чтение за пределами границ из кучи PKCS#11 TA и, при некорректном шаблоне атрибутов, запись за пределы временного буфера шаблона. Этот PoC нацелен на случай записи за пределами границ и демонстрирует повреждение кучи Secure World в PKCS#11 TA.

  • Advisory: https://github.com/OP-TEE/optee_os/security/advisories/GHSA-8cqw-mg7v-c9p9
  • CVE: CVE-2026-33317
  • Затронутый пакет: OP-TEE PKCS#11 TA
  • Затронутые версии в advisory: >= 3.13.0
  • Исправленные версии в advisory: 4.11 и новее
  • CVSS v3.1 в advisory: 8.7 High
  • Слабые места в advisory: CWE-125, CWE-787

Используйте это только в локальной лаборатории или в другой среде, где вам разрешено тестировать OP-TEE.

Что находится в этой папке

Локальная рабочая копия, из которой был подготовлен этот README, представляла собой упрощённое рабочее пространство OP-TEE QEMUv8. Каталог .repo и все файлы/каталоги метаданных .git были удалены, поэтому этот локальный архив больше не пригоден для использования с repo sync или обычными командами истории git.

Репозиторий GitHub намеренно исключает громоздкие деревья исходников OP-TEE/QEMU, тулчейны и результаты сборки. Воссоздайте их из qemu-v8-setup.md или скопируйте файлы PoC в существующий корень сборки OP-TEE qemu_v8 перед запуском автоматизированного воспроизведения QEMU из свежего клона.

Важные файлы верхнего уровня:

Подготовленный локальный архив также содержал каталоги исходников/сборки, такие как optee_os, optee_client, qemu, linux, trusted-firmware-a, u-boot, buildroot, out-br и toolchains; они игнорируются для публикации.

Сводка по уязвимости

В уязвимом дереве optee_os функция ta/pkcs11/src/object.c выполняет итерацию по сериализованному шаблону атрибутов, предоставленному клиентом:

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

Цикл не доказывает, что каждый заголовок атрибута и его область данных полностью находятся внутри выделенного шаблона. PoC отправляет:

  • attrs_size = 8, ровно один pkcs11_attribute_head и ни одного байта данных.
  • attrs_count = 1.
  • cli_head.id = CKA_LABEL.
  • cli_head.size = 16, совпадает с 16-байтовой меткой созданного объекта.

Это создаёт выделение шаблона размером 16 байт:

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

Затем cli_ref->data указывает на template + 16, ровно на один байт за концом выделения. Функция get_attribute() в ta/pkcs11/src/attributes.c видит, что предоставленный вызывающей стороной размер достаточно велик, и копирует 16-байтовую метку по этому указателю за пределами границ, повреждая кучу PKCS#11 TA.

Быстрый старт

Предварительные требования, использованные в подготовленном рабочем пространстве QEMUv8:

  • Хост Linux x86-64
  • expect
  • Рабочее пространство OP-TEE qemu_v8 с результатами сборки, тулчейнами и бинарником QEMU, разложенными как в локальном архиве, описанном в qemu-v8-setup.md

Сборка PoC:

root@kitploit:~
./build_poc.sh

Ожидаемый результат сборки:

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

Запуск автоматизированного воспроизведения QEMUv8:

root@kitploit:~
./run_c01.sh

Обёртка проверяет наличие следующих подготовленных файлов перед загрузкой:

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

Если артефакты сборки отсутствуют, сначала воссоздайте/соберите рабочее пространство OP-TEE, а затем повторно запустите ./build_poc.sh.

Ожидаемый результат

Журнал Normal World должен показать сформированный запрос:

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

Журнал Secure World должен содержать утверждение аллокатора и панику 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

Захваченные журналы успешного запуска уже присутствуют в:

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

Поток PoC

c01_poc.c вызывает UUID PKCS#11 TA fd02c9da-306c-48c7-a49c-bbd827ae86ee через libteec:

  1. Открывает сессию TEEC с PKCS#11 TA.
  2. Инициализирует слот токена 0.
  3. Открывает сессию PKCS#11 с правами чтения/записи.
  4. Создаёт объект сессии AES с CKA_LABEL = "AAAAAAAAAAAAAAAA".
  5. Отправляет некорректный запрос CMD_GET_ATTRIBUTE_VALUE с attrs_size = 8 и cli_head.size = 16.

Первого вредоносного запроса достаточно для повреждения метаданных кучи. Затем TA паникует, когда аллокатор bget OP-TEE обнаруживает повреждённые метаданные блока.

Примечания

  • run_c01.sh предоставляет общий доступ к out/bin в гостевой системе через virtio-9p и записывает журналы обратно в тот же каталог.
  • В полном локальном архиве ссылки на подготовленные загрузочные артефакты в out/bin должны указывать на артефакты внутри этого архива. Опубликованный репозиторий GitHub отслеживает только захваченные файлы out/bin/c01_*.log.
  • C-01-reproduction.md документирует более ранний подход с x86 ASAN-харнесом. Запускаемый PoC в этой папке — это QEMUv8 TEEC PoC: c01_poc.c.
  • Поскольку метаданные repo были удалены, рассматривайте этот каталог как архивное рабочее пространство PoC, а не как синхронизированную с upstream копию OP-TEE.
Скачать инструмент
ПутьНазначение
c01_poc.cPoC для AArch64 Normal World с использованием прямых вызовов libteec
build_poc.shКросс-компилирует c01_poc.c в out/bin/c01_poc
run_c01.shЗагружает QEMUv8 и запускает PoC через expect
c01_check.expАвтоматизирует вход гостя, монтирование virtio-9p и выполнение PoC
out/bin/c01_nw.logЗахваченный журнал воспроизведения Normal World
out/bin/c01_sw.logЗахваченный журнал Secure World с паникой PKCS#11 TA
reproduction-log.mdПолные заметки по воспроизведению QEMUv8
qemu-v8-setup.mdЗаметки по настройке OP-TEE QEMUv8 и базовой проверке
C-01-reproduction.mdБолее ранние заметки по ASAN-харнесу; не основной запускаемый PoC в этой папке
AGENTS.mdЗаметки по сопровождению для будущих ИИ/кодовых агентов