MQTT security: why the spec only says 'should,' and what happens when vendors skip it

Last updated:

Key takeaways

  • MQTT 5.0's own specification only recommends authentication, authorization and TLS encryption — it never requires any of them, leaving broker security entirely up to whoever deploys it.
  • MQTT is a lightweight publish/subscribe messaging protocol maintained by the OASIS MQTT Technical Committee, currently at version 5.0 (approved as an OASIS Standard on 7 March 2019).
  • More common than the "SHOULD" language in the spec would suggest.
  • Five advisories from January 2024 through mid-2026 show where the practical risk actually lands: the implementation, every time.

MQTT 5.0's own specification only recommends authentication, authorization and TLS encryption — it never requires any of them, leaving broker security entirely up to whoever deploys it. Five separate CISA ICS advisories published between January 2024 and mid-2026, against products ranging from a robotic mower to a smart-home hub to an IP-PBX, trace back to exactly that gap: hard-coded credentials, missing per-client authorization, or plain unencrypted MQTT traffic — never a break of any cryptography the protocol provides, because in each case the protocol's optional security was simply never turned on.

What is MQTT, and what does the spec actually say about security?

MQTT is a lightweight publish/subscribe messaging protocol maintained by the OASIS MQTT Technical Committee, currently at version 5.0 (approved as an OASIS Standard on 7 March 2019). The project's own description calls it "an extremely lightweight publish/subscribe messaging transport" designed for "connecting remote devices with a small code footprint and minimal network bandwidth" — which is exactly why it is the default choice for IoT device telemetry, mobile push infrastructure, and increasingly, industrial IIoT data pipelines via the Sparkplug B convention.

Section 5 of the MQTT 5.0 spec is titled "Security" but is non-normative guidance rather than a mandatory requirement: "MQTT Client and Server implementations SHOULD offer Authentication, Authorization and secure communication options, such as those discussed in Chapter 5. Applications concerned with critical infrastructure, personally identifiable information, or other personal or sensitive information are strongly advised to use these security capabilities." The CONNECT packet includes native Username and Password fields — the spec notes "it can be used to carry any credential information" — but neither field is encrypted or hashed by the protocol itself; confidentiality depends entirely on whether the connection also runs over TLS, which is a separate, optional layer. The earlier 3.1.1 specification is blunter about the asymmetry: "The MQTT protocol is not trust symmetrical: it provides no mechanism for the Client to authenticate the Server."

How common are open, unauthenticated MQTT brokers?

More common than the "SHOULD" language in the spec would suggest. The most credible dedicated study is Trend Micro's December 2018 research with EURECOM and Politecnico di Milano, which scanned the internet over roughly four months and collected around 209.9 million MQTT messages from 78,549 distinct brokers — a significant share configured with no access control. Independent academic work since then (an IS&T Electronic Imaging paper is one example) has reported over 100,000 unauthenticated MQTT devices found via Shodan, and more recent industry blog posts citing current Shodan queries report broker counts that run into the hundreds of thousands on the default unencrypted port, 1883. This guide treats the 2018 Trend Micro figures as the best-sourced anchor and flags the larger, newer numbers as directionally consistent self-reported search-engine counts rather than independently verified research — but the direction is the same across every source: a protocol where authentication is optional produces a persistent, measurable population of brokers where the option was never enabled.

What have real CISA advisories against MQTT-connected products found?

Five advisories from January 2024 through mid-2026 show where the practical risk actually lands: the implementation, every time.

Advisory Vendor / product CVE(s) What it actually found
ICSA-26-162-01 Yarbo robotic mower app/cloud CVE-2026-10557 (CVSS 9.8), CVE-2026-7368 Hard-coded MQTT broker credentials identical for every user and device; no per-device authorization, so a serial number alone enables wildcard subscription to another owner's telemetry and commands
ICSA-26-013-03 YoSmart YoLink Smart Hub CVE-2025-59448/59449/59451/59452 Devices "leverage unencrypted MQTT to communicate over the internet"; broker lacks authorization, enabling cross-account device control via predictable IDs
ICSA-25-294-05 CloudEdge cameras/app CVE-2025-11757 App "does not sanitize the MQTT topic input," letting an attacker use an MQTT wildcard to receive messages meant for other users
ICSA-25-030-02 New Rock Technologies OM500/MX8G/NRP1302 CVE-2025-0680 (CVSS 9.8), CVE-2025-0681 Cloud MQTT service "supports wildcard topic subscription which could allow an attacker to obtain sensitive information from tapping the service communications"
ICSA-24-025-01 MachineSense FeverWarn CVE-2023-49115 Devices "use unauthenticated MQTT messaging to monitor devices and remote viewing of sensor data by users"

None of these is a flaw in MQTT 5.0's design — every one is a case where the optional authentication, authorization or encryption the spec recommends was never configured, or was configured with the same shared credential across an entire fleet.

What should a device maker or integrator check first?

  1. Confirm TLS is actually enabled, not just available. MQTT's default unencrypted port (1883) and TLS port (8883) typically run side by side on the same broker; a client silently falling back to the open port is invisible without checking broker logs or a packet capture.
  2. Never hard-code or share broker credentialsThe Yarbo advisory above exists because every unit shipped with the same password — a single leaked or reverse-engineered credential compromised the entire fleet at once.
  3. Scope access-control lists (ACLs) per client, not globally. Three of the five advisories above are a direct consequence of a client — or an attacker posing as one — being able to subscribe to another user's topics via a wildcard (# or +) that was never restricted.
  4. If deploying Sparkplug B for IIoT/SCADA integration, remember it adds topic-namespace and payload conventions, not securityAny broker that meets the "Sparkplug Compliant" bar still inherits whatever authentication and TLS the underlying MQTT deployment was actually given — Sparkplug compliance and a secured broker are two separate checks.
  5. Re-verify after every firmware or cloud-backend updatethat broker credentials weren't reset to a shared default and that ACL scoping survived the change.

A passive capture of MQTT traffic on a device's network segment is a practical way to check whether a product is actually using TLS, what credentials it presents, and which topics it publishes or subscribes to, without waiting for a CISA advisory to confirm it the hard way: SoftWSP's OT Snapshot identifies the protocols and connections a device actually uses from that capture and flags patterns such as unencrypted MQTT or overly broad topic subscriptions, with an engineer reviewing every finding and the AI-assisted report citing the specific traffic each finding is based on — see OT Snapshot.

This guide draws on the OASIS MQTT 5.0 and 3.1.1 specifications fetched directly, the Trend Micro/EURECOM/Politecnico di Milano 2018 internet-exposure study, five CISA ICS advisories fetched directly, and the Eclipse Sparkplug project's own published FAQ. Internet-exposure figures newer than the 2018 Trend Micro study (commonly cited in industry blog posts as hundreds of thousands to over a million exposed brokers) could not be independently verified against a primary dataset and are flagged as directionally consistent, not confirmed. This guide is general information, not a substitute for a current CISA ICS advisory search for your exact product and firmware version.

Sources

  1. OASIS: MQTT Version 5.0, OASIS Standard (approved 7 March 2019) — Section 5, Security
  2. OASIS: MQTT Version 3.1.1, OASIS Standard — trust-asymmetry and CONNECT packet fields
  3. Trend Micro / EURECOM / Politecnico di Milano: "The Fragility of Industrial IoT's Data Backbone" (December 2018)
  4. CISA ICS Advisory ICSA-26-162-01: Yarbo mobile app and cloud (CVE-2026-10557, CVE-2026-7368)
  5. CISA ICS Advisory ICSA-26-013-03: YoSmart YoLink Smart Hub (CVE-2025-59448, -59449, -59451, -59452)
  6. CISA ICS Advisory ICSA-25-294-05: CloudEdge cameras/app (CVE-2025-11757)
  7. CISA ICS Advisory ICSA-25-030-02: New Rock Technologies OM500/MX8G/NRP1302 (CVE-2025-0680, CVE-2025-0681)
  8. CISA ICS Advisory ICSA-24-025-01: MachineSense FeverWarn (CVE-2023-49115)
  9. Eclipse Foundation: Sparkplug specification and FAQ

Frequently asked questions

Does the MQTT specification require authentication or encryption?

No. MQTT 5.0, the current OASIS Standard (approved 7 March 2019), devotes its Section 5 to security but frames every control as a recommendation, not a requirement: "MQTT Client and Server implementations SHOULD offer Authentication, Authorization and secure communication options... Applications concerned with critical infrastructure, personally identifiable information, or other personal or sensitive information are strongly advised to use these security capabilities." SHOULD, in the IETF/OASIS sense, means an implementer can skip it and still claim protocol compliance. The CONNECT packet carries native Username and Password fields, but the spec itself does not encrypt or hash them — confidentiality depends entirely on whether the connection also runs over TLS, which is likewise optional. MQTT's earlier 3.1.1 text is explicit that the protocol is not even trust-symmetrical: "The MQTT protocol is not trust symmetrical: it provides no mechanism for the Client to authenticate the Server." MQTT is maintained by the OASIS MQTT Technical Committee and described on the project's own site as "an extremely lightweight publish/subscribe messaging transport" built for a small code footprint — a design goal that, in practice, has repeatedly meant security was left for someone downstream to add.

How common are internet-exposed MQTT brokers with no authentication?

Documented as a real, recurring problem, though exact current counts vary by source and methodology, so treat any single round number with caution. The most-cited peer-reviewed-adjacent research is Trend Micro's December 2018 study with EURECOM and Politecnico di Milano, "The Fragility of Industrial IoT's Data Backbone," which collected roughly 209.9 million MQTT messages from 78,549 distinct brokers over about four months of internet scanning, many configured with no access control at all. Independent academic exposure counts since then (for example an IS&T Electronic Imaging paper reporting over 100,000 unauthenticated MQTT devices via Shodan) point the same direction, and more recent vendor blog posts citing Shodan queries report broker counts in the hundreds of thousands to over a million on the default port — those later figures are self-reported search-engine counts rather than peer-reviewed research, so this guide cites the 2018 Trend Micro study as its anchor and flags the newer numbers as directionally consistent but unverified. The pattern across all of them is the same: a protocol that makes authentication optional produces a long tail of brokers where the option was never turned on.

What have real CISA ICS advisories against MQTT-connected products found in 2024-2026?

A consistent pattern of implementation failures, not a break of any cryptography MQTT provides. CISA's ICSA-26-162-01 (Yarbo robotic mower app and cloud) found hard-coded MQTT broker credentials — "the Yarbo Android and iOS applications contain hard-coded MQTT broker credentials that are identical for all users and all devices" (CVE-2026-10557, CVSS v3.1 9.8) — plus missing per-device authorization letting any client subscribe to another owner's robot telemetry and commands by serial number alone (CVE-2026-7368). ICSA-26-013-03 (YoSmart YoLink smart hub) found the ecosystem's devices "leverage unencrypted MQTT to communicate over the internet" with no broker-side authorization, enabling cross-account device control via predictable identifiers (CVE-2025-59448/59449/59451/59452). ICSA-25-294-05 (CloudEdge cameras) found the app "does not sanitize the MQTT topic input, which could allow an attacker to leverage the MQTT wildcard to receive all the messages that should be delivered to other users" (CVE-2025-11757). ICSA-25-030-02 (New Rock Technologies IP-PBX and gateway products) found a cloud MQTT service that "supports wildcard topic subscription which could allow an attacker to obtain sensitive information from tapping the service communications" (CVE-2025-0681), alongside a separate critical flaw (CVE-2025-0680, CVSS v3.1 9.8) in the same product line. ICSA-24-025-01 (MachineSense FeverWarn thermal-screening devices) found the product line simply "use[s] unauthenticated MQTT messaging to monitor devices and remote viewing of sensor data by users" (CVE-2023-49115). Every one of these is an implementer choice — shared credentials, missing authorization, or unencrypted transport — not a flaw in the MQTT protocol's own design.

What should a device maker or integrator using MQTT check first?

Inventory every broker, client and topic namespace your product or deployment uses, and confirm — rather than assume — that TLS is actually enabled on the broker listener, since MQTT's default unencrypted port (1883) and its TLS port (8883) commonly run side by side and a client falling back to the open port is invisible without checking broker logs or a network capture. Never hard-code or share broker credentials across devices or customers; each of the 2024-2026 advisories above traces back to exactly this shortcut. Configure the broker's access-control list (ACL) so each client can only publish and subscribe to the topics it actually needs — wildcard subscriptions (`#` and `+`) should be scoped per client, not granted globally, since three of the five advisories above are a direct consequence of a client (or an attacker posing as one) being able to subscribe to other users' topics. If the deployment is industrial rather than consumer IoT and uses Sparkplug B for SCADA/IIoT interoperability, remember that Sparkplug adds topic-namespace and payload conventions on top of MQTT, not a separate security layer — any MQTT broker that meets the Sparkplug Compliant bar still inherits whatever authentication and TLS configuration (or lack of it) the underlying broker was given.

In this cluster

MQTT security: why the spec only says 'should,' and what happens when vendors skip it