Accueil / Réseau & applicatif
MQTT
Protocole publish/subscribe central des architectures IoT — souvent exposé sans authentification ni contrôle d'accès.
Description
MQTT (Message Queuing Telemetry Transport) est un protocole client/serveur basé sur le mécanisme publish/subscribe :
- un client A s’abonne à un fil d’événements (topic) « toto » sur le serveur (subscribe) ;
- un client B publie un événement sur le fil « toto » (publish) ;
- le client A est informé de la nouvelle donnée publiée sur « toto ».
MQTT est un élément central des architectures IoT modernes : il permet d’échanger des informations avec tout système capable de s’y connecter, sur des liens à faible bande passante.
Composants
- Les nodes se connectent au broker pour publier, s’abonner et recevoir des messages.
- Le broker est le serveur qui reçoit les messages, les filtre et les distribue aux nodes abonnés au topic concerné.
À noter qu’un serveur MQTT peut lui-même être un node.
Topics
Les topics sont hiérarchiques (maison/salon/temperature). Deux jokers pour l’abonnement :
+remplace un niveau (maison/+/temperature),#remplace tous les niveaux restants (maison/#), y compris#seul → tout le trafic.
Identification
Le service MQTT tourne généralement sur les ports suivants :
| Communication | Port TCP |
|---|---|
| Non chiffrée | 1883 |
| Chiffrée (TLS) | 8883 |
Un scan réseau (nmap -p 1883,8883) révèle les brokers exposés. Beaucoup sont accessibles sans authentification.
Attacking
Connexion anonyme et écoute globale
Si le broker autorise les connexions anonymes, un abonnement à # expose l’intégralité du trafic — souvent une mine d’informations (états de capteurs, commandes, parfois identifiants) :
# S'abonner à TOUT le trafic du broker
mosquitto_sub -h 192.168.1.10 -t '#' -v
Énumération des topics
Observer les topics actifs permet de cartographier l’installation (appareils, pièces, commandes disponibles).
Injection de commandes
Sans contrôle d’accès (ACL), un attaquant peut publier sur des topics de commande pour piloter des appareils :
# Publier une commande sur un topic
mosquitto_pub -h 192.168.1.10 -t 'maison/salon/lumiere/set' -m 'ON'
Usurpation et déni de service
- Publier de fausses valeurs de capteurs pour tromper l’automatisation.
- Utiliser des messages retained ou last will malveillants.
- Saturer le broker (connexions, messages) pour un déni de service.
Protections
- Désactiver l’accès anonyme ; exiger identifiants forts ou authentification par certificat client.
- Mettre en place des ACL par utilisateur/topic (principe du moindre privilège).
- Chiffrer avec TLS (port 8883) et valider les certificats.
- Ne pas exposer le broker sur Internet sans nécessité ; segmenter le réseau.
Example devices
- Passerelles domotiques et intégrations reposant sur MQTT.
- mosquitto — broker open source de référence.
- zigbee2mqtt et Home Assistant.