CVE-2026-55248
Python Schwachstellenanalyse und -minderung

Überblick

CVE-2026-55248 is a multi-vector vulnerability in plone.app.portlets, the portlet management package for the Plone CMS, encompassing denial of service (DoS), server-side request forgery (SSRF), and stored cross-site scripting (XSS). An authenticated member with portlet management permissions can configure the RSS portlet's feed URL to point to an arbitrarily large resource, causing excessive memory consumption; use internal hostnames, IP addresses, or explicit ports to probe internal network services; or supply a javascript: URL in a feed item link to execute script in a victim's browser. Affected versions are plone.app.portlets < 5.0.8, >= 6.0.0 and < 6.0.4, and >= 7.0.0 and < 7.0.2. The vulnerability was published on August 28, 2026, and carries a CVSS v3.1 base score of 9.1 (Critical) (GitHub Advisory, Feedly).

Technische Details

The root cause is insufficient input validation in the RSS portlet's URL handling logic, classified as CWE-400 (Uncontrolled Resource Consumption) with an estimated secondary weakness of CWE-918 (SSRF). The affected functions — _rss_feed_url_validator, _normal_url_validator, RSSFeed._retrieveFeed, RSSFeed._buildItemDict, and the FEED_DATA in-memory cache — failed to restrict feed URLs to safe external hosts, impose download size limits, or sanitize item link URLs. Specifically, the old _retrieveFeed implementation passed the feed URL directly to feedparser.parse() without a size cap, allowing unbounded memory allocation; the URL validator only checked for multi-line input and non-HTTP schemes, permitting internal IP addresses, single-word hostnames (e.g., http://backend/), and explicit port numbers (e.g., http://internal:8080/). Additionally, _buildItemDict stored item link URLs without validating them, allowing javascript: scheme URLs to persist in the FEED_DATA cache and be rendered to users (GitHub Advisory, Patch Commit).

Aufprall

Exploitation can result in three distinct impacts: a denial of service by exhausting server memory when the Plone process downloads an unbounded response into the FEED_DATA RAM cache; information disclosure and internal network reconnaissance via SSRF, where the server can be directed to probe internal hosts, private IP ranges, and open ports; and stored XSS, where a javascript: URL embedded in a feed item link is persisted and executed in the browser of any user who clicks the rendered portlet link. The scope is changed (S:C in CVSS terms), meaning the XSS impact extends beyond the Plone application to affect end-user browsers. Availability impact is rated High, while confidentiality and integrity impacts are rated Low (GitHub Advisory).

Ausnutzbarkeit

Exploitation requires low privileges — specifically, the plone.app.portlets.ManageOwnPortlets permission, which may be granted to regular site members depending on site configuration. No public proof-of-concept exploit code has been identified, and there is no evidence of in-the-wild exploitation at this time. The EPSS score is 0.0, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. NVD's SSVC assessment classifies exploitation as "none" and the attack as non-automatable (Feedly, GitHub Advisory).

Ausnutzungsschritte

  1. Reconnaissance: Identify a Plone site running a vulnerable version of plone.app.portlets (< 5.0.8, 6.0.0–6.0.3, or 7.0.0–7.0.1). Confirm that the authenticated account has the ManageOwnPortlets or Manage portlets permission.
  2. DoS — Configure oversized feed URL: Log in and navigate to a portlet-manageable page. Add an RSS portlet and set its feed URL to a URL serving a very large file (e.g., a multi-gigabyte HTTP resource). When Plone fetches the feed, RSSFeed._retrieveFeed passes the URL directly to feedparser.parse(), downloading the entire response into the FEED_DATA in-memory cache, exhausting server RAM.
  3. SSRF — Probe internal network: Set the RSS portlet feed URL to an internal address such as http://192.168.1.1/, http://backend/, or http://internal-service:8080/. The server will make an outbound HTTP request to the specified target, allowing the attacker to infer open ports and internal service availability based on response behavior or error messages.
  4. Stored XSS — Inject JavaScript URL: Host a malicious RSS feed containing an item whose <link> element uses a javascript: scheme URL (e.g., <link>javascript:alert(document.cookie)</link>). Configure the RSS portlet to fetch this feed. The _buildItemDict function stores the link without validation. When a victim user views the portlet and clicks the feed item link, the JavaScript executes in their browser context (GitHub Advisory, Patch Commit).

Indikatoren für Kompromittierung

  • Logs: Plone application logs showing feedparser.parse() calls to internal IP addresses (e.g., 10.x.x.x, 192.168.x.x, 172.16.x.x), single-word hostnames, or URLs with explicit port numbers; log entries from _retrieveFeed attempting to load feeds from file:// or javascript: scheme URLs.
  • Logs: Warning log entries matching "Refusing to load stored RSS url" or "Refusing to use link from RSS item" (present only after patching; absence of these on unpatched systems may indicate exploitation without detection).
  • Network: Outbound HTTP requests from the Plone server process to internal RFC-1918 addresses or non-standard ports, particularly to services not normally accessed by the web application.
  • Network: Unusually large or long-duration outbound HTTP connections from the Plone server, consistent with downloading a large file via the RSS portlet fetch mechanism.
  • File System / Memory: Abnormal memory consumption by the Plone/Zope process, potentially leading to OOM conditions or swap usage spikes, correlated with RSS portlet activity.
  • Application: RSS portlet configurations (stored in ZODB) containing feed URLs pointing to internal hosts, IP addresses, or URLs with explicit port numbers; feed item links using javascript: scheme URLs in the FEED_DATA cache (GitHub Advisory, Patch Commit).

Risikominderung und Problemumgehungen

Upgrade plone.app.portlets to the patched versions: 7.0.2 (for Plone 6.2), 6.0.4 (for Plone 6.1), or 5.0.8 (for Plone 6.0). The patches introduce strict URL validation via _rss_feed_url_validator (blocking IP addresses, single-word domains, explicit ports, and non-HTTP schemes), enforce a configurable download size limit (default 1 MB, adjustable via the MAXIMUM_RSS_FEED_SIZE_BYTES environment variable), and validate feed item link URLs to reject javascript: scheme URLs. If immediate upgrade is not possible, remove the plone.app.portlets.ManageOwnPortlets permission from untrusted roles and restrict portlet management to the Manager and Site Administrator roles only; additionally, unregister the RSS portlet via portlets.xml if it is not needed (GitHub Advisory).

Reaktionen der Community

The vulnerability was discovered and disclosed by the Plone Security Team, who identified it by analogy with a similar SSRF/DoS issue previously found in plone.app.event. The advisory was authored by mauritsvanrees and published on June 23, 2026, with patches released on August 28, 2026. No significant broader media coverage or notable external researcher commentary has been identified beyond the official advisory and automated CVE tracking services (GitHub Advisory).

Zusätzliche Ressourcen


QuelleDieser Bericht wurde mithilfe von KI erstellt

Verwandt Python Schwachstellen:

CVE-Kennung

Strenge

Punktzahl

Technologieen

Name der Komponente

CISA KEV-Exploit

Hat fix

Veröffentlichungsdatum

CVE-2026-55248CRITICAL9.1
  • Python logoPython
  • plone.app.portlets
NeinJaAug 28, 2026
CVE-2026-55247CRITICAL9.1
  • Python logoPython
  • plone.app.event
NeinJaAug 28, 2026
CVE-2026-55509HIGH8.8
  • Python logoPython
  • python3-wsgidav
NeinJaAug 28, 2026
CVE-2026-55485HIGH8.8
  • Python logoPython
  • piccolo-admin
NeinJaAug 28, 2026
CVE-2026-55520HIGH7.1
  • Python logoPython
  • protego
NeinJaAug 28, 2026

Kostenlose Schwachstellenbewertung

Benchmarking Ihrer Cloud-Sicherheitslage

Bewerten Sie Ihre Cloud-Sicherheitspraktiken in 9 Sicherheitsbereichen, um Ihr Risikoniveau zu bewerten und Lücken in Ihren Abwehrmaßnahmen zu identifizieren.

Bewertung anfordern

Eine personalisierte Demo anfordern

Sind Sie bereit, Wiz in Aktion zu sehen?

"Die beste Benutzererfahrung, die ich je gesehen habe, bietet vollständige Transparenz für Cloud-Workloads."
David EstlickCISO
"„Wiz bietet eine zentrale Oberfläche, um zu sehen, was in unseren Cloud-Umgebungen vor sich geht.“ "
Adam FletcherSicherheitsbeauftragter
"„Wir wissen, dass, wenn Wiz etwas als kritisch identifiziert, es auch wirklich kritisch ist.“"
Greg PoniatowskiLeiter Bedrohungs- und Schwachstellenmanagement