Sichere Firmware für Mikrocontroller: Updates in industriellen Anwendungen
Firmware-Updates für IoT-Geräte sind in industriellen Anwendungen unverzichtbar. Angesichts der zunehmenden Vernetzung industrieller Netzwerke stehen dabei Effizienz und Sicherheit im Vordergrund. Mikrocontroller bilden oft die Basis dieser IoT-Geräte. Aufgrund ihrer limitierten Ressourcen und der komplexen Anforderungen in Produktionsumgebungen erfordern sie angepasste und robuste Sicherheitsmechanismen, um Manipulationen und Angriffe während der Aktualisierung zu verhindern.
Angriffsvektoren und Herausforderungen
Unsichere Firmware-Updates und manipulierte Software kompromittieren die Sicherheit industrieller IoT-Geräte. Angreifer schleusen Schadsoftware ein, übernehmen die Kontrolle über Mikrocontroller und nutzen diese als Ausgangspunkt für weitere Angriffe. Solche Übernahmen gefährden die Integrität des gesamten Netzwerks, da kompromittierte Geräte sensible Daten wie Produktionskennzahlen oder Steuerungskommandos abfangen und verändern. Zusätzlich manipulieren sie die Funktionen des Geräts, was zu Produktionsausfällen, fehlerhaften Steuerungen oder sogar gefährlichen Situationen in kritischen Prozessen führt.
IoT-Geräte in industriellen Umgebungen sind durch spezifische Angriffsvektoren besonders gefährdet. Manipulationen der Firmware-Dateien stellen eine direkte Bedrohung dar, da modifizierte Updates Schadsoftware einschleusen können. Nicht autorisierte Updates gefährden die Integrität des Systems, insbesondere in Szenarien ohne hinreichende Authentifizierung. Unverschlüsselte Kommunikationskanäle erhöhen das Risiko, dass Daten während der Übertragung abgefangen und verändert werden.
Die eingeschränkten Ressourcen von Mikrocontrollern verschärfen diese Problematik, denn sie verfügen über begrenzten Speicherplatz und niedrige Rechenleistung. Dadurch sind herkömmliche Sicherheitslösungen, die auf leistungsstarken Prozessoren und großem Speicher basieren, nicht direkt anwendbar. Hinzu kommt die oft geringe Bandbreite industrieller Netzwerke, die zwingend eine effiziente Datenübertragung erfordert. Trotz dieser Einschränkungen müssen Updates zuverlässig und sicher erfolgen, ohne die Performance der Geräte oder die Produktionsprozesse zu beeinträchtigen.
Sichere Firmware-Updates
Sichere Firmware-Updates basieren auf drei zentralen Prinzipien: Authentifizierung, Verschlüsselung und Integritätsprüfung. Authentifizierungstechniken wie digitale Signaturen stellen sicher, dass Updates ausschließlich von vertrauenswürdigen Quellen stammen. Verschlüsselung schützt die Update-Daten während der Übertragung und verhindert, dass Angreifer Informationen abfangen oder verändern können. Eine abschließende Integritätsprüfung garantiert, dass die Firmware unverändert und vollständig auf dem Gerät ankommt, bevor sie installiert wird.
Ein weiterer kritischer Aspekt ist die Vermeidung von Betriebsunterbrechungen während des Update-Prozesses. Rollback-Mechanismen, die eine fehlerhafte Aktualisierung rückgängig machen, stellen sicher, dass das Gerät im Fehlerfall auf eine vorherige, funktionierende Firmware-Version zurückgesetzt wird. Ergänzend verhindert Secure Boot, dass das Gerät nach der Installation manipulierte Software ausführt. Dadurch wird ein zusätzlicher Schutz vor Angriffen geschaffen, die sich auf die Initialisierung der Firmware konzentrieren.
Sichere Update-Mechanismen für IoT-Geräte
Over-the-Air-Updates (OTA) haben sich als eine der effizientesten Methoden zur Firmware-Aktualisierung etabliert. Sie ermöglichen die drahtlose Bereitstellung neuer Firmware-Versionen, wodurch insbesondere Geräte in schwer zugänglichen oder räumlich verteilten industriellen Anlagen einfach aktualisiert werden können. Ressourcenschonende Kommunikationsprotokolle wie MQTT oder CoAP bieten sich dabei an. Beide Protokolle gewährleisten eine effiziente Datenübertragung und integrieren Sicherheitsfunktionen wie eine TLS-basierte Verschlüsselung, die den Schutz der Update-Daten sicherstellt.
Ein weiteres zentrales Element ist die Architektur der Update-Systeme. Eine typische OTA-Infrastruktur umfasst einen sicheren Firmware-Server, der Updates bereitstellt, und eine Kontrollinstanz, die den gesamten Update-Prozess überwacht. Der Firmware-Server signiert die Updates digital, bevor diese verschlüsselt an die Geräte übertragen werden. Das IoT-Gerät überprüft die Signatur und validiert die Datenintegrität, bevor die neue Firmware installiert wird. Secure-Boot-Technologien verhindern zudem, dass manipulierte Firmware auf den Geräten ausgeführt wird.
Firmware-Aktualisierung über die Arduino-IDE
Die Aktualisierung von Firmware über Tools wie die Arduino-IDE (Integrated Development Environment) bietet erhebliche Vorteile in Bezug auf Sicherheit, Benutzerfreundlichkeit und Kompatibilität. Die Arduino-IDE ist eine speziell entwickelte Software für die Programmierung und Verwaltung von Arduino-Boards, aber auch von Boards und Geräten anderer Hersteller (Bild 1).
Sind die Boards mit einer herstellereigenen Firmware ausgestattet, dann können die Hersteller die Firmware-Sicherheitsmechanismen der Arduino-IDE verwenden. Mit diesen lässt sich der Update-Prozess überwachen und sicherstellen, dass nur vertrauenswürdige und signierte Firmware auf das Gerät gelangt.
Dies reduziert das Risiko, manipulierte Firmware aus inoffiziellen Quellen zu verwenden. Das Programm überprüft Firmware-Versionen und bietet Aktualisierungen direkt vom Hersteller an, wodurch die Integrität und Authentizität der Updates gewährleistet bleibt. Ein weiterer Vorteil ist die automatische Einrichtung der Kommunikationsprotokolle und der benötigten Bibliotheken, was den Prozess auch für technisch weniger erfahrene Anwender zugänglich macht.
Anwender sollten jedoch darauf achten, stets die neueste IDE-Version zu nutzen, um von den aktuellen Sicherheits- und Kompatibilitätsfunktionen zu profitieren. Es ist auch wichtig, das richtige Board-Profil im Programm auszuwählen und ausschließlich Firmware aus vertrauenswürdigen Quellen wie den offiziellen Arduino-Repositorien zu verwenden. Dies minimiert die Risiken fehlerhafter Updates und verhindert, dass Geräte durch inkompatible Software beeinträchtigt werden.
Beispiel: Plattform für IoT-Projekte
Ein Beispiel: Das Arduino-Board MKR WiFi 1010 vereint einfache Handhabung mit leistungsfähiger Hardware und stellt so eine vielseitige Plattform für IoT-Projekte dar. Dieses Board richtet sich insbesondere an Entwickler, die sich mit Prototyping und IoT-Anwendungen befassen. Es basiert auf einem 32-bit-SAM-D21-Cortex-M0+-Mikrocontroller mit einer Taktrate von 48 MHz, der ausreichende Leistung für eine Vielzahl von Projekten bietet. Das integrierte u-blox-NINA-W102-Modul erweitert die Funktionalität um WLAN- und Bluetooth-Konnektivität, was das Board ideal für vernetzte Anwendungen macht. Gerade dann spielen sichere Firmware-Updates eine zentrale Rolle, da nicht nur ein Gerät betroffen ist, sondern eine komplett vernetzte Infrastruktur.
Ein wesentlicher Vorteil des Arduino MKR WiFi 1010 ist die Kompatibilität mit der Arduino-IDE und damit der Möglichkeit, das Board direkt über die IDE aktualisieren zu können. Die IDE bietet darüber hinaus Funktionen wie den Board Manager, der die Installation und Verwaltung der benötigten Softwarepakete erleichtert (Bild 2). Durch die Integration mit dem Arduino-IoT-Cloud-Service wird der Einsatz des Boards in cloudbasierten Anwendungen zusätzlich optimiert. Hier können Benutzer Dashboards erstellen, Variablen verwalten und das Board nahtlos mit anderen Geräten vernetzen.
Anwender profitieren außerdem von der Unterstützung einer breiten Palette an Erweiterungsmodulen und Shields, die den Einsatz in spezifischen Anwendungen erleichtern. Ob Sensoren, Displays oder andere Komponenten, die Flexibilität des Boards ermöglicht die Umsetzung zahlreicher IoT-Projekte, von einfacher Heimautomation bis hin zu komplexeren Systemen wie RFID-basierten Steuerungen oder datengesteuerten Anwendungen. Dank der klar beschrifteten Header-Pins und der dokumentierten Bibliotheken fällt die Integration von Hardware-Komponenten leicht.
Firmware-Update des Arduino Uno WiFi Rev2
Der Arduino MKR WiFi 1010 veranschaulicht die praktische Umsetzung sicherer Firmware-Updates. Nach der Integration in die Arduino-IDE wird zunächst die installierte Firmware-Version des WLAN-Moduls überprüft. Dies geschieht mithilfe eines speziellen Sketches, der die Version ermittelt und über den seriellen Monitor ausgibt.
Falls ein Update erforderlich ist, wird ein Firmware-Update-Sketch auf das Gerät geladen, der den Aktualisierungsprozess initiiert (Bild 3). Die Arduino-Software ermöglicht dabei den sicheren Download und die Installation der neuen Firmware-Version über TLS-geschützte Verbindungen.
Das Update erfordert dazu die Auswahl des angeschlossenen Boards.
Vor der Installation überprüft das Gerät die digitale Signatur der Firmware und validiert deren Integrität. Über Werkzeuge -> Firmware Updater erfolgt dazu zunächst die Auswahl des entsprechenden Boards (Bild 4). Dieses muss natürlich zuvor über die USB-Schnittstelle mit dem PC verbunden werden. Die Aktualisierung lässt sich auf diesem Weg sowohl in Windows, inklusive Windows 11 und Windows Server 2022/2025, als auch unter Linux und macOS durchführen.
Sobald die Arduino-IDE die passenden Daten des Boards eingelesen hat, stellt das Programm die verschiedenen Firmware-Versionen zur Verfügung (Bild 5). Dabei ist gewährleistet, dass die notwendigen Daten signiert sind und aus den Arduino Repositorien stammen. Welche Version die Anwender installieren, hängt von den verwendeten Geräten und Programmen/Sketches ab. Generell ist es empfehlenswert, die aktuelle Version auszuwählen, die neben neuen Funktionen auch Sicherheitsverbesserungen enthält.
Nach der Auswahl der passenden Firmware erfolgt die Aktualisierung mit der Schaltfläche Installieren (Bild 6). Nach erfolgreicher Installation wird die Firmware automatisch aktiviert. Der Abschluss der Aktualisierung ist im Fenster zu sehen. Tritt ein Fehler während des Updates auf, stellt ein Rollback-Mechanismus sicher, dass das Gerät wieder mit der vorherigen Firmware-Version arbeitet, um den Betrieb aufrechtzuerhalten. Das ist ein wichtiger Faktor, um IoT-Geräte nicht nur sicher, sondern auch stabil zu betreiben.
Automatisierte Firmware-Aktualisierung
Das Arduino-CLI (Command Line Interface) bietet eine effiziente Möglichkeit, Arduino-Boards wie das MKR WiFi 1010 zu verwalten und deren Firmware zu aktualisieren. Diese Lösung eignet sich besonders für Szenarien, in denen Firmware-Updates automatisiert oder in größeren Entwicklungsumgebungen integriert werden sollen. Herstellerseitige CLI-Tools wie Arduino-CLI ermöglichen nicht nur die direkte Interaktion mit den Geräten, sondern unterstützen auch die Erstellung von Skripten, um Updates in regelmäßigen Intervallen oder auf mehreren Geräten gleichzeitig durchzuführen. Solche Tools lassen sich nicht nur bei Arduino-Geräten, sondern auch bei anderen Herstellern anwenden, die ähnliche Lösungen anbieten.
In der Praxis erfolgt die Aktualisierung über das Arduino-CLI in wenigen Schritten. Nach der Installation des CLI wird das gewünschte Board-Paket hinzugefügt und konfiguriert. Für den MKR WiFi 1010 sieht ein Skript zur Aktualisierung der Firmware folgendermaßen aus:
# Installation des Board-Pakets
arduino-cli core install arduino:samd
# Verbinden und Erkennen des Boards
arduino-cli board list
# Kompilieren des Firmware-Sketches
arduino-cli compile --fqbn
arduino:samd:mkrwifi1010 /Pfad/zum/Sketch
# Hochladen der Firmware auf das Board
arduino-cli upload -p /dev/ttyUSB0 --fqbn
arduino:samd:mkrwifi1010 /Pfad/zum/Sketch
Dieses Skript stellt sicher, dass die Firmware sowohl kompiliert als auch hochgeladen wird. Über die Option --fqbn wird das genaue Board-Modell spezifiziert, während der Port (/dev/ttyUSB0) auf das verbundene Gerät verweist. Durch die Skriptfähigkeit des Arduino-CLI können Anwender auch umfangreichere Automatisierungen entwickeln, etwa die Aktualisierung mehrerer Geräte in einer einzigen Sitzung.
Die Vorteile des Arduino-CLI liegen in der Flexibilität und Effizienz. IT-Administratoren oder Entwickler können Firmware-Updates direkt in bestehende CI/CD-Pipelines integrieren oder automatisierte Prozesse zur Qualitätssicherung einrichten. Diese Herangehensweise ist nicht nur auf Arduino-Geräte beschränk; Hersteller von IoT-Hardware wie Espressif, Raspberry Pi oder STMicroelectronics bieten ähnliche Tools, um Skripting und Automatisierung in Firmware-Prozesse einzubinden. Solche Lösungen reduzieren den manuellen Aufwand und sorgen für konsistente, sichere Aktualisierungen in größeren Umgebungen.
Anforderungen und Prozesse
Die sichere Bereitstellung und Aktualisierung von Firmware für IoT-Geräte erfordert sowohl technische als auch organisatorische Maßnahmen auf Seiten der Hersteller. Anbieter müssen ihre Firmware in einem kontrollierten Prozess erstellen, signieren und bereitstellen, um Manipulationen und Angriffe auszuschließen. Zentral ist die Verwendung digitaler Signaturen, die sicherstellen, dass die Firmware von einer vertrauenswürdigen Quelle stammt. Dazu erzeugt der Hersteller ein Schlüsselpaar, bestehend aus einem privaten und einem öffentlichen Schlüssel. Der private Schlüssel signiert die Firmware, während der öffentliche Schlüssel auf den Geräten hinterlegt wird, um die Signatur bei der Installation zu verifizieren.
Die Firmware wird über sichere Kanäle wie TLS-geschützte Verbindungen an die Update-Server des Herstellers übertragen. Diese Server hosten die Firmware und stellen sie Endgeräten bereit, häufig über Over-the-Air-Mechanismen (OTA). Dabei müssen zusätzliche Schutzmaßnahmen wie eine Integritätsprüfung und eine Überprüfung der Firmware-Version implementiert werden, um sicherzustellen, dass keine veraltete oder manipulierte Software installiert wird. Für die Bereitstellung ist zudem eine enge Zusammenarbeit mit Plattformanbietern oder offenen Repository-Systemen erforderlich, wie es im Fall von Arduino geschieht. Hersteller, die ihre Firmware über Plattformen wie die Arduino-IDE oder per CLI bereitstellen möchten, registrieren ihre Firmware-Versionen und Metadaten.
Für die Signierung von Applikationssoftware oder Firmware bieten Open-Source-Tools wie OpenSSL oder spezifische Lösungen der Plattformanbieter eine solide Basis. Entwickler können Schlüsselpaare erzeugen, ihre Firmware signieren und sogar Zertifikatsketten implementieren, um die Vertrauenswürdigkeit weiter zu erhöhen. Der Signaturprozess wird in bestehende Entwicklungs- und CI/CD-Pipelines integriert, um eine effiziente, sichere und reproduzierbare Bereitstellung zu gewährleisten.
Eine so durchdachte Infrastruktur für Firmware-Updates schützt IoT-Geräte nicht nur vor Manipulation, sondern erhöht auch die Transparenz und Kontrolle in industriellen oder unternehmenskritischen Anwendungen. Hersteller tragen dabei die Verantwortung, Sicherheitslücken durch zeitnahe Updates zu schließen und gleichzeitig den Betrieb der Geräte nicht zu beeinträchtigen. Auf diese Weise lässt sich die Sicherheit sowohl für Endanwender als auch für Hersteller effektiv steigern.
Sie haben Fragen oder Kommentare?
Wenn Sie technische Fragen oder Anmerkungen zu diesem Artikel haben, nehmen Sie bitte Kontakt auf mit dem Autor unter thomas.joos@outlook.com oder der Elektor-Redaktion unter redaktion@elektor.de.