PocketMine-MP vulnerable to denial-of-service by sending large modal form responses
Moderate severity
GitHub Reviewed
Published
Jan 9, 2023
in
pmmp/PocketMine-MP
•
Updated Jan 13, 2023
Description
Published to the GitHub Advisory Database
Jan 10, 2023
Reviewed
Jan 10, 2023
Last updated
Jan 13, 2023
Impact
Due to a workaround for an old client bug (which has since been fixed), very large JSON payloads in
ModalFormResponsePacket
were able to cause the server to spend a significant amount of time processing the packet. Large numbers of these packets were able to hog CPU time so as to prevent the server from processing other connections in a timely manner.Patches
The problem has been addressed in 3baa5ab71214f96e6e7ab12cb9beef08118473b5 by removing the workaround code.
Workarounds
Plugins could cancel
DataPacketReceiveEvent
for this packet, decode the data their way, and then callPlayer->onFormSubmit()
directly, bypassing the vulnerable code.References