CVE-2023-37039
Executive Summary
CVE-2023-37039 is a null pointer dereference vulnerability in the Mobile Management Entity (MME) of Magma, an open-source LTE/5G core network platform, affecting versions up to and including 1.8.0. A network-adjacent attacker can crash the MME by sending a single malformed S1AP Initial UE Message packet that omits the expected RRC Establishment Clause field, causing a denial of service for every subscriber attached to the affected core network. The NVD description indicates a fix in v1.9 (commit 08472ba98b8321f802e95f5622fa90fec2dea486), but no independent vendor advisory or patch source has been indexed, and no public exploit code or in-the-wild activity has been reported.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The Magma MME is the central control-plane network function in the Evolved Packet Core (EPC), responsible for UE attachment, authentication, bearer establishment, tracking area updates, and handover signaling. It communicates with radio access network elements (eNodeBs) using the S1 Application Protocol (S1AP) over the S1-MME interface, which is transported over SCTP — conventionally on port 36412.
The vulnerable code path processes the S1AP Initial UE Message, which an eNodeB sends to the MME to deliver the first NAS message from a UE (e.g., an Attach Request or Tracking Area Update). Under 3GPP S1AP procedures, this message normally conveys additional radio-level context, including the RRC establishment information. The NVD description states the vulnerability is triggered when the Initial UE Message is received missing an expected RRC Establishment Clause field — the vendor description uses "Clause" verbatim; in 3GPP terminology this IE is conventionally referred to as the RRC Establishment Cause.
The flaw is a null pointer dereference: when processing the received message, the MME software attempts to read the missing field through a pointer that has not been validated or initialized. Because the field is absent from the decoded message, the pointer is null, and dereferencing it produces a segmentation fault (SIGSEGV), terminating the MME process. This is a classic missing-input-validation defect in an ASN.1/PER-decoded protocol parser: the decoder tolerates the absence of the information element, but the downstream logic assumes it is always present and dereferences it without a null check.
Attack surface considerations:
- The attacker is described as
network-adjacent, meaning they do not need internet-facing access; they must be positioned on a network segment that can reach the S1-MME interface — for example, the RAN backhaul/transport network, a compromised eNodeB, or a misconfigured segment with access to the MME's SCTP endpoint. - S1AP is transported over SCTP, not TCP/UDP, which reduces the set of commodity scanning and exploitation tooling that applies but does not meaningfully raise the bar for a targeted attacker with access to the transport network.
- The trigger is a single malformed packet; there is no requirement for authentication, session establishment, or prior state, making the vulnerability trivially repeatable for persistent denial of service.
- The NVD record contains no CWE assignment, no CVSS score or vector, and no CISA KEV listing. The EPSS score is 0.00232 (14.3rd percentile of exploited CVEs), indicating that as of the analysis date, no broad exploitation activity has been observed in the wild.
- Beyond the S1AP procedure name (
Initial UE Message), theRRC Establishment Clausefield, and the affected component (MME), the NVD description provides no code-level detail. No function names, source files, or internal API details are available in the public record; the analysis above therefore describes the vulnerability at the class and protocol level.
Exploitation Scenarios
No public PoC, exploit code, or Nuclei template has been identified for this CVE. The attack chain below is inferred from the vulnerability class and the NVD description, and is provided to guide detection and hardening. It should not be treated as a confirmed reproduction.
Reconnaissance / Target Identification. The attacker first identifies an S1-MME listener. Because S1AP runs over SCTP, the attacker can probe for SCTP endpoints (e.g., port 36412) on the RAN transport segment, or observe S1AP traffic passively to confirm the presence of a Magma MME and its eNodeB peers. Network-adjacent positioning is assumed; internet-wide scanning is unlikely to be sufficient unless the MME is erroneously exposed beyond the RAN boundary.
Triggering the Flaw. The attacker constructs an S1AP
Initial UE MessagePDU that omits theRRC Establishment Clausefield that MME parsing logic expects. The omission must be valid enough at the ASN.1/PER decoding layer to reach the vulnerable processing logic, yet incomplete enough that the subsequent dereference hits a null pointer. Because the decoder accepts the IE as optional or absent, the message passes structural validation and is passed to the handler.Payload / Execution. No memory-corruption payload is required — the malformed-but-decodable message itself is the "payload." The attacker transmits the SCTP packet containing the final S1AP PDU to the MME's S1 port. The MME's S1AP handler dereferences the missing field, causing a null pointer dereference and a segmentation fault. The MME process crashes. Crafting the PDU requires knowledge of S1AP PER encoding (3GPP TS 36.413) but does not require any account, key, or prior authenticated state on the MME.
Post-Exploitation Impact. A crashed MME is unavailable for all control-plane procedures in its service area: new UEs cannot attach, existing UEs cannot perform tracking area updates or handovers, and paging is interrupted. If the MME is restarted automatically by a supervisor (e.g., systemd or a container orchestrator), the attacker can simply re-send the packet, producing an MME crash loop. In a degraded core, downstream functions (SGW/PGW, HSS/HA) may experience signaling storms or timeouts, and neighboring MMEs may absorb handover traffic they cannot complete, expanding the blast radius beyond the single process.
Impact Assessment
- Business Impact. The MME is a single point of failure for LTE attach and mobility signaling. An outage disconnects the control plane for all UEs in the affected tracking areas, resulting in subscriber-facing service loss, missed SLA commitments, and potential revenue impact for operators or private-network tenants relying on Magma.
- Affected Systems. Magma MME versions <= 1.8.0. Operators running pre-1.9 Magma core deployments, including private LTE/5G networks, neutral-host deployments, and research testbeds, are in scope.
- Blast Radius. The vulnerability is network-adjacent and requires no authentication, so any entity able to inject SCTP packets toward the S1 port can repeatedly crash the MME. The single-packet nature makes the cost of exploitation negligible for the attacker. The control-plane outage can cascade into user-plane and subscriber-database disturbances as procedures time out.
- CVSS / Risk Context. No CVSS score was published, which complicates standard risk-scoring workflows. The EPSS probability (0.00232) indicates low observed exploitation, but the technical impact — deterministic remote crash of a core network function from one packet — is high in availability terms. Organizations should treat this as a high-priority availability risk despite the absence of a CVSS vector.
- Known Exploitation. CISA KEV does not list this CVE, and no threat-actor campaigns or exploit-in-the-wild evidence were identified in the provided data.
Detection Guidance
Detection of this vulnerability is challenging because the triggering packet is syntactically decodable at the S1AP level; it merely omits an optional IE. The most reliable signals are (a) the MME process crash/restart artifacts, and (b) anomalous SCTP/S1AP flows toward the MME from unexpected source IPs. The rules below are provided as realistic baselines and must be tuned against your environment (eNodeB inventory, SCTP peer allowlists, process names, and log formats). Note that no official detections exist for this CVE; these rules are heuristic.
Sigma Rule
title: Magma MME Process Crash or Restart Loop
id: 6f3a2c10-9c1e-4b7d-8f54-3d0a1b2c4d5e
status: experimental
description: >
Detects termination or rapid restart of the Magma MME process, which may
indicate exploitation of CVE-2023-37039 (null pointer dereference via
malformed S1AP Initial UE Message). Validate against known maintenance
windows and container orchestration restarts.
author: Valters IT Threat Intelligence
date: 2025/01/01
tags:
- attack.t1499
- cve.2023-37039
logsource:
category: process_termination
product: linux
detection:
selection_mme_end:
Image|endswith:
- '/mme'
- '/magma_mme'
- '/mmed'
EventID: 5 # Sysmon process terminated
ExitCode:
- 139 # SIGSEGV
- 11
selection_segfault_log:
keywords|contains:
- 'segfault'
- 'SIGSEGV'
- 'signal 11'
- 'null pointer'
- 'core dumped'
Image|endswith:
- '/mme'
- '/magma_mme'
condition: selection_mme_end or selection_segfault_log
falsepositives:
- Legitimate operator-initiated MME restarts during maintenance
- Expected crash recovery in container environments without tuning
level: high
YARA Rule
/*
CVE-2023-37039 — Magma MME S1AP Anomaly Triage Rule
Purpose: forensic triage of packet captures, tshark/zeek exports, and
crash artifacts collected from Magma MME hosts.
Limitation: raw S1AP is ASN.1 PER encoded, so ASCII patterns will not
match raw packets. Run this rule against decoded exports (JSON/text)
and against core-dump strings, not raw pcap byte streams alone.
*/
rule CVE_2023_37039_Magma_MME_S1AP_Triage
{
meta:
author = "Valters IT Threat Intelligence"
description = "Triage rule for artifacts related to Magma MME S1AP Initial UE Message handling and null pointer crash"
cve = "2023-37039"
date = "2025-01-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2023-37039"
strings:
$s1ap_proto = "S1AP" ascii nocase
$s1ap_init = "InitialUEMessage" ascii nocase
$s1ap_initial = "Initial UE Message" ascii nocase
$rrc_cause = "rrcEstablishmentCause" ascii nocase
$rrc_clause = "RRC Establishment" ascii nocase
$sigsegv = "SIGSEGV" ascii nocase
$null_deref = "null pointer" ascii nocase
$mme_crash = "mme" ascii nocase
condition:
uint16(0) == 0x0A0D or filesize < 50MB
and 2 of ($s1ap*) and any of ($rrc*)
or any of ($sigsegv, $null_deref) and $mme_crash
}
Suricata IDS Rule
# Heuristic baseline rule: flags SCTP flows toward the MME S1AP port from
# non-allowlisted sources, combined with a threshold to reduce noise.
# The content match below (first byte 0x00 = SCTP DATA chunk type) is a
# standard SCTP constant, not an S1AP fingerprint. Tune the source
# allowlist (eNodeB subnet) and port to match your deployment.
alert sctp any any -> $HOME_NET 36412 ( \
msg:"CVE-2023-37039 Magma MME S1AP Anomaly - Unusual SCTP Flow Toward MME"; \
flow:to_server; \
content:"|00|"; offset:0; \
threshold: type both, track by_src, count 20, seconds 60; \
reference:cve,2023-37039; \
metadata:created_at 2025-01-01; \
classtype:attempted-dos; \
sid:10037039; rev:1;)
Elastic Detection
// EQL: Detect MME process termination with a non-zero / signal exit code,
// and rapid restart of the MME process within 5 minutes (crash-loop indicator).
process where event.type == "end" and
process.name in ("mme", "magma_mme", "mmed") and
(process.exit_code == 139 or process.exit_code == 11 or process.exit_code != 0)
// EQL: Crash-loop sequence — MME termination followed by MME start.
sequence by host.name with maxspan=5m
[ process where event.type == "end" and
process.name in ("mme", "magma_mme", "mmed") and process.exit_code != 0 ]
[ process where event.type == "start" and
process.name in ("mme", "magma_mme", "mmed") ]
Splunk SPL Query
index=* (sourcetype="syslog" OR sourcetype="linux_audit" OR sourcetype="container_logs")
("mme" OR "magma_mme" OR "mmed")
AND ("segfault" OR "SIGSEGV" OR "signal 11" OR "null pointer" OR "core dumped" OR "exit code 139")
| stats count by host, source, _time
| where count > 2
| sort - _time
# Network-side heuristic: SCTP flows to port 36412 from unexpected source IPs
index=netflow OR index=*_sctp*
dest_port=36412
| stats dc(src_ip) as src_count, count as flow_count by dest_ip, dest_port
| where src_count > 5 OR flow_count > 50
| join dest_ip [ search index=* sourcetype="*allowlist*" "eNodeB" | table dest_ip ]
Wazuh OSSEC Rule
<group name="magma,">
<rule id="100370" level="12">
<decoded />
<program_name>mme</program_name>
<match>segfault|SIGSEGV|signal 11|null pointer|core dumped</match>
<description>Magma MME (CVE-2023-37039 candidate): process terminated by null pointer dereference or memory fault.</description>
<group>cve_2023_37039,</group>
<mitre>
<id>T1499</id>
</mitre>
</rule>
<rule id="100371" level="8" frequency="3" timeframe="300">
<if_matched_sid>100370</if_matched_sid>
<description>Magma MME crash-loop detected: multiple memory faults within 5 minutes — possible repeated exploitation of CVE-2023-37039.</description>
<group>cve_2023_37039,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch status. The NVD description states the vulnerability is fixed in Magma v1.9 at commit 08472ba98b8321f802e95f5622fa90fec2dea486. However, patch-confidence tracking reports 0/4 (UNPATCHED) — no patch evidence has been indexed from any tracked vendor source, and no vendor advisory, CVE CNA note, or OSV package entry is available. Treat the fix as referenced but unverified, and confirm against an official Magma release before deploying.
Immediate mitigations.
- Restrict SCTP access to the MME S1 interface to known eNodeB network segments only (firewall/ACL allowlist on SCTP port 36412). Do not expose the S1-MME interface on management, internet, or guest networks.
- If possible, deploy an SCTP-aware filtering layer or SDN policy that drops SCTP associations from unrecognized source IPs before they reach the MME.
- Enable and verify MME process supervision (systemd restart policy, container
restart: on-failure, or equivalent) so a crash is contained and automatically recovered, and pair it with alerting on restart loops. - Monitor S1-MME traffic volume and source diversity; a single source generating repeated short S1AP messages should trigger an alert.
Patch / upgrade steps.
- Upgrade Magma to v1.9 or later, ideally to the commit
08472ba98b8321f802e95f5622fa90fec2dea486or the newest stable release containing it. If the exact commit is not present in your channel, pull it from the Magma source repository and verify the S1AP handler null-check changes. - If an immediate upgrade is not possible, cherry-pick the referenced commit after reviewing it for the S1AP
Initial UE Messageparsing path and confirm the fix adds a null/absent check for theRRC Establishment Clausefield. - After patching, run a controlled test with a malformed
Initial UE Messagepacket (missing the field) against a staging MME to confirm the crash no longer occurs.
- Upgrade Magma to v1.9 or later, ideally to the commit
Long-term hardening.
- Add fuzzing of the S1AP parser to the development pipeline (ASN.1/PER fuzzing with tools such as the 3GPP protocol fuzzers) to catch missing-IE defects before release.
- Enforce input validation at the protocol layer: every information element that downstream logic dereferences must be checked for presence before access.
- Segment the RAN transport network so that eNodeB-facing segments are isolated from broader corporate/backhaul networks, reducing the population of network-adjacent attackers.
- Deploy MME redundancy (active/standby or N+1) so a single-process crash does not produce a full control-plane outage, and consider rate-limiting or anomaly detection on S1AP signaling ingress.
References
- NVD Entry — CVE-2023-37039: https://nvd.nist.gov/vuln/detail/CVE-2023-37039
- Magma upstream fix commit (referenced in NVD description): https://github.com/magma/magma/commit/08472ba98b8321f802e95f5622fa90fec2dea486
- Magma Core Project (official site): https://magmacore.org/
- 3GPP TS 36.413 — S1 Application Protocol (S1AP) specification, for the
Initial UE Messageprocedure and RRC establishment cause IE terminology: https://www.3gpp.org/DynaReport/36413.htm - CISA Known Exploited Vulnerabilities Catalog (CVE-2023-37039 is not listed; no known in-the-wild exploitation): https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Threat intelligence notes. No threat-actor campaigns, exploit-in-the-wild evidence, or public exploit code was identified in the provided data. The CVE carries no CISA KEV listing and no published CVSS score. Detection content in this report is heuristic and should be validated against your specific Magma deployment and telemetry before production use.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.