<?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>Mon, 12 Oct 2026 06:38:46 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-309904</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-309904</link>
      <description>EUVD-2026-309904</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-309904</guid>
    </item>
    <item>
      <title>fkie_cve-2026-42605</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-42605</link>
      <description>&lt;p&gt;AzuraCast is a self-hosted, all-in-one web radio management suite. Prior to version 0.23.6, the currentDirectory request parameter in the Flow.js media upload endpoint (POST /api/station/{station_id}/files/upload) is not sanitized for path traversal sequences. When combined with a local filesystem storage backend (the default), an authenticated user with media management permissions can write arbitrary files outside the station&amp;#39;s media storage directory, achieving remote code execution by writing a PHP webshell to the web root. This issue has been patched in version 0.23.6.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;AzuraCast is a self-hosted, all-in-one web radio management suite. Prior to version 0.23.6, the currentDirectory request parameter in the Flow.js media upload endpoint (POST /api/station/{station_id}/files/upload) is not sanitized for path traversal sequences. When combined with a local filesystem storage backend (the default), an authenticated user with media management permissions can write arbitrary files outside the station&amp;#39;s media storage directory, achieving remote code execution by writing a PHP webshell to the web root. This issue has been patched in version 0.23.6.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-42605</guid>
    </item>
    <item>
      <title>GHSA-vp2f-cqqp-478j — AzuraCast has Path Traversal in `currentDirectory` Parameter that Enables Remote Code Execution via Media Upload</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-vp2f-cqqp-478j</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: azuracast/azuracast&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `currentDirectory` request parameter in the Flow.js media upload endpoint (`POST /api/station/{station_id}/files/upload`) is not sanitized for path traversal sequences. When combined with a local filesystem storage backend (the default), an authenticated user with media management permissions can write arbitrary files outside the station&amp;#39;s media storage directory, achieving remote code execution by writing a PHP webshell to the web root.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;In `backend/src/Controller/Api/Stations/Files/FlowUploadAction.php`, the `currentDirectory` parameter is read directly from user input at line 79 and prepended to the sanitized filename at line 83:&lt;/p&gt;
&lt;p&gt;```php
// FlowUploadAction.php:79-84
$currentDir = Types::string($request-&amp;gt;getParam(&amp;#39;currentDirectory&amp;#39;));&lt;/p&gt;
&lt;p&gt;$destPath = $flowResponse-&amp;gt;getClientFullPath();
if (!empty($currentDir)) {
    $destPath = $currentDir . &amp;#39;/&amp;#39; . $destPath;
}
```&lt;/p&gt;
&lt;p&gt;While `$flowResponse-&amp;gt;getClientFullPath()` is sanitized via `UploadedFile::filterClientPath()` (which strips `..` segments), the `$currentDir` value is prepended **after** this sanitization, reintroducing traversal capability.&lt;/p&gt;
&lt;p&gt;This `$destPath` is passed to `MediaProcessor::processAndUpload()` at line 95-98. The critical issue is in the `finally` block at `backend/src/Media/MediaProcessor.php:114-117`:&lt;/p&gt;
&lt;p&gt;```php
// MediaProcessor.php:75-117
try {
    if (MimeType::isFileProcessable($localPath)) {
        // ... process media ...
        return $record;
    }
    // ...
    throw CannotPro…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: azuracast/azuracast&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `currentDirectory` request parameter in the Flow.js media upload endpoint (`POST /api/station/{station_id}/files/upload`) is not sanitized for path traversal sequences. When combined with a local filesystem storage backend (the default), an authenticated user with media management permissions can write arbitrary files outside the station&amp;#39;s media storage directory, achieving remote code execution by writing a PHP webshell to the web root.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;In `backend/src/Controller/Api/Stations/Files/FlowUploadAction.php`, the `currentDirectory` parameter is read directly from user input at line 79 and prepended to the sanitized filename at line 83:&lt;/p&gt;
&lt;p&gt;```php
// FlowUploadAction.php:79-84
$currentDir = Types::string($request-&amp;gt;getParam(&amp;#39;currentDirectory&amp;#39;));&lt;/p&gt;
&lt;p&gt;$destPath = $flowResponse-&amp;gt;getClientFullPath();
if (!empty($currentDir)) {
    $destPath = $currentDir . &amp;#39;/&amp;#39; . $destPath;
}
```&lt;/p&gt;
&lt;p&gt;While `$flowResponse-&amp;gt;getClientFullPath()` is sanitized via `UploadedFile::filterClientPath()` (which strips `..` segments), the `$currentDir` value is prepended **after** this sanitization, reintroducing traversal capability.&lt;/p&gt;
&lt;p&gt;This `$destPath` is passed to `MediaProcessor::processAndUpload()` at line 95-98. The critical issue is in the `finally` block at `backend/src/Media/MediaProcessor.php:114-117`:&lt;/p&gt;
&lt;p&gt;```php
// MediaProcessor.php:75-117
try {
    if (MimeType::isFileProcessable($localPath)) {
        // ... process media ...
        return $record;
    }
    // ...
    throw CannotPro…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-vp2f-cqqp-478j</guid>
    </item>
  </channel>
</rss>
