Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-33317 — CVE-2026-33317の概念実証。OP-TEE PKCS#11 TAにおける領域外書き込みであり、不正な属性テンプレートを介したセキュアワールドのヒープ破壊を実証します。 | Kitploit
ツール/GitHubGitHub/0xbbdd/cve-2026-33317
組み込みシステムセキュリティ脆弱性分析エクスプロイトファジングハードウェアとIoTセキュリティバイナリエクスプロイト
GitHub0xbbdd/cve-2026-33317

CVE-2026-33317

CVE-2026-33317の概念実証。OP-TEE PKCS#11 TAにおける領域外書き込みであり、不正な属性テンプレートを介したセキュアワールドのヒープ破壊を実証します。

リポジトリを見る
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-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、正確に1つの 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 は 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メタデータが削除されたため、このディレクトリはアップストリームと同期された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/コードエージェント向けのメンテナンスメモ