CVE-2025-53604

4.0 MEDIUM

📋 TL;DR

The web-push crate for Rust before version 0.10.3 is vulnerable to denial of service through memory exhaustion. Attackers can send HTTP requests with excessively large Content-Length headers, causing the server to allocate massive amounts of memory. This affects any Rust application using the vulnerable web-push crate for web push notification functionality.

💻 Affected Systems

Products:
  • web-push Rust crate
Versions: All versions before 0.10.3
Operating Systems: All platforms running Rust applications
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications using the built-in HTTP client functionality of the web-push crate.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete service unavailability due to memory exhaustion, potentially causing application crashes and requiring manual intervention to restore service.

🟠

Likely Case

Temporary service degradation or intermittent outages as memory consumption spikes from malicious requests.

🟢

If Mitigated

Minimal impact with proper request validation, rate limiting, and memory monitoring in place.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: LOW

🎯 Exploit Status

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

Exploitation requires sending HTTP requests to the vulnerable service, which is straightforward for attackers with network access.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.10.3

Vendor Advisory: https://rustsec.org/advisories/RUSTSEC-2025-0015.html

Restart Required: Yes

Instructions:

1. Update Cargo.toml to specify web-push >= 0.10.3
2. Run 'cargo update web-push'
3. Rebuild and redeploy your application
4. Restart any running services using the updated crate

🔧 Temporary Workarounds

Implement request size validation

all

Add middleware or reverse proxy configuration to reject requests with Content-Length headers exceeding reasonable limits

# Example nginx configuration
client_max_body_size 10m;
# Example Apache configuration
LimitRequestBody 10485760

Use external HTTP client

all

Configure web-push to use an external HTTP client implementation instead of the vulnerable built-in client

// In Rust code:
let client = reqwest::Client::new();
let service = WebPushServiceBuilder::new(client).build();

🧯 If You Can't Patch

  • Implement rate limiting and request filtering at network perimeter
  • Deploy memory monitoring and alerting to detect abnormal consumption patterns

🔍 How to Verify

Check if Vulnerable:

Check Cargo.lock or run 'cargo tree | grep web-push' to see if version < 0.10.3 is used

Check Version:

cargo tree | grep web-push

Verify Fix Applied:

Verify web-push version is 0.10.3 or higher in Cargo.lock after update

📡 Detection & Monitoring

Log Indicators:

  • HTTP requests with abnormally large Content-Length values
  • Sudden spikes in memory usage
  • Application crashes or restarts

Network Indicators:

  • HTTP requests with Content-Length headers exceeding normal bounds
  • Repeated requests from single sources

SIEM Query:

source="web_server" Content-Length > 100000000 | stats count by src_ip

🔗 References

📤 Share & Export