π¨ CVE-2026-73679
ImpressCMS contains an authenticated remote code execution vulnerability in the custom tag module that allows authenticated administrators to execute arbitrary PHP code by storing a malicious payload in a custom tag with PHP type enabled. The application decodes HTML-encoded content via undoHtmlSpecialChars() before passing it to eval() in the renderWithPhp() method, bypassing HTML Purifier sanitization, and the payload is triggered on every frontend page load through the preload event system.
π@cveNotify
ImpressCMS contains an authenticated remote code execution vulnerability in the custom tag module that allows authenticated administrators to execute arbitrary PHP code by storing a malicious payload in a custom tag with PHP type enabled. The application decodes HTML-encoded content via undoHtmlSpecialChars() before passing it to eval() in the renderWithPhp() method, bypassing HTML Purifier sanitization, and the payload is triggered on every frontend page load through the preload event system.
π@cveNotify
GitHub
VULN-POC/ImpressCMSRCCE.md at main Β· DevVaibhav07/VULN-POC
Contribute to DevVaibhav07/VULN-POC development by creating an account on GitHub.
π¨ CVE-2026-73680
Cockpit CMS 2.14.0 and prior contains a command injection vulnerability in the FFmpeg integration that allows authenticated users with only the assets/upload permission to execute arbitrary commands by uploading a video file with a shell metacharacter-laden filename. The unsanitized filename is interpolated into a shell command executed via Process::fromShellCommandline() before the slugify() sanitizer runs, enabling injected shell metacharacters such as backticks, $(), and semicolons to escape the FFmpeg command context and execute as the web-server user.
π@cveNotify
Cockpit CMS 2.14.0 and prior contains a command injection vulnerability in the FFmpeg integration that allows authenticated users with only the assets/upload permission to execute arbitrary commands by uploading a video file with a shell metacharacter-laden filename. The unsanitized filename is interpolated into a shell command executed via Process::fromShellCommandline() before the slugify() sanitizer runs, enabling injected shell metacharacters such as backticks, $(), and semicolons to escape the FFmpeg command context and execute as the web-server user.
π@cveNotify
GitHub
GitHub - Cockpit-HQ/Cockpit: Cockpit Core - Content Platform
Cockpit Core - Content Platform. Contribute to Cockpit-HQ/Cockpit development by creating an account on GitHub.
π¨ CVE-2026-15689
Dancer2::Plugin::Auth::Extensible versions through 0.713 for Perl allow password reset link poisoning via the request Host header in _default_email_password_reset and _default_welcome_send.
Both default emails emit a link of the form `$base/login/$code`, whose authority comes from the request Host header, or from X-Forwarded-Host under behind_proxy (obtained from Dancer2's request->base function). A POST to /login carrying submit_reset and a username needs no authentication: it stores a fresh reset code against that account and mails the account holder a link to a host of the sender's choosing. The welcome mail takes the same path when the application calls create_user with email_welcome set.
Through 0.711 the handlers read `request->uri_base` and `request->base` directly; Versions 0.712 and later provide an uri_base configuration key that defaults to the untrusted `request->uri_base` when unset.
The default configuration with reset_password_handler enabled and the default message text, a recipient who follows the link hands a working reset code to the sender's host, which is enough to take over the account.
π@cveNotify
Dancer2::Plugin::Auth::Extensible versions through 0.713 for Perl allow password reset link poisoning via the request Host header in _default_email_password_reset and _default_welcome_send.
Both default emails emit a link of the form `$base/login/$code`, whose authority comes from the request Host header, or from X-Forwarded-Host under behind_proxy (obtained from Dancer2's request->base function). A POST to /login carrying submit_reset and a username needs no authentication: it stores a fresh reset code against that account and mails the account holder a link to a host of the sender's choosing. The welcome mail takes the same path when the application calls create_user with email_welcome set.
Through 0.711 the handlers read `request->uri_base` and `request->base` directly; Versions 0.712 and later provide an uri_base configuration key that defaults to the untrusted `request->uri_base` when unset.
The default configuration with reset_password_handler enabled and the default message text, a recipient who follows the link hands a working reset code to the sender's host, which is enough to take over the account.
π@cveNotify
π¨ CVE-2026-73041
SiYuan versions before v3.7.4 fail to validate or escape annotation fields written to disk by the setFileAnnotation endpoint. Attackers can inject malicious markup into annotation fields that execute as script in the PDF renderer with full Node.js access when a user opens an annotated PDF.
π@cveNotify
SiYuan versions before v3.7.4 fail to validate or escape annotation fields written to disk by the setFileAnnotation endpoint. Attackers can inject malicious markup into annotation fields that execute as script in the PDF renderer with full Node.js access when a user opens an annotated PDF.
π@cveNotify
GitHub
PDF annotation fields are written to disk unparsed and rendered into five raw attributes, turning a shared PDF into Remote Codeβ¦
### Summary
`/api/asset/setFileAnnotation` writes a client-supplied string straight to disk with no parsing or validation. `showHighlight` then interpolates five fields from that file into HTML ...
`/api/asset/setFileAnnotation` writes a client-supplied string straight to disk with no parsing or validation. `showHighlight` then interpolates five fields from that file into HTML ...
π¨ CVE-2026-73042
SiYuan before v3.7.4 fails to properly escape database menu metadata in HTML interpolation, allowing stored values to execute script when users open group, view, or field-edit menus. Attackers can inject markup through field descriptions or names that close containing elements and execute arbitrary code via event handlers, reaching Node built-ins due to Electron's insecure configuration.
π@cveNotify
SiYuan before v3.7.4 fails to properly escape database menu metadata in HTML interpolation, allowing stored values to execute script when users open group, view, or field-edit menus. Attackers can inject markup through field descriptions or names that close containing elements and execute arbitrary code via event handlers, reaching Node built-ins due to Electron's insecure configuration.
π@cveNotify
GitHub
Database menu labels are escaped in the attribute and left raw in the body of the same line, turning a field description into Remoteβ¦
### Summary
Six template sites across the database group, view and field-edit menus interpolate attribute-view metadata into HTML without escaping, and the results are assigned via `innerHTML`. ...
Six template sites across the database group, view and field-edit menus interpolate attribute-view metadata into HTML without escaping, and the results are assigned via `innerHTML`. ...
π¨ CVE-2026-73043
SiYuan versions before v3.7.4 contain a remote code execution vulnerability in the Template calculation operator, which renders user-authored Go templates and stores output verbatim without sanitization. Attackers can inject malicious HTML and JavaScript into template calculations that execute in the desktop client renderer with Node integration enabled, allowing arbitrary code execution when the database is opened.
π@cveNotify
SiYuan versions before v3.7.4 contain a remote code execution vulnerability in the Template calculation operator, which renders user-authored Go templates and stores output verbatim without sanitization. Attackers can inject malicious HTML and JavaScript into template calculations that execute in the desktop client renderer with Node integration enabled, allowing arbitrary code execution when the database is opened.
π@cveNotify
GitHub
A database Template calculation becomes Remote Code Execution on the desktop client, because the sanitizer written for identicalβ¦
### Summary
The Template calculation operator renders a user-authored Go template on the server and stores the output verbatim. The client interpolates that output into HTML and assigns it via `...
The Template calculation operator renders a user-authored Go template on the server and stores the output verbatim. The client interpolates that output into HTML and assigns it via `...
π¨ CVE-2026-73044
SiYuan versions before v3.7.4 fail to validate or escape table column width values, allowing stored cross-site scripting injection into style attributes. Attackers can inject malicious payloads through the setAttrViewColWidth API that break out of style attributes and inject event handlers on every table cell, executing arbitrary code in the Electron renderer with Node integration enabled.
π@cveNotify
SiYuan versions before v3.7.4 fail to validate or escape table column width values, allowing stored cross-site scripting injection into style attributes. Attackers can inject malicious payloads through the setAttrViewColWidth API that break out of style attributes and inject event handlers on every table cell, executing arbitrary code in the Electron renderer with Node integration enabled.
π@cveNotify
GitHub
Attribute-view column widths are stored without validation and interpolated into style attributes without escaping, allowing storedβ¦
### Summary
The attribute-view store accepts an arbitrary string for a table column's width and applies no validation to it. Four frontend render sites interpolate that value directly into a...
The attribute-view store accepts an arbitrary string for a table column's width and applies no validation to it. Four frontend render sites interpolate that value directly into a...
π¨ CVE-2026-73045
SiYuan before 3.7.4 contains an improper restriction of excessive authentication attempts vulnerability in the authFilePublishAccess endpoint that allows unauthenticated attackers to brute-force per-notebook publish passwords. Attackers can submit unbounded password guesses without rate limiting or CAPTCHA to gain access to password-protected published notebooks.
π@cveNotify
SiYuan before 3.7.4 contains an improper restriction of excessive authentication attempts vulnerability in the authFilePublishAccess endpoint that allows unauthenticated attackers to brute-force per-notebook publish passwords. Attackers can submit unbounded password guesses without rate limiting or CAPTCHA to gain access to password-protected published notebooks.
π@cveNotify
GitHub
Unthrottled brute-force of per-notebook Publish password via /api/filetree/authFilePublishAccess
### Summary
SiYuan's "Publish" feature allows a workspace owner to expose specific
notebooks publicly, optionally protected by a per-notebook password. The
endpoint that validates ...
SiYuan's "Publish" feature allows a workspace owner to expose specific
notebooks publicly, optionally protected by a per-notebook password. The
endpoint that validates ...
π¨ CVE-2026-73046
SiYuan before v3.7.4 improperly restricts excessive authentication attempts in the CheckAuth() middleware. The HTTP Basic Authentication branch, which guards nearly the entire /api/* surface, accepts the workspace access code (Conf.AccessAuthCode) as the Basic Auth password but never consults the CAPTCHA/lockout gate or increments the failure counter used by the cookie/session login path. This allows unauthenticated remote attackers to brute-force the admin access code with unlimited automated requests and obtain full RoleAdministrator access to the kernel. A secondary weakness exists because the access code is compared using a non-constant-time string comparison.
π@cveNotify
SiYuan before v3.7.4 improperly restricts excessive authentication attempts in the CheckAuth() middleware. The HTTP Basic Authentication branch, which guards nearly the entire /api/* surface, accepts the workspace access code (Conf.AccessAuthCode) as the Basic Auth password but never consults the CAPTCHA/lockout gate or increments the failure counter used by the cookie/session login path. This allows unauthenticated remote attackers to brute-force the admin access code with unlimited automated requests and obtain full RoleAdministrator access to the kernel. A secondary weakness exists because the access code is compared using a non-constant-time string comparison.
π@cveNotify
GitHub
HTTP Basic Auth path in CheckAuth() bypasses the workspace access-code CAPTCHA/lockout, allowing unthrottled remote brute-forceβ¦
### Summary
SiYuan protects network-exposed kernel instances with a workspace "lock screen"
access code (`Conf.AccessAuthCode`). This same secret can be submitted through
two independe...
SiYuan protects network-exposed kernel instances with a workspace "lock screen"
access code (`Conf.AccessAuthCode`). This same secret can be submitted through
two independe...
π¨ CVE-2026-73047
siyuan versions <= 3.7.3 (fixed in v3.7.4) contain a server-side template injection vulnerability in the attribute-view Template calculation feature (introduced in v3.7.0-beta.1). The feature's template engine uses Sprig's unmodified function map, which still exposes the env, expandenv, and getHostByName functions that were removed elsewhere for CVE-2024-55660. A local, unauthenticated attacker (the kernel binds to 127.0.0.1 by default with no per-UID access control) can inject a malicious Template calculation formula to read environment variables belonging to the account running siyuan β including from a separate, unprivileged OS account β and to perform DNS lookups from the server's network position.
π@cveNotify
siyuan versions <= 3.7.3 (fixed in v3.7.4) contain a server-side template injection vulnerability in the attribute-view Template calculation feature (introduced in v3.7.0-beta.1). The feature's template engine uses Sprig's unmodified function map, which still exposes the env, expandenv, and getHostByName functions that were removed elsewhere for CVE-2024-55660. A local, unauthenticated attacker (the kernel binds to 127.0.0.1 by default with no per-UID access control) can inject a malicious Template calculation formula to read environment variables belonging to the account running siyuan β including from a separate, unprivileged OS account β and to perform DNS lookups from the server's network position.
π@cveNotify
GitHub
SSTI env/DNS leak via attribute-view Template calculation
## Summary
siyuan's fix for CVE-2024-55660 (commit `e70ed57f6`, 2024-12-11) removed three dangerous functions β `env`, `expandenv`, `getHostByName` β from the function that builds the list o...
siyuan's fix for CVE-2024-55660 (commit `e70ed57f6`, 2024-12-11) removed three dangerous functions β `env`, `expandenv`, `getHostByName` β from the function that builds the list o...
π¨ CVE-2026-73050
SiYuan versions before v3.7.4 fail to validate or escape the color field in attribute-view select options, allowing stored cross-site scripting through eight unescaped render sites. Attackers can inject event-handler attributes by including quotation marks in the color value, executing arbitrary JavaScript when viewing databases containing the malicious select field.
π@cveNotify
SiYuan versions before v3.7.4 fail to validate or escape the color field in attribute-view select options, allowing stored cross-site scripting through eight unescaped render sites. Attackers can inject event-handler attributes by including quotation marks in the color value, executing arbitrary JavaScript when viewing databases containing the malicious select field.
π@cveNotify
GitHub
Attribute-view select option colors are stored unvalidated and interpolated into style attributes without escaping at eight renderβ¦
### Summary
The attribute-view store accepts arbitrary strings for a select option's colour, a field the kernel documents as a palette index in the range 1 to 14. Eight frontend render sites...
The attribute-view store accepts arbitrary strings for a select option's colour, a field the kernel documents as a palette index in the range 1 to 14. Eight frontend render sites...
π¨ CVE-2026-73052
SiYuan before v3.7.4 stores attribute-view field names without HTML escaping and interpolates them directly into option elements via innerHTML in the sort menu. Attackers can inject markup by renaming a database field to execute arbitrary JavaScript when users open the sort menu, with Node integration enabled in the desktop client enabling code execution.
π@cveNotify
SiYuan before v3.7.4 stores attribute-view field names without HTML escaping and interpolates them directly into option elements via innerHTML in the sort menu. Attackers can inject markup by renaming a database field to execute arbitrary JavaScript when users open the sort menu, with Node integration enabled in the desktop client enabling code execution.
π@cveNotify
GitHub
Attribute-view field names are stored unescaped and interpolated into option elements without escaping, allowing stored cross-siteβ¦
### Summary
The attribute-view store writes field names without HTML escaping, and `getSortsHTML` interpolates those names directly into `<option>` elements before assigning the result via...
The attribute-view store writes field names without HTML escaping, and `getSortsHTML` interpolates those names directly into `<option>` elements before assigning the result via...
π¨ CVE-2026-73053
SiYuan versions before v3.7.4 contain a cross-site scripting vulnerability in the unicode2Emoji function that fails to sanitize codepoint branch output. Attackers can craft document icons with hex-encoded markup that executes in the renderer with Node integration enabled, achieving arbitrary code execution on the host system.
π@cveNotify
SiYuan versions before v3.7.4 contain a cross-site scripting vulnerability in the unicode2Emoji function that fails to sanitize codepoint branch output. Attackers can craft document icons with hex-encoded markup that executes in the renderer with Node integration enabled, achieving arbitrary code execution on the host system.
π@cveNotify
GitHub
A single unsanitized branch in unicode2Emoji turns a document icon into Remote Code Execution on the desktop client
### Summary
`unicode2Emoji` has two branches. The image branch passes its output through `Lute.Sanitize`. The codepoint branch builds a string with `String.fromCodePoint` and returns it unsaniti...
`unicode2Emoji` has two branches. The image branch passes its output through `Lute.Sanitize`. The codepoint branch builds a string with `String.fromCodePoint` and returns it unsaniti...
π¨ CVE-2026-73054
SiYuan versions before v3.7.4 contain an authentication bypass vulnerability in the WebSocket endpoint caused by differential parsing of query parameters between authentication exemption and session quarantine checks. Unauthenticated attackers can craft a malicious WebSocket URI with duplicated query parameters to bypass access auth code validation and receive the live kernel event stream including document identifiers, titles, and operation logs.
π@cveNotify
SiYuan versions before v3.7.4 contain an authentication bypass vulnerability in the WebSocket endpoint caused by differential parsing of query parameters between authentication exemption and session quarantine checks. Unauthenticated attackers can craft a malicious WebSocket URI with duplicated query parameters to bypass access auth code validation and receive the live kernel event stream including document identifiers, titles, and operation logs.
π@cveNotify
GitHub
A parser differential between the WebSocket keepalive exemption and the session quarantine allows unauthenticated access to theβ¦
### Summary
Two checks on the same WebSocket request URI parse it differently. The authentication exemption for keepalive sessions matches raw substrings, while the quarantine introduced to cont...
Two checks on the same WebSocket request URI parse it differently. The authentication exemption for keepalive sessions matches raw substrings, while the quarantine introduced to cont...
π¨ CVE-2026-73055
Shescape before 2.1.15 (and 3.0.0 before 3.0.2) fails to properly escape tilde (~) characters in assignment contexts on Unix systems where the shell is explicitly configured to "sh" or true and /bin/sh points to BusyBox. Using the escape and escapeAll APIs with untrusted input in an assignment prefixed to a command, an attacker can inject a tilde payload to disclose the user's home directory location and, depending on usage, alter the location on which a command operates.
π@cveNotify
Shescape before 2.1.15 (and 3.0.0 before 3.0.2) fails to properly escape tilde (~) characters in assignment contexts on Unix systems where the shell is explicitly configured to "sh" or true and /bin/sh points to BusyBox. Using the escape and escapeAll APIs with untrusted input in an assignment prefixed to a command, an attacker can inject a tilde payload to disclose the user's home directory location and, depending on usage, alter the location on which a command operates.
π@cveNotify
GitHub
Improve Busybox escaping (#2678) Β· ericcornelissen/shescape@7cba305
Similar to b4b34c394e7f9da2775bb75381066b9a228c425f
Co-authored-by: Markus Magnuson <markus@polyscopic.works>
Assisted-by: Claude Opus 4.8
Co-authored-by: Markus Magnuson <markus@polyscopic.works>
Assisted-by: Claude Opus 4.8
π¨ CVE-2026-72887
Net::OAuth::Client versions before 0.32 for Perl allow the service provider to silently downgrade OAuth 1.0a to OAuth 1.0 in get_request_token.
Passing a callback to the constructor selects OAuth 1.0a. get_request_token then revokes that choice when the request token response omits oauth_callback_confirmed, with no exception, no warning and no option to require 1.0a. The access token request is built from the OAuth 1.0 message class, which has no verifier parameter, so oauth_verifier is dropped from the request even when get_access_token was passed one.
oauth_verifier is the binding that OAuth 1.0a added between the authorization step and the token exchange. An application that asked for 1.0a and gets 1.0 is open to OAuth 1.0 session fixation, where an attacker obtains a request token, has the victim authorize it, and then completes the exchange themselves, linking the victim's provider account to a session the attacker controls. No attacker action sets up the downgrade: a provider that does not confirm the callback is enough.
π@cveNotify
Net::OAuth::Client versions before 0.32 for Perl allow the service provider to silently downgrade OAuth 1.0a to OAuth 1.0 in get_request_token.
Passing a callback to the constructor selects OAuth 1.0a. get_request_token then revokes that choice when the request token response omits oauth_callback_confirmed, with no exception, no warning and no option to require 1.0a. The access token request is built from the OAuth 1.0 message class, which has no verifier parameter, so oauth_verifier is dropped from the request even when get_access_token was passed one.
oauth_verifier is the binding that OAuth 1.0a added between the authorization step and the token exchange. An application that asked for 1.0a and gets 1.0 is open to OAuth 1.0 session fixation, where an attacker obtains a request token, has the victim authorize it, and then completes the exchange themselves, linking the victim's provider account to a session the attacker controls. No attacker action sets up the downgrade: a provider that does not confirm the callback is enough.
π@cveNotify
IETF Datatracker
RFC 5849: The OAuth 1.0 Protocol
OAuth provides a method for clients to access server resources on behalf of a resource owner (such as a different client or an end-user). It also provides a process for end-users to authorize third-party access to their server resources without sharing theirβ¦
π¨ CVE-2026-72888
Net::OAuth versions before 0.32 for Perl allow memory exhaustion via unbounded caching of failed module loads in smart_require.
smart_require stores results in a process-global hash with no bound and no eviction, and keeps an entry for every class name it is asked about, including names that failed to load, because the return value of the failed eval is stored before the error is checked. The key comes off the wire on the server side: _signature_method_class builds the class name from the signature_method parameter of the incoming message, and verify resolves it before any signature is checked.
A remote client chooses both how many entries are created and how long each key is. In a persistent server the hash grows for the life of the worker process until it exhausts memory. Header size limits bound the key length on the Authorization header path, but not on a POST body.
π@cveNotify
Net::OAuth versions before 0.32 for Perl allow memory exhaustion via unbounded caching of failed module loads in smart_require.
smart_require stores results in a process-global hash with no bound and no eviction, and keeps an entry for every class name it is asked about, including names that failed to load, because the return value of the failed eval is stored before the error is checked. The key comes off the wire on the server side: _signature_method_class builds the class name from the signature_method parameter of the incoming message, and verify resolves it before any signature is checked.
A remote client chooses both how many entries are created and how long each key is. In a persistent server the hash grows for the life of the worker process until it exhausts memory. Header size limits bound the key length on the Authorization header path, but not on a POST body.
π@cveNotify
π¨ CVE-2026-73056
SiYuan kernel versions before 3.7.4 contain an improper restriction of excessive authentication attempts vulnerability in the CheckAuth() middleware. The middleware accepts the API token (Conf.Api.Token) via an Authorization header (Token/Bearer) or a ?token= query parameter, and neither path is protected by the application's CAPTCHA/lockout mechanism (NeedCaptcha/WrongAuthCount). As a result, an unauthenticated remote attacker can perform unlimited automated guesses of the API token, particularly when a short or weak custom token has been configured, and upon success gains full RoleAdministrator access enabling arbitrary file operations and SQL queries.
π@cveNotify
SiYuan kernel versions before 3.7.4 contain an improper restriction of excessive authentication attempts vulnerability in the CheckAuth() middleware. The middleware accepts the API token (Conf.Api.Token) via an Authorization header (Token/Bearer) or a ?token= query parameter, and neither path is protected by the application's CAPTCHA/lockout mechanism (NeedCaptcha/WrongAuthCount). As a result, an unauthenticated remote attacker can perform unlimited automated guesses of the API token, particularly when a short or weak custom token has been configured, and upon success gains full RoleAdministrator access enabling arbitrary file operations and SQL queries.
π@cveNotify
GitHub
Unthrottled brute-force of `Conf.Api.Token` via header/query auth in `CheckAuth()`, allowing unlimited automated guessing of aβ¦
**Severity:** High
## Package
gomod `github.com/siyuan-note/siyuan/kernel` ([Go](https://github.com/advisories?query=ecosystem%3Ago))
## Affected versions
<= 3.7.3 (confirmed prese...
## Package
gomod `github.com/siyuan-note/siyuan/kernel` ([Go](https://github.com/advisories?query=ecosystem%3Ago))
## Affected versions
<= 3.7.3 (confirmed prese...
π¨ CVE-2026-73059
stoatchat before 0.15.0 contains a permission bypass vulnerability in the message_fetch route that checks only ViewChannel permission instead of requiring ReadMessageHistory. Attackers with ViewChannel access but ReadMessageHistory denied can retrieve individual message content by ID, bypassing the intended history restriction enforced by bulk read routes.
π@cveNotify
stoatchat before 0.15.0 contains a permission bypass vulnerability in the message_fetch route that checks only ViewChannel permission instead of requiring ReadMessageHistory. Attackers with ViewChannel access but ReadMessageHistory denied can retrieve individual message content by ID, bypassing the intended history restriction enforced by bulk read routes.
π@cveNotify
GitHub
fetching a single message checks only ViewChannel, not ReadMessageHistory (bypasses a view-without-history channel restriction)
### Summary
Reading message content is meant to be gated by two independent permission bits: ViewChannel (1 << 20) and ReadMessageHistory (1 << 21). The two bulk read routes enforce Re...
Reading message content is meant to be gated by two independent permission bits: ViewChannel (1 << 20) and ReadMessageHistory (1 << 21). The two bulk read routes enforce Re...
π¨ CVE-2026-73060
Scriban versions from 3.0.0 through 7.2.5 contain a denial of service vulnerability in the ScriptRange.Multiply operator that bypasses LoopLimit when the left operand is a lazy sequence. Attackers can supply templates with array multiplication on lazy sequences to execute billions of uncharged iterations, pinning CPU cores and exhausting garbage collection resources even when LoopLimit is set to 1.
π@cveNotify
Scriban versions from 3.0.0 through 7.2.5 contain a denial of service vulnerability in the ScriptRange.Multiply operator that bypasses LoopLimit when the left operand is a lazy sequence. Attackers can supply templates with array multiplication on lazy sequences to execute billions of uncharged iterations, pinning CPU cores and exhausting garbage collection resources even when LoopLimit is set to 1.
π@cveNotify
GitHub
Limit array multiplication growth Β· scriban/scriban@205ca6a
A fast, powerful, safe and lightweight scripting language and engine for .NET - Limit array multiplication growth Β· scriban/scriban@205ca6a
π¨ CVE-2026-74798
SiYuan kernel before v3.7.4 contains a path traversal vulnerability in the database_clean MCP tool. The tool performs only an empty-string check on the id parameter before passing it to RemoveUnusedAttributeView (kernel/model/attribute_view.go), which builds a filesystem path via filepath.Join without validating that id matches SiYuan's node-ID format. An authenticated MCP client can supply path traversal sequences in id to cause the kernel to copy an arbitrary file readable by the process into SiYuan's history directory (arbitrary file read) and then delete the original file (arbitrary file deletion). The corresponding HTTP API handler was hardened in GHSA-7hm9-v7vf-7g4w, but this MCP caller was not.
π@cveNotify
SiYuan kernel before v3.7.4 contains a path traversal vulnerability in the database_clean MCP tool. The tool performs only an empty-string check on the id parameter before passing it to RemoveUnusedAttributeView (kernel/model/attribute_view.go), which builds a filesystem path via filepath.Join without validating that id matches SiYuan's node-ID format. An authenticated MCP client can supply path traversal sequences in id to cause the kernel to copy an arbitrary file readable by the process into SiYuan's history directory (arbitrary file read) and then delete the original file (arbitrary file deletion). The corresponding HTTP API handler was hardened in GHSA-7hm9-v7vf-7g4w, but this MCP caller was not.
π@cveNotify
GitHub
Path Traversal in MCP tool database_clean (RemoveUnusedAttributeView) leads to Arbitrary File Read (via history copy) and Arbitraryβ¦
Found via a different technique than the rest of this review round:
tracing the pattern of a very recently fixed advisory
(GHSA-7hm9-v7vf-7g4w, "Validate attribute view IDs before file acces...
tracing the pattern of a very recently fixed advisory
(GHSA-7hm9-v7vf-7g4w, "Validate attribute view IDs before file acces...