VDB
Sign up
MEDIUM

GHSA-32fw-gq77-f2f2

Eclipse Paho Go MQTT may incorrectly encode strings if length exceeds 65535 bytes

Quick fix

GHSA-32fw-gq77-f2f2 — github.com/eclipse/paho.mqtt.golang: upgrade to the fixed version with the command below.

go get github.com/eclipse/paho.mqtt.golang@v1.5.1

Details

In Eclipse Paho Go MQTT v3.1 library (paho.mqtt.golang) versions <=1.5.0 UTF-8 encoded strings, passed into the library, may be incorrectly encoded if their length exceeds 65535 bytes. This may lead to unexpected content in packets sent to the server (for example, part of an MQTT topic may leak into the message body in a PUBLISH packet).

The issue arises because the length of the data passed in was converted from an int64/int32 (depending upon CPU) to an int16 without checks for overflows. The int16 length was then written, followed by the data (e.g. topic). This meant that when the data (e.g. topic) was over 65535 bytes then the amount of data written exceeds what the length field indicates. This could lead to a corrupt packet, or mean that the excess data leaks into another field (e.g. topic leaks into message body).

Are you affected?

Enter the version of the package you're using.

Affected packages

Go/github.com/eclipse/paho.mqtt.golang
Introduced in: 0Fixed in: 1.5.1
Fixgo get github.com/eclipse/paho.mqtt.golang@v1.5.1

References