GitHub Advisoryadvisory · Packagist

GHSA-5jfw-35xp-5m42 Buffer length underflow in LoginPacket causing unchecked exceptions to be thrown

HIGH Published 2022-04-05 Modified 2022-04-05 Official page ↗
Ecosystem
Packagist
Packages
pocketmine/bedrock-protocol
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses
CWE-124
Reviewed
2022-04-05

Affected packages

• Packagist pocketmine/bedrock-protocol: < 8.0.2 → fixed in 8.0.2

Description

Impact `LoginPacket` uses `BinaryStream->getLInt()` to read the lengths of JSON payloads it wants to decode. Unfortunately, `BinaryStream->getLInt()` returns a signed integer, meaning that a malicious client can craft a packet with a large uint32 value for payload buffer size (which would be interpreted as a negative signed int32), causing `BinaryStream->get()` to throw an exception. In the context of PocketMine-MP, this leads to a server crash when the vulnerability is exploited. Patches e3fce7632b94e83fd6a518a87dcaf6a11681c4ac Workarounds This can be worked around by registering a custom `LoginPacket` implementation into `PacketPool` which overrides this code to patch it. For more information • Email us at [email protected]

Related

Weakness · CWE (1)

  • CWE-124 Buffer Underwrite weakness

References