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
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. |
noisgate verdict.
The single decisive factor is blast radius limited to one local user's memory store on an end-user desktop AI client with no network listener and no privilege escalation primitive. CVSS:3.1's AV:N label is technically defensible against the preload-IPC surface but overstates the real exposure for an enterprise fleet.
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.
What to do — in priority order.
- Upgrade Cherry Studio to the patched release — Pull the post-PR-15413 release from GitHub and push via your endpoint software-management channel (Intune, Jamf, Chocolatey, winget). LOW verdict → no mitigation SLA; align with the noisgate remediation SLA of ≤ 365 days, but bundle into the next normal app-update cycle.
- Inventory Cherry Studio installs across the fleet — Run an SBOM or software-inventory sweep (Tanium, Intune, osquery
appstable on macOS,Get-Packageon 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. - Disable the Memory feature in policy until upgraded — If your endpoint config management supports app config push, set the memory feature off in user preferences. Removes the vulnerable code path from runtime without uninstalling.
- Restrict installation of third-party AI assistant plugins/MCP servers — The realistic delivery vehicle is a malicious assistant template or plugin. Constrain plugin sources to a vetted internal allowlist.
- 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.
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
}
If you remember one thing.
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
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.