CVE-2026-40249 Overview
CVE-2026-40249 is a fail-open vulnerability in free5GC, an open-source implementation of the 5G core network. The vulnerability exists in the UDR (Unified Data Repository) service where the PUT handler for updating Policy Data notification subscriptions fails to properly terminate request processing after encountering errors during body retrieval or deserialization.
When requests with invalid or malformed data are sent to the /nudr-dr/v2/policy-data/subs-to-notify/{subsId} endpoint, the service returns appropriate HTTP error codes (400 or 500) but continues execution rather than halting. This allows the downstream processor to be invoked with potentially uninitialized or partially initialized PolicyDataSubscription objects, which could lead to unintended modification of existing subscription data.
Critical Impact
Attackers could potentially modify Policy Data notification subscriptions with invalid or empty input, affecting 5G core network policy management and potentially disrupting network operations or enabling unauthorized policy changes.
Affected Products
- free5GC UDR Service version 4.2.1 and below
- free5GC 5G Core Network implementations using vulnerable UDR versions
Discovery Timeline
- April 16, 2026 - CVE CVE-2026-40249 published to NVD
- April 16, 2026 - Last updated in NVD database
Technical Details for CVE-2026-40249
Vulnerability Analysis
This vulnerability is classified under CWE-636 (Not Failing Securely / Fail-Open). The core issue lies in the control flow logic of the PUT handler responsible for processing Policy Data notification subscription updates. When the handler encounters errors during HTTP request body retrieval or JSON deserialization, it correctly generates and sends error responses to the client. However, the handler function does not terminate execution after sending these error responses.
The fail-open design allows subsequent code paths to execute with a PolicyDataSubscription object that may be in an undefined state—either completely uninitialized or partially populated with data from a malformed request. The actual impact depends on how downstream processors and storage backends handle these malformed objects.
Root Cause
The root cause is a missing return statement or equivalent control flow termination after error handling in the PUT request handler. In proper secure coding practice, after detecting and responding to an error condition, the function should immediately return to prevent further processing. The absence of this return statement creates a fail-open condition where error states do not prevent subsequent operations from occurring.
Attack Vector
The vulnerability is exploitable over the network without authentication requirements. An attacker can craft malicious HTTP PUT requests targeting the /nudr-dr/v2/policy-data/subs-to-notify/{subsId} endpoint with:
- Malformed JSON bodies that fail deserialization
- Empty request bodies
- Requests with invalid content types
- Partially valid data structures
Despite receiving error responses, the backend processing continues, potentially modifying existing subscription records. The attack requires knowledge of valid subscription IDs (subsId) to target specific subscriptions for modification.
Detection Methods for CVE-2026-40249
Indicators of Compromise
- Unusual HTTP 400/500 error responses from the UDR service accompanied by successful data modifications in the policy data storage
- Subscription records with empty, null, or invalid field values that should have been rejected
- Log entries showing error responses followed by successful processor invocations for the same request
- Policy Data subscriptions with inconsistent or corrupted data states
Detection Strategies
- Monitor UDR service logs for patterns of deserialization errors followed by processor execution
- Implement data integrity checks on PolicyDataSubscription objects before storage operations
- Deploy network monitoring to detect anomalous PUT request patterns to the affected endpoint
- Audit policy data subscription records for unexpected modifications or invalid data
Monitoring Recommendations
- Enable verbose logging on the UDR service to capture full request/response cycles
- Implement alerting for HTTP error responses on the /nudr-dr/v2/policy-data/subs-to-notify/ endpoint
- Monitor database or storage layer for subscription record changes following error conditions
- Review and correlate UDR service logs with policy data storage audit logs
How to Mitigate CVE-2026-40249
Immediate Actions Required
- Review and restrict network access to the UDR service to authorized network functions only
- Implement additional input validation at the API gateway or reverse proxy level
- Enable enhanced logging to detect potential exploitation attempts
- Consider deploying a Web Application Firewall (WAF) to filter malicious requests to the affected endpoint
- Audit existing Policy Data subscriptions for signs of unauthorized modifications
Patch Information
A patched version was not available at the time of publication. Organizations should monitor the free5GC GitHub Security Advisory for updates on an official fix. In the interim, implementing the workarounds below is strongly recommended.
Workarounds
- Deploy network segmentation to restrict access to the UDR service from untrusted sources
- Implement a reverse proxy with strict request validation that rejects malformed requests before they reach the UDR service
- Add application-level middleware to validate PolicyDataSubscription objects before processor invocation
- Consider temporarily disabling external access to the affected endpoint if not operationally critical
- Apply custom patches to add proper return statements after error handling if source code modification is feasible
# Example: Restrict access to UDR service using iptables
# Allow only trusted 5G network function IP ranges
iptables -A INPUT -p tcp --dport 8000 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
# Example: nginx reverse proxy configuration for additional validation
# Add to location block for /nudr-dr/v2/policy-data/subs-to-notify/
location /nudr-dr/v2/policy-data/subs-to-notify/ {
# Reject requests with empty or missing Content-Type
if ($content_type !~ "application/json") {
return 415;
}
# Reject requests with no body
if ($request_body = "") {
return 400;
}
proxy_pass http://udr-service:8000;
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

