Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
GoTEE — Go Trusted Execution Environment (TEE) | Kitploit
Tools/GitHubGitHub/usbarmory/gotee
Embedded-System-SicherheitSicherheitsvirtualisierungHardware-Sicherheit
GitHubusbarmory/gotee

GoTEE

Go Trusted Execution Environment (TEE)

Repository anzeigen
15213vor 2 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Einführung

Das GoTEE-Framework ermöglicht die gleichzeitige Instanziierung von auf TamaGo basierenden Unikerneln im privilegierten und unprivilegierten Modus, die über den Monitor-Modus und benutzerdefinierte Systemaufrufe miteinander interagieren.

Mit diesen Fähigkeiten implementiert GoTEE eine TamaGo basierte Trusted Execution Environment (TEE) und bringt Go-Speichersicherheit, Komfort und Fähigkeiten in die Bare-Metal-Ausführung innerhalb der ARM TrustZone Secure World oder der RISC-V-Supervisor-Execution-Environments.

GoTEE kann freistehende Trusted Applets auf Basis von reinem Go, Rust oder C überwachen, die die GoTEE-API implementieren, sowie jedes Betriebssystem, das in der ARM TrustZone Normal World oder im RISC-V-S-Modus ausgeführt werden kann, wie z. B. Linux.

Funktionen

  • Isolierte Ausführungskontexte für den ARM User Mode, die TrustZone Normal World oder den RISC-V Supervisor Mode

  • Opportunistischer Soft-Lockstep zur Fehlererkennung

  • API für die Trusted-OS-Implementierung (Syscall-, JSON-RPC- und Ausnahme-Handler)

Dokumentation

Go Reference

Die Hauptdokumentation, die ein Tutorial enthält, finden Sie im Projekt-Wiki.

Die API-Dokumentation des Pakets finden Sie auf pkg.go.dev.

Unterstützte Hardware

Die folgende Tabelle fasst die derzeit unterstützten SoCs und Boards zusammen.

Beispielanwendung

In der TEE-Nomenklatur wird der privilegierte Unikernel üblicherweise als Trusted OS bezeichnet, während der unprivilegierte ein Trusted Applet darstellt.

Das GoTEE-Beispiel demonstriert den gleichzeitigen Betrieb von Go-Unikerneln, die als Trusted OS, Trusted Applet und Main OS fungieren.

[!WARNING] Das Main OS kann ein beliebiges „Rich“-OS sein (z. B. Linux); TamaGo wird lediglich für ein in sich geschlossenes Beispiel verwendet. Gleiches gilt für das Trusted Applet, das jede Bare-Metal-Anwendung sein kann, die im User Mode ausgeführt werden kann und die GoTEE-API implementiert, wie z. B. freistehende C- oder Rust-Programme.

Ein Rust-Beispiel kann verwendet werden, indem beim Erstellen trusted_applet_go durch trusted_applet_rust ersetzt wird.

Die Beispiel-Kombination aus Trusted OS und Applet führt grundlegende Tests der gleichzeitigen Ausführung von drei TamaGo Unikerneln auf verschiedenen Privilegstufen durch:

  • Trusted OS (ARM: TZ Secure World System-Modus, RISC-V: M-Modus)
  • Trusted Applet (ARM: TZ Secure World User-Modus, RISC-V: S-Modus)
  • Main OS (ARM: TZ Normal World System-Modus, RISC-V: S-Modus)

Das Main OS gibt mit einem Monitor-Aufruf die Kontrolle zurück.

Das Trusted Applet schläft 5 Sekunden lang, bevor es versucht, auf den Speicher des Trusted OS zuzugreifen. Dadurch wird eine Ausnahme ausgelöst, die vom Supervisor behandelt wird und das Trusted Applet beendet.

Die GoTEE-Syscall-Schnittstelle ist für die Kommunikation zwischen dem Trusted OS und dem Trusted Applet implementiert.

Wird die Anwendung auf der USB armory Mk II gestartet, ist die Beispielanwendung per SSH über Ethernet over USB (ECM-Protokoll, unter Linux- und macOS-Hosts unterstützt) erreichbar:

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

>

Das Beispiel kann mit dem Befehl gotee gestartet werden, der das Main OS zweimal erzeugt, um das Verhalten vor und nach dem Inkrafttreten der TrustZone-Beschränkungen mithilfe echter Hardware-Peripherie zu demonstrieren.

Zusätzlich kann der Befehl linux verwendet werden, um das USB-armory-Debian-Basisabbild als nicht-sicheres Main OS zu starten.

[!NOTE] Für den Nicht-Secure-Betrieb werden nur USB-armory-Debian-Basisabbild-Versionen >= 20211129 unterstützt.

gotee

Das Beispiel kann auch unter QEMU-Emulation ausgeführt werden.

[!NOTE] Emulierte Läufe führen aufgrund der fehlenden vollständigen TrustZone/PMP-Unterstützung von QEMU nur partielle Tests durch.

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

Erstellen des Compilers

Erstellen Sie den TamaGo-Compiler (oder verwenden Sie die neueste Binärversion):

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

Erstellen und Ausführen auf ARM-Zielen

Erstellen Sie die ausführbaren Dateien des Beispiel-Trusted-Applet und -Kernels wie folgt:

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] Ersetzen Sie für ein Rust-TA-Beispiel trusted_applet_go durch trusted_applet_rust; dies erfordert Rust Nightly und die armv7a-none-eabi-Toolchain.

Die finalen ausführbaren Dateien werden im Unterverzeichnis bin erstellt; trusted_os_usbarmory.imx sollte für die native Ausführung verwendet werden.

Die folgenden Ziele sind verfügbar:

TARGETBoardAusführen und Debuggen
usbarmoryUSB armory Mk IIusbarmory

Die Ziele unterstützen sowohl die native Ausführung (siehe entsprechende Dokumentationslinks in der obigen Tabelle) als auch die emulierte Ausführung (z. B. make qemu).

Erstellen und Ausführen auf RISC-V-Zielen

Erstellen Sie die ausführbaren Dateien des Beispiel-Trusted-Applet und -Kernels wie folgt:

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] Ersetzen Sie für ein Rust-TA-Beispiel trusted_applet_go durch trusted_applet_rust; dies erfordert Rust Nightly und die riscv64gc-unknown-none-elf-Toolchain.

Die finalen ausführbaren Dateien werden im Unterverzeichnis bin erstellt.

Verfügbare Ziele:

TARGETBoardAusführen und Debuggen
sifive_uQEMU sifive_usifive_u

Das Ziel wurde bisher nur mit emulierter Ausführung getestet (z. B. make qemu)

Anwendungen, die GoTEE verwenden

  • ArmoredWitness – ökosystemübergreifendes Witness-Netzwerk

Autoren

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

Lizenz

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

Diese Quelldateien werden unter der BSD-Lizenz verteilt, die in der LICENSE-Datei zu finden ist.

Tool herunterladen
SoCBoardSoC-PaketBoard-Paket
NXP i.MX6ULZUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULLMCIMX6ULL-EVKimx6ulmx6ullevk
SiFive FU540QEMU sifive_ufu540qemu/sifive_u