Skip to main content

Moonlight Qt CVE-2026-41210

| EUVDEUVD-2026-97966 MEDIUM
Out-of-bounds Write (CWE-787)
2026-10-12 GitHub_M
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Lure victim to malicious GameStream host
  2. Exploit
    Host sends crafted H.264 SPS NAL
  3. Execution
    seq_parameter_set_id ≥ 32 indexes sps_table out-of-bounds
  4. Impact
    Heap corruption crashes Moonlight client

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that (1) the victim initiates a Moonlight streaming session to an attacker-controlled GameStream host, (2) Moonlight selects a decoder path that does NOT advertise CAPABILITY_REFERENCE_FRAME_INVALIDATION_AVC, which triggers the SPS fixup path in app/streaming/video/ffmpeg.cpp, and (3) the host sends a crafted H.264 SPS NAL with seq_parameter_set_id of 32 or greater, which is used unvalidated to index the 32-entry sps_table. Limiting factors that reduce realistic risk: mandatory user interaction (the victim must voluntarily connect to the malicious host rather than being targeted passively), dependence on a specific non-RFI-AVC decoder path being chosen at runtime, and an impact ceiling of client crash/heap corruption with no confirmed code execution.

Impact

This is a genuinely medium-severity, client-side denial-of-service issue rather than a high-priority remote compromise. The CVSS 3.1 vector (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H, base 6.5) is internally consistent with the description: the attack is network-delivered and low-complexity, but requires user interaction (UI:R) because the victim must first initiate a streaming session to an attacker-controlled host, and the only impact metric set is availability (A:H) with C:N/I:N. The Tags list 'RCE' and the product description explicitly states 'code execution is not established' - these conflict, and the authoritative signal is the description plus the C:N/I:N impact, so this should be treated as a reliable-crash DoS, not RCE. No EPSS score, no CISA KEV listing, and no public exploit were provided in the input, so there is no evidence of widespread or active exploitation; the published GitHub Security Advisory and patch commits do not constitute a weaponized PoC. The real-world risk is further constrained by the need for a specific decoder path that does not advertise CAPABILITY_REFERENCE_FRAME_INVALIDATION_AVC and by the requirement that the victim actively connect to a malicious host. Net assessment: a legitimate but low-urgency memory-corruption bug whose demonstrated impact is a crash; the 'RCE'/CWE-787 framing overstates real-world severity absent proof of code execution.

Exploit ScenarioDerived

An attacker stands up a malicious GameStream host and persuades a victim to initiate a Moonlight streaming session to it (e.g. via a shared/advertised host address). When Moonlight selects a decoder path lacking CAPABILITY_REFERENCE_FRAME_INVALIDATION_AVC, the host returns a crafted H.264 SPS NAL whose seq_parameter_set_id is 32 or greater, indexing past the 32-entry sps_table and causing an out-of-bounds heap write that reliably crashes the client. No public exploit code was identified in the input, though the fix commits and advisory describe the flaw in detail.

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

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

Alert me

AnalysisAIv1 – Oct 12, 2026

An out-of-bounds heap write in Moonlight Qt 6.1.0 and earlier allows an attacker-controlled GameStream host to corrupt memory in the Moonlight client and reliably crash it during an active streaming session. Exploitation requires the victim to voluntarily initiate a session to the malicious host and requires Moonlight to select a decoder path that does not advertise CAPABILITY_REFERENCE_FRAME_INVALIDATION_AVC, which sends the server's H.264 SPS data through the vulnerable fixup path in app/streaming/video/ffmpeg.cpp, where a seq_parameter_set_id of 32 or greater is used unvalidated to index the 32-entry sps_table. The assessed impact is availability-only client crash and heap corruption (CVSS 6.5, AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H); despite metadata tags referencing RCE, code execution has not been established, and no public exploit code has been identified at time of analysis. This is a medium-severity, client-side denial-of-service issue rather than a high-priority remote compromise.

RemediationAI

Upgrade to Moonlight Qt 6.2.0 (vendor-released patch; release notes at https://github.com/moonlight-stream/moonlight-qt/releases/tag/v6.2.0, advisory at https://github.com/moonlight-stream/moonlight-qt/security/advisories/GHSA-5rvh-v25g-vrgv); downstream packagers or anyone building from source can instead apply the upstream fixes at commits 3e24a7a1a5369163482ce5a76d5232536e03c53f and b7adc70ea474f7448c6185081ad9fc87b0b47cf0, which harden the bundled h264bitstream parser. Because exploitation requires the client to initiate a session against an attacker-controlled GameStream host, the most effective compensating control while unpatched is to connect only to trusted, self-hosted or known-good Sunshine/GameStream hosts and never to untrusted or public streaming endpoints; the trade-off is loss of access to ad-hoc or community-hosted streams, and it does not protect users who intentionally connect to a hostile host. A partial technical mitigation is to ensure Moonlight uses a decoder that advertises CAPABILITY_REFERENCE_FRAME_INVALIDATION_AVC so the vulnerable SPS fixup path is never entered, but decoder selection is hardware/driver dependent, is not a reliable user-facing setting, and forcing a software or fallback decoder can degrade streaming performance, latency, and battery life. Given the demonstrated impact is limited to a client crash and heap corruption with no confirmed code execution and no public exploit identified at time of analysis, emergency workarounds are not warranted, but patching should be scheduled as routine maintenance.

Affected VersionsENISA

moonlight-qt < 6.2.0

Affected Packages

euvd moonlight_qt fix: 6.2.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

Moonlight Qt is a GameStream/Sunshine client that receives an H.264 (and other codec) video stream from a paired host. When the selected decoder does not advertise the CAPABILITY_REFERENCE_FRAME_INVALIDATION_AVC hardware capability, Moonlight rewrites ("fixes up") the server-supplied H.264 Sequence Parameter Set in app/streaming/video/ffmpeg.cpp so the stream remains decodable; that path parses host-controlled data with the bundled h264bitstream library. The root cause is CWE-787 (out-of-bounds write): the parsed seq_parameter_set_id from the SPS NAL is used directly as an index into the fixed 32-entry sps_table without a bounds check, so a value of 32 or greater writes past the end of the table and corrupts the client heap. The fix in 6.2.0 hardens the same parsing surface in several places, including bounds/EOF checks in h264bitstream/bs.h and find_nal_unit() in h264_nal.c, clamping num_ref_frames_in_pic_order_cnt_cycle to 256 and cpb_cnt_minus1 to 31 in read_seq_parameter_set_rbsp/read_vui_parameters, and correcting scaling-list delta computation in write_scaling_list. The affected package is tracked under CPE cpe:2.3:a:moonlight-stream:moonlight-qt:*:*:*:*:*:*:*:* (version wildcard, i.e., all released versions up to and including 6.1.0). The CVSS vector indicates PR:N (no authentication to the streaming protocol) but UI:R, reflecting that the victim must actively connect to the attacker's host before any malicious SPS is delivered.

Know when Moonlight Qt 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 (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Network-delivered by the host (AV:N) with a single out-of-range value (AC:L) and no client auth (PR:N), but the victim must connect to the malicious host (UI:R); only availability is affected (A:H, C:N/I:N) since code execution is unproven.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Oct 12, 2026 - 23:04 EUVD
CVE Published
Oct 12, 2026 - 21:25 cve.org
MEDIUM 6.5

DescriptionCVE.org

Moonlight Qt is a GameStream client for Windows, macOS, Linux, and Steam Link. In version 6.1.0 and earlier, after a victim initiates a streaming session to a malicious host, the host can send a crafted H.264 SPS NAL when Moonlight selects a decoder path that does not advertise CAPABILITY_REFERENCE_FRAME_INVALIDATION_AVC. The SPS fixup path in app/streaming/video/ffmpeg.cpp parses the server-provided data with h264bitstream, where attacker-controlled seq_parameter_set_id is used to index the 32-entry sps_table without validation. A value of 32 or greater causes an out-of-bounds write and remote heap corruption in the Moonlight client. The demonstrated impact is a reliable client crash, while code execution is not established. This issue is fixed in version 6.2.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
niche open-source game-streaming client, mostly hobbyist/gaming footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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 No
EPSS 0.3%
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

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