
Фреймворк для компиляции и выполнения Go-приложений на голых металлических процессорах, обеспечивающий безопасную разработку прошивок с уменьшенной поверхностью атаки за счет удаления зависимостей от ОС и C.
tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. All Rights Reserved.
TamaGo — это фреймворк, позволяющий компилировать и запускать необременённые Go-приложения на процессорах без операционной системы.
Проект возник из желания уменьшить поверхность атаки прошивок встраиваемых систем путём устранения любых зависимостей времени выполнения от кода на C и операционных систем.
Фреймворк TamaGo состоит из следующих компонентов:
Модифицированный дистрибутив Go,
который расширяет поддержку GOOS до цели tamago, позволяя исполнение
на голом железе через оверлей runtime/goos,
устанавливаемый GOOSPKG.
Go-пакеты для поддержки процессоров/SoC.
Go-пакеты для поддержки плат.
Модификации минимальны по отношению к оригинальному компилятору Go, среде выполнения и целевому приложению (требуется один импорт), с чётким отделением от других архитектур.
Большое внимание уделяется повторному использованию кода из существующих архитектур, уже включённых в стандартную среду выполнения Go, см. Internals.
Модификации сохраняют полную поддержку стандартной библиотеки.
Такие аспекты мотивированы желанием предоставить фреймворк, позволяющий разрабатывать безопасные прошивки на Go для встраиваемых систем.
Следующие ссылки ведут на последние релизы
модифицированного дистрибутива Go TamaGo,
который добавляет поддержку GOOS=tamago к соответствующей версии Go, и
библиотеки TamaGo:
Основная документация находится на вики проекта.
Документация по API пакетов доступна на pkg.go.dev.
В следующей таблице перечислены текущие поддерживаемые цели x86-64
(GOOS=tamago GOARCH=amd64).
| CPU | Платформа | Пакет CPU | Пакет платформы |
|---|---|---|---|
| AMD/Intel 64-bit | Cloud Hypervisor | amd64 | cloud_hypervisor/vm |
| AMD/Intel 64-bit | Firecracker microvm | amd64 | firecracker/microvm |
| AMD/Intel 64-bit | QEMU microvm | amd64 | qemu/microvm |
| AMD/Intel 64-bit | UEFI | amd64 | uefi/x64 |
| AMD/Intel 64-bit | Google Compute Engine | amd64 | google/gcp, uefi/x64 |
В следующей таблице перечислены текущие поддерживаемые SoC и платы ARM
(GOOS=tamago GOARCH=arm).