Blog

Informativ, aktuell und spannend – der Oneconsult Cybersecurity Blog.

Die wichtigsten Massnahmen um die Sicherheit eines MQTT-Netzwerks zu erhöhen
Philipp Löw
Philipp Löw
|
10.10.2023
(aktualisiert am: 09.09.2024)

Das Internet der Dinge (IoT) ist allgegenwärtig und verbindet mehr und mehr physische Geräte mit der digitalen Welt. Nichtsdestotrotz wird das Thema IT-Sicherheit dabei vernachlässigt. Schwache Passwörter sind “hardcoded“, Daten werden unverschlüsselt übermittelt und viele Geräte sind aus dem Internet erreichbar.

Angreifer weltweit sind dankbar für derartige Schwachstellen und nutzen diese immer häufiger aus. Ein bekanntes Beispiel hierfür ist die Mirai-Malware, welche in den letzten Jahren zahlreiche IoT-Komponenten infiziert und diese für Denial-of-Service-Angriffe verwendet hat.

In diesem Artikel wird daher das MQTT-Protokoll, eines der wichtigsten IoT-Protokolle, aus einer Sicherheitsperspektive betrachtet und ein Überblick über sinnvolle Härtungsmaßnahmen gegeben.

MQTT – Überblick

Beim Message Queuing Telemetry Transport (MQTT)-Protokoll handelt es sich um ein Publish-Subscribe-Protokoll, welches es ermöglicht, Daten zwischen IoT-Geräten auf einfachem Weg zu senden und zu empfangen (siehe HiveMQ).

Hierfür sind zumindest die folgenden Komponenten innerhalb eines MQTT-Netzes notwendig:

  • MQTT Broker
  • MQTT Client

MQTT erfreut sich unter anderem deshalb so grosser Beliebtheit, da es ein leichtgewichtiges Protokoll ist, das auch auf schwacher Hardware wie Microcontrollern ohne grosse Probleme funktioniert. Somit kann eine MQTT-Kommunikation für beinahe jedes IoT-Gerät verwirklicht werden.

Genau diese Eigenschaft bringt jedoch auch einige Nachteile in Bezug auf die Sicherheit mit sich. Je nach IoT-Gerät ist der Einsatz bestimmter Sicherheitsfeatures durch unzureichende Hardware limitiert.

MQTT Broker

Der MQTT Broker ist der Dreh- und Angelpunkt der MQTT-Kommunikation. Er nimmt Daten entgegen, die ihm von Clients gesendet werden. Diese übermittelt er an weitere Clients, die sich – je nach Art der Daten – als Abonnenten dafür registriert haben. Dabei werden sogenannte Themen (eng. Topics) verwendet, die spezifizieren, welche Daten gesendet werden. Ein Thema kann dabei beispielsweise folgendermassen aussehen:

Produktion/Steuerungsanlage/Temperatur

Ein Client kann somit zum Beispiel das Thema Produktion/Steuerungsanlage abonnieren und erhält daraufhin alle Daten, die zu diesem Thema veröffentlicht werden.

MQTT Client

Ein MQTT-Netzwerk kann aus beliebig vielen MQTT Clients bestehen. Diese können sowohl Publisher als auch Subscriber sein. Als Publisher veröffentlicht ein Client neue Daten innerhalb eines Themas und sendet diese an den MQTT Broker, der sie weiterverteilt. Als Subscriber hingegen kann ein Client ein oder mehrere Themen abonnieren und erhält, wie oben beschrieben, Daten über diese Themen.

Es ist anzumerken, dass dabei ein Client gleichzeitig als Subscriber und als Publisher fungieren kann. Zudem erfolgt die Kommunikation ereignisgetrieben. Nur wenn neue Daten versendet werden, erfolgt eine Übertragung.

Eine Übersicht über die einzelnen Rollen innerhalb eines MQTT-Netzwerkes zeigt die folgende Darstellung:

MQTT Client

MQTT – Angriffsvektoren und Härtungsmassnahmen

Im Folgenden wird ein Überblick über die bekanntesten Angriffsvektoren innerhalb des MQTT-Protokolls gegeben und es werden daraus sinnvolle Härtungsmassnahmen abgeleitet.

1. Fehlende Verschlüsselung

Wie in vielen anderen IoT-Protokollen wird auch im MQTT-Protokoll das Thema Verschlüsselung regelmässig vernachlässigt.

So existiert neben dem Port 1883 zur unverschlüsselten Übertragung von Daten auch der Port 8883, der von der Internet Assigned Numbers Authority für eine Datenübertragung unter Verwendung von TLS/SSL durch MQTT reserviert wurde. Nichtsdestotrotz wird in vielen Unternehmen auch heute noch auf eine Verschlüsselung des Datenverkehrs verzichtet, sodass sensible Informationen wie Passwörter weiterhin im Klartext übertragen werden und von einem potenziellen Angreifer mitgelesen werden können.

Dies ist insbesondere ein grosses Risiko, wenn die MQTT-Geräte an das Internet angebunden sind.

Ebenso wie bei einer Übertragung mithilfe des HTTP-Protokolls sollte deshalb auch innerhalb des MQTT-Protokolls standardmässig eine Verschlüsselung verwendet werden.

Hierfür wird empfohlen, den Broker entsprechend zu konfigurieren, dass dieser Verbindungen standardmässig per TLS verschlüsselt. Dabei wird ein neuer Listener auf dem zuvor genannten Port 8883 eingerichtet, über den die Verbindung erfolgt. Wichtig zu beachten ist zudem, dass die minimale TLS-Version angegeben werden sollte. Dadurch wird sichergestellt, dass Verbindungen nicht unsichere TLS-Versionen wie TLS 1.0 oder TLS 1.1 verwenden.

2. Fehlende oder schwache Zugangskontrolle

Auch beim Thema Authentifizierung/Autorisierung gilt: MQTT stellt die notwendigen Funktionalitäten zur Verfügung, es ist jedoch an den Entwicklern, diese auch korrekt umzusetzen.

In den Standardeinstellungen verzichten viele MQTT-Server bei einem Verbindungsaufbau auf eine Prüfung der Identität. Dies ermöglicht es beliebigen Akteuren einzelne oder alle (durch die Verwendung von Wildcard Parametern, wie «#») Topics zu abonnieren und die gesendeten Daten mitzulesen.

Auch hierbei erhöht sich das Risiko eines erfolgreichen Angriffs, sollte das MQTT-Gerät an das Internet angeschlossen sein.

Zur Prüfung der Authentizität können verschiedene Verfahren zum Einsatz kommen. Der einfachste Fall ist eine Kombination aus Benutzername und Passwort, welche vom Client an einen Broker gesendet wird. Einige MQTT Broker sind auch in der Lage mit X509-Client-Zertifikaten umzugehen oder sogar einen Oauth 2.0 Flow zu nutzen, was die Sicherheit nochmals erhöht.

Insbesondere für komplexere Verfahren, bieten viele Broker heutzutage entsprechende Plugins an, wodurch eine sichere Zugangskontrolle vergleichsweise einfach aufgesetzt werden kann.

Weiterführende Informationen zur Zugangskontrolle finden sich unter:

3. Fehlende Kontrolle bei der Registrierung neuer Geräte

Ein Angreifer ist in vielen Fällen in der Lage eigene MQTT Clients aufzusetzen und an das MQTT-Netzwerk anzubinden. Dies ist dem Umstand geschuldet, dass zumeist kein Mechanismus implementiert ist, der sicherstellt, dass nur vertrauenswürdige Geräte in das Netzwerk aufgenommen werden dürfen.

Es ist daher zu empfehlen, jeden angebunden Client über einen eindeutigen Identifier zu identifizieren und neue Geräte nur nach ausreichender Prüfung hinzuzufügen. Wie schon zuvor, haben viele Hersteller solche Mechanismen standardmässig bereits implementiert, sodass die Verwendung einer Kontrolle der Identität ohne grossen Aufwand aktiviert werden kann.

4. Kein Least-Privilege-Prinzip

Innerhalb eines MQTT-Netzwerkes ist jeder Client berechtigt, sowohl neue Topics zu erstellen als auch beliebige Topics zu abonnieren. Dies gewährleistet zwar eine einfache Handhabung des Netzwerks, stellt jedoch auch ein potenzielles Risiko dar. Ein Angreifer, der erfolgreich einen Client im Netzwerk registrieren konnte, hat somit Zugriff auf das gesamte Netzwerk. Aus diesem Grund sollte das sogenannte «Least-Privilege-Prinzip» angewandt werden, welches jedem Gerät nur so viele Rechte wie nötig gewährt. Somit ist sichergestellt, dass nur ausgewählte Clients Topics erstellen und Daten veröffentlichen dürfen, während alle anderen Clients nur bestimmte Topics abonnieren dürfen.

Einige MQTT Broker stellen dafür Access Control Lists (ACLs) zur Verfügung, über welche die Berechtigungen feingranular vergeben werden können. Dabei können Regeln für alle oder auch nur für einzelne Clients angelegt werden. Es empfiehlt sich zunächst die Rechte der Clients so weit wie möglich einzuschränken, bevor man einzelne Ausnahmen anlegt. Dadurch wird sichergestellt, dass auch Clients, die erst zu einem späteren Zeitpunkt dem Netzwerk hinzugefügt werden, nicht automatisch über zu hohe Rechte verfügen.

Fazit

Das MQTT-Protokoll ist eines der am weitesten verbreiteten und wichtigsten IoT-Protokolle und wird in einer Vielzahl von Unternehmen verwendet. Zwar bietet das Protokoll ausreichende Möglichkeiten, um einen sicheren Betrieb zu gewährleisten, jedoch müssen diese manuell konfiguriert werden. Ist man sich der Risiken aber erst einmal bewusst, erhöht die Umsetzung der Massnahmen die Sicherheit des Unternehmens signifikant. Die Durchführung eines Penetration Tests einzelner IoT-Geräte sowie auch zusammenhängender Netzwerke kann dabei wertvolle Hilfe leisten und Schwachstellen identifizieren. In diesen wie auch in allen weiteren Cyber-Security-Themen helfen wir gerne weiter. Wir freuen uns auf Ihre Kontaktaufnahme:

Philipp Löw

Autor

Philipp Löw ist Penetration Tester bei Oneconsult. Zusätzlich zu seinem Masterabschluss an der Hochschule für angewandte Wissenschaften in München in IT-Sicherheit, ist er ausserdem CRTO und OPST zertifiziert.

LinkedIn

Nichts verpassen! Melden Sie sich für unseren kostenlosen Newsletter an.

Ihre Sicherheit hat höchste Priorität – unsere Spezialisten unterstützen Sie kompetent.

Erreichbarkeit von Montag bis Freitag 08.00 – 18.00 Uhr (Ausnahme: Kunden mit SLA – Bitte über die 24/7 IRR-Notfallnummer anrufen).

Privatpersonen wenden sich bitte an Ihren IT-Dienstleister des Vertrauens oder die lokale Polizeidienststelle.

Weitere Informationen zu unseren DFIR-Services finden Sie hier:

QR_CSIRT_2022@2x
CSIRT zu den Kontakten hinzufügen