
tamago v1.27.1
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) The TamaGo Authors. All Rights Reserved.
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.
Les projets naissent du désir de réduire la surface d'attaque des firmwares de systèmes embarqués en supprimant toute dépendance à l'exécution de code C et de systèmes d'exploitation.
Le framework TamaGo est constitué des composants suivants :
-
Une distribution Go modifiée qui étend le support de
GOOSà la cibletamago, permettant une exécution en métal nu via une surcouche runtime/goos définie parGOOSPKG. -
Des paquets Go pour le support des processeurs/SoC.
-
Des paquets Go pour le support des cartes.
Les modifications sont minimales par rapport au compilateur Go original, au runtime et à l'application cible (un import requis), avec une séparation nette des autres architectures.
Une forte emphase est mise 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 qui permet le développement sécurisé de firmwares 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 de 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-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 |
Cibles ARM supportées
Le tableau suivant résume les SoC et cartes ARM actuellement supportés
(GOOS=tamago GOARCH=arm).