☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 9.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:H 🐛 CWE-400
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-55248

CVE-2026-55248 Vulnerability in Plone
📅 PUBLISHED: 2026-08-28 00:00 UTC 🔄 UPDATED: 2026-10-11 17:42 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.44%
👁️
0.44% probability
11.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 9.1
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: H Availability High
9.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-55248 is a critical composite vulnerability in plone.app.portlets, a component of the Plone content management system that provides portlet management functionality and the user interface for the plone.portlets framework. An authenticated attacker with member-level privileges who can add an RSS portlet can trigger multiple failure conditions: (1) a denial-of-service via a crafted feed URL pointing to an excessively large response, causing uncontrolled memory consumption in the src/plone/app/portlets/portlets/rss.py module; (2) server-side request forgery (SSRF) allowing internal network probing via permissive URL validation; and (3) stored cross-site scripting (XSS) via a malicious JavaScript URL supplied as a feed item link. The vulnerability carries a CVSS score of 9.1 (Critical) and affects all Plone deployments running plone.app.portlets prior to fix versions 5.0.8, 6.0.4, and 7.0.2.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability resides within the RSS portlet component of plone.app.portlets, specifically in the module at path src/plone/app/portlets/portlets/rss.py. The description identifies five affected code elements: _rss_feed_url_validator, _normal_url_validator, RSSFeed._retrieveFeed, RSSFeed._buildItemDict, and the FEED_DATA in-memory cache. These collectively expose three distinct attack vectors that compound into a critical-severity issue.

Attack Vector 1 — Denial of Service via Excessive Memory Consumption (CWE-400): The _rss_feed_url_validator function fails to impose any size limitation on the content retrievable from a feed URL. When a user with member-level privileges creates or modifies an RSS portlet and sets the feed URL to point to a very large resource, the RSSFeed._retrieveFeed method will download the entire response into memory without truncation or size cap. The downloaded data is then processed and, per the NVD description, "retained in memory," compounding the memory footprint. The FEED_DATA in-memory cache retains this data across requests, meaning the excessive memory allocation persists rather than being released after the request completes. A single authenticated attacker can repeatedly trigger this behavior to exhaust server memory, causing service degradation or full denial of service for all users of the Plone instance.

Attack Vector 2 — Server-Side Request Forgery (SSRF): The RSS URL handling logic — encompassing both _rss_feed_url_validator and _normal_url_validator — fails to enforce adequate restrictions on the destination of feed requests. The validators accept internal hosts, IP addresses, single-word domains (e.g., http://intranet/), and explicit port specifications. This permits an authenticated attacker to craft a feed URL that points to internal network services, such as http://10.0.0.5:8080/, http://localhost:5432/, or http://database.internal/. When the RSS portlet attempts to fetch the feed, the Plone server performs server-side HTTP requests to these internal targets, effectively acting as a proxy. This enables an attacker to probe internal network topology, identify open ports, fingerprint internal services, and potentially access administrative endpoints that are not exposed to the public internet.

Attack Vector 3 — Stored Cross-Site Scripting (XSS): The RSSFeed._buildItemDict method processes feed items and retains the link field from each item. The validation logic fails to reject JavaScript URLs (e.g., javascript:alert(document.cookie)). When a feed item supplies such a link, it is retained as the item's link attribute. When a victim user subsequently views the RSS portlet containing this malicious feed item and clicks or otherwise triggers the link, the JavaScript executes in the context of the victim's browser session within the Plone application. Because the malicious payload persists within the feed data cached in FEED_DATA, this constitutes stored XSS affecting any user who views the compromised portlet.

The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:H reflects: network attack vector, low attack complexity, low privilege requirement (member account), no user interaction required for the DoS and SSRF components, scope change (compromise affects resources beyond the vulnerable component), low confidentiality impact, low integrity impact, and high availability impact.

Insufficient technical detail is available in the NVD description to provide exact line-by-line code analysis of the flawed validation logic or the precise mechanism by which the FEED_DATA cache retention is implemented.

Exploitation Scenarios

Scenario 1 — Denial of Service Campaign

  1. Reconnaissance/target identification: The attacker identifies a Plone-based website by fingerprinting HTTP response headers, page footers, or using search engine dorks such as http.title:"Plone" or http.component:"plone" on internet-wide scanning platforms. The attacker then verifies that RSS portlets are enabled on the site.
  2. Flaw trigger: The attacker authenticates with a member-level account and navigates to the portlet management interface to add a new RSS portlet. In the feed URL field, the attacker supplies a URL pointing to a known-large resource (e.g., a several-gigabyte file hosted on a public or attacker-controlled server).
  3. Payload/execution: Upon saving and rendering the portlet, RSSFeed._retrieveFeed downloads the entire large response into memory. The FEED_DATA cache retains this data, preventing garbage collection. The attacker repeats this process, creating multiple RSS portlets each pointing to large resources, or repeatedly updating a single portlet with new large URLs.
  4. Post-exploitation impact: Server memory is exhausted, causing the Plone application to become unresponsive, crash, or be killed by the operating system's out-of-memory (OOM) killer. This results in availability loss for all users of the Plone instance, not just the attacker.

Scenario 2 — Internal Network Probing via SSRF

  1. Reconnaissance/target identification: The attacker identifies a public-facing Plone instance. The attacker possesses or obtains a low-privilege member account.
  2. Flaw trigger: The attacker adds an RSS portlet and sets the feed URL to an internal IP address or hostname with a specific port, such as http://192.168.1.10:3306/ or http://127.0.0.1:8081/. The permissive validators accept this URL without blocking internal addresses.
  3. Payload/execution: The Plone server performs an HTTP request on behalf of the attacker to the internal target. Response timing, content, or error messages returned in the portlet reveal whether the port is open, closed, or filtered. The attacker iterates through a range of internal IP addresses and ports to map the internal network.
  4. Post-exploitation impact: The attacker gains insight into internal network topology, discovers running services (databases, admin panels, internal APIs), and potentially accesses sensitive internal endpoints that should not be reachable from the public internet. Successful SSRF combined with weak internal service authentication could lead to further compromise.

Scenario 3 — Stored XSS Against Privileged Users

  1. Reconnaissance/target identification: The attacker identifies a Plone site with RSS portlets and determines that site administrators or content editors view dashboard pages containing portlets.
  2. Flaw trigger: The attacker hosts an RSS feed (or leverages an existing feed they can control) and includes a feed item with a link field set to javascript:alert(document.cookie) or a more sophisticated malicious script.
  3. Payload/execution: The attacker configures an RSS portlet pointing to this feed. RSSFeed._buildItemDict retains the JavaScript URL as the item's link. When an administrator or editor views the page containing the portlet and clicks the malicious feed item link, the JavaScript executes in their browser session.
  4. Post-exploitation impact: The XSS payload can steal session cookies, perform actions on behalf of the authenticated administrator (such as creating backdoor accounts, modifying content, or exfiltrating data), or deliver a keylogger. Given the CVSS integrity impact of Low, the attacker could potentially escalate privileges by leveraging the administrator's session to install malicious Plone add-ons.

No public PoC is available; attack chains are inferred from vulnerability class and the NVD description.

Proof of Concept Intelligence

No public proof-of-concept is currently available for this vulnerability. Exploitation may still be possible because:

  1. The vulnerability points to logical flaws (missing input validation, absent size limits, and permissive URL filtering) rather than memory-corruption bugs that require precise offsets or heap grooming. Such logic flaws are typically trivial to exploit once understood.
  2. The attack vectors are straightforward to reproduce: any authenticated member can create an RSS portlet without special privileges, and the DoS vector requires no complex payload construction.
  3. The affected component, src/plone/app/portlets/portlets/rss.py, is part of a widely deployed open-source CMS, meaning source code analysis is possible for any security researcher or attacker.

Defenders should monitor the following resources for the disclosure of future PoC material:

  • The Plone security advisory page and the plone.app.portlets GitHub repository issue tracker for disclosure discussions
  • Exploit-db (exploit-db.com), Packet Storm Security, and GitHub for published exploit code
  • NVD/CNVD updates for revised descriptions with additional technical detail
  • Public exploit development mailing lists and security research blogs focusing on CMS and Python web-application vulnerabilities

Impact Assessment

CVSS Breakdown per Vector Components:

  • Attack Vector (AV:N): The vulnerability is exploitable over the network; no physical or adjacent-network access required.
  • Attack Complexity (AC:L): No special conditions must be met beyond having a member account. No race conditions, specific network timing, or advanced knowledge required.
  • Privileges Required (PR:L): An attacker must have member-level authentication on the Plone site. This lowers the barrier to exploitation compared to administrator-only vulnerabilities.
  • User Interaction (UI:N): The DoS and SSRF vectors require no user interaction. The XSS vector requires victim interaction but contributes to the composite score.
  • Scope (S:C): The impact extends beyond the vulnerable component. The SSRF vector can compromise internal network resources outside the Plone application; the DoS vector affects the entire Plone instance.
  • Confidentiality (C:L): The SSRF vector enables limited disclosure of internal service responses and network topology.
  • Integrity (I:L): The XSS vector permits limited modification of content or execution of unauthorized actions within the victim's browser session.
  • Availability (A:H): The DoS vector can completely disrupt the Plone service, affecting all users.

Business Impact: Plone is widely used by enterprises, government agencies, and NGOs for public-facing websites, intranets, and document-management portals. A successful exploitation chain combining SSRF with DoS can result in: (1) prolonged service outages damaging organizational reputation and operational continuity; (2) unauthorized reconnaissance of internal network infrastructure, potentially revealing sensitive service configurations; (3) session hijacking of privileged content managers; and (4) regulatory compliance implications if internal network data is exposed.

Blast Radius: All users of the Plone instance are affected by the availability impact. The SSRF vector extends the blast radius to all internal network hosts reachable from the Plone server, potentially including databases, internal APIs, monitoring systems, and other critical infrastructure. The XSS vector specifically targets privileged users (editors, administrators) who are most likely to interact with portlet content.

Detection Guidance

Sigma Rule

title: Plone RSS Portlet CVE-2026-55248 Exploitation Attempt
id: a3f7b2c9-4d81-4e5a-9f2c-7b8d0e1a2c3f
status: experimental
description: Detects RSS portlet creation/modification with internal IP addresses, suspicious ports, or oversized feed URLs in Plone CMS logs.
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-55248
author: valtersit.com Threat Intelligence
date: 2026/05/15
logsource:
    category: application
    product: plone
    service: zope
detection:
    selection_rss_portlet:
        event: "portlet_add" OR "portlet_edit"
        portlet_type: "RSS"
    selection_internal_url:
        feed_url|contains:
            - "10."
            - "172.16."
            - "172.17."
            - "172.18."
            - "172.19."
            - "172.20."
            - "172.21."
            - "172.22."
            - "172.23."
            - "172.24."
            - "172.25."
            - "172.26."
            - "172.27."
            - "172.28."
            - "172.29."
            - "172.30."
            - "172.31."
            - "192.168."
            - "127.0.0.1"
            - "localhost"
            - "0.0.0.0"
    selection_ports:
        feed_url|contains:
            - ":21/"
            - ":22/"
            - ":23/"
            - ":25/"
            - ":3306/"
            - ":5432/"
            - ":6379/"
            - ":8080/"
            - ":9200/"
            - ":3389/"
    condition: selection_rss_portlet AND (selection_internal_url OR selection_ports)
level: high
falsepositives:
    - Legitimate configuration of RSS portlets pointing to internal RSS feeds (e.g., corporate news feeds)
tags:
    - attack.t1190
    - cve.2026.55248
    - cwe.400

YARA Rule

rule CVE_2026_55248_Plone_RSS_Portlet_Exploit
{
    meta:
        author = "valtersit.com Threat Intelligence"
        date = "2026-05-15"
        description = "Detects code or log patterns associated with CVE-2026-55248 exploitation in plone.app.portlets"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-55248"
        cve = "CVE-2026-55248"
        severity = "critical"
    strings:
        $s1 = "_rss_feed_url_validator" ascii nocase
        $s2 = "_normal_url_validator" ascii nocase
        $s3 = "RSSFeed._retrieveFeed" ascii nocase
        $s4 = "RSSFeed._buildItemDict" ascii nocase
        $s5 = "FEED_DATA" ascii nocase
        $s6 = "plone.app.portlets" ascii nocase
        $s7 = "portlets/rss.py" ascii nocase
        $s8 = "javascript:" ascii nocase
        $s9 = "http://10." ascii
        $s10 = "http://192.168." ascii
        $s11 = "http://172.1" ascii
        $s12 = "http://127.0.0.1" ascii
        $s13 = "http://localhost" ascii nocase
    condition:
        uint16(0) == 0x5A4D or uint32(0) == 0x464C457F or filesize < 10MB
        and (
            (2 of ($s1, $s2, $s3, $s4, $s5) and 1 of ($s9, $s10, $s11, $s12, $s13)) or
            ($s8 and $s6) or
            ($s7 and 1 of ($s9, $s10, $s11, $s12, $s13))
        )
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2026-55248 Plone RSS Portlet SSRF Attempt - Internal IP in Feed URL"; flow:established,to_server; content:"POST"; http_method; content:"/portlet"; http_uri; content:"rss"; http_uri; content:"feed_url"; http_client_body; pcre:/feed_url[\"']?\s*[:=]\s*[\"']?(http:\/\/)?(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|127\.0\.0\.1|localhost)[^\"']*/i; classtype:attempted-recon; sid:20265501; rev:1; metadata:created_at 2026_05_15, updated_at 2026_05_15, cve CVE-2026-55248;)

alert http any any -> $HOME_NET any (msg:"CVE-2026-55248 Plone RSS Portlet SSRF Attempt - Suspicious Port in Feed URL"; flow:established,to_server; content:"POST"; http_method; content:"/portlet"; http_uri; content:"rss"; http_uri; content:"feed_url"; http_client_body; pcre:/feed_url[\"']?\s*[:=]\s*[\"']?http:\/\/[^\"']*:(22|21|23|25|3306|5432|6379|9200|3389)[\/\"']/i; classtype:attempted-recon; sid:20265502; rev:1; metadata:created_at 2026_05_15, updated_at 2026_05_15, cve CVE-2026-55248;)

alert http any any -> $HOME_NET any (msg:"CVE-2026-55248 Plone RSS Portlet XSS Payload in Feed Link"; flow:established,to_server; content:"POST"; http_method; content:"/portlet"; http_uri; content:"rss"; http_uri; content:"feed_url"; http_client_body; content:"javascript:"; nocase; pcre:/javascript\s*:/i; classtype:web-application-attack; sid:20265503; rev:1; metadata:created_at 2026_05_15, updated_at 2026_05_15, cve CVE-2026-55248;)

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-55248 Plone RSS Portlet Potential DoS - Large Response to Feed URL"; flow:established,to_client; content:"Content-Length"; http_header; pcre:/Content-Length:\s*[0-9]{9,}/i; classtype:denial-of-service; sid:20265504; rev:1; metadata:created_at 2026_05_15, updated_at 2026_05_15, cve CVE-2026-55248;)

Elastic Detection

// EQL Rule: Detects RSS portlet modification with internal URLs or JavaScript payloads
// Adjust index patterns to match your Plone/Zope application logs

sequence by host.name, user.name with maxspan=5m
  [any where process.name == "python" and event.action == "portlet_add" and
     (message like "*RSS*" or command_line like "*rss*")]
  [any where process.name == "python" and
     (message like "*10.*" or message like "*192.168.*" or message like "*172.16.*" or
      message like "*127.0.0.1*" or message like "*localhost*" or message like "*javascript:*") and
     (message like "*feed_url*" or message like "*portlet*")]

Splunk SPL Query

index=plone sourcetype=zope_event_log
| search (event="portlet_add" OR event="portlet_edit") portlet_type="RSS"
| regex feed_url="(http:\/\/)?(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|127\.0\.0\.1|localhost|0\.0\.0\.0)"
| table _time, user, event, portlet_type, feed_url
| stats count by user, feed_url
| where count > 5
index=plone sourcetype=zope_event_log
| search event="portlet_add" OR event="portlet_edit" portlet_type="RSS"
| regex feed_url="javascript:"
| table _time, user, feed_url
index=plone sourcetype=access_combined
| search uri="*portlet*rss*"
| regex uri="feed_url=.*(10\.|192\.168\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[0-1]\.|127\.0\.0\.1|localhost)"
| stats count by src_ip, uri

Wazuh OSSEC Rule

<group name="plone,">
  <rule id="311521" level="12">
    <decoded>plone_event_log</decoded>
    <match>portlet_add|portlet_edit</match>
    <match>RSS</match>
    <regex>feed_url\s*=\s*["']?https?://(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|127\.0\.0\.1|localhost|0\.0\.0\.0)</regex>
    <description>CVE-2026-55248: Plone RSS Portlet SSRF - Internal IP address in feed URL</description>
    <group>attack.t1190,reconnaissance,cve_2026_55248,</group>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>

  <rule id="311522" level="14">
    <decoded>plone_event_log</decoded>
    <match>portlet_add|portlet_edit</match>
    <match>RSS</match>
    <regex>feed_url\s*=\s*["']?https?://[^"'&]+:(21|22|23|25|3306|5432|6379|9200|3389)[/"']</regex>
    <description>CVE-2026-55248: Plone RSS Portlet SSRF - Suspicious port in feed URL</description>
    <group>attack.t1190,reconnaissance,cve_2026_55248,</group>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>

  <rule id="311523" level="14">
    <decoded>plone_event_log</decoded>
    <match>portlet_add|portlet_edit</match>
    <match>RSS</match>
    <regex>feed_url\s*=\s*["']?javascript:</regex>
    <description>CVE-2026-55248: Plone RSS Portlet XSS - JavaScript URL in feed</description>
    <group>attack.t1190,xss,cve_2026_55248,</group>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch Confidence: 0/4 — UNPATCHED. No patch evidence from any tracked source has been confirmed, and no official vendor advisory or patch reference exists in the provided intelligence data. However, the NVD description explicitly states that the issue "is fixed in versions 5.0.8, 6.0.4, and 7.0.2," indicating that fix versions have been released, but patch evidence has not been independently verified by tracked sources.

Immediate Mitigations (apply until patching is possible):

  1. Restrict the ability to add/edit RSS portlets: Implement a security policy that restricts the Add portlet and Edit portlet permissions for RSS portlets to a small set of trusted site administrators. Remove the ability for member-level users to create RSS portlets if not required for business operations. In Plone, this can be achieved via the Zope Management Interface (ZMI) by modifying the relevant workflow permissions or setting explicit deny rules on the plone.app.portlets permission mappings.
  2. Disable RSS portlets entirely: If RSS portlets are not essential to site functionality, remove the RSS portlet type from the available portlet types by editing the portlet manager configuration or site layout. Use Plone's @@manage-portlets interface or control panel to remove existing RSS portlets from all pages.
  3. Network-level egress filtering: Deploy firewall rules on the Plone server that block outbound HTTP/HTTPS requests to internal RFC-1918 address spaces (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) and to loopback addresses (127.0.0.0/8). Also restrict outbound requests to non-standard ports. This limits the SSRF impact even if the application-level validation is bypassed.
  4. Web Application Firewall (WAF) rules: Deploy WAF rules that inspect POST requests to portlet management endpoints and block submissions containing internal IP addresses, localhost references, or javascript: schemes in feed URL fields.
  5. Memory/resource monitoring: Implement aggressive memory-usage monitoring on Plone instances with alerting thresholds. This provides early warning for potential DoS exploitation attempts.

Patch/Upgrade Steps:

  1. Upgrade plone.app.portlets to version 5.0.8 (for Plone 5.x), 6.0.4 (for Plone 6.0.x), or 7.0.2 (for Plone 7.x) as appropriate for your deployment. Use the standard Plone package upgrade mechanism:
    bin/pip install "plone.app.portlets>=5.0.8,<6"  # for Plone 5.x
    bin/pip install "plone.app.portlets>=6.0.4,<7"  # for Plone 6.0.x
    bin/pip install "plone.app.portlets>=7.0.2,<8"  # for Plone 7.x
    
    Then rebuild the instance (bin/buildout or bin/instance fg as appropriate) and run any required upgrade steps via the Plone control panel.
  2. After upgrading, verify that existing RSS portlet configurations are still valid and that no malicious feed URLs remain cached in FEED_DATA. Restart the Plone ZEO client or ZServer instance to clear in-memory caches.

Long-Term Hardening:

  1. Apply the principle of least privilege: Audit all user roles and ensure that only users with explicit business justification can create or modify portlets. Use Plone's workflow and role-permission matrix to enforce this.
  2. Regular update cadence: Subscribe to Plone security announcements and apply security updates within the vendor-recommended timeframe. Plone maintains a security contact process for reporting and receiving vulnerability notifications.
  3. Network segmentation: Place Plone servers in a DMZ segment that cannot directly reach sensitive internal network resources. Route any legitimate outbound requests (e.g., to trusted RSS feeds) through an explicit HTTP proxy with allowlist rules.
  4. Input validation audit: Review all URL-validation code in your Plone deployment to ensure that RFC-1918 addresses, loopback addresses, and non-standard schemes are rejected. The fix in versions 5.0.8/6.0.4/7.0.2 includes improved validation; verify that your deployment applies these validators consistently.
  5. Monitor for post-patch regressions: After upgrading, verify that RSS portlets pointing to legitimate external feeds continue to function, confirming that the new URL validators do not break legitimate business use cases.

References

  1. NVD Entry — CVE-2026-55248: https://nvd.nist.gov/vuln/detail/CVE-2026-55248 — The primary vulnerability record providing the technical description, CVSS vector, CWE classification, and affected version information used in this report.

  2. Plone Security Page: https://plone.org/security — The official Plone security information page where vendor advisories and patch announcements are published. Defenders should monitor this page for the official advisory corresponding to this CVE.

  3. plone.app.portlets GitHub Repository: https://github.com/plone/plone.app.portlets — The source repository for the affected component (src/plone/app/portlets/portlets/rss.py). Defenders can inspect commit history for the fix commits addressing versions 5.0.8, 6.0.4, and 7.0.2.

  4. Directory of Plone-related CVEs (CNVD/CVE listing): https://www.cve.org/CVERecord?id=CVE-2026-55248 — The CVE Record page maintained by the CVE Program providing cross-referenced metadata and any subsequent informational updates.

  5. MITRE ATT&CK Technique T1190: https://attack.mitre.org/techniques/T1190/ — Reference for the associated MITRE ATT&CK technique used for exploitation of public-facing applications, applicable to the SSRF and XSS vectors of this vulnerability.

No known threat actor campaigns or exploit-in-the-wild evidence has been identified for this CVE as of this writing. The vulnerability is not listed on the CISA Known Exploited Vulnerabilities (KEV) catalog. It is classified as unpatched in the provided intelligence data with a patch confidence of 0/4, although the NVD description indicates fix versions are available. Defenders should verify the latest patch status directly with Plone release channels.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"Plone"
http.component:"plone"
ssl.cert.subject.CN:"plone"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-55248/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.