ADMIN

2022

02

2022-01-30T12:00:00

Cloudmanagement

PRAXIS

062

Open-Source-Tipp

Sicherheit

Thunderbolt absichern

Blitzableiter

von Thorsten Scherf

Veröffentlicht in Ausgabe 02/2022 - PRAXIS

Die Thunderbolt-Schnittstelle erlaubt die schnelle Übertragung von Audio, Video und anderen Daten über ein einzelnes Kabel ebenso wie das Aufladen von Geräten, die über diese Schnittstelle angeschlossen sind. Der Open-Source-Tipp in diesem Monat zeigt, welche Sicherheitsmaßnahmen im Zusammenhang mit Thunderbolt-Geräten notwendig sind.

ie meisten Admins werden von Thunderbolt wahrscheinlich zuerst im Zusammenhang mit Apple-Hardware gehört haben. Tatsächlich ist es so, dass das US-amerikanische Unternehmen bereits im Jahr 2011 sämtliche MacBook-Pro-Modelle mit der von Intel entwickelten Schnittstelle ausgeliefert hat. Zu dem Zeitpunkt kam noch die Thunderbolt-Version 1 mit einer maximalen Transferrate von 10 GBit/s zum Einsatz. Hierfür standen jeweils zwei bidirektionale Kanäle zur Übertragung der Daten zur Verfügung. Gute zwei Jahre später wurde jedoch bereits die Version 2 mit einer Maximalgeschwindigkeit von 20 GBit/s verbaut.
Für einigen Unmut bei diesen beiden Versionen hat immer wieder der eingesetzte Mini-Display-Port-Stecker gesorgt. Dieser wurde dann auch im Jahr 2015 mit der Einführung der Thunderbolt-Version 3 durch einen drehbaren USB-C-Stecker ersetzt. Neben dem Stecker hielten mit Version 3 auch vier PCI-Express-Leitungen zur Datenübertragung Einzug in den Standard, die Transferraten von 40 GBit/s ermöglichen. Auch eine Stromversorgung von Geräten mit bis zu 100 Watt ist machbar.
Aktuelle Geräte verwenden bereits die vierte Version der Thunderbolt-Technologie. Diese kommt zwar nicht mit schnelleren Transferraten daher, bietet dafür allerdings einige andere interessante neue Features. So findet nun beispielsweise der USB4-Standard Verwendung, der sozusagen aus Thunderbolt 3 heraus entstanden ist. Sehr interessant ist auch der Support von USB-Hubs im "Alternate Mode", wodurch Sie beispielsweise einen 8K- oder wahlweise auch zwei 4K-Monitore, mehrere externe Festplatten und ein Netzteil mit nur einem einzelnen Kabel an Ihren Rechner anschließen können.
ie meisten Admins werden von Thunderbolt wahrscheinlich zuerst im Zusammenhang mit Apple-Hardware gehört haben. Tatsächlich ist es so, dass das US-amerikanische Unternehmen bereits im Jahr 2011 sämtliche MacBook-Pro-Modelle mit der von Intel entwickelten Schnittstelle ausgeliefert hat. Zu dem Zeitpunkt kam noch die Thunderbolt-Version 1 mit einer maximalen Transferrate von 10 GBit/s zum Einsatz. Hierfür standen jeweils zwei bidirektionale Kanäle zur Übertragung der Daten zur Verfügung. Gute zwei Jahre später wurde jedoch bereits die Version 2 mit einer Maximalgeschwindigkeit von 20 GBit/s verbaut.
Für einigen Unmut bei diesen beiden Versionen hat immer wieder der eingesetzte Mini-Display-Port-Stecker gesorgt. Dieser wurde dann auch im Jahr 2015 mit der Einführung der Thunderbolt-Version 3 durch einen drehbaren USB-C-Stecker ersetzt. Neben dem Stecker hielten mit Version 3 auch vier PCI-Express-Leitungen zur Datenübertragung Einzug in den Standard, die Transferraten von 40 GBit/s ermöglichen. Auch eine Stromversorgung von Geräten mit bis zu 100 Watt ist machbar.
Aktuelle Geräte verwenden bereits die vierte Version der Thunderbolt-Technologie. Diese kommt zwar nicht mit schnelleren Transferraten daher, bietet dafür allerdings einige andere interessante neue Features. So findet nun beispielsweise der USB4-Standard Verwendung, der sozusagen aus Thunderbolt 3 heraus entstanden ist. Sehr interessant ist auch der Support von USB-Hubs im "Alternate Mode", wodurch Sie beispielsweise einen 8K- oder wahlweise auch zwei 4K-Monitore, mehrere externe Festplatten und ein Netzteil mit nur einem einzelnen Kabel an Ihren Rechner anschließen können.
Security mit Thunderbolt 4
Auch wenn in der Thunderbolt-Version 3 einige grundlegende Sicherheitsfeatures vorhanden waren, wurden diese in der Version 4 konsequent weiterentwickelt. Und zwar macht sich Thunderbolt nun die "Intel Virtualization Technology for Directed I/O" (VT-d) zu Nutze, um vor sogenannten DMA-Attacken zu schützen. Bei dieser Art von Angriff handelt es sich um nicht-autorisierte Zugriffe auf den Systemspeicher, um von dort beliebige Daten auszulesen. Solche Zugriffe sind grundsätzlich möglich, da Geräte, die mittels PCI Express (PCIe), Firewire oder ähnlichen Protokollen mit einem System kommunizieren, direkten Zugang zum Systemspeicher haben. Dies ist erforderlich, um möglichst schnelle Transferraten zu ermöglichen.
Da der Systemspeicher von vielen unterschiedlichen Komponenten gleichzeitig verwendet wird, könnte dies zu einem Sicherheitsproblem führen. Aktuelle Prozessoren verfügen jedoch über eine sogenannte "Input/Output Memory Management Unit" (IOMMU), durch die eine Virtualisierung der I/O-Daten möglich ist. Somit kann jedes mittels Thunderbolt 4 angeschlossene Gerät einen privaten Speicherbereich zugewiesen bekommen, sodass ein Gerät nicht mehr auf die Daten beziehungsweise den Speicherbereich eines anderen Geräts zugreifen kann. Dieses Feature ist auch unter dem Namen "Direct-Memory-Access-remapping" (DMA-r) bekannt. Weitere Informationen finden Sie in einem Intel-Whitepaper [1] zum Thema DMA-Protection durch die Verwendung von IOMMU.
Thunderbolt-Sicherheit unter Linux
Der Linux-Kernel unterstützt Thunderbolt von Hause aus. Um die Security-Features von Thunderbolt 3 nutzen zu können, muss jedoch ein Kernel in der Version 4.13 oder später installiert sein. Möchten Sie die I/O-Virtualisierung in Kombination mit Thunderbolt 4 verwenden, muss mindestens ein Kernel 4.21 auf Ihrem System aktiv sein.
Um die I/O-Virtualisierung zu nutzen, aktivieren Sie zudem die IOMMU-Option im System-BIOS. Mithilfe des Tools "dmesg" können Sie dann in einem Terminal überprüfen, ob die Option auch tatsächlich aktiv ist (siehe Listing).
Listing: IOMMU-Option im BIOS
0.000000] DMAR: IOMMU enabled 0.301602] DMAR: Host address width 39 0.301603] DMAR: DRHD base: 0x000000fed90000 flags: 0x0 0.301612] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e 0.301616] DMAR: DRHD base: 0x000000fed91000 flags: 0x1 0.301621] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da 0.301624] DMAR: RMRR base: 0x000000a869a000 end: 0x000000a86b9fff 0.301626] DMAR: RMRR base: 0x000000ab000000 end: 0x000000af7fffff 0.301627] DMAR: RMRR base: 0x000000a86cb000 end: 0x000000a874afff
Das Thunderbolt-Subsystem des Linux-Kernels können Sie über das sysfs-Dateisystem konfigurieren. Eine Beschreibung der einzelnen Konfigurationsmöglichkeiten ist Teil der Linux-Kernel-Dokumentation [2]. Um beispielsweise herauszubekommen, ob Ihre Thunderbolt-Geräte jeweils einen eigenen, virtualisierten Speicherbereich verwenden, lesen Sie die Datei "/sys/bus/thunderbolt/devices/domain0/iommu_dma_protection" aus.
Enthält die Datei den Wert 1, ist der DMA-Schutz auf Basis von VT-d aktiv. Lautet der Wert 0, ist die IOMMU-Option im BIOS vielleicht nicht aktiv, ist ein alter Kernel installiert oder Sie verwenden keine Thunderbolt-4-Hardware. Im letzten Fall können Sie allerdings immer noch auf die Security-Features der Version 3 zurückgreifen.
Fünf mögliche Security-Level
Die Thunderbolt-Spezifikation kennt fünf unterschiedliche Security-Level: "none", "dponly", "user", "secure" und "usbonly". Das gewünschte Level können Sie im BIOS Ihres Systems für die Thunderbolt-Schnittstelle festlegen. Welcher Level gerade aktiv ist, erfahren Sie wiederum über das Linux-sysfs-Dateisystem mittels
cat /sys/bus/thunderbolt/devices/domain0/security
Möchten Sie den Security-Level "user" oder "secure" verwenden, müssen Sie ein Gerät zuerst autorisieren, um einen Kanal zwischen dem Gerät und Ihrem System aufzubauen. Der Level "secure" legt zusätzlich noch einen Shared-Key an, mit dessen Hilfe sich das Gerät immer wieder am System authentifizieren muss. Dieser Schlüssel wird auf dem Gerät selbst und auch im sysfs-Dateisystem gespeichert.
Die Autorisierung eines Geräts und das Hinterlegen eines Schlüssels können Sie manuell über das sysfs-Dateisystem vornehmen oder Sie greifen stattdessen auf die Software bolt [3] zurück. Diese besteht aus einem Service (boltd), der mit dem sysfs-Dateisystem interagiert und die dort registrierten Thunderbolt-Geräte über den Messagebus D-BUS anderen Anwendungen zur Verfügung stellt.
Mithilfe des Tools "boltctl" können Sie Ihre Thunderbolt-Geräte dann verwalten. So zeigt der Aufruf von boltctl lediglich alle registrierten Geräte an. Mittels boltctl authorize <UUID> autorisieren Sie dann das entsprechende Gerät. Sollte der Security-Level auf "secure" stehen, wird zusätzlich ein Schlüssel für das Gerät erzeugt und verteilt. Die Software steht in den meisten Linux-Distributionen zur Verfügung, alternativ laden Sie sie aus dem GitHub-Repository [3].
Fazit
Thunderbolt eignet sich prima zur schnellen Übertragung großer Datenmengen. Da die Schnittstelle allerdings den direkten Zugriff auf den Speicher eines Systems erlaubt, sind für den Betrieb von Thunderbolt-Geräten weitere Sicherheitsmaßnahmen empfehlenswert, damit keine unautorisierten Geräte auf Ihr System zugreifen und sensible Daten auslesen. Unter Thunderbolt-Version 3 können Sie durch den Einsatz von Security-Levels dafür sorgen, dass Sie ein Gerät zuerst manuell autorisieren müssen, bevor dieses mit Ihrem System kommuniziert.
Zusätzlich dazu unterbindet die aktuelle Thunderbolt-Version 4 durch den Einsatz von I/O-Virtualisierung den Zugriff von einem Gerät auf den kompletten Systemspeicher, da jedes Gerät auf diese Weise einen privaten Speicherbereich zugewiesen bekommt.
(dr)
Link-Codes
[3] bolt-GitHub-Repository: https://github.com/gicmo/bolt/