Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
GoTEE — Ambiente di esecuzione attendibile Go (TEE) | Kitploit
Strumenti/GitHubGitHub/usbarmory/gotee
Sicurezza Sistemi EmbeddedVirtualizzazione per la SicurezzaSicurezza Hardware
GitHubusbarmory/gotee

GoTEE

Ambiente di esecuzione attendibile Go (TEE)

Vedi Repository
152132 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Introduzione

Il framework GoTEE implementa l'istanziazione concorrente di unikernel basati su TamaGo in modalità privilegiata e non privilegiata, che interagiscono tra loro tramite la modalità monitor e chiamate di sistema personalizzate.

Con queste capacità, GoTEE implementa ambienti di esecuzione fidati (TEE) basati su TamaGo, portando la sicurezza della memoria di Go, la convenienza e le capacità all'esecuzione bare metal all'interno di ARM TrustZone Secure World o di RISC-V Supervisor Execution Environments.

GoTEE può supervisionare Trusted Applet freestanding basate su puro Go, Rust o C, che implementano l'API GoTEE, così come qualsiasi sistema operativo in grado di funzionare in ARM TrustZone Normal World o in modalità S di RISC-V, come Linux.

Funzionalità

  • Contesti di esecuzione isolati per la modalità utente ARM, TrustZone Normal World o modalità Supervisor RISC-V

  • Soft lockstep opportunistico per il rilevamento dei guasti

  • API per l'implementazione del Trusted OS (Syscall, JSON-RPC e gestori di eccezioni)

Documentazione

Go Reference

La documentazione principale, che include un tutorial, è disponibile sulla wiki del progetto.

La documentazione dell'API del pacchetto è disponibile su pkg.go.dev.

Hardware supportato

La seguente tabella riassume i SoC e le board attualmente supportati.

Applicazione di esempio

Nella nomenclatura TEE, l'unikernel privilegiato è comunemente indicato come Trusted OS, mentre quello non privilegiato rappresenta un Trusted Applet.

L'esempio GoTEE dimostra il funzionamento concorrente di unikernel Go che agiscono come Trusted OS, Trusted Applet e Main OS.

[!WARNING] Il Main OS può essere qualsiasi OS "ricco" (es. Linux); TamaGo è usato semplicemente per un esempio autonomo. Lo stesso vale per il Trusted Applet, che può essere qualsiasi applicazione bare metal in grado di funzionare in modalità utente e di implementare l'API GoTEE, come programmi C o Rust freestanding.

Un esempio in Rust può essere usato sostituendo trusted_applet_go con trusted_applet_rust in fase di compilazione.

La combinazione di Trusted OS/applet di esempio esegue test di base dell'esecuzione concorrente di tre unikernel TamaGo a diversi livelli di privilegio:

  • Trusted OS (ARM: modalità sistema TZ Secure World, RISC-V: M-mode)
  • Trusted Applet (ARM: modalità utente TZ Secure World, RISC-V: S-mode)
  • Main OS (ARM: modalità sistema TZ Normal World, RISC-V: S-mode)

Il Main OS cede il controllo con una chiamata al monitor.

Il Trusted Applet dorme per 5 secondi prima di tentare di leggere la memoria del Trusted OS, il che innesca un'eccezione gestita dal supervisor che termina il Trusted Applet.

L'interfaccia syscall di GoTEE è implementata per la comunicazione tra Trusted OS e Trusted Applet.

Quando viene avviata sulla USB armory Mk II, l'applicazione di esempio è raggiungibile via SSH attraverso Ethernet over USB (protocollo ECM, supportato su host Linux e macOS):

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

>

L'esempio può essere avviato con il comando gotee, che genera il Main OS due volte per dimostrarne il comportamento prima e dopo l'attivazione delle restrizioni TrustZone, utilizzando periferiche hardware reali.

Inoltre, il comando linux può essere usato per avviare l' immagine base Debian di USB armory come Main OS Non-secure.

[!NOTE] Solo le release >= 20211129 dell'immagine base Debian di USB armory sono supportate per il funzionamento Non-secure.

gotee

L'esempio può essere eseguito anche tramite emulazione QEMU.

[!NOTE] Le esecuzioni emulate eseguono test parziali a causa della mancanza del pieno supporto TrustZone/PMP da parte di QEMU.

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

Build del compilatore

Compila il compilatore TamaGo (oppure usa l'ultima release binaria):

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

Build ed esecuzione su target ARM

Compila gli eseguibili di esempio del trusted applet e del kernel come segue:

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] Sostituisci trusted_applet_go con trusted_applet_rust per un esempio TA in Rust; questo richiede Rust nightly e la toolchain armv7a-none-eabi.

Gli eseguibili finali vengono creati nella sottodirectory bin; trusted_os_usbarmory.imx deve essere usato per l'esecuzione nativa.

Sono disponibili i seguenti target:

TARGETSchedaEsecuzione e debug
usbarmoryUSB armory Mk IIusbarmory

I target supportano l'esecuzione nativa (vedi i collegamenti alla documentazione pertinente nella tabella sopra) e l'esecuzione emulata (es. make qemu).

Build ed esecuzione su target RISC-V

Compila gli eseguibili di esempio del trusted applet e del kernel come segue:

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] Sostituisci trusted_applet_go con trusted_applet_rust per un esempio TA in Rust; questo richiede Rust nightly e la toolchain riscv64gc-unknown-none-elf.

Gli eseguibili finali vengono creati nella sottodirectory bin.

Target disponibili:

TARGETSchedaEsecuzione e debug
sifive_uQEMU sifive_usifive_u

Il target è stato testato solo con esecuzione emulata (es. make qemu).

Applicazioni che utilizzano GoTEE

  • ArmoredWitness - rete di witness cross-ecosistema

Autori

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

Licenza

GoTEE | https://github.com/usbarmory/GoTEE
Copyright (c) The GoTEE authors. Tutti i diritti riservati.

Questi file sorgente sono distribuiti secondo la licenza in stile BSD riportata nel file LICENSE.

Scarica lo strumento
SoCSchedaPacchetto SoCPacchetto scheda
NXP i.MX6ULZUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULLMCIMX6ULL-EVKimx6ulmx6ullevk
SiFive FU540QEMU sifive_ufu540qemu/sifive_u