Skip to main content

FreshRSS CVE-2025-68148

HIGH
Allocation of Resources Without Limits or Throttling (CWE-770)
2025-12-27 security-advisories@github.com
7.5
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Control or MITM a polled feed server
  2. Delivery
    Return HTTP 429 with large Retry-After for many feeds
  3. Exploit
    Poison domain-keyed retry-after cache
  4. Execution
    Suppress feed fetching globally
  5. Impact
    Deny feed access to all users

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the attacker to influence HTTP responses for feeds that the FreshRSS instance polls - specifically returning an HTTP 429 status with a 'Retry-After' header - achievable by controlling a feed origin server, performing a man-in-the-middle on feed traffic, or getting attacker-chosen feeds subscribed on the instance. The vulnerable logic is the shared retry-after cache (FreshRSS_http_Util) that keyed the backoff file solely by domain and ignored the proxy parameter, so a single poisoned entry suppresses fetching across feeds/users. Affects FreshRSS 1.27.0 through versions before 1.28.0 only; LIMITING FACTORS: impact is availability of feed fetching only (no data exposure or code execution), it requires the attacker to control or intercept feed responses rather than only reach the FreshRSS web UI, and upgrading to 1.28.0 fully remediates it.

Impact

This is a genuine availability-only (DoS) flaw, not a high-CVSS inflation case, but its real-world priority is moderate rather than urgent. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5 HIGH) reflects remote, low-complexity exploitation with no confidentiality or integrity impact - only availability. The GitHub advisory (GHSA-qw34-frg7-gf78) is tagged as exploit, so publicly available exploit code exists, but this is NOT the same as active exploitation: the CVE is not listed in CISA KEV, so there is 'no confirmed active exploitation (not in CISA KEV)'. No EPSS score was provided in the input, so exploitation probability cannot be weighed - STATE EXPLICITLY: EPSS is MISSING, limiting predictive-exploitation assessment. The source diff confirms the root cause (CWE-770): the Retry-After cache file was keyed only by target domain and ignored the proxy, so a 429 'Retry-After' response could poison the shared cache and suppress fetching across users/feeds. Net: a real, patchable integrity-of-service issue worth remediating promptly on internet-reachable or multi-user instances, but availability-only impact and a niche product footprint keep it below true emergency priority. One caveat: CVSS marks PR:N (unauthenticated), yet practical exploitation depends on the attacker influencing feed responses (controlling a feed server, MITM, or getting a malicious feed subscribed) - verify the trust boundary for your deployment.

Exploit ScenarioDerived

An attacker who controls (or can MITM) a web server hosting feeds that a FreshRSS instance polls returns HTTP 429 responses with a large 'Retry-After' header for many feeds. Because the retry-after cache was keyed only by domain (not by proxy), FreshRSS caches the backoff and stops fetching those feeds for all users, rendering the aggregator unusable for the majority. Public exploit/advisory detail exists via the GitHub security advisory, lowering the barrier to reproduction.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 13, 2026

Denial of service in FreshRSS 1.27.0 through versions before 1.28.0 lets a remote, unauthenticated attacker who controls or intercepts HTTP responses for subscribed feeds cripple feed fetching across an entire instance. The shared retry-after backoff cache is keyed only by feed domain and ignores the configured proxy, so one poisoned HTTP 429 with a long Retry-After header causes the aggregator to stop polling for that domain for every user, making the instance effectively unusable. Publicly available exploit code exists, CVSS 3.1 rates it 7.5 (AV:N/AC:L/PR:N/UI:N/C:N/I:N/A:H - availability only), and upgrading to 1.28.0 fully remediates it.

RemediationAI

Vendor-released patch: upgrade FreshRSS to 1.28.0, which rekeys the retry-after cache by domain plus proxy and applies curl options after sanitization, per commit 7d4854a0a4f5665db599f18c34035786465639f3 (see advisory https://github.com/FreshRSS/FreshRSS/security/advisories/GHSA-qw34-frg7-gf78 and PR https://github.com/FreshRSS/FreshRSS/pull/8029). If immediate upgrade is not possible, restrict who can add or subscribe feeds so that only trusted administrators can introduce new feed origins - this removes the easiest delivery path but does not stop a man-in-the-middle or a compromised existing feed origin. Force HTTPS for all feed endpoints and enforce certificate validation on outbound fetching to make response interception impractical, though feeds served over plain HTTP or via untrusted proxies remain exposed. Because the poisoned state lives in short-lived per-domain files in the retry-after cache directory, periodically clearing that directory restores fetching after an incident, at the cost of losing legitimate backoff state and briefly increasing request volume against rate-limited origins. Disabling or removing any shared outbound proxy reduces the cross-feed blast radius described in the advisory, but with a functional trade-off for instances that need egress filtering or anonymity. None of these workarounds eliminate the root cause, which is only addressed by 1.28.0.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

FreshRSS fetches feeds through the SimplePie library and wraps it in its own response handler (app/Models/SimplePieResponse.php) plus a lightweight HTTP helper (app/Utils/httpUtil.php). When a fetched feed returns HTTP 429, the code reads the Retry-After header and persists a backoff marker to a cache file whose name is derived from the feed's domain - FreshRSS_http_Util::getRetryAfterFile() built the path as RETRY_AFTER_PATH . urlencode($domain) . '.txt'. Because that key omitted the proxy dimension, feeds reached through a specific proxy shared a backoff file with all other fetches of the same domain, and, more importantly, any attacker able to return a 429 Retry-After from an origin matching a domain used by many feeds could poison one small file and stall fetching globally. This is a CWE-770 (Allocation of Resources Without Limits or Throttling) style weakness: the backoff mechanism is applied without scoping or bounding, so an untrusted input (the header) has disproportionate, instance-wide effect. The fix threads the proxy value (CURLOPT_PROXY) through getRetryAfter(), setRetryAfter(), and the file-name builder, appending a urlencoded '_proxy' suffix so backoff state is isolated per domain-and-proxy, and it also reworks curl option assembly in lib/lib_rss.php so curl_params are sanitized and applied consistently with the system-configured proxy. CPE cpe:2.3:a:freshrss:freshrss:*:*:*:*:*:*:*:* confirms the affected component is the FreshRSS application itself with no version restriction expressed in the CPE, so version applicability must come from the advisory text (1.27.0 to before 1.28.0).

Know when Freshrss gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

NVD PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Remote low-complexity cache poisoning via a crafted 429/Retry-After response requiring no FreshRSS auth; availability-only impact, so C:N/I:N/A:H and S:U.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionNVD

FreshRSS is a free, self-hostable RSS aggregator. From version 1.27.0 to before 1.28.0, An attacker could globally deny access to feeds via proxy modifying to 429 Retry-After for a large list of feeds on given instance, making it unusable for majority of users. This issue has been patched in version 1.28.0.

Executive ViewAI

Why It Matters

A high-severity availability flaw in FreshRSS (versions 1.27.0 through 1.27.x) allows an unauthenticated remote party to halt feed collection across an entire deployment by poisoning a shared backoff cache with a single malicious HTTP 429 response. Because the cache is keyed only by feed domain and ignores proxy configuration, one attacker-controlled or intercepted response can stop the aggregator from polling that domain for every user on the instance, rendering the platform effectively unusable for content delivery. Leadership should care because the impact is organization-wide and requires no credentials or user interaction, and publicly available exploit code exists, though no confirmed active exploitation (CISA KEV) has been reported.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 62% exploitable
Prevalence
Low
niche self-hosted RSS aggregator, limited enterprise/production footprint
Exploit
POC
Public exploit code exists
Data Quality
3 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Affected Products (CPE)NVD

cpe:2.3:a:freshrss:freshrss:*:*:*:*:*:*:*:*
CVE-2025-31134 HIGH POC
7.5 Jun 04

FreshRSS versions prior to 1.26.2 suffer from an information disclosure vulnerability that allows unauthenticated remote

CVE-2025-58173 HIGH POC
7.4 Dec 16

Path traversal in FreshRSS 1.23.0 through 1.27.0 lets an authenticated low-privilege user expose and invoke the installe

CVE-2025-46341 HIGH POC
7.1 Jun 04

Critical authentication bypass vulnerability in FreshRSS versions prior to 1.26.2 that allows authenticated attackers to

CVE-2025-32015 MEDIUM POC
6.7 Jun 04

FreshRSS is a self-hosted RSS feed aggregator. Prior to version 1.26.2, HTML is sanitized improperly inside the `<iframe

CVE-2025-31136 MEDIUM POC
6.7 Jun 04

FreshRSS is a self-hosted RSS feed aggregator. Prior to version 1.26.2, it's possible to run arbitrary JavaScript on the

CVE-2025-59949 MEDIUM POC
6.5 Dec 18

Forced session termination in FreshRSS versions prior to 1.27.1 allows an attacker-controlled web page to log out an aut

CVE-2023-22481 MEDIUM POC
5.5 Mar 06

FreshRSS is a self-hosted RSS feed aggregator. Rated medium severity (CVSS 5.5), this vulnerability is low attack comple

CVE-2025-46339 MEDIUM POC
4.3 Jun 04

A security vulnerability in FreshRSS (CVSS 4.3). Risk factors: public PoC available. Vendor patch is available.

CVE-2025-31482 MEDIUM POC
4.3 Jun 04

FreshRSS is a self-hosted RSS feed aggregator. A vulnerability in versions prior to 1.26.2 causes a user to be repeatedl

CVE-2025-62166 HIGH
7.5 Mar 09

self-hostable RSS aggregator. versions up to 1.28.0 is affected by improper access control (CVSS 7.5).

CVE-2022-23497 HIGH
7.5 Dec 09

FreshRSS is a free, self-hostable RSS aggregator. Rated high severity (CVSS 7.5), this vulnerability is remotely exploit

CVE-2025-68932 LOW POC
2.9 Dec 27

Weak randomness in FreshRSS versions prior to 1.28.0 lets attackers predict the 'keep me logged in' remember-me tokens,

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy