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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
GoTEE-example — GoTEE - example application | Kitploit
ツール/GitHubGitHub/usbarmory/gotee-example
Embedded Systems SecurityMemory ForensicsDebuggersSecurity VirtualizationHardware Security
GitHubusbarmory/gotee-example

GoTEE-example

GoTEE - example application

リポジトリを見る
1754ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

はじめに

GoTEEフレームワークは、TamaGoベースのユニカーネルを特権モードと非特権モードで同時にインスタンス化し、モニターモードとカスタムシステムコールを介して相互にやり取りします。

これらの機能により、GoTEEはTamaGoベースのTrusted Execution Environments(TEE)を実装し、ARM TrustZone Secure WorldまたはRISC-V Supervisor Execution Environments内のベアメタル実行にGoのメモリ安全性、利便性、および機能をもたらします。

GoTEEは、GoTEE APIを実装する純粋なGo、Rust、またはCベースのフリースタンディングTrusted Appletに加えて、LinuxなどARM TrustZone Normal WorldまたはRISC-V Sモードで実行可能な任意のオペレーティングシステムを監視できます。

機能

  • ARMユーザーモード、TrustZone Normal World、またはRISC-Vスーパーバイザーモード用の分離された実行コンテキスト

  • フォールト検出のための日和見的ソフトロックステップ

  • Trusted OS実装のためのAPI(Syscall、JSON-RPC、例外ハンドラ)

ドキュメント

Go Reference

チュートリアルを含むメインのドキュメントは、プロジェクトwikiにあります。

パッケージAPIドキュメントはpkg.go.devにあります。

サポートされているハードウェア

次の表は、現在サポートされているSoCとボードをまとめたものです。

サンプルアプリケーション

TEEの用語では、特権ユニカーネルは一般にTrusted OSと呼ばれ、非特権ユニカーネルはTrusted Appletを表します。

GoTEEのサンプルは、Trusted OS、Trusted Applet、Main OSとして動作するGoユニカーネルの同時動作を示しています。

[!WARNING] Main OSは任意の「リッチ」OS(例: Linux)を使用できます。TamaGoは単に自己完結型のサンプルのために使用されています。これはTrusted Appletにも同様に当てはまり、ユーザーモードで実行でき、GoTEE APIを実装する任意のベアメタルアプリケーション(フリースタンディングCまたはRustプログラムなど)を使用できます。

ビルド時にtrusted_applet_goをtrusted_applet_rustに置き換えることで、Rustのサンプルを使用できます。

このサンプルのTrusted OS/アプレットの組み合わせは、異なる特権レベルでの3つのTamaGoユニカーネルの同時実行の基本的なテストを実行します。

  • Trusted OS(ARM: TZ Secure Worldシステムモード、RISC-V: Mモード)
  • Trusted Applet(ARM: TZ Secure Worldユーザーモード、RISC-V: Sモード)
  • Main OS(ARM: TZ Normal Worldシステムモード、RISC-V: Sモード)

Main OSはモニターコールで制御を戻します。

Trusted Appletは、Trusted OSのメモリを読み取ろうとする前に5秒間スリープします。これにより、スーパーバイザーが処理する例外がトリガーされ、Trusted Appletが終了します。

GoTEEのsyscallインターフェースは、Trusted OSとTrusted Applet間の通信のために実装されています。

USB armory Mk IIで起動した場合、サンプルアプリケーションはEthernet over USB(ECMプロトコル、LinuxおよびmacOSホストでサポート)経由でSSHを使用してアクセスできます。

root@kitploit:~
$ ssh [email protected]
tamago/arm • TEE security monitor (Secure World system/monitor)

allgptr                                          # memory forensics of applet goroutines
csl                                              # show config security levels (CSL)
csl             <periph> <slave> <hex csl>       # set config security level (CSL)
dbg                                              # show ARM debug permissions
exit, quit                                       # close session
gotee                                            # TrustZone example w/ TamaGo unikernels
help                                             # this help
linux           <uSD|eMMC>                       # boot NonSecure USB armory Debian base image
lockstep        <fault %>                        # tandem applet example w/ fault injection
peek            <hex offset> <size>              # memory display (use with caution)
poke            <hex offset> <hex value>         # memory write   (use with caution)
reboot                                           # reset device
sa                                               # show security access (SA)
sa              <id> <secure|nonsecure>          # set security access (SA)
stack                                            # stack trace of current goroutine
stackall                                         # stack trace of all goroutines

>

サンプルはgoteeコマンドで起動でき、実際のハードウェアペリフェラルを使用して、TrustZone制限が有効になる前後の動作を示すためにMain OSを2回起動します。

さらに、linuxコマンドを使用して、USB armory Debianベースイメージを非セキュアなメインOSとして起動できます。

[!NOTE] 非セキュア動作では、USB armory Debianベースイメージのリリース>= 20211129のみがサポートされています。

gotee

サンプルはQEMUエミュレーションでも実行できます。

[!NOTE] エミュレーション実行は、QEMUによる完全なTrustZone/PMPサポートがないため、部分的なテストのみ行います。

root@kitploit:~
make qemu
...
> gotee
00:00:00 tamago/arm • TEE security monitor (Secure World system/monitor)
00:00:00 SM loaded applet addr:0x9c000000 entry:0x9c072740 size:4940275
00:00:00 SM loaded kernel addr:0x80000000 entry:0x8007100c size:4577643
00:00:00 SM waiting for applet and kernel
00:00:00 SM starting mode:USR sp:0x9e000000 pc:0x9c072740 ns:false
00:00:00 SM starting mode:SYS sp:0x00000000 pc:0x8007100c ns:true
00:00:00 tamago/arm (go1.19.1) • TEE user applet
00:00:00 tamago/arm (go1.19.1) • system/supervisor (Non-secure)
00:00:00 supervisor is about to yield back
00:00:00 SM stopped mode:SYS sp:0x8146bf54 lr:0x801937a4 pc:0x80193884 ns:true err:exit
00:00:00 applet obtained 16 random bytes from monitor: b4cc4764dd30291a52545b182313003c
00:00:00 applet requests echo via RPC: hello
00:00:00 applet received echo via RPC: hello
00:00:00 applet will sleep for 5 seconds
00:00:01 applet says 1 mississippi
...
00:00:05 applet says 5 mississippi
00:00:05 applet is about to read secure memory at 0x98010000
00:00:05    r0:98010000  r1:9c8240c0  r2:98010000  r3:00000000
00:00:05    r4:00000000  r5:00000000  r6:00000000  r7:9c86bec8
00:00:05    r8:00000007  r9:0000003d r10:9c8020f0 r11:9c342f41 cpsr:600001d7 (ABT)
00:00:05   r12:00000061  sp:9c86bf08  lr:9c1b1be8  pc:9c011330 spsr:600001d0 (USR)
00:00:05 SM stopped mode:USR sp:0x9c86bf08 lr:0x9c1b1be8 pc:0x9c011330 ns:false err:ABT

コンパイラのビルド

TamaGoコンパイラは、Makefileによってgo toolとして自動的にダウンロードおよびコンパイルされます。

または、TAMAGO環境変数を上書きして、最新のバイナリリリースを使用できます:

root@kitploit:~
wget https://github.com/usbarmory/tamago-go/archive/refs/tags/latest.zip
unzip latest.zip
cd tamago-go-latest/src && ./all.bash
cd ../bin && export TAMAGO=`pwd`/go

ARMターゲットでのビルドと実行

サンプルのtrusted appletとカーネル実行ファイルを次のようにビルドします:

root@kitploit:~
git clone https://github.com/usbarmory/GoTEE-example
cd GoTEE-example && export TARGET=usbarmory && make nonsecure_os_go && make trusted_applet_go && make trusted_os

[!NOTE] Rust TAのサンプルでは、trusted_applet_goをtrusted_applet_rustに置き換えてください。これにはRust nightlyとarmv7a-none-eabiツールチェーンが必要です。

最終的な実行ファイルはbinサブディレクトリに作成され、ネイティブ実行にはtrusted_os_usbarmory.imxを使用してください。

次のターゲットが利用可能です:

TARGETボード実行とデバッグ
usbarmoryUSB armory Mk IIusbarmory

ターゲットは、ネイティブ(上記の表の関連ドキュメントリンクを参照)およびエミュレーション実行(例: make qemu)をサポートしています。

RISC-Vターゲットでのビルドと実行

サンプルのtrusted appletとカーネル実行ファイルを次のようにビルドします:

root@kitploit:~
git clone https://github.com/usbarmory/GoTEE-example
cd GoTEE-example && export TARGET=sifive_u && make nonsecure_os_go && make trusted_applet_go && make trusted_os

[!NOTE] Rust TAのサンプルでは、trusted_applet_goをtrusted_applet_rustに置き換えてください。これにはRust nightlyとriscv64gc-unknown-none-elfツールチェーンが必要です。

最終的な実行ファイルはbinサブディレクトリに作成されます。

利用可能なターゲット:

TARGETボード実行とデバッグ
sifive_uQEMU sifive_usifive_u

このターゲットはエミュレーション実行(例: make qemu)でのみテストされています。

GoTEEを使用するアプリケーション

  • ArmoredWitness - クロスエコシステムのウィットネスネットワーク

著者

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

ライセンス

GoTEE | https://github.com/usbarmory/GoTEE
Copyright (c) The GoTEE authors. All Rights Reserved.

これらのソースファイルは、LICENSEファイルに記載されているBSDスタイルのライセンスの下で配布されています。

ツールをダウンロード
SoCボードSoCパッケージボードパッケージ
NXP i.MX6ULZUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULLMCIMX6ULL-EVKimx6ulmx6ullevk
SiFive FU540QEMU sifive_ufu540qemu/sifive_u