CVE-2025-58173

8.8 HIGH

📋 TL;DR

This vulnerability in FreshRSS allows unprivileged users to perform path traversal via the language configuration parameter, enabling them to access install.php and execute administrative actions. Attackers can create admin accounts, hijack database connections, and potentially execute arbitrary code through malicious feed parameters. Users running FreshRSS versions 1.23.0 through 1.27.0 are affected.

💻 Affected Systems

Products:
  • FreshRSS
Versions: 1.23.0 through 1.27.0
Operating Systems: All platforms running FreshRSS
Default Config Vulnerable: ⚠️ Yes
Notes: All installations within the affected version range are vulnerable regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise via remote code execution, admin account takeover, and database hijacking leading to data theft or destruction.

🟠

Likely Case

Unauthorized admin account creation leading to privilege escalation and potential data manipulation.

🟢

If Mitigated

Limited impact if proper network segmentation and access controls prevent external exploitation.

🌐 Internet-Facing: HIGH - Self-hosted RSS aggregators are typically internet-facing and vulnerable to unauthenticated attacks.
🏢 Internal Only: MEDIUM - Internal attackers could exploit this for privilege escalation and lateral movement.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability requires minimal technical skill to exploit and has clear attack paths documented in the CVE description.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.27.1

Vendor Advisory: https://github.com/FreshRSS/FreshRSS/security/advisories

Restart Required: No

Instructions:

1. Backup your FreshRSS installation and database. 2. Download FreshRSS 1.27.1 or later from the official repository. 3. Replace the existing installation files with the patched version. 4. Verify the installation works correctly.

🔧 Temporary Workarounds

Restrict access to install.php

all

Block direct access to install.php via web server configuration

# For Apache: add to .htaccess
<Files "install.php">
    Require all denied
</Files>
# For Nginx: add to server block
location ~ /install\.php$ {
    deny all;
}

Remove install.php after setup

linux

Delete or rename install.php file after initial installation

rm /path/to/freshrss/install.php
mv /path/to/freshrss/install.php /path/to/freshrss/install.php.disabled

🧯 If You Can't Patch

  • Implement strict network access controls to limit FreshRSS access to trusted IP addresses only.
  • Monitor for unauthorized admin account creation and unexpected database connection changes.

🔍 How to Verify

Check if Vulnerable:

Check FreshRSS version in the web interface footer or by examining the constants.php file for FRESHRSS_VERSION constant.

Check Version:

grep "FRESHRSS_VERSION" /path/to/freshrss/constants.php

Verify Fix Applied:

Confirm version is 1.27.1 or higher and verify the language parameter validation prevents path traversal.

📡 Detection & Monitoring

Log Indicators:

  • Access to install.php from non-admin users
  • Unexpected admin user creation
  • Database configuration changes
  • Unusual language parameter values containing path traversal sequences

Network Indicators:

  • HTTP requests with language parameter containing '../' sequences
  • Requests to install.php from unauthorized sources

SIEM Query:

source="web_access_logs" AND (uri="*install.php*" OR param="*language*../*")

🔗 References

📤 Share & Export