Various Plone hotfixes, 2021-05-18
Project description
Plone hotfix, 2021-05-18
This hotfix fixes several security issues:
Remote Code Execution via traversal in expressions. Reported by David Miller.
Writing arbitrary files via docutils and Python Script. Reported by Calum Hutton.
Stored XSS from file upload (svg, html). Reported separately by Emir Cüneyt Akkutlu and Tino Kautschke.
XSS vulnerability in CMFDiffTool. Reported by Igor Margitich.
Reflected XSS in various spots. Reported by Calum Hutton.
Various information disclosures: GS, QI, all_users. Reported by Calum Hutton.
Stored XSS from user fullname. Reported by Tino Kautschke.
Blind SSRF via feedparser accessing an internal URL. Reported by Subodh Kumar Shree.
Server Side Request Forgery via event ical URL. Reported by MisakiKata and David Miller.
Server Side Request Forgery via lxml parser. Reported by MisakiKata and David Miller.
Compatibility
This hotfix should be applied to the following versions of Plone:
Plone 5.2.4 and any earlier 5.2.x version
Plone 5.1.7 and any earlier 5.1x version
Plone 5.0.10 and any earlier 5.0.x version
Plone 4.3.20 and any earlier 4.x version
The hotfix is officially supported by the Plone security team on the following versions of Plone in accordance with the Plone version support policy: 4.3.20, 5.0.10, 5.1.7 and 5.2.4.
On Plone 4.3, 5.0 and 5.1 the hotfix is officially only supported on Python 2.7. On Plone 5.2.X it is supported on Python 2.7 and Python 3.6/3.7/3.8.
The fixes included here will be incorporated into subsequent releases of Plone, so Plone 5.2.5 and greater should not require this hotfix.
Installation
Installation instructions can be found at https://plone.org/security/hotfix/20210518
Q&A
- Q: How can I confirm that the hotfix is installed correctly and my site is protected?
A: On startup, the hotfix will log a number of messages to the Zope event log that look like this:
2021-05-18 14:07:24,176 INFO [Products.PloneHotfix20210518:43][MainThread] Applied expressions patch 2021-05-18 14:07:24,179 INFO [Products.PloneHotfix20210518:43][MainThread] Applied genericsetup patch 2021-05-18 14:07:24,181 INFO [Products.PloneHotfix20210518:43][MainThread] Applied pas patch 2021-05-18 14:07:24,182 INFO [Products.PloneHotfix20210518:43][MainThread] Applied propertymanager patch 2021-05-18 14:07:24,183 INFO [Products.PloneHotfix20210518:43][MainThread] Applied skinnable patch 2021-05-18 14:07:24,187 INFO [Products.PloneHotfix20210518:43][MainThread] Applied xmlrpc_dump_instance patch 2021-05-18 14:07:24,188 INFO [Products.PloneHotfix20210518:43][MainThread] Applied difftool patch 2021-05-18 14:07:24,238 INFO [Products.PloneHotfix20210518:43][MainThread] Applied event patch 2021-05-18 14:07:24,244 INFO [Products.PloneHotfix20210518:43][MainThread] Applied modeleditor patch 2021-05-18 14:07:24,246 INFO [Products.PloneHotfix20210518:43][MainThread] Applied namedfile patch 2021-05-18 14:07:24,283 INFO [Products.PloneHotfix20210518:43][MainThread] Applied pa_users patch 2021-05-18 14:07:24,367 INFO [Products.PloneHotfix20210518:43][MainThread] Applied portlets patch 2021-05-18 14:07:24,369 INFO [Products.PloneHotfix20210518:43][MainThread] Applied publishing patch 2021-05-18 14:07:24,371 INFO [Products.PloneHotfix20210518:43][MainThread] Applied qi patch 2021-05-18 14:07:24,372 INFO [Products.PloneHotfix20210518:43][MainThread] Applied supermodel patch 2021-05-18 14:07:24,500 INFO [Products.PloneHotfix20210518:43][MainThread] Applied theming patch 2021-05-18 14:07:24,634 INFO [Products.PloneHotfix20210518:43][MainThread] Applied transforms patch 2021-05-18 14:07:24,634 INFO [Products.PloneHotfix20210518:51][MainThread] Hotfix installed
The exact number of patches applied, will differ depending on what packages you are using. If a patch is attempted but fails, it will be logged as an error that says “Could not apply”. This may indicate that you have a non-standard Plone installation. Please investigate, and mail us the accompanying traceback if you think it is a problem in the hotfix.
- Q: How can I report problems installing the patch?
A: Contact the Plone security team at security@plone.org or visit the Gitter channel at https://gitter.im/plone/public and the forum at https://community.plone.org
- Q: How can I report other potential security vulnerabilities?
A: Please email the security team at security@plone.org rather than discussing potential security issues publicly.
Changelog
1.4 (2021-06-08)
With PLONEHOTFIX20210518_NAMEDFILE_USE_DENYLIST=1 in the OS environment, use a denylist for determining which mimetypes can be displayed inline. By default we use an allowlist with the most used image types, plain text, and PDF. The denylist contains svg, javascript, and html, which have known cross site scripting possibilities.
By popular request, allow showing PDF files inline. Note: browser preference plays a part in what actually happens.
In untrusted path expressions with modules, check that each module is allowed. In the first version of the hotfix we disallowed modules that were available as a ‘private’ alias, for example random._itertools. But if random.itertools without underscore would have been available, it was still allowed, even though itertools has not been explicitly allowed. (itertools might be fine to allow, it is just an example.) This version is a recommended upgrade for all users.
1.3 (2021-06-01)
Moved CHANGES.rst to main directory and add a version.txt there. This makes it easier to check that you have the correct version when you use the zip download from https://plone.org/security/hotfix/20210518. This file is cached, so you might get an earlier version. Check the sha1 or md5 checksum to be sure.
Define a set ALLOWED_UNDERSCORE_NAMES with allowed names. This currently contains __name__, _ and _authenticator. This makes it easier for projects to add a name in a patch if this is really needed. Be sure you know what you are doing if you override this.
Allow accessing a single underscore _. After the merge of the hotfix, Zope allows this to fix a test failure. Seems wise to allow it in the hotfix too.
Allow accessing _authenticator from plone.protect in more cases. The previous version did this for a traverse class, and now also for a traverse function.
1.2 (2021-05-19)
Allow accessing _authenticator from plone.protect. It fixes a NotFound error when submitting a PloneFormGen form, see issue 229. Should solve similar cases as well.
Fixed the expressions patch. It unintentionally changed the behavior of the TrustedBoboAwareZopeTraverse class as well. Most importantly, it let this class use restrictedTraverse, so it did unwanted security checks: this class is used for expressions in trusted templates on the file system. Needed for all Plone versions, except 4.3 when it does not have the optional five.pt package. One test is: login as Editor and go to the @@historyview of a page. If you get an Unauthorized error, you should upgrade to the new version. If you are unsure: install this version.
1.1 (2021-05-18)
Allow using __name__ in untrusted expressions. The previous expressions patch was too strict. This may be needed in case you have templates that use __name__. This does not happen often, but one example is the caching-controlpanel view, which with the previous version may give a 404 NotFound error. In some Plone versions browser views are affected (Plone 4.3 with five.pt, 5.0, 5.1, 5.2.0-5.2.2). In all Plone versions skin or through-the-web templates are affected. When you see more NotFound errors than normal, you should install this new version. If you are unsure: install this version.
1.0 (2021-05-18)
Initial release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for Products.PloneHotfix20210518-1.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97206dd9dcc358c0a35e2cc7d7c142afc75c8ff37436d6725c7b68eef733df4f |
|
MD5 | 5794c04b2019158fe6f84c1d5b26ac5c |
|
BLAKE2b-256 | 561fd90e07cd37514923426374d3bee9a10778d66c9273ecdc60c051c9208a5a |
Hashes for Products.PloneHotfix20210518-1.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e1b59da36a2c9040271ed20b5540181e4147be9614a245ffbc2e2998077693a |
|
MD5 | abd401dd6643a034cf3468835d6143b4 |
|
BLAKE2b-256 | 83412a9368ecd64ac05c5706d405b24d4e50d7f80f8c52758dc66d85c2de7655 |