Accueil / Réseau & applicatif

MQTT

Protocole publish/subscribe central des architectures IoT — souvent exposé sans authentification ni contrôle d'accès.

Complet #mqtt#broker#pub-sub

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 :

CommunicationPort TCP
Non chiffrée1883
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

Ressources