{"id":"GHSA-5jfw-35xp-5m42","aliases":[],"url":"https://o3.security/vulnerability/GHSA-5jfw-35xp-5m42","summary":"Buffer length underflow in LoginPacket causing unchecked exceptions to be thrown","details":"### Impact\n`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.\n\nIn the context of PocketMine-MP, this leads to a server crash when the vulnerability is exploited.\n\n### Patches\ne3fce7632b94e83fd6a518a87dcaf6a11681c4ac\n\n### Workarounds\nThis 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.\n\n### For more information\n* Email us at [team@pmmp.io](mailto:team@pmmp.io)","published":"2022-04-05T17:53:22Z","modified":"2024-12-05T05:39:20.852353Z","cvss":{"score":7.5,"severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"},"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Packagist","name":"pocketmine/bedrock-protocol","fixedVersion":"8.0.2"}],"fix":{"url":"https://github.com/pmmp/BedrockProtocol/commit/e3fce7632b94e83fd6a518a87dcaf6a11681c4ac","label":"pmmp/BedrockProtocol@e3fce76"},"references":[{"type":"WEB","url":"https://github.com/pmmp/BedrockProtocol/security/advisories/GHSA-5jfw-35xp-5m42"},{"type":"WEB","url":"https://github.com/pmmp/BedrockProtocol/commit/e3fce7632b94e83fd6a518a87dcaf6a11681c4ac"},{"type":"PACKAGE","url":"https://github.com/pmmp/BedrockProtocol"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2024-12-05T05:39:20.852353Z"}}