Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2025-68402

CVE-2025-68402: FreshRSS Auth Bypass Vulnerability

CVE-2025-68402 is an authentication bypass flaw in FreshRSS affecting the edge branch where incorrect passwords are accepted due to bcrypt truncation. This post covers technical details, affected versions, and fixes.

Published:

CVE-2025-68402 Overview

CVE-2025-68402 is an authentication bypass vulnerability in FreshRSS, a free, self-hostable RSS aggregator. The vulnerability exists due to an improper password verification implementation caused by bcrypt's 72-byte input truncation behavior. When the nonce length was changed from 40 characters to 64 characters in commits 57e1a37 through 00f2f04, the password_verify() function began accepting incorrect passwords, allowing unauthorized access to user accounts.

The flaw occurs because password_verify() is being called with a constructed string (SHA-256 nonce + part of a bcrypt hash) instead of the raw user password. Due to bcrypt's inherent limitation of truncating input to 72 bytes, the actual password portion becomes irrelevant when the prepended nonce consumes most of the allowed input length. This causes password verification to succeed even when users enter incorrect passwords.

Critical Impact

Attackers can bypass authentication and gain unauthorized access to FreshRSS user accounts without knowing the correct password, potentially compromising RSS feed data, user preferences, and any sensitive information aggregated through the platform.

Affected Products

  • FreshRSS edge branch (commits 57e1a37 through 00f2f04)
  • FreshRSS versions prior to 1.27.2-dev (476e57b)

Discovery Timeline

  • 2026-03-09 - CVE CVE-2025-68402 published to NVD
  • 2026-03-11 - Last updated in NVD database

Technical Details for CVE-2025-68402

Vulnerability Analysis

This authentication bypass vulnerability (CWE-287) stems from a cryptographic implementation flaw in FreshRSS's password verification logic. The bcrypt hashing algorithm has a well-documented 72-byte input limit, after which all additional bytes are silently truncated. When the development team increased the nonce length from 40 to 64 characters, the resulting input string to password_verify() exceeded the effective comparison threshold.

The vulnerability is classified as network-accessible and requires no prior authentication, though it does have some attack complexity due to the specific conditions required. An attacker can exploit this flaw remotely against any FreshRSS instance running the affected edge branch code. The impact is limited to confidentiality—unauthorized read access to user accounts—without direct integrity or availability implications.

Root Cause

The root cause is the improper construction of the verification string passed to PHP's password_verify() function. By concatenating a 64-character SHA-256 nonce with a portion of the bcrypt hash, the resulting string pushes the actual user password beyond bcrypt's 72-byte processing limit. Since bcrypt only evaluates the first 72 bytes of input, and the nonce alone consumes 64 of those bytes, only 8 bytes of the actual password (or bcrypt hash portion) are considered during verification. This effectively neutralizes password verification, as the truncated input matches regardless of what password the user provides.

Attack Vector

The attack vector is network-based, requiring an attacker to send authentication requests to a vulnerable FreshRSS instance. The exploitation flow involves:

  1. The attacker identifies a FreshRSS instance running the vulnerable edge branch code
  2. The attacker attempts to log in with a known or enumerated username
  3. Due to the bcrypt truncation issue, any password submitted will pass verification
  4. The attacker gains unauthorized access to the target user account

Since the vulnerability bypasses password verification entirely, no brute forcing or password guessing is required. The attacker simply needs to know or guess a valid username to gain access to that account.

Detection Methods for CVE-2025-68402

Indicators of Compromise

  • Multiple successful authentication events from unusual IP addresses or geographic locations
  • Logins to user accounts at irregular times inconsistent with normal user behavior
  • Access pattern anomalies where users appear logged in simultaneously from multiple distinct locations
  • Unexpected changes to RSS feed subscriptions, user settings, or account configurations

Detection Strategies

  • Monitor authentication logs for successful logins from IP addresses not previously associated with user accounts
  • Implement anomaly detection for login patterns, flagging accounts with sudden changes in access behavior
  • Review web server access logs for authentication endpoint activity from suspicious sources
  • Correlate authentication events with user-reported unauthorized access or suspicious activity

Monitoring Recommendations

  • Enable detailed authentication logging in FreshRSS to capture login attempts with timestamps and source IPs
  • Configure alerting for multiple successful logins to the same account from geographically distant locations within short timeframes
  • Implement session monitoring to detect concurrent active sessions for individual user accounts
  • Review FreshRSS version information in deployment inventory to identify instances running vulnerable edge branch code

How to Mitigate CVE-2025-68402

Immediate Actions Required

  • Update FreshRSS to version 1.27.2-dev (commit 476e57b) or later immediately
  • If running the edge branch, verify the current commit hash and update if within the vulnerable range (57e1a37 to 00f2f04)
  • Force password resets for all user accounts after patching to ensure authentication integrity
  • Review authentication logs for evidence of unauthorized access prior to patching

Patch Information

The vulnerability is fixed in FreshRSS version 1.27.2-dev at commit 476e57b. The fix corrects the password verification logic to properly handle the nonce length without triggering bcrypt's truncation behavior. The patch is available through the GitHub commit. Additional context is available in Pull Request #8061 and Pull Request #8320. The full security advisory is documented at GHSA-pcq9-mq6m-mvmp.

It is important to note that this issue was only present in the edge branch and never affected any stable release versions.

Workarounds

  • Temporarily disable external access to the FreshRSS instance by restricting it to trusted networks or VPN-only access
  • Implement additional authentication layers such as HTTP Basic Authentication or reverse proxy authentication in front of FreshRSS
  • If unable to patch immediately, revert to a stable release version which is not affected by this vulnerability
  • Consider temporarily disabling user registrations and restricting login access while remediation is in progress
bash
# Update FreshRSS to the patched version
cd /path/to/freshrss
git fetch origin
git checkout 476e57b04646416e24e24c56133c9fadf9e52b95
# Or update to the latest edge branch
git pull origin edge

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.