Skip to main content

scrcpy CVE-2025-34449

MEDIUM
Deserialization of Untrusted Data (CWE-502)
2025-12-18 disclosure@vulncheck.com
6.9
CVSS 4.0 · Vendor: vulncheck
Share

Severity by source

Vendor (vulncheck) PRIMARY
6.9 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/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
vuln.today AI
6.2 MEDIUM

AV:L because a connected (compromised) device is the attack channel, not the open network; PR:N/UI:N since the device needs no host credentials; impact is availability-only (crash/DoS) per evidence, so C:N/I:N/A:H.

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

2
Analysis Generated
Oct 01, 2026 - 00:10 vuln.today
CVE Published
Dec 18, 2025 - 22:15 cve.org
MEDIUM 6.9

DescriptionCVE.org

Genymobile/scrcpy versions up to and including 3.3.3, prior to commit 3e40b24, contain a buffer overflow vulnerability in the sc_device_msg_deserialize() function. A compromised device can send crafted messages that cause out-of-bounds reads, which may result in memory corruption or a denial-of-service condition. This vulnerability may allow further exploitation on the host system.

AnalysisAI

A compromised or malicious Android device connected over USB/ADB can crash the scrcpy host client (versions up to and including 3.3.3, prior to commit 3e40b24) by sending crafted device messages that trigger out-of-bounds reads in sc_device_msg_deserialize(). Publicly available exploit code exists, but with an EPSS score of only 0.42% (34th percentile) and no CISA KEV listing, multiple signals point to a modest, situationally-bounded risk rather than a top-tier priority; per the assessed CVSS 3.1 vector the impact is availability only (client crash or denial of service) with no confirmed confidentiality or integrity loss, though the advisory notes this may enable further exploitation on the host system.

Technical ContextAI

scrcpy uses a client-server architecture in which the host client, written in C, communicates over an ADB tunnel with scrcpy-server running on the Android device. Device-to-host traffic is framed as typed messages containing an explicit payload length, and that framing is parsed in sc_device_msg_deserialize() in app/src/device_msg.c. The root cause falls under CWE-502 (deserialization of untrusted data): the parser trusts length and size fields supplied by the device side and fails to validate them against the size of the buffer actually received, so a crafted message can drive reads past the end of the buffer (a global buffer overflow per the VulnCheck and Marlink advisories). The upstream fix in commit 3e40b24 corrects the inverted length comparison in that branch of the deserializer, restoring a proper bounds check. Exploitation is gated by the reverse trust boundary of the tool: the host assumes the attached device is trusted, so an attacker must already control a device that is actively being mirrored. The assessed CVSS 3.1 vector (AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) reflects this local, device-to-host precondition with no authentication or user interaction on the host side, and with no network-reachable attack path. The CPE cpe:2.3:a:genymotion:scrcpy:*:*:*:*:*:*:*:* carries no version constraint, but the vulnerable code path exists only in builds prior to the fix commit and in releases up to and including 3.3.3.

RemediationAI

No tagged release version is identified in the available data, so this is an upstream fix available (commit 3e40b24); rebuild the host client from commit 3e40b24 or later, or upgrade to the first tagged scrcpy release that includes it, then verify the corrected bounds check in app/src/device_msg.c is present. Because the fix is code-level and committed rather than published as a versioned advisory, treat any locally packaged or distro build of scrcpy 3.3.3 or earlier as vulnerable until the maintainer's commit is confirmed included (see https://github.com/Genymobile/scrcpy/commit/3e40b24 and https://github.com/Genymobile/scrcpy/issues/6415). Compensating controls, with trade-offs: only mirror devices you physically control and trust, which removes the attack precondition entirely but defeats the common use case of debugging borrowed, refurbished, or untrusted hardware; run scrcpy inside a container, VM, or dedicated low-privilege OS account to contain the 'further exploitation on the host system' risk the advisory raises, at the cost of losing direct ADB device passthrough and convenience; avoid enabling ADB over TCP or connecting untrusted devices to a workstation that also holds sensitive credentials; and monitor for repeated or unexplained scrcpy client crashes on hosts that mirror external devices, treating them as a potential indicator rather than routine instability. There is no configuration flag that disables the affected deserialization path while retaining device mirroring, so patching or rebuilding remains the only complete fix.

Share

CVE-2025-34449 vulnerability details – vuln.today

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