CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-55247

CVE-2026-55247: Multiple Vulnerabilities (DoS, SSRF, and Stored XSS) in plone.app.event iCalendar Import

Alon Barad
Alon Barad
Software Engineer

Aug 28, 2026·6 min read·17 visits

Executive Summary (TL;DR)

Plone's event importer failed to validate input sizes and URL protocols, enabling authenticated users to trigger Denial of Service, execute Server-Side Request Forgery, and inject Stored XSS.

A critical security vulnerability exists in plone.app.event, the event content type package for the Plone CMS. Prior to versions 5.2.4 and 6.0.1, the iCalendar import component lacked proper file size controls, URL scheme validation, and network isolation filters. Authenticated editors could exploit these deficiencies to cause denial of service via memory exhaustion, read local files, perform server-side request forgery, and inject stored cross-site scripting vectors.

Vulnerability Overview

The core event management functionality of the Plone CMS is provided by the plone.app.event package. This component features an iCalendar (.ics) import mechanism allowing editors to sync external calendars with the CMS database.

The import functionality represents a significant attack surface because it accepts arbitrary URLs from users and fetches external content directly on the server host. Prior to the release of security patches, this interface did not implement proper boundary checks or validation constraints on imported data.

Consequently, authenticated editors could leverage this trust boundary to trigger three distinct classes of security vulnerabilities: uncontrolled resource consumption leading to Denial of Service, Server-Side Request Forgery facilitating access to internal assets, and Stored Cross-Site Scripting through unvalidated URL attributes.

Root Cause Analysis

The primary vulnerability lies within the iCalendar parsing implementation in src/plone/app/event/ical/importer.py and structural URL handling in src/plone/app/event/base.py. Under default configurations, the application used Python's native urllib.request.urlopen library to fetch the resource specified by the editor.

Because the network call lacked size constraints, timeouts, or scheme validation, the server would unconditionally download and attempt to parse any remote file. During parsing, the application invoked the Zope Object Database (ZODB) transaction manager to commit changes to disk for every single imported event record. This repetitive disk I/O, combined with unrestricted file sizes, allowed attackers to exhaust server memory and CPU cycles.

Additionally, the absence of protocol and domain restrictions enabled attackers to supply non-HTTP schemes such as file:// to fetch arbitrary local server files. The system also accepted URLs pointing to loopback or private networks, turning the server into a proxy for internal scanning. Finally, the calendar fields permitted malicious URI schemes like javascript: to be saved as active hyperlinks, introducing stored XSS vectors into the CMS frontend.

Code Analysis

To address these vulnerabilities, the developers introduced substantial structural changes in commits 1e3c83c15a24d1a789cdb012593505bc5620e28e and 4de5eb3ea9e4f7f1781622e6d64fc086629d1437. The key updates replaced basic urllib calls with streaming requests objects and integrated syntactic validators.

The updated download implementation enforces binary size limits and prevents infinite redirect loops during retrieval. The logic now raises a ValueError if the HTTP headers or the actual payload size exceeds configured bounds.

Below is the comparison of the network retrieval mechanisms before and after the remediation:

# VULNERABLE CODE
# Allowed uncontrolled resource download and file:// schemas
ical_resource = urllib.request.urlopen(ical_url).read()
 
# PATCHED CODE
# Implements size limits, redirects prevention, and explicit timeouts
def download_ical(url, limit=MAXIMUM_ICAL_IMPORT_SIZE_BYTES):
    if limit <= 0:
        raise ValueError('You must pass a limit for the number of bytes.')
    
    response = requests.get(url, stream=True, allow_redirects=False, timeout=3.5)
    response.raise_for_status()
 
    length = response.headers.get('Content-Length')
    if length and int(length) > limit:
        raise ValueError('Content-Length header too large')
 
    # Limit chunk iteration to prevent downloading massive data streams
    for chunk in response.iter_content(limit + 1):
        if len(chunk) > limit:
            raise ValueError('Downloaded too much content.')
    return chunk

The fix also introduced the no_file_protocol_url validator, which restricts the destination domain. It blocks ports in URLs, stops single-label hostnames, and rejects IP notation to neutralize SSRF and local file disclosures.

Exploitation

Exploitation of these flaws requires authenticated access as an editor with permissions to configure or trigger an iCalendar import. Although authentication is required, many CMS installations grant event creation privileges to broad directories of low-privileged users.

To execute a Denial of Service attack, the attacker hosts a crafted .ics file containing hundreds of thousands of valid event definitions or a highly nested recursive structure. Upon submitting the URL to the Plone importer, the server begins retrieving the file and initiating individual ZODB commits. The server quickly reaches maximum CPU utilization, disk write bottlenecks, and eventually experiences memory exhaustion, crashing the daemon process.

To execute a Server-Side Request Forgery or Local File Disclosure, the attacker registers an import source pointing to local paths. By specifying file:///etc/passwd, the importer reads the local operating system file, which is then parsed as an iCalendar stream. Errors raised during parsing can leak snippets of the local file contents through application stack traces or logs.

Impact Assessment

The combination of Denial of Service, SSRF, and Stored XSS yields a CVSS Base Score of 9.1, indicating a critical security impact. The scope of the vulnerability is classified as changed because an attacker can leverage the application's network privileges to access external and internal systems.

While the Denial of Service impact primarily affects system availability, the SSRF vulnerability exposes highly sensitive backend infrastructure. On modern cloud architectures, this can allow attackers to probe local metadata endpoints (such as 169.254.169.254) and retrieve sensitive instance credentials or API tokens.

Lastly, the stored XSS vector jeopardizes the confidentiality of administrative sessions. If an administrative user views the imported calendar event containing a malicious URL, the payload executes in their browser, potentially leading to administrative session takeover or remote code execution via administrative endpoints.

Remediation & Bypass Analysis

The implementation of syntactic filters significantly reduces the attack surface, but several theoretical bypasses remain due to the reliance on string-based checks rather than structural resolution.

First, the no_file_protocol_url function does not resolve domain names to IP addresses before initiating the request. This leaves the system vulnerable to DNS Rebinding attacks, where an attacker-controlled domain initially resolves to a safe public IP to pass the string validation, but subsequently resolves to 127.0.0.1 during the socket connection phase.

Second, the IPv4-centric parser splits the domain string by dots to identify integer-based IPs. This parser fails to account for bracketed IPv6 notation, which may allow attackers to bypass the check and access local IPv6 interfaces (e.g., http://[::1]). System administrators must implement operating system or firewall-level controls to fully isolate outbound traffic.

Official Patches

PloneOfficial GitHub Security Advisory
PloneRelease v5.2.4
PloneRelease v6.0.1

Fix Analysis (2)

Technical Appendix

CVSS Score
9.1/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:H

Affected Systems

Plone CMS (via plone.app.event)

Affected Versions Detail

Product
Affected Versions
Fixed Version
plone.app.event
Plone
< 5.2.45.2.4
plone.app.event
Plone
>= 6.0.0, < 6.0.16.0.1
AttributeDetail
CWE IDCWE-400 (Uncontrolled Resource Consumption)
Attack VectorNetwork
CVSS Score9.1 (Critical)
ImpactDenial of Service, SSRF, Stored XSS
Exploit StatusNone
KEV StatusNot Listed
Access RequiredLow Privilege (Authenticated Editor)

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
T1190Exploit Public-Facing Application
Initial Access
CWE-400
Uncontrolled Resource Consumption

The software does not adequately control the allocation and maintenance of a limited resource, thereby enabling an actor to influence the amount of resources consumed and exhaust them.

References & Sources

  • [1]GitHub Security Advisory GHSA-r82h-mqw3-fc56

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 minutes ago•CVE-2026-109619
9.2

CVE-2026-109619: Remote Code Execution in PHP Core via Stale Global State Memory Corruption (PHP2Shell)

CVE-2026-109619 (PHP2Shell) is a critical Use-After-Free vulnerability in the core PHP engine caused by improper global state cleanup during out-of-memory exception handling across persistent worker requests.

Alon Barad
Alon Barad
1 views•6 min read
•5 minutes ago•CVE-2026-113721
4.5

CVE-2026-113721: Unsafe Link Resolution in virtualenv File Generation

In Python virtualenv prior to version 21.14.9, activation script generators and configuration writers use Path.exists() before writing files. Because Path.exists() resolves symbolic links, it returns False for dangling symlinks. Consequently, virtualenv skips unlinking pre-planted symbolic links or hard links, writing data directly to target locations outside the intended virtual environment directory.

Amit Schendel
Amit Schendel
1 views•5 min read
•9 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
31 views•5 min read
•9 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
19 views•6 min read
•10 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
18 views•5 min read
•10 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
24 views•6 min read