CVE-2026-55248
largeDoS, SSRF and stored XSS via RSS portlet in Plone plone.app.portlets
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.
| plone.app.portlets | All 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) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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 news0 stories
No ingested article mentions this CVE yet.