CVE-2024-8391

7.5 HIGH

📋 TL;DR

This vulnerability allows attackers to send unlimited size payloads to Vert.x gRPC servers, potentially causing resource exhaustion and denial of service. It affects Eclipse Vert.x versions 4.3.0 through 4.5.9 using the vertx-grpc-server and vertx-grpc-client components. Systems using these vulnerable versions are at risk of service disruption.

💻 Affected Systems

Products:
  • Eclipse Vert.x gRPC Server
  • Eclipse Vert.x gRPC Client
Versions: 4.3.0 to 4.5.9
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects vertx-grpc-server and vertx-grpc-client components (Maven GAV: io.vertx:vertx-grpc-server and io.vertx:vertx-grpc-client). Does NOT affect Vert.x gRPC server based on grpc-java and Netty libraries (Maven GAV: io.vertx:vertx-grpc).

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete service outage through resource exhaustion, potentially leading to system instability or crashes.

🟠

Likely Case

Degraded performance or temporary denial of service due to memory/CPU exhaustion from large payloads.

🟢

If Mitigated

Limited impact with proper monitoring and resource limits in place.

🌐 Internet-Facing: HIGH - Internet-facing gRPC servers are directly exposed to payload size attacks.
🏢 Internal Only: MEDIUM - Internal systems could still be targeted by malicious insiders or compromised internal clients.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires sending large payloads to gRPC endpoints, which is straightforward for attackers with network access.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.5.10

Vendor Advisory: https://github.com/eclipse-vertx/vertx-grpc/issues/113

Restart Required: Yes

Instructions:

1. Update Maven/Gradle dependencies to use vertx-grpc-server and vertx-grpc-client version 4.5.10 or later. 2. Rebuild and redeploy your application. 3. Restart affected services.

🔧 Temporary Workarounds

Implement gRPC message size limits

all

Add custom interceptors or handlers to enforce maximum message size limits before processing.

Implement ServerInterceptor with message size validation
Add size checking in request handlers

Network-level rate limiting

all

Use load balancers or firewalls to limit request sizes and connection rates.

Configure nginx/apache with client_max_body_size
Set up WAF rules for gRPC traffic

🧯 If You Can't Patch

  • Implement network-level controls to limit incoming gRPC message sizes
  • Monitor system resources and set up alerts for abnormal memory/CPU usage

🔍 How to Verify

Check if Vulnerable:

Check your pom.xml or build.gradle for io.vertx:vertx-grpc-server or io.vertx:vertx-grpc-client dependencies with versions 4.3.0-4.5.9.

Check Version:

mvn dependency:tree | grep vertx-grpc OR gradle dependencies | grep vertx-grpc

Verify Fix Applied:

Verify dependencies are updated to version 4.5.10 or later and test with large payloads to confirm rejection.

📡 Detection & Monitoring

Log Indicators:

  • Unusually large gRPC messages
  • Memory exhaustion warnings
  • Increased garbage collection activity
  • OutOfMemoryError in logs

Network Indicators:

  • Large gRPC payloads (over 4MB typical)
  • Sudden spikes in network traffic to gRPC ports
  • Multiple large requests from single sources

SIEM Query:

source="application.logs" AND ("OutOfMemoryError" OR "gRPC message too large" OR "memory exhaustion")

🔗 References

📤 Share & Export