<?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://vulnerability.circl.lu</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>Fri, 02 Oct 2026 20:23:52 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-55593</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-55593</link>
      <description>&lt;p&gt;Froxlor is open source server administration software. Prior to 2.3.8, the standalone lib/ajax.php entry point bypasses the centralized request validation in lib/init.php, and Ajax::handle in lib/Froxlor/Ajax/Ajax.php checks only for a valid session before routing state-changing requests. The editapikey action in Ajax::editApiKey updates allowed_from and valid_until without validating a CSRF token, while templates/Froxlor/assets/js/jquery/apikeys.js sends no token because the endpoint does not require one. An unauthenticated attacker can induce an authenticated administrator&amp;#39;s browser to submit a forged request that adds an attacker-controlled address to an API key&amp;#39;s allowed_from list or removes its expiration, weakening the key&amp;#39;s security restrictions. This issue is fixed in version 2.3.8.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Froxlor is open source server administration software. Prior to 2.3.8, the standalone lib/ajax.php entry point bypasses the centralized request validation in lib/init.php, and Ajax::handle in lib/Froxlor/Ajax/Ajax.php checks only for a valid session before routing state-changing requests. The editapikey action in Ajax::editApiKey updates allowed_from and valid_until without validating a CSRF token, while templates/Froxlor/assets/js/jquery/apikeys.js sends no token because the endpoint does not require one. An unauthenticated attacker can induce an authenticated administrator&amp;#39;s browser to submit a forged request that adds an attacker-controlled address to an API key&amp;#39;s allowed_from list or removes its expiration, weakening the key&amp;#39;s security restrictions. This issue is fixed in version 2.3.8.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-55593</guid>
    </item>
    <item>
      <title>GHSA-xpr4-8vp6-c87j — Froxlor has CSRF Vulnerability in AJAX Endpoint — Missing Cross-Site Request Forgery Protection</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-xpr4-8vp6-c87j</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: froxlor/froxlor&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The Froxlor AJAX endpoint (`lib/ajax.php`) is missing Cross-Site Request Forgery (CSRF) protection. While the main application (`lib/init.php`) enforces CSRF token validation on all state-changing HTTP requests (POST/PUT/PATCH/DELETE), the standalone `lib/ajax.php` endpoint bypasses this mechanism entirely, validating only the user&amp;#39;s session. An attacker can craft a malicious webpage that, when visited by an authenticated Froxlor administrator, silently modifies API key properties (e.g., adding the attacker&amp;#39;s IP to the `allowed_from` whitelist or extending the `valid_until` expiration).&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;- **File:** `lib/ajax.php` — the AJAX endpoint entry point (bypasses `lib/init.php`)
- **File:** `lib/Froxlor/Ajax/Ajax.php:66-92` — `Ajax::handle()` (no CSRF check before routing)
- **File:** `lib/Froxlor/Ajax/Ajax.php:257-315` — `Ajax::editApiKey()` (writes to database without CSRF check)
- **Version:** Froxlor 2.3.7 (likely all prior 2.x versions)&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Complete Call Chain: Entry Point → Vulnerable Code&lt;/p&gt;
&lt;p&gt;### Step 1: Entry Point — `lib/ajax.php` (standalone bootstrap, bypasses `lib/init.php`)&lt;/p&gt;
&lt;p&gt;```php
// lib/ajax.php:26-47
namespace Froxlor;&lt;/p&gt;
&lt;p&gt;use Froxlor\Ajax\Ajax;&lt;/p&gt;
&lt;p&gt;require_once dirname(__DIR__) . &amp;#39;/vendor/autoload.php&amp;#39;;
require_once dirname(__DIR__) . &amp;#39;/lib/userdata.inc.php&amp;#39;;
require_once dirname(__DIR__) . &amp;#39;/lib/functions.php&amp;#39;;
require_once dirname(__DIR__) . &amp;#39;/lib/tables.inc.php&amp;#39;;&lt;/p&gt;
&lt;p&gt;// CRITICAL: This file does NOT include lib/init.php
// Therefor…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: froxlor/froxlor&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The Froxlor AJAX endpoint (`lib/ajax.php`) is missing Cross-Site Request Forgery (CSRF) protection. While the main application (`lib/init.php`) enforces CSRF token validation on all state-changing HTTP requests (POST/PUT/PATCH/DELETE), the standalone `lib/ajax.php` endpoint bypasses this mechanism entirely, validating only the user&amp;#39;s session. An attacker can craft a malicious webpage that, when visited by an authenticated Froxlor administrator, silently modifies API key properties (e.g., adding the attacker&amp;#39;s IP to the `allowed_from` whitelist or extending the `valid_until` expiration).&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;- **File:** `lib/ajax.php` — the AJAX endpoint entry point (bypasses `lib/init.php`)
- **File:** `lib/Froxlor/Ajax/Ajax.php:66-92` — `Ajax::handle()` (no CSRF check before routing)
- **File:** `lib/Froxlor/Ajax/Ajax.php:257-315` — `Ajax::editApiKey()` (writes to database without CSRF check)
- **Version:** Froxlor 2.3.7 (likely all prior 2.x versions)&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Complete Call Chain: Entry Point → Vulnerable Code&lt;/p&gt;
&lt;p&gt;### Step 1: Entry Point — `lib/ajax.php` (standalone bootstrap, bypasses `lib/init.php`)&lt;/p&gt;
&lt;p&gt;```php
// lib/ajax.php:26-47
namespace Froxlor;&lt;/p&gt;
&lt;p&gt;use Froxlor\Ajax\Ajax;&lt;/p&gt;
&lt;p&gt;require_once dirname(__DIR__) . &amp;#39;/vendor/autoload.php&amp;#39;;
require_once dirname(__DIR__) . &amp;#39;/lib/userdata.inc.php&amp;#39;;
require_once dirname(__DIR__) . &amp;#39;/lib/functions.php&amp;#39;;
require_once dirname(__DIR__) . &amp;#39;/lib/tables.inc.php&amp;#39;;&lt;/p&gt;
&lt;p&gt;// CRITICAL: This file does NOT include lib/init.php
// Therefor…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-xpr4-8vp6-c87j</guid>
    </item>
  </channel>
</rss>
