<?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>Sat, 17 Oct 2026 03:41:51 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-292752</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-292752</link>
      <description>EUVD-2026-292752</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-292752</guid>
    </item>
    <item>
      <title>fkie_cve-2026-41180</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-41180</link>
      <description>&lt;p&gt;PsiTransfer is an open source, self-hosted file sharing solution. Prior to version 2.4.3, the upload PATCH flow under `/files/:uploadId` validates the mounted request path using the still-encoded `req.path`, but the downstream tus handler later writes using the decoded `req.params.uploadId`. In deployments that use a supported custom `PSITRANSFER_UPLOAD_DIR` whose basename prefixes a startup-loaded JavaScript path, such as `conf`, an unauthenticated attacker can create `config.&amp;lt;NODE_ENV&amp;gt;.js` in the application root. The attacker-controlled file is then executed on the next process restart. Version 2.4.3 contains a patch.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;PsiTransfer is an open source, self-hosted file sharing solution. Prior to version 2.4.3, the upload PATCH flow under `/files/:uploadId` validates the mounted request path using the still-encoded `req.path`, but the downstream tus handler later writes using the decoded `req.params.uploadId`. In deployments that use a supported custom `PSITRANSFER_UPLOAD_DIR` whose basename prefixes a startup-loaded JavaScript path, such as `conf`, an unauthenticated attacker can create `config.&amp;lt;NODE_ENV&amp;gt;.js` in the application root. The attacker-controlled file is then executed on the next process restart. Version 2.4.3 contains a patch.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-41180</guid>
    </item>
    <item>
      <title>GHSA-533q-w4g6-5586 — PsiTransfer: Upload PATCH path traversal can create `config.&lt;NODE_ENV&gt;.js` and lead to code execution on restart</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-533q-w4g6-5586</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: psitransfer&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The upload PATCH flow under `/files/:uploadId` validates the mounted request path using the still-encoded `req.path`, but the downstream tus handler later writes using the decoded `req.params.uploadId`. In deployments that use a supported custom `PSITRANSFER_UPLOAD_DIR` whose basename prefixes a startup-loaded JavaScript path, such as `conf`, an unauthenticated attacker can create `config.&amp;lt;NODE_ENV&amp;gt;.js` in the application root. The attacker-controlled file is then executed on the next process restart.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Observed in `2.4.1`, the upload middleware derives `fid` from `req.path.substring(1)` and calls `store.info(fid)` before handing the request to tus. For a request such as `/files/..%2Fconfig.production.js`, this outer check sees the encoded value `..%2Fconfig.production.js`. The downstream `patch(&amp;#39;/:uploadId&amp;#39;)` route, however, receives the decoded parameter `../config.production.js`. In the same code path, the `catch` branch uses `if(! e instanceof httpErrors.NotFound)`, which does not correctly stop execution on a missing upload target.&lt;/p&gt;
&lt;p&gt;The write sink is `Store.getFilename(fid)`, which resolves `path.resolve(uploadDir, fid.replace(&amp;#39;++&amp;#39;, &amp;#39;/&amp;#39;))` and then only checks `startsWith(uploadDir)`. With a supported custom upload directory such as `&amp;lt;app_root&amp;gt;/conf`, the decoded target `../config.production.js` resolves to `&amp;lt;app_root&amp;gt;/config.production.js`, and the current string-prefix jail check still accepts it because the resolved path begins with `&amp;lt;app_roo…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: psitransfer&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The upload PATCH flow under `/files/:uploadId` validates the mounted request path using the still-encoded `req.path`, but the downstream tus handler later writes using the decoded `req.params.uploadId`. In deployments that use a supported custom `PSITRANSFER_UPLOAD_DIR` whose basename prefixes a startup-loaded JavaScript path, such as `conf`, an unauthenticated attacker can create `config.&amp;lt;NODE_ENV&amp;gt;.js` in the application root. The attacker-controlled file is then executed on the next process restart.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Observed in `2.4.1`, the upload middleware derives `fid` from `req.path.substring(1)` and calls `store.info(fid)` before handing the request to tus. For a request such as `/files/..%2Fconfig.production.js`, this outer check sees the encoded value `..%2Fconfig.production.js`. The downstream `patch(&amp;#39;/:uploadId&amp;#39;)` route, however, receives the decoded parameter `../config.production.js`. In the same code path, the `catch` branch uses `if(! e instanceof httpErrors.NotFound)`, which does not correctly stop execution on a missing upload target.&lt;/p&gt;
&lt;p&gt;The write sink is `Store.getFilename(fid)`, which resolves `path.resolve(uploadDir, fid.replace(&amp;#39;++&amp;#39;, &amp;#39;/&amp;#39;))` and then only checks `startsWith(uploadDir)`. With a supported custom upload directory such as `&amp;lt;app_root&amp;gt;/conf`, the decoded target `../config.production.js` resolves to `&amp;lt;app_root&amp;gt;/config.production.js`, and the current string-prefix jail check still accepts it because the resolved path begins with `&amp;lt;app_roo…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-533q-w4g6-5586</guid>
    </item>
  </channel>
</rss>
