Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
optee-qemu — TEEドライバー(CVE-2021-44733)を悪用するための脆弱なカーネル環境 | Kitploit
ツール/GitHubGitHub/pjlantz/optee-qemu
組み込みシステムセキュリティ脆弱性分析エクスプロイトファジング学習と教育バイナリエクスプロイトラボと実践
GitHubpjlantz/optee-qemu

optee-qemu

TEEドライバー(CVE-2021-44733)を悪用するための脆弱なカーネル環境

リポジトリを見る
761184年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2021-44733: LinuxカーネルTEEサブシステムにおけるuse-after-freeのファジングとエクスプロイト

最近、LinuxカーネルTEEサブシステム(バージョン5.15.11までを含む)においてuse-after-freeの脆弱性が発見され、CVE-2021-44733 [1]が割り当てられました。

一見すると、いくつかの理由で悪用可能には見えませんでしたが、脆弱なコードパスをさらに分析し、粗い概念実証エクスプロイトを実装した結果、カーネル内の関数ポインタを上書きすることが可能でした。この記事では特権昇格のペイロードは提示されていませんが、OPTEEとエクスプロイトを実行するための環境全体がさらなるテストのために利用可能です。「環境のセットアップ」を参照してください。

背景

TEE(Trusted Execution Environment)は、ARM CPUのTrustZoneなどのセキュアな環境で動作する信頼されたOSです。TEEドライバは、TEEと通信するために必要な詳細を処理します。ドライバのより重要な役割のいくつかは、Globalplatform TEE Client API仕様[3]に基づいたTEEへの汎用APIを提供することですが、LinuxとTEE間の共有メモリを管理することもあります。このサブシステムは、ARMアーキテクチャのカーネル設定で CONFIG_OPTEE を設定することで有効にできます。

セキュアワールドには、OP-TEE OS [4]と呼ばれる信頼されたOSが含まれています。このOSの上では、いわゆるTrusted Applications(TA)を実行することができ、隔離された環境でいくつかの操作を実行できます。図1を参照してください。

TEEの概要
図1: TEEの概要 - Linaroのプレゼンテーション[5]より

ノーマルワールド(Linuxユーザースペース/カーネル)は、クライアントアプリケーション(CA)とTEEサブシステムが公開するAPIを使用して、これらのアプリケーションと対話できます。CAは特定のTAに向けてセッションを開き、TAが実装する関数を呼び出すことができます。TAとCA間の引数の受け渡しは、共有メモリを使用して行われます。 次に、関連するすべてのシステムコールを使用したCAとTA間の相互作用について説明します。

  1. CAはドライバと通信するために /dev/tee[0-9] を開きます。従来のAPIの使用方法では、これはlibteecを使用して暗黙的に行われることに注意してください。

  2. CAは IOCTL TEE_IOC_SHM_ALLOC を使用して共有メモリを登録できます。これにより共有メモリが割り当てられ、ユーザースペースがmmapの一部として使用できるファイル記述子が返されます。

  3. 次のステップは、IOCTL TEE_IOC_OPEN_SESSION を使用し、特定のTAのUUIDを指定してセッションを確立することです。このUUIDはTAのコンパイル時にハードコードされます。

  4. TA内の特定の関数を呼び出すために、CAは関数の識別子と入力引数を指定してこれを呼び出します。これは TEE_IOC_INVOKE を使用して行われます。

  5. CAがすべてのリクエストを完了したら、TEE_IOC_CLOSE_SESSION を使用してセッションを閉じることができます。

CAとTA間のセッション
図2: CAとTA間のセッション - Linaroのプレゼンテーション[5]より

クライアントとTEE間の通信の多くはドライバにとって透過的です。ドライバの主な仕事は、コンテキストを管理し、クライアントからのリクエストを受け取り、それらをTEEに転送し、結果を返すことです[2]。

TEEドライバのファジング

ツールをダウンロード