<?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://db.gcve.eu</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>Wed, 11 Nov 2026 07:54:44 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-94619</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-94619</link>
      <description>&lt;p&gt;FileGator is a multi-user file manager. Prior to 7.15.0, POST /upload in backend/Controllers/UploadController.php uses the request-supplied resumableFilename as an unnamespaced key in shared temporary storage. In a multi-user deployment configured with distinct per-user home directories, a low-privileged user with upload permission can set resumableTotalChunks and resumableTotalSize to zero so the assembly loop writes no data, after which the handler reads a pre-existing temporary file with that name, stores it in the attacker&amp;#39;s home directory, and removes it. The same filename path can append data when chunks are supplied, allowing disclosure, modification, or deletion of another user&amp;#39;s transient object, including a pending archive or the login rate-limit lockfile, while Tmpfs path sanitization limits the primitive to the temporary directory. This issue is fixed in version 7.15.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;FileGator is a multi-user file manager. Prior to 7.15.0, POST /upload in backend/Controllers/UploadController.php uses the request-supplied resumableFilename as an unnamespaced key in shared temporary storage. In a multi-user deployment configured with distinct per-user home directories, a low-privileged user with upload permission can set resumableTotalChunks and resumableTotalSize to zero so the assembly loop writes no data, after which the handler reads a pre-existing temporary file with that name, stores it in the attacker&amp;#39;s home directory, and removes it. The same filename path can append data when chunks are supplied, allowing disclosure, modification, or deletion of another user&amp;#39;s transient object, including a pending archive or the login rate-limit lockfile, while Tmpfs path sanitization limits the primitive to the temporary directory. This issue is fixed in version 7.15.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-94619</guid>
    </item>
    <item>
      <title>GHSA-44r8-3p76-84mw — FileGator: Missing authorization in POST /upload allows cross-user read and deletion of temporary files</title>
      <link>https://db.gcve.eu/vuln/ghsa-44r8-3p76-84mw</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: filegator/filegator&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`POST /upload` uses the request-supplied `resumableFilename` directly as a key into the shared temporary directory, without the character filter it applies to `resumableIdentifier` and without namespacing it per user. A valid user holding the `upload` permission can read any file in that directory into their own home directory, append to it, and delete it.&lt;/p&gt;
&lt;p&gt;This reproduces the cross-user batch-archive disclosure of GHSA-f74m-x83r-c4v4 through a different route — it still works with the fix for that advisory (PR #597) applied — and additionally allows deleting the login rate-limit lockfile.&lt;/p&gt;
&lt;p&gt;Reported with explicit preconditions and bounded impact, as before: the primitive is confined to the temporary directory, not the whole filesystem.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;- `backend/Controllers/UploadController.php:61` — `$file_name = $request-&amp;gt;input(&amp;#39;resumableFilename&amp;#39;, &amp;#39;file&amp;#39;)` is **not** passed through the `preg_replace(&amp;#39;/[^0-9a-zA-Z_]/&amp;#39;, &amp;#39;&amp;#39;, ...)` that line 66 applies to `resumableIdentifier`.
- Line 88 builds `$prefix` namespaced by the sanitized username, but `$file_name` reaches the temporary storage at lines 118, 121 and 125 **without** that prefix.
- Line 115 — `if ($chunks_size &amp;gt;= $total_size)` is entered whenever `resumableTotalSize` is `0`.
- Lines 116-119 — the assembly loop `for ($i = 1; $i &amp;lt;= $total_chunks; ++$i)` does not execute when `resumableTotalChunks` is `0`, so nothing is written to `$file_name`.
- Line 121 — `readStream($file_name)` therefore reads the pre-existi…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: filegator/filegator&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`POST /upload` uses the request-supplied `resumableFilename` directly as a key into the shared temporary directory, without the character filter it applies to `resumableIdentifier` and without namespacing it per user. A valid user holding the `upload` permission can read any file in that directory into their own home directory, append to it, and delete it.&lt;/p&gt;
&lt;p&gt;This reproduces the cross-user batch-archive disclosure of GHSA-f74m-x83r-c4v4 through a different route — it still works with the fix for that advisory (PR #597) applied — and additionally allows deleting the login rate-limit lockfile.&lt;/p&gt;
&lt;p&gt;Reported with explicit preconditions and bounded impact, as before: the primitive is confined to the temporary directory, not the whole filesystem.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;- `backend/Controllers/UploadController.php:61` — `$file_name = $request-&amp;gt;input(&amp;#39;resumableFilename&amp;#39;, &amp;#39;file&amp;#39;)` is **not** passed through the `preg_replace(&amp;#39;/[^0-9a-zA-Z_]/&amp;#39;, &amp;#39;&amp;#39;, ...)` that line 66 applies to `resumableIdentifier`.
- Line 88 builds `$prefix` namespaced by the sanitized username, but `$file_name` reaches the temporary storage at lines 118, 121 and 125 **without** that prefix.
- Line 115 — `if ($chunks_size &amp;gt;= $total_size)` is entered whenever `resumableTotalSize` is `0`.
- Lines 116-119 — the assembly loop `for ($i = 1; $i &amp;lt;= $total_chunks; ++$i)` does not execute when `resumableTotalChunks` is `0`, so nothing is written to `$file_name`.
- Line 121 — `readStream($file_name)` therefore reads the pre-existi…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-44r8-3p76-84mw</guid>
    </item>
  </channel>
</rss>
