
tamago v1.26.5
Framework pour compiler et exécuter des applications Go sur des processeurs bare metal, permettant un développement de firmware sécurisé avec une surface d'attaque réduite grâce à la suppression des dépendances OS et C.
TamaGo - Go sur métal nu
tamago | https://github.com/usbarmory/tamago
Copyright (c) Les Auteurs de TamaGo. Tous droits réservés.
Introduction
TamaGo est un framework qui permet la compilation et l'exécution d'applications Go non entravées sur des processeurs en métal nu (AMD64, ARM, ARM64, RISCV64).
Le projet est né du désir de réduire la surface d'attaque des firmwares de systèmes embarqués en supprimant toute dépendance d'exécution sur du code C et des systèmes d'exploitation.
Le framework TamaGo se compose des composants suivants :
-
Une distribution Go modifiée qui étend le support
GOOSà la cibletamago, permettant une exécution sur métal nu via un overlay runtime/goos défini parGOOSPKG. -
Des paquets Go pour le support des processeurs/SoC.
-
Des paquets Go pour le support des cartes.
Les modifications sont minimes par rapport au compilateur Go original, au runtime et à l'application cible (une importation requise), avec une séparation nette des autres architectures.
Un accent fort est mis sur la réutilisation du code des architectures existantes déjà incluses dans le runtime Go standard, voir Internals.
Les modifications maintiennent un support complet de la bibliothèque standard.
Ces aspects sont motivés par le désir de fournir un framework permettant un développement sécurisé de firmware Go sur des systèmes embarqués.
Versions actuelles
Les liens suivants sont les dernières versions de la distribution Go modifiée TamaGo, qui ajoute le support GOOS=tamago à la version Go correspondante, et de la bibliothèque TamaGo :
Documentation
La documentation principale se trouve sur le wiki du projet.
La documentation de l'API des paquets se trouve sur pkg.go.dev.
Cibles AMD64 supportées
Le tableau suivant résume les cibles x86-64 actuellement supportées (GOOS=tamago GOARCH=amd64).
| CPU | Plateforme | Paquet CPU | Paquet plateforme |
|---|---|---|---|
| AMD/Intel 64 bits | Cloud Hypervisor | amd64 | cloud_hypervisor/vm |
| AMD/Intel 64 bits | Firecracker microvm | amd64 | firecracker/microvm |
| AMD/Intel 64 bits | QEMU microvm | amd64 | qemu/microvm |
| AMD/Intel 64 bits | UEFI | amd64 | uefi/x64 |
| AMD/Intel 64 bits | Google Compute Engine | amd64 | google/gcp, uefi/x64 |
Cibles ARM supportées
Le tableau suivant résume les SoC et cartes ARM actuellement supportés (GOOS=tamago GOARCH=arm).