ZeroHour

CVE-2026-55248

large

DoS, SSRF and stored XSS via RSS portlet in Plone plone.app.portlets

CVSS 3.1
9.1 critical
EPSS
<1%p25
Published
()
Modified
AI analysis

plone.app.portlets, the Plone add-on that provides portlets and the Plone-specific portlet user interface, mishandles RSS portlet feed URLs in versions prior to 5.0.8, 6.0.4, and 7.0.2. An authenticated member allowed to add an RSS portlet can set the feed URL to a resource returning a very large response; RSSFeed._retrieveFeed downloads it and retains the data in the in-memory FEED_DATA cache, exhausting memory and denying service (CWE-400). The same URL validation logic (_rss_feed_url_validator, _normal_url_validator) accepts internal hostnames, IP addresses, single-word domains, and explicit ports, so the server-side fetch can be abused for SSRF to probe internal network services and open ports. A malicious feed can also return items whose link is a JavaScript URL, which RSSFeed._buildItemDict preserves, so attacker-supplied script executes in a victim's browser when the link is used. Any Plone deployment running an affected plone.app.portlets version is exposed, though triggering requires a member account with portlet-add privileges; no public proof-of-concept or known exploitation exists, EPSS is 0.3%, and the issue is not in CISA KEV.

What to do: Upgrade plone.app.portlets to one of the fixed versions (5.0.8, 6.0.4, or 7.0.2) matching your release series. Until then, restrict RSS portlet creation to trusted members and audit existing RSS portlets for feed URLs pointing at internal hosts/ports and for javascript: item links. Restricting outbound egress from the Plone server (blocking internal network ranges, single-label hostnames, and explicit ports) limits the SSRF probing, and capping feed sizes limits memory-exhaustion denial of service.

Affected
plone.app.portletsAll versions prior to 5.0.8, 6.0.4, and 7.0.2 (fixed per release branch in 5.0.8, 6.0.4, and 7.0.2)
Estimated exposure
large≈10,000–50,000 Plone deployments (package is bundled with the CMS) — plone.app.portlets ships with Plone itself, so the affected base roughly tracks the Plone install base, which public web-technology surveys generally place in the low tens of thousands of sites; actual exploitability is narrower because an…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

plone.app.portlets provides portlets and a Plone-specific user interface for plone.portlets. Prior to 5.0.8, 6.0.4, and 7.0.2, a member who can add an RSS portlet can set its feed URL to a very large response, causing src/plone/app/portlets/portlets/rss.py to download and retain excessive data in memory and deny service. The same RSS URL handling accepts internal hosts, IP addresses, single-word domains, and explicit ports, allowing server-side requests that can probe internal network services and open ports. A malicious feed item can also supply a JavaScript URL that is retained as the item link and can execute script when used by a victim. The affected logic includes _rss_feed_url_validator, _normal_url_validator, RSSFeed._retrieveFeed, RSSFeed._buildItemDict, and the FEED_DATA in-memory cache. This issue is fixed in versions 5.0.8, 6.0.4, and 7.0.2.

Weakness
CWE-400
Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:H

In the news

No ingested article mentions this CVE yet.