
Outil de débogage matériel bas niveau et d'évaluation de sécurité pour les interfaces AHB des BMC ASPEED. Sonde les interfaces PCIe, LPC et UART pour lire/écrire le firmware, la RAM et la mémoire du BMC pour les tests de sécurité de la plateforme.
N'UTILISEZ PAS CET OUTIL SI VOUS N'AVEZ PAS COMPRIS SES COMPORTEMENTS DANS LE CONTEXTE DE VOTRE MACHINE CIBLE.
Cet outil manipule des interfaces matérielles et micrologicielles bas niveau de votre machine. En particulier, l'acte de sondage implique une incertitude quant aux conséquences si le périphérique cible n'est pas celui que nous espérions trouver.
L'utilisation de cet outil peut entraîner une instabilité, des plantages ou des défaillances critiques de la machine cible.
Les BMC ASPEED disposent de plusieurs modes de fonctionnement implicites :
Pour répondre aux modes 1 et 2, le BMC expose des fonctionnalités sur plusieurs de ses interfaces esclaves qui permettent à l'hôte d'accéder au BMC et d'effectuer des opérations arbitraires dans son espace d'adressage physique.
Les interfaces significatives sont rattachées aux bus PCIe et LPC, car l'un ou l'autre peut ne pas être connecté au CPU hôte dans une conception de plateforme donnée.
Le mode 3 est également généralement utilisé, mais pour les AST2400 et AST2500, le matériel est configuré pour les modes 1 et 2 au démarrage à froid. La responsabilité incombe donc aux développeurs de firmware BMC de s'assurer que toutes les interfaces sont sécurisées s'ils souhaitent maintenir la confidentialité, l'intégrité et la disponibilité des données au repos et des environnements d'exécution du BMC.
PCIe VGA P2A : une interface PCIe MMIO offrant un accès AHB arbitraire via une fenêtre glissante de 64 ko
iLPC2AHB : un périphérique logique SuperIO offrant un accès AHB arbitraire
Debug UART : un shell de débogage UART fourni par le matériel avec accès AHB arbitraire
X-DMA : accès arbitraire au bus M
Périphérique BMC PCIe : une collection d'interfaces PCIe MMIO fixes offrant un accès AHB restreint via des fenêtres de 4 ko
LPC2AHB : un mappage contrôlé par le BMC des cycles FW LPC sur l'AHB
Prend actuellement en charge l'utilisation des interfaces P2A, iLPC2AHB, LPC2AHB et Debug UART
Sonde la disponibilité de toutes les interfaces via toute interface disponible
Console BMC intégrée depuis l'hôte
Reflasher ou vider le firmware d'un BMC en cours d'exécution depuis l'hôte
Lecture et écriture de la RAM du BMC
Prend également en charge l'interface Linux /dev/mem pour une exécution sur le BMC lui-même
L'outil compile pour plusieurs architectures, et au moins les suivantes ont été testées :
La compilation consiste à lancer make, tandis que la compilation croisée s'effectue en
définissant CROSS_COMPILE dans l'environnement make, par exemple :
$ make CROSS_COMPILE=powerpc64le-linux-gnu-
$ ./doit
Not enough arguments
Usage:
./doit probe [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit ilpc read ADDRESS
./doit ilpc write ADDRESS VALUE
./doit p2a vga read ADDRESS
./doit p2a vga write ADDRESS VALUE
./doit debug read ADDRESS INTERFACE [IP PORT USERNAME PASSWORD]
./doit debug write ADDRESS VALUE INTERFACE [IP PORT USERNAME PASSWORD]
./doit devmem read ADDRESS
./doit devmem write ADDRESS VALUE
./doit console HOST_UART BMC_UART BAUD USER PASSWORD
./doit read firmware
./doit read ram
./doit write firmware
./doit replace ram MATCH REPLACE
./doit reset TYPE [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc read ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc erase ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc write ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
$ ./doit probe --require confidentiality digi,portserver-ts-16 <IP> <PORT> <USER> <PASSWORD>
Connecting to Digi Portserver TS 16 at <IP>:23
Logging into Digi Portserver TS
Configuring binary mode on port 4
Resetting port 4
Connecting to BMC console at <IP>:2104
Entering debug mode
Initialised Debug UART AHB interface
Performing interface discovery via Debug UART
Exiting debug mode
Have SuperIO: Yes
iLPC2AHB Bridge: Read-only
Have VGA PCIe device: Yes
Have MMIO on VGA device: Yes
P2A write filter state:
0x00000000-0x0fffffff (Firmware): Read-write
0x10000000-0x1fffffff (SoC IO): Read-write
0x20000000-0x3fffffff (Flashes): Read-write
0x40000000-0x5fffffff (Reserved): Read-write
0x60000000-0x7fffffff (LPC Host): Read-write
0x80000000-0xffffffff (DRAM): Read-write
Have X-DMA on VGA device: Yes
Have BMC PCIe device: No
X-DMA is unconstrained: No
Have debug UART: Yes
Debug UART enabled on: UART5
$ echo $?
1
$