Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
CriticalPublic exploit

SiYuan tooltip XSS to RCE in Electron renderer

IdentifiersCVE-2026-44588CWE-79· Improper Neutralization of Input…

CVE-2026-44588 affects SiYuan before 3.7.0. The vulnerability is in the tooltip handling path for aria-label content. In app/src/block/popover.ts, the mouseover handler reads attacker-controlled aria-label data with getAttribute(), passes it through decodeURIComponent, and then forwards it to the tooltip renderer. In app/src/dialog/tooltip.ts, the resulting string is assigned to messageElement.innerHTML. The producer-side escaping performed by escapeAriaLabel() in app/src/util/escape.ts only escapes HTML-special characters and does not neutralize percent-encoded sequences such as %3C and %3E. As a result, a crafted value like %3Cimg src=x onerror=...%3E survives storage and attribute rendering, is converted by decodeURIComponent into a literal HTML tag, and is then parsed by the browser when inserted via innerHTML, triggering stored cross-site scripting. In the Electron desktop client, this XSS can be escalated to arbitrary code execution because the renderer is configured with nodeIntegration enabled, contextIsolation disabled, and webSecurity disabled.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation yields stored XSS in SiYuan content and, in the Electron desktop client, can escalate to arbitrary code execution in the context of the victim user. Because Node.js APIs are reachable from injected JavaScript, an attacker can execute system commands, access local files, read notes and other application data, steal credentials or tokens, and establish persistence. If malicious content is synced, imported, or otherwise shared, exploitation can propagate to other users who open or hover over the affected content.

Mitigation

If you can’t patch tonight, do this now.

Until the fixed version is deployed, avoid opening, importing, or syncing untrusted SiYuan content, especially notes or packages that may contain attacker-controlled titles or metadata rendered into tooltips. Reduce exposure by avoiding hover interactions with untrusted content where feasible. If maintaining a custom build, replace tooltip innerHTML assignment with textContent for untrusted data and remove unconditional decodeURIComponent from the generic aria-label tooltip path. Additional risk reduction can be achieved by hardening the Electron renderer configuration, particularly by setting contextIsolation to true and nodeIntegration to false.

Remediation

Patch, then assume compromise.

Upgrade to SiYuan 3.7.0 or later, where this vulnerability is fixed. The vulnerable tooltip flow should avoid passing untrusted aria-label content through decodeURIComponent and then into innerHTML. Untrusted tooltip content should be rendered with textContent or equivalent safe DOM APIs rather than HTML parsing sinks. Escaping and encoding logic should be consolidated so percent-encoded sequences cannot be transformed into active markup at the consumer side. Electron hardening should also be applied where possible, including disabling nodeIntegration and enabling contextIsolation.
PUBLIC EXPLOITS

Exploits

No public exploits tracked yet. Mallory keeps watching.

VALID 0 / 0 TOTALView more in app

No public exploit code observed for this vulnerability.

ACTIVITY FEED

Recent activity

1 sources tracked across advisories and community write-ups. News coverage will land here when it surfaces.

No news coverage yet. Advisories and community discussion only.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity

Community discussion across Reddit, Mastodon, and other social sources.