PocketMine-MP vulnerable to denial-of-service by sending large modal form responses
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.
Source excerpt · OSVAffected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
| Affected range | Recorded fix |
|---|---|
| Earlier releases before 4.12.5Ecosystem versions | 4.12.5 |
Version evidence: OSV · GHSA-7m9r-rq9j-wmmh
View original version evidence (226 explicit versions)
Original source description
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 call Player->onFormSubmit() directly, bypassing the vulnerable code.