Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
GoTEE — Go: доверенная среда исполнения (TEE) | Kitploit
Инструменты/GitHubGitHub/usbarmory/gotee
Безопасность встроенных системВиртуализация для безопасностиАппаратная Безопасность
GitHubusbarmory/gotee

GoTEE

Go: доверенная среда исполнения (TEE)

Репозиторий
1521353 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Введение

Фреймворк GoTEE обеспечивает одновременный запуск юникернелов на основе TamaGo в привилегированном и непривилегированном режимах, взаимодействующих друг с другом через режим монитора и пользовательские системные вызовы.

Благодаря этим возможностям GoTEE реализует доверенные среды выполнения (TEE) на основе TamaGo, привнося безопасность памяти Go, удобство и возможности в исполнение на «голом железе» в рамках ARM TrustZone Secure World или RISC-V Supervisor Execution Environments.

GoTEE может контролировать Trusted Applets на чистом Go, Rust или C, реализующие API GoTEE, а также любые операционные системы, способные работать в ARM TrustZone Normal World или RISC-V S-mode, такие как Linux.

Возможности

  • Изолированные контексты выполнения для ARM User mode, TrustZone Normal World или RISC-V Supervisor Mode

  • Оппортунистический soft lockstep для обнаружения сбоев

  • API для реализации Trusted OS (Syscall, JSON-RPC и обработчики исключений)

Документация

Go Reference

Основная документация, включая руководство, находится в вики проекта.

Документация по API пакета доступна на pkg.go.dev.

Поддерживаемое оборудование

В следующей таблице представлены поддерживаемые в настоящее время SoC и платы.

Пример приложения

В терминологии TEE привилегированный unikernel обычно называют Trusted OS, а непривилегированный — Trusted Applet.

Пример GoTEE демонстрирует одновременную работу Go-юникернелов в роли Trusted OS, Trusted Applet и Main OS.

[!WARNING] Main OS может быть любой «полноценной» ОС (например, Linux), TamaGo используется просто для самодостаточного примера. То же самое относится к Trusted Applet, который может быть любым приложением на «голом железе», способным работать в пользовательском режиме и реализующим API GoTEE, например автономными программами на C или Rust.

Пример на Rust можно использовать, заменив trusted_applet_go на trusted_applet_rust при сборке.

Комбинация примера Trusted OS/applet выполняет базовую проверку одновременного выполнения трех TamaGo юникернелов на различных уровнях привилегий:

  • Trusted OS (ARM: системный режим TZ Secure World, RISC-V: M-mode)
  • Trusted Applet (ARM: пользовательский режим TZ Secure World, RISC-V: S-mode)
  • Main OS (ARM: системный режим TZ Normal World, RISC-V: S-mode)

Main OS возвращает управление с помощью вызова монитора.

Trusted Applet спит 5 секунд, прежде чем попытаться прочитать память Trusted OS, что вызывает исключение, обрабатываемое супервизором, который завершает работу Trusted Applet.

Интерфейс GoTEE syscall реализован для связи между Trusted OS и Trusted Applet.

При запуске на USB armory Mk II пример приложения доступен по SSH через Ethernet over USB (протокол ECM, поддерживается на Linux и 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

>

Пример можно запустить командой gotee, которая дважды запускает Main OS, чтобы продемонстрировать поведение до и после применения ограничений TrustZone с использованием реальных аппаратных периферийных устройств.

Кроме того, команда linux может использоваться для запуска USB armory Debian base image в качестве небезопасной (Non-secure) основной ОС.

[!NOTE] Поддерживаются только выпуски USB armory Debian base image >= 20211129 для работы в небезопасном режиме (Non-secure).

gotee

Пример также можно выполнять под эмуляцией QEMU.

[!NOTE] Эмулируемые запуски выполняют частичное тестирование из-за отсутствия полной поддержки TrustZone/PMP в 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

Сборка компилятора

Соберите компилятор 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] Замените trusted_applet_go на trusted_applet_rust для примера на Rust, для этого требуются nightly Rust и тулчейн armv7a-none-eabi.

Готовые исполняемые файлы создаются в подкаталоге bin, для нативного выполнения следует использовать trusted_os_usbarmory.imx.

Доступны следующие целевые платформы:

TARGETBoardExecuting and debugging
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] Замените trusted_applet_go на trusted_applet_rust для примера на Rust, для этого требуются nightly Rust и тулчейн riscv64gc-unknown-none-elf.

Готовые исполняемые файлы создаются в подкаталоге bin.

Доступные целевые платформы:

TARGETBoardExecuting and debugging
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) Авторы GoTEE. Все права защищены.

Эти исходные файлы распространяются по лицензии в стиле BSD, указанной в файле LICENSE.

Скачать инструмент
SoCBoardSoC packageBoard package
NXP i.MX6ULZUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULLMCIMX6ULL-EVKimx6ulmx6ullevk
SiFive FU540QEMU sifive_ufu540qemu/sifive_u