VDB
Sign up
HIGH7.5

GHSA-92jh-gwch-jq38

PocketMine-MP server crash with certain invalid JSON payloads in `LoginPacket` due to dependency vulnerability (again)

Quick fix

GHSA-92jh-gwch-jq38 — pocketmine/pocketmine-mp: upgrade to the fixed version with the command below.

composer require pocketmine/pocketmine-mp:^5.3.1

Details

### Impact An attacker could crash PocketMine-MP by sending malformed JSON in `LoginPacket`.

This happened due to the particular handling of NULL types in the json mapper which accepts NULL type values in typed arrays which PocketMine-MP did not expect.

Code processing arrays in the JSON data could then crash due to unexpected `NULL` elements.

### Patches This problem was fixed in 5.3.1 and 4.23.1 by updating JsonMapper to include the following commit: pmmp/netresearch-jsonmapper@4f90e8dab1c9df331fad7d3d89823404e882668c

An upstream patch for this issue was proposed via https://github.com/cweiske/jsonmapper/pull/211; however, as of 2024-05-15, the patch has not been accepted upstream due to debate about how to deal with the behavior. For now, a fork of JsonMapper is used by PocketMine-MP to workaround the issue.

### Workarounds A plugin may handle `DataPacketReceiveEvent` for `LoginPacket` and check that none of the input arrays contain `NULL` where it's not expected, but this is rather cumbersome.

### References Proposed upstream patch for a behavior change: https://github.com/cweiske/jsonmapper/pull/211

Are you affected?

Enter the version of the package you're using.

Affected packages

Packagist/pocketmine/pocketmine-mp
Introduced in: 5.0.0Fixed in: 5.3.1
Fixcomposer require pocketmine/pocketmine-mp:^5.3.1
Packagist/pocketmine/pocketmine-mp
Introduced in: 0Fixed in: 4.23.1
Fixcomposer require pocketmine/pocketmine-mp:^4.23.1

References