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

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

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

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

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

Категории

Все категории
Loading categories
GoTEE-example — GoTEE — пример приложения | Kitploit
Инструменты/GitHubGitHub/usbarmory/gotee-example
Безопасность встроенных системКриминалистика памятиОтладчикиВиртуализация для безопасностиАппаратная Безопасность
GitHubusbarmory/gotee-example

GoTEE-example

GoTEE — пример приложения

Репозиторий
175246 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Введение

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

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

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

Возможности

  • Изолированные контексты выполнения для пользовательского режима ARM, Normal World TrustZone или супервизорного режима RISC-V

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

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

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

Go Reference

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

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

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

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

SoCПлатаПакет SoCПакет платы
NXP i.MX6ULZUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULLMCIMX6ULL-EVKimx6ulmx6ullevk
SiFive FU540QEMU sifive_ufu540qemu/sifive_u

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

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

Пример GoTEE демонстрирует одновременную работу Go unikernel'ов, выступающих в роли 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 выполняет базовую проверку одновременного выполнения трёх unikernel'ов 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 засыпает на 5 секунд, прежде чем попытаться прочитать память Trusted OS, что вызывает исключение, обрабатываемое супервизором, который завершает работу Trusted Applet.

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

При запуске на USB armory Mk II пример приложения доступен по SSH через Ethernet поверх USB (протокол ECM, поддерживается в Linux и macOS):

$ 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 в качестве небезопасной main OS.

[!NOTE] Для работы в небезопасном режиме поддерживаются только выпуски базового образа USB armory Debian >= 20211129.

gotee

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

[!NOTE] Эмулируемые запуски выполняют частичные проверки из-за отсутствия полной поддержки TrustZone/PMP в QEMU.

Скачать инструмент