Fix critical RTMP chunk size validation vulnerability #382
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes a critical security vulnerability in the RTMP chunking implementation where chunk size values from clients were accepted without validation, allowing remote attackers to cause denial of service through memory exhaustion attacks.
Vulnerability Details
The Red5 RTMP server was vulnerable to attacks via malicious chunk size messages that could:
Integer.MAX_VALUE
(2GB+), causing the server to attempt allocating massive amounts of memory per chunk, leading to OutOfMemoryError crashesAttack Example
An attacker could send a malicious RTMP chunk size message:
Fix Implementation
Added comprehensive chunk size validation following the RTMP specification (RFC-based limits):
1. Added Security Constants
2. Protected Critical Code Paths
Added validation in all locations where chunk sizes are processed:
RTMPHandler.onChunkSize()
- Server-side chunk size handlingRTMPProtocolDecoder.decodePacket()
- Automatic chunk processing during decodeBaseRTMPClientHandler.onChunkSize()
- Client-side chunk size handlingRTMPProtocolEncoder.encode()
- Encoder chunk size processingRed5.setTargetChunkSize()
- Administrative configuration3. Secure Validation Logic
Security Impact
Compatibility
Testing
Added comprehensive security test suite (
RTMPChunkSecurityTest.java
) covering:Changes Summary
This fix eliminates a serious security vulnerability while maintaining full compatibility with legitimate RTMP usage.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.