A lock on the diary in a one-person bedroom — and the diary is being thrown out next quarter
CVE-2026-13534 is an improper-authorization flaw in the sha256 function inside src/main/services/memory/MemoryService.ts, part of the CherryIN Preload API in CherryHQ cherry-studio versions 1.9.0 through 1.9.7. By manipulating the state argument, a caller with low privileges can bypass an authorization check guarding the memory service. The exploit is public, but attack complexity is rated *High* and the impact triad is C:L/I:L/A:L — limited disclosure or tampering of stored AI memory entries, not code execution or privilege escalation.
Vendor labeled this MEDIUM (5.0) under CVSS:3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L. That label is inflated for the deployment reality. Cherry Studio is an Electron-based *desktop* AI productivity client — there is no multi-tenant server, the 'network' attack vector is the local IPC/preload surface, and the affected feature is being removed entirely in v2. For an enterprise managing 10,000 hosts, this is workstation-class backlog hygiene, not an incident.
3 steps from start to impact.
Attacker obtains low-privilege code execution path into Cherry Studio's renderer/preload boundary
- Victim has Cherry Studio 1.9.0–1.9.7 installed and running
- Attacker can deliver content rendered by the app (malicious assistant template, MCP plugin, or pasted artifact)
- No exposed network port; pure desktop app
- Most enterprises do not deploy Cherry Studio fleet-wide — it is end-user-installed
- Electron context isolation limits arbitrary renderer→main calls
Manipulate state argument to bypass authorization in sha256 flow
state value that fails the equality/authorization check in MemoryService.ts while still routing into the protected handler. The sha256 comparison is the gate.- Renderer-side JS execution achieved in step 1
- Knowledge of the state parameter format (public PoC documents it)
- Attack complexity rated High by NVD — non-trivial state-shape requirements
- Vendor has already merged the fix in PR #15413
Read or tamper with the local memory store
C:L/I:L/A:L: partial disclosure or modification of the *current user's* memory blob on disk. No SYSTEM/root escalation, no lateral movement primitive.- Step 2 succeeded
- User has populated meaningful data in Cherry Studio memory
- Memory feature is opt-in
- Vendor announced memory is being removed in v2 — feature will disappear
- Blast radius bounded to the single OS user account running the app
apps table on macOS, Get-Package on Windows) to scope how many hosts actually have 1.9.0–1.9.7. Most enterprises will find a long tail in engineering/AI-research teams. Complete the sweep before the 365-day window starts ticking.- Network-layer controls (WAF, NGFW, IDS) — there is no remote listener to filter.
- EDR signature detection — IPC calls into a legitimate Electron app do not generate distinctive telemetry.
- MFA / SSO hardening — the vuln is in local app state handling, unrelated to identity.
The supporting signals.
| In-the-wild exploitation | None observed. No CISA KEV listing, no vendor IR notice, no public campaign telemetry. |
|---|---|
| Proof-of-concept | Public PoC referenced via GitHub issue #15411 and patch PR #15413. VulDB entry documents the state-manipulation technique. |
| EPSS | Not yet scored at disclosure (≤0.05 expected — desktop app, no remote listener). |
| KEV status | Not listed. |
| CVSS vector | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L → 5.0 MEDIUM. AV:N is generous; the real vector is closer to a *local* IPC surface. |
| Affected versions | CherryHQ cherry-studio 1.9.0 – 1.9.7 inclusive. |
| Fixed version | Patch merged in PR #15413; install the latest 1.9.x release or upgrade to v2 when available. Feature is slated for removal in v2. |
| Exposure data | No Shodan/Censys/GreyNoise signal — Cherry Studio is a desktop client and does not expose a listener. GitHub stars (~20k) indicate broad individual use but no enterprise telemetry. |
| Disclosure | 2026-06-29 via VulDB / CIRCL Vulnerability-Lookup. |
| Reporter | VulDB-coordinated disclosure; reporter handle not published in the public advisory. |
Sources.
- CIRCL Vulnerability-Lookup — CVE-2026-13534
- CherryHQ cherry-studio GitHub repository
- CherryHQ cherry-studio Security advisories
- CherryHQ cherry-studio Releases
- CherryHQ cherry-studio Issues (tracking #15411)
- OffSeq Threat Radar — related CherryHQ authorization CVE
- CWE-285: Improper Authorization
- FIRST EPSS model
Why this verdict
- Desktop, not server: Cherry Studio is an Electron app with no network listener.
AV:Ndescribes preload IPC, not internet reachability — empirical exposure population is effectively the count of installed clients with a rendered malicious payload, not a scannable attack surface. - Impact triad is uniformly Low:
C:L/I:L/A:Lmeans partial disclosure or partial tamper of memory entries — no RCE, no SYSTEM, no credential theft primitive, no lateral movement. - Attack complexity High + PR:L: A foothold inside the renderer is already required. Anyone who has that has easier and more impactful paths (token theft from the same userData dir, for example).
- Role multiplier — none: Cherry Studio occupies the *low-value-role* slot universally. It is not an IdP, hypervisor, EDR, CA, CI/CD node, or backup admin. There is no high-value-role deployment of this product, so the role-multiplier floor does not apply.
- Vendor sunsetting the feature: Memory is slated for removal in v2 — the affected code path has a known short remaining lifespan.
Why not higher?
MEDIUM would require either a credible chain to code execution or a high-value-role deployment of the affected component. Neither exists: impact stays at C:L/I:L/A:L, the product is a single-user desktop client, and no fleet-scale or identity-scale outcome is reachable. Raising to HIGH/CRITICAL would require active exploitation or a backup/identity/hypervisor pivot — none present.
Why not lower?
IGNORE is wrong because a public PoC exists, the vulnerable versions are in active use, and the patch is real. Defenders with Cherry Studio in their software inventory should still move it onto a normal backlog refresh — it just does not warrant emergency action.
Crowdsourced verification payload.
Run on each Windows endpoint where Cherry Studio may be installed. Standard user privileges are sufficient. Invoke as .\Check-CVE-2026-13534.ps1. Outputs VULNERABLE, PATCHED, or UNKNOWN.
#requires -Version 5.1
# Check-CVE-2026-13534.ps1
# Detects CherryHQ cherry-studio 1.9.0 - 1.9.7 (vulnerable to CVE-2026-13534)
$ErrorActionPreference = 'SilentlyContinue'
function Get-CherryStudioVersion {
$candidates = @(
"$env:LOCALAPPDATA\Programs\cherry-studio\resources\app.asar",
"$env:LOCALAPPDATA\Programs\cherry-studio\package.json",
"$env:ProgramFiles\cherry-studio\resources\package.json"
)
foreach ($p in $candidates) {
if (Test-Path $p) {
$exe = Get-ChildItem "$env:LOCALAPPDATA\Programs\cherry-studio\Cherry Studio.exe" -ErrorAction SilentlyContinue
if ($exe) { return $exe.VersionInfo.ProductVersion }
}
}
# Fallback: registry uninstall keys
$keys = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
foreach ($k in $keys) {
$hit = Get-ItemProperty $k | Where-Object { $_.DisplayName -match 'Cherry Studio' }
if ($hit) { return $hit.DisplayVersion }
}
return $null
}
$ver = Get-CherryStudioVersion
if (-not $ver) {
Write-Output 'UNKNOWN: Cherry Studio not detected on this host'
exit 2
}
try {
$sv = [version]($ver -replace '[^\d\.].*$','')
} catch {
Write-Output "UNKNOWN: could not parse version '$ver'"
exit 2
}
$min = [version]'1.9.0'
$max = [version]'1.9.7'
if ($sv -ge $min -and $sv -le $max) {
Write-Output "VULNERABLE: Cherry Studio $ver is in 1.9.0-1.9.7 (CVE-2026-13534)"
exit 1
} else {
Write-Output "PATCHED: Cherry Studio $ver is outside 1.9.0-1.9.7"
exit 0
}