Skip to content
Rejoignez le forum de la communauté Censys : Se connecter, partager et prospérer ! | Commencez ici
Blogs

Comment trouver des serveurs en utilisant les protocoles MQTT et AMQP

Publié le 19 mars 2019

Comment trouver des serveurs en utilisant les protocoles MQTT et AMQP

Nous avons récemment ajouté les protocoles MQ Telemetry Transport (MQTT) et Advanced Message Queuing Protocol (AMQP) à notre ensemble de données. Voici un bref aperçu de l'utilisation de ces protocoles, des risques de sécurité qu'ils comportent, de la manière de rechercher des serveurs et des appareils qui utilisent MQTT et AMQP, et de la manière de sécuriser ces serveurs.

Qu'est-ce que MQTT ?

MQTT est un protocole de messagerie de machine à machine créé en 1999 par Andy Stanford-Clark d'IBM et Arlen Nipper d'Arcom. Leur objectif initial était de créer un protocole de messagerie suffisamment léger pour alléger la charge de la bande passante du réseau. La définition officielle de mqtt.org:

MQTT est l'acronyme de MQ Telemetry Transport. Il s'agit d'un protocole de messagerie extrêmement simple et léger, de type publication/abonnement, conçu pour les appareils limités et les réseaux à faible bande passante, à forte latence ou non fiables. Les principes de conception consistent à minimiser la largeur de bande du réseau et les besoins en ressources des appareils, tout en essayant de garantir la fiabilité et un certain degré d'assurance de livraison. Ces principes font que le protocole est idéal pour le monde émergent des appareils connectés "machine à machine" (M2M) ou "Internet des objets", et pour les applications mobiles où la largeur de bande et la puissance de la batterie sont primordiales.

En 2014, IBM a publié un rapport sur la façon dont le protocole MQTT pourrait être utilisé pour l'explosion de l'IdO. Le problème identifié est que les appareils IoT doivent s'appuyer sur un très grand nombre de signaux qui nécessitent un mode de communication standardisé. Le protocole MQTT pourrait être utilisé pour permettre aux appareils IoT de se connecter les uns aux autres, sans dépendre de tous les appareils provenant d'un seul fournisseur et sans surcharger les restrictions de bande passante existantes. IBM affirme dans son rapport que MQTT pourrait être utilisé pour "démocratiser les appareils", en permettant essentiellement aux consommateurs et aux entreprises d'utiliser les appareils connectés à l'internet pour leurs besoins exacts sans être bloqués par des problèmes d'interconnectivité où les appareils ne peuvent pas communiquer ou travailler les uns avec les autres.

De nombreux développeurs se sont ralliés à cette affirmation et MQTT a rapidement été adopté comme l'un des protocoles de communication les plus populaires pour les appareils connectés à l'internet, ainsi que pour les applications mobiles et les produits domotiques.

Qu'est-ce que l'AMQP ?

Créé en 2003 par John O'Hara chez JPMorgan Chase, le protocole AMQP sert de protocole de communication pour la messagerie de machine à machine, afin de remplacer les middleware existants, qui étaient quelque peu restrictifs en termes de compatibilité. La définition officielle est disponible sur https://www.amqp.org :

Le protocole AMQP (Advanced Message Queuing Protocol) est une norme ouverte permettant de transmettre des messages commerciaux entre des applications ou des organisations. Il connecte les systèmes, alimente les processus métier en informations dont ils ont besoin et transmet de manière fiable les instructions qui permettent d'atteindre les objectifs fixés.

AMQP est utilisé de la même manière que MQTT - il sert de protocole de communication entre les systèmes pour permettre l'interopérabilité et la fiabilité. La principale distinction est que, alors que MQTT est le plus souvent associé à la communication des appareils IoT, AMQP est utilisé plus largement comme protocole de communication entre une grande variété d'appareils professionnels (pensez aux bases de données et aux systèmes critiques).

AMQP, tout comme MQTT, est principalement utilisé pour permettre aux appareils de différents fournisseurs de se parler, de travailler ensemble et d'être plus facilement gérés. Selon le billet de blog de VMWare sur le protocole de communication, des entreprises comme JP Morgan utilisent AMQP pour traiter 1 milliard de messages par jour. La NASA l'utilise pour l'informatique en nuage Nebula. Google l'utilise pour le traitement d'événements complexes.

Comme vous pouvez l'imaginer, MQTT et AMQP sont très largement utilisés avec une grande variété d'appareils, de cas d'utilisation et à la fois dans l'espace des consommateurs et des entreprises. Grâce à notre perspective mondiale unique, nous avons pu collecter des données sur les protocoles MQTT et AMQP afin que vous puissiez trouver les appareils et les serveurs qui les utilisent et vous assurer qu'ils sont sécurisés contre les attaques.

64K serveurs utilisant le protocole MQTT, 57K non cryptés

Comme tout autre protocole, MQTT et AMQP comportent des vulnérabilités et les risques de sécurité qu'elles peuvent présenter peuvent être importants, en particulier lorsqu'il s'agit d'environnements d'entreprise. Les problèmes de sécurité découlent principalement des configurations dépourvues de cryptage et d'authentification. En l'absence de configurations appropriées et de mesures de sécurité de base, n'importe qui peut écouter les communications entre les appareils fonctionnant avec ces protocoles.

Sur les 64 025 serveurs que nous avons trouvés utilisant le protocole MQTT, 57 217 appareils n'utilisent pas TLS (port 1883), ce qui signifie qu'ils ne sont pas cryptés et qu'ils pourraient être espionnés à n'importe quel endroit de la chaîne de communication. Point positif : 15 020 appareils utilisent TLS (port 8883) et sont au moins cryptés. Cela laisse tout de même environ 80 % des serveurs MQTT non cryptés.

Pour déterminer lesquels de ces serveurs MQTT sont exposés et vulnérables, nous avons exécuté un rapport en utilisantla chaîne "connection accepted" dans le champ "connack.connect_return", ce qui signifie simplement que ces appareils se sont connectés à nous pour nos analyses.

Afin de mettre en évidence les services les plus vulnérables, il convient de noter que 35 397 hôtes acceptent les connexions anonymes. En d'autres termes, il n'y a aucune exigence d'authentification pour accéder à ces plus de 30 000 services fonctionnant sur le protocole MQTT. C'est dire si la situation est préoccupante :

Données brutes

TODO : Insérer un tableau : https://censys.io/blog/find-mqtt-amqp-protocol

Voir le rapport en Censys

Compte tenu des risques de sécurité importants que présentent ces appareils, nous allons voir comment vous pouvez les trouver avec Censys et sécuriser ceux qui appartiennent à vos employés ou qui sont liés d'une autre manière à votre réseau et à votre entreprise.

102K serveurs utilisant AMQP

Au total, nous avons trouvé 102 247 services utilisant le protocole AMQP (port 5672), les États-Unis et la Chine représentant ensemble plus de la moitié de toutes les détections AMQP. Pour rechercher des serveurs utilisant le protocole AMQP et s'associant à votre entreprise, il vous suffit d'utiliser la balise AMQP et d'ajouter votre numéro de système autonome (AS). Par exemple, pour rechercher des courtiers AMQP à l'université du Michigan :

https://censys.io/ipv4?q=tags%3Aamqp+AND+autonomous_system.asn%3A+36375

Que faire si vous trouvez des serveurs utilisant ces protocoles liés à votre entreprise (ou à votre réseau domestique) ?

Les balises MQTT et AMQP peuvent être utiles pour localiser les appareils que vous connaissez, bien sûr, mais aussi pour trouver ceux dont vous ignoriez qu'ils étaient en ligne mais liés à vous ou à votre organisation. Les appareils IoT sont connus pour être optimisés pour des fonctionnalités intéressantes, laissant souvent la sécurité au second plan. C'est pourquoi il est bon de vérifier régulièrement la présence de nouveaux appareils connectés à Internet et de s'assurer qu'ils sont sécurisés.

Pour les serveurs exécutant les protocoles MQTT et AMQP en particulier, nous recommandons :

  • Assurez-vous que vos courtiers de messages utilisent un cryptage fort et que tout courtier AMQP ou MQTT est enveloppé dans des sockets TLS pour garantir la confidentialité des messages, les contrôles d'intégrité et l'authentification optionnelle. Étant donné que ces canaux transmettent des données sensibles, TLS peut fournir les garanties d'authentification et d'autorisation nécessaires.
  • Placez ces services derrière un pare-feu. Les isoler est le seul moyen sûr de s'assurer que vos adversaires ne pourront pas accéder à ces serveurs ou appareils et obtenir des données confidentielles.

Solutions de gestion de la surface d'attaque
En savoir plus