CVE-2026-57149
Received Received - Intake

Code Execution in Plone Classic Portlet

Vulnerability report for CVE-2026-57149, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-22

Last updated on: 2026-09-22

Assigner: GitHub, Inc.

Description

plone.app.portlets.portlets provides a Plone-specific user interface for plone.portlets, as well as a standard set of portlets that ship with Plone. Starting in version 5.0.0 and prior to versions 5.0.8, 6.0.4, and 7.0.2, the Classic portlet (plone.app.portlets.portlets.classic) used its user-supplied template/macro fields to build a TALES path expression that was then evaluated by the TAL path() helper. Because the value was interpreted as a full TALES expression, a user able to add or edit a Classic portlet could supply a crafted value that escapes simple path traversal and is evaluated as arbitrary code. This is exploitable by any authenticated user who can configure a Classic portlet - which, with the default role map, includes regular users on their personal dashboard. The result is code execution in the context of the Plone process, i.e. a privilege escalation across the trust boundary between an authenticated web user and the server-side process. The problem has been patched in `plone.app.portlets` 5.0.8, 6.0.4, and 7.0.2. Some workarounds are available. Restrict who can manage portlets: remove the `plone.app.portlets.ManageOwnPortlets` permission from untrusted roles, and limit Manage portlets to trusted administrators (usually this is already restricted to the Manager and Site Administrator roles). Where the Classic portlet is not needed, unregister it so it cannot be added. This would need to be done by editing a `portlets.xml` in your own code. One may also effectively disable showing the classic portlet by customising its template. In the Zope Management Interface go to the `portal_view_customizations` tool, locate the `classic.pt` template and click it. Click the Customize button. Remove all text and replace it with `<div>The classic portlet was disabled.</div>`. (This is not a recommended way of customizing a template, but in this case it is quite effective.)

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-22
Last Modified
2026-09-22
Generated
2026-09-22
AI Q&A
2026-09-22
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 5 associated CPEs
Vendor Product Version / Range
plone plone.app.portlets From 5.0.0 (inc) to 7.0.2 (exc)
plone plone.app.portlets to 5.0.8 (exc)
plone plone.app.portlets 5.0.8
plone plone.app.portlets 6.0.4
plone plone.app.portlets 7.0.2

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-95 The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes code syntax before using the input in a dynamic evaluation call (e.g. "eval").

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This is a critical Remote Code Execution (RCE) vulnerability in the plone.app.portlets package. It allows authenticated users to execute arbitrary code by injecting malicious TALES expressions through the Classic portlet's template or macro fields. The input is evaluated as a full TALES expression, bypassing simple path traversal restrictions.

Detection Guidance

Check Plone versions for affected releases (5.0.0 to 7.0.1). Inspect Classic portlet configurations for unauthorized template/macro modifications. Review user permissions for plone.app.portlets.ManageOwnPortlets access.

Impact Analysis

An attacker with basic user access can escalate privileges to execute code on the server. This could lead to full system compromise, data theft, or unauthorized modifications. The attack requires only network access and low privileges, making it highly dangerous.

Compliance Impact

This vulnerability could lead to unauthorized data access or modification, violating GDPR's integrity and confidentiality requirements or HIPAA's security rules. Organizations using affected Plone versions may face compliance violations if exploited.

Mitigation Strategies

Upgrade plone.app.portlets to versions 5.0.8, 6.0.4, or 7.0.2. Remove plone.app.portlets.ManageOwnPortlets permission from untrusted roles. Unregister Classic portlet if unused. Customize classic.pt template to disable it via Zope Management Interface.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-57149. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart