GHSA-5jfw-35xp-5m42 – pocketmine/bedrock-protocol
Package
Manager: composer
Name: pocketmine/bedrock-protocol
Vulnerable Version: >=0 <8.0.2
Severity
Level: High
CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
EPSS: N/A pctlN/A
Details
Buffer length underflow in LoginPacket causing unchecked exceptions to be thrown ### 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](https://github.com/pmmp/BedrockProtocol/blob/47532c95ea37d5f0365b23f734d70d943ff95295/src/LoginPacket.php#L54) to patch it. ### For more information * Email us at [team@pmmp.io](mailto:team@pmmp.io)
Metadata
Created: 2022-04-05T17:53:22Z
Modified: 2022-04-05T17:53:22Z
Source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/04/GHSA-5jfw-35xp-5m42/GHSA-5jfw-35xp-5m42.json
CWE IDs: ["CWE-124"]
Alternative ID: N/A
Finding: F184
Auto approve: 1