Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-33317 — CVE-2026-33317에 대한 개념 증명(PoC)으로, OP-TEE PKCS#11 TA의 경계를 벗어난 쓰기(out-of-bounds write) 취약점을 악용하여 잘못된 형식의 속성 템플릿을 통해 Secure World 힙 손상을 입증합니다. | Kitploit
도구/GitHubGitHub/0xbbdd/cve-2026-33317
Embedded Systems SecurityVulnerability AnalysisExploitationFuzzingHardware & IoT SecurityBinary Exploitation
GitHub0xbbdd/cve-2026-33317

CVE-2026-33317

CVE-2026-33317에 대한 개념 증명(PoC)으로, OP-TEE PKCS#11 TA의 경계를 벗어난 쓰기(out-of-bounds write) 취약점을 악용하여 잘못된 형식의 속성 템플릿을 통해 Secure World 힙 손상을 입증합니다.

저장소 보기
3개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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

이 저장소에는 CVE-2026-33317 / GHSA-8cqw-mg7v-c9p9에 대한 Normal World 개념 증명(PoC), 재현 메모, 캡처된 로그가 포함되어 있습니다.

공식 OP-TEE 권고는 PKCS11_CMD_GET_ATTRIBUTE_VALUE에 대한 entry_get_attribute_value()에서 누락된 검증을 설명합니다. 이 버그는 PKCS#11 TA 힙에서 경계를 벗어난 읽기를 유발할 수 있으며, 잘못된 형식의 속성 템플릿을 사용하면 임시 템플릿 버퍼를 넘어 쓰기가 발생할 수 있습니다. 이 PoC는 경계를 벗어난 쓰기 사례를 대상으로 하며 PKCS#11 TA에서 Secure World 힙 손상을 입증합니다.

  • 권고: https://github.com/OP-TEE/optee_os/security/advisories/GHSA-8cqw-mg7v-c9p9
  • CVE: CVE-2026-33317
  • 영향받는 패키지: OP-TEE PKCS#11 TA
  • 권고의 영향받는 버전: >= 3.13.0
  • 권고의 패치된 버전: 4.11 이상
  • 권고의 CVSS v3.1: 8.7 높음(High)
  • 권고의 취약점: CWE-125, CWE-787

OP-TEE를 테스트할 권한이 있는 로컬 랩 또는 기타 환경에서만 사용하십시오.

이 폴더에 포함된 내용

이 README가 작성된 로컬 작업 복사본은 평면화된 OP-TEE QEMUv8 작업 공간이었습니다. .repo 디렉터리와 모든 .git 메타데이터 파일/디렉터리가 제거되어, 해당 로컬 아카이브는 더 이상 repo sync 또는 일반적인 git 히스토리 명령과 함께 사용할 수 없습니다.

GitHub 저장소는 용량이 큰 OP-TEE/QEMU 소스 트리, 툴체인, 빌드 출력물을 의도적으로 제외합니다. 자동화된 QEMU 재현을 새 클론에서 실행하기 전에 qemu-v8-setup.md에서 해당 항목을 재생성하거나, PoC 파일을 기존 OP-TEE qemu_v8 빌드 루트에 복사하십시오.

중요한 최상위 파일:

준비된 로컬 아카이브에는 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을 가리키며, 할당 끝에서 정확히 1바이트를 벗어납니다. ta/pkcs11/src/attributes.c의 get_attribute()는 호출자가 제공한 크기가 충분히 크다고 판단하고 16바이트 라벨을 해당 경계를 벗어난 포인터에 복사하여 PKCS#11 TA 힙을 손상시킵니다.

빠른 시작

준비된 QEMUv8 작업 공간에서 사용된 사전 요구 사항:

  • Linux x86-64 호스트
  • expect
  • qemu-v8-setup.md에 설명된 로컬 아카이브와 같이 배치된 빌드 출력물, 툴체인, QEMU 바이너리가 있는 OP-TEE qemu_v8 작업 공간

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는 libteec를 통해 PKCS#11 TA UUID fd02c9da-306c-48c7-a49c-bbd827ae86ee를 호출합니다:

  1. PKCS#11 TA와 TEEC 세션을 엽니다.
  2. 토큰 슬롯 0을 초기화합니다.
  3. 읽기/쓰기 PKCS#11 세션을 엽니다.
  4. CKA_LABEL = "AAAAAAAAAAAAAAAA"로 AES 세션 객체를 생성합니다.
  5. attrs_size = 8 및 cli_head.size = 16으로 잘못된 형식의 CMD_GET_ATTRIBUTE_VALUE 요청을 전송합니다.

첫 번째 악의적인 요청만으로도 힙 메타데이터를 손상시키기에 충분합니다. 그런 다음 OP-TEE bget 할당자가 손상된 블록 메타데이터를 감지하면 TA가 패닉합니다.

참고 사항

  • run_c01.sh는 virtio-9p를 통해 out/bin을 게스트와 공유하고 로그를 동일한 디렉터리에 다시 씁니다.
  • 전체 로컬 아카이브에서 out/bin의 준비된 부팅 아티팩트 링크는 해당 아카이브 내부의 아티팩트를 가리켜야 합니다. 게시된 GitHub 저장소는 캡처된 out/bin/c01_*.log 파일만 추적합니다.
  • C-01-reproduction.md는 이전 x86 ASAN 하네스 접근 방식을 문서화합니다. 이 폴더의 실행 가능한 PoC는 QEMUv8 TEEC PoC인 c01_poc.c입니다.
  • repo 메타데이터가 제거되었으므로 이 디렉터리를 업스트림 동기화된 OP-TEE 체크아웃이 아닌 아카이브된 PoC 작업 공간으로 취급하십시오.
도구 다운로드
경로용도
c01_poc.c원시 libteec 호출을 사용하는 AArch64 Normal World PoC
build_poc.shc01_poc.c를 out/bin/c01_poc으로 크로스 컴파일
run_c01.shQEMUv8을 부팅하고 expect를 통해 PoC 실행
c01_check.exp게스트 로그인, virtio-9p 마운트, PoC 실행 자동화
out/bin/c01_nw.log캡처된 Normal World 재현 로그
out/bin/c01_sw.logPKCS#11 TA 패닉이 포함된 캡처된 Secure World 로그
reproduction-log.md전체 QEMUv8 재현 메모
qemu-v8-setup.mdOP-TEE QEMUv8 설정 및 기준 검증 메모
C-01-reproduction.md이전 ASAN 하네스 메모; 이 폴더의 주요 실행 가능 PoC가 아님
AGENTS.md향후 AI/코드 에이전트를 위한 유지 관리 메모