CVE-2026-55248
Python Análise e mitigação de vulnerabilidades

Visão geral

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).

Detalhes técnicos

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).

Impacto

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).

Exploração

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).

Etapas de exploração

  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).

Indicadores de compromisso

  • 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).

Mitigação e soluções alternativas

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).

Reações da comunidade

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).

Recursos adicionais


OrigemEste relatório foi gerado usando IA

Relacionado Python Vulnerabilidades:

CVE ID

Gravidade

Pontuação

Tecnologias

Nome do componente

Exploração do CISA KEV

Tem correção

Data de publicação

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

Avaliação de vulnerabilidade gratuita

Compare sua postura de segurança na nuvem

Avalie suas práticas de segurança na nuvem em 9 domínios de segurança para comparar seu nível de risco e identificar lacunas em suas defesas.

Solicitar avaliação

Marque uma demonstração personalizada

Pronto para ver a Wiz em ação?

"A melhor experiência do usuário que eu já vi, fornece visibilidade total para cargas de trabalho na nuvem."
David EstlickCISO
"A Wiz fornece um único painel de vidro para ver o que está acontecendo em nossos ambientes de nuvem."
Adam FletcherDiretor de Segurança
"Sabemos que se a Wiz identifica algo como crítico, na verdade é."
Greg PoniatowskiChefe de Gerenciamento de Ameaças e Vulnerabilidades