CVE-2020-13254
Description
An issue was discovered in Django 2.2 before 2.2.13 and 3.0 before 3.0.7. In cases where a memcached backend does not perform key validation, passing malformed cache keys could result in a key collision, and potential data leakage.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Django 2.2 before 2.2.13 and 3.0 before 3.0.7 fail to validate memcached cache keys, allowing key collisions and potential data leakage.
The vulnerability resides in Django's memcached cache backend, which did not validate cache keys before passing them to the memcached server. According to the official description [1], this lack of validation could lead to key collisions and potential data leakage. The fix, as seen in commits [3][4], introduces key validation using the existing validate_key method from the base cache backend.
Exploitation requires an attacker to be able to control or influence cache keys used by the application. This could occur if user input is used to construct cache keys without proper sanitization. The attack vector is network-based, with low complexity, and no privileges required [2]. The attacker can cause keys to collide, potentially retrieving cached data intended for other users or sessions.
The impact is data leakage, as an attacker might access cached data belonging to other users. The CVSS score reflects a medium severity with a focus on confidentiality impact [2]. The vulnerability does not require authentication, making it easier to exploit if the application uses user-controlled cache keys.
The Django project released security releases 2.2.13 and 3.0.7 to address this issue [1]. Users should upgrade immediately. The fix adds key validation to all memcached operations, raising an exception for invalid keys. No workaround is mentioned; upgrading is the recommended action.
AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
DjangoPyPI | >= 2.2, < 2.2.13 | 2.2.13 |
DjangoPyPI | >= 3.0, < 3.0.7 | 3.0.7 |
Affected products
299- Django/Djangodescription
- osv-coords298 versionspkg:bitnami/djangopkg:pypi/djangopkg:rpm/suse/ansible1&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ansible1&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ansible1&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ansible&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ansible&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/ansible&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ansible&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/ardana-ansible&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-ansible&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-ansible&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-cluster&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-cluster&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-cobbler&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-freezer&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-freezer&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-glance&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-input-model&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-input-model&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-input-model&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-logging&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-logging&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-logging&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-manila&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-monasca&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-mq&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-mq&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-mq&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-neutron&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-neutron&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-neutron&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-octavia&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-octavia&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-octavia&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-osconfig&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/ardana-osconfig&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/ardana-tempest&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/caasp-openstack-heat-templates&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/caasp-openstack-heat-templates&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/caasp-openstack-heat-templates&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/crowbar-core&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/crowbar-core&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/crowbar-core&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/crowbar-ha&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/crowbar-openstack&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/crowbar-openstack&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/crowbar-openstack&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/documentation-hpe-helion-openstack-installation&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/documentation-hpe-helion-openstack-operations&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/documentation-hpe-helion-openstack-opsconsole&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/documentation-hpe-helion-openstack-planning&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/documentation-hpe-helion-openstack-security&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/documentation-hpe-helion-openstack-user&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/documentation-suse-openstack-cloud-deployment&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/documentation-suse-openstack-cloud-installation&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/documentation-suse-openstack-cloud-operations&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/documentation-suse-openstack-cloud-opsconsole&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/documentation-suse-openstack-cloud-planning&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/documentation-suse-openstack-cloud-security&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/documentation-suse-openstack-cloud-supplement&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/documentation-suse-openstack-cloud-supplement&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/documentation-suse-openstack-cloud-upstream-admin&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/documentation-suse-openstack-cloud-upstream-admin&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/documentation-suse-openstack-cloud-upstream-user&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/documentation-suse-openstack-cloud-upstream-user&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/documentation-suse-openstack-cloud-user&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/grafana&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/grafana&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/grafana&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/grafana&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/grafana&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/grafana&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/keepalived&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/kibana&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/kibana&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/kibana&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/kibana&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/kibana&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/kibana&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/memcached&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/monasca-installer&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/openstack-barbican&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-barbican&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-ceilometer&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-ceilometer&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-cinder&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-cinder&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-dashboard&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-dashboard&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-dashboard&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-dashboard&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-dashboard&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-dashboard-theme-HPE&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-dashboard-theme-SUSE&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/openstack-designate&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-designate&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-heat-templates&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-heat-templates&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-heat-templates&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-heat-templates&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-heat-templates&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-ironic&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-ironic&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-keystone&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-keystone&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-keystone&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-keystone&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-keystone&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-keystone-doc&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-keystone-doc&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-keystone-doc&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-magnum&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-magnum&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-manila&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/openstack-manila&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-manila&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-manila-doc&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/openstack-monasca-agent&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-monasca-agent&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-monasca-agent&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-monasca-agent&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-monasca-agent&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-monasca-installer&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-monasca-installer&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-monasca-installer&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-neutron&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-neutron&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-neutron&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-neutron&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-neutron&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-neutron-doc&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-neutron-doc&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-neutron-doc&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-neutron-fwaas&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/openstack-neutron-fwaas-doc&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/openstack-neutron-vsphere&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-neutron-vsphere&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-nova&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/openstack-nova&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-nova&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-nova-doc&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/openstack-octavia-amphora-image&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/openstack-octavia-amphora-image&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/openstack-octavia-amphora-image&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-octavia-amphora-image&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/openstack-octavia-amphora-image&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-octavia&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-octavia&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-resource-agents&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-resource-agents&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-tempest&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/python-amqp&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-amqp&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-amqp&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-apicapi&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-apicapi&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-apicapi&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-ardana-packager&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-Django1&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-Django1&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-Django&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-Django&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/python-Django&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-Django&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-Flask&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-Flask&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-Flask&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-GitPython&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-GitPython&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-heatclient&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-heatclient&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-keystoneauth1&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-keystoneauth1&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-keystoneauth1&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-neutron-tempest-plugin&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-neutron-tempest-plugin&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-octavia-tempest-plugin&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-octavia-tempest-plugin&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-os-brick&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-os-brick&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-oslo.messaging&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-oslo.messaging&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-oslo.messaging&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-oslo.messaging&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-oslo.messaging&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-Pillow&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-Pillow&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/python-Pillow&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-Pillow&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-Pillow&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-Pillow&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-psql2mysql&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/python-psutil&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-psutil&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/python-psutil&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-psutil&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-py&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/python-pyroute2&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-pyroute2&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-pyroute2&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-pyroute2&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-pyroute2&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-pysaml2&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-pysaml2&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/python-pysaml2&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-pysaml2&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-tooz&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-tooz&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-tooz&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-urllib3&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-urllib3&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-waitress&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/python-waitress&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/python-waitress&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/python-waitress&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-waitress&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/python-waitress&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/rabbitmq-server&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/release-notes-suse-openstack-cloud&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/release-notes-suse-openstack-cloud&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/release-notes-suse-openstack-cloud&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/rubygem-activeresource&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/rubygem-activeresource&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/rubygem-activeresource&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/rubygem-crowbar-client&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/rubygem-crowbar-client&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/rubygem-json-1_7&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/rubygem-json-1_7&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/rubygem-json-1_7&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/rubygem-puma&distro=SUSE%20OpenStack%20Cloud%207pkg:rpm/suse/rubygem-puma&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/rubygem-puma&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/storm&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/storm&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/storm&distro=SUSE%20OpenStack%20Cloud%20Crowbar%208pkg:rpm/suse/venv-openstack-aodh&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-aodh&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-barbican&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-barbican&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-barbican&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-ceilometer&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-ceilometer&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-cinder&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-cinder&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-cinder&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-designate&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-designate&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-designate&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-freezer&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-freezer&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-glance&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-glance&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-glance&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-heat&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-heat&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-heat&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-horizon&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-horizon&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-horizon-hpe&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-ironic&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-ironic&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-ironic&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-keystone&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-keystone&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-keystone&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-magnum&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-magnum&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-magnum&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-manila&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-manila&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-manila&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-monasca-ceilometer&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-monasca-ceilometer&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-monasca-ceilometer&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-monasca&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-monasca&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-monasca&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-murano&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-murano&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-neutron&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-neutron&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-neutron&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-nova&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-nova&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-nova&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-octavia&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-octavia&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-octavia&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-sahara&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-sahara&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-sahara&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-swift&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-swift&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/venv-openstack-swift&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-trove&distro=HPE%20Helion%20OpenStack%208pkg:rpm/suse/venv-openstack-trove&distro=SUSE%20OpenStack%20Cloud%208pkg:rpm/suse/zookeeper&distro=SUSE%20OpenStack%20Cloud%207
>= 2.2.0, < 2.2.13+ 297 more
- (no CPE)range: >= 2.2.0, < 2.2.13
- (no CPE)range: >= 2.2, < 2.2.13
- (no CPE)range: < 1.9.6-7.3.1
- (no CPE)range: < 1.9.6-7.3.1
- (no CPE)range: < 1.9.6-9.7.2
- (no CPE)range: < 2.4.6.0-3.9.1
- (no CPE)range: < 2.2.3.0-12.2
- (no CPE)range: < 2.4.6.0-3.9.1
- (no CPE)range: < 2.4.6.0-3.9.1
- (no CPE)range: < 8.0+git.1589740980.6c3bcdc-3.73.1
- (no CPE)range: < 8.0+git.1589740980.6c3bcdc-3.73.1
- (no CPE)range: < 9.0+git.1591138508.e269bdb-3.22.2
- (no CPE)range: < 8.0+git.1585685203.3e71e49-3.36.1
- (no CPE)range: < 8.0+git.1585685203.3e71e49-3.36.1
- (no CPE)range: < 9.0+git.1588181228.bae3b1f-3.13.2
- (no CPE)range: < 8.0+git.1586539529.b7d295f-3.21.1
- (no CPE)range: < 8.0+git.1586539529.b7d295f-3.21.1
- (no CPE)range: < 9.0+git.1593631708.9354a78-3.13.2
- (no CPE)range: < 8.0+git.1589740934.0e0ad61-3.39.1
- (no CPE)range: < 8.0+git.1589740934.0e0ad61-3.39.1
- (no CPE)range: < 9.0+git.1589740948.c24fc0b-3.19.2
- (no CPE)range: < 8.0+git.1591194866.b7375d0-3.24.1
- (no CPE)range: < 8.0+git.1591194866.b7375d0-3.24.1
- (no CPE)range: < 9.0+git.1591193994.d93b668-3.13.2
- (no CPE)range: < 9.0+git.1594158642.b5905e4-3.12.2
- (no CPE)range: < 9.0+git.1589385256.7fbfaaf-3.19.2
- (no CPE)range: < 8.0+git.1589715269.62ad6df-3.22.1
- (no CPE)range: < 8.0+git.1589715269.62ad6df-3.22.1
- (no CPE)range: < 9.0+git.1593618110.cbd1a37-3.16.2
- (no CPE)range: < 8.0+git.1590756744.ba84abc-3.42.1
- (no CPE)range: < 8.0+git.1590756744.ba84abc-3.42.1
- (no CPE)range: < 9.0+git.1590756257.e09d54f-3.22.2
- (no CPE)range: < 8.0+git.1590100427.cf4cc8f-3.29.1
- (no CPE)range: < 8.0+git.1590100427.cf4cc8f-3.29.1
- (no CPE)range: < 9.0+git.1590079609.a2ae6ab-3.19.2
- (no CPE)range: < 8.0+git.1587034587.eac37b8-3.45.1
- (no CPE)range: < 8.0+git.1587034587.eac37b8-3.45.1
- (no CPE)range: < 9.0+git.1593033709.9495bb2-3.16.2
- (no CPE)range: < 1.0+git.1560518045.ad7dc6d-4.18.1
- (no CPE)range: < 1.0+git.1560518045.ad7dc6d-4.18.1
- (no CPE)range: < 1.0+git.1560518045.ad7dc6d-4.18.1
- (no CPE)range: < 4.0+git.1580209654.1d112d31f-9.66.5
- (no CPE)range: < 5.0+git.1593156248.55bbdb26d-3.41.2
- (no CPE)range: < 6.0+git.1594619891.b75a61d0d-3.25.5
- (no CPE)range: < 4.0+git.1585316203.d6ad2c8-4.52.4
- (no CPE)range: < 4.0+git.1589804581.9972163f0-9.71.4
- (no CPE)range: < 5.0+git.1593085772.64c4ab43c-4.40.2
- (no CPE)range: < 6.0+git.1591795073.49cb6400e-3.25.3
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 8.20200527-1.26.1
- (no CPE)range: < 4.6.5-4.9.1
- (no CPE)range: < 4.6.5-1.14.1
- (no CPE)range: < 4.6.5-4.9.1
- (no CPE)range: < 6.2.5-3.12.2
- (no CPE)range: < 4.6.5-4.9.1
- (no CPE)range: < 6.2.5-3.12.2
- (no CPE)range: < 2.0.19-1.8.1
- (no CPE)range: < 4.6.3-3.3.1
- (no CPE)range: < 4.6.3-5.1
- (no CPE)range: < 4.6.3-3.3.1
- (no CPE)range: < 4.6.3-4.3.2
- (no CPE)range: < 4.6.3-3.3.1
- (no CPE)range: < 4.6.3-4.3.2
- (no CPE)range: < 1.5.17-3.6.1
- (no CPE)range: < 20180608_12.47-12.1
- (no CPE)range: < 7.0.1~dev24-3.9.5
- (no CPE)range: < 7.0.1~dev24-3.9.5
- (no CPE)range: < 11.1.1~dev7-3.16.3
- (no CPE)range: < 11.1.1~dev7-3.16.3
- (no CPE)range: < 13.0.10~dev12-3.22.4
- (no CPE)range: < 13.0.10~dev12-3.22.4
- (no CPE)range: < 12.0.5~dev3-3.26.1
- (no CPE)range: < 12.0.5~dev3-3.26.1
- (no CPE)range: < 14.1.1~dev6-3.15.5
- (no CPE)range: < 12.0.5~dev3-3.26.1
- (no CPE)range: < 14.1.1~dev6-3.15.5
- (no CPE)range: < 8+git.1523473653.6599ec8-3.3.1
- (no CPE)range: < 2016.2-5.12.4
- (no CPE)range: < 7.0.2~dev2-3.19.3
- (no CPE)range: < 7.0.2~dev2-3.19.3
- (no CPE)range: < 0.0.0+git.1582270132.8a20477-3.15.1
- (no CPE)range: < 0.0.0+git.1582270132.8a20477-3.15.1
- (no CPE)range: < 0.0.0+git.1582270132.8a20477-3.6.2
- (no CPE)range: < 0.0.0+git.1582270132.8a20477-3.15.1
- (no CPE)range: < 0.0.0+git.1582270132.8a20477-3.6.2
- (no CPE)range: < 11.1.5~dev6-3.19.3
- (no CPE)range: < 11.1.5~dev6-3.19.3
- (no CPE)range: < 12.0.4~dev11-5.33.2
- (no CPE)range: < 12.0.4~dev11-5.33.2
- (no CPE)range: < 14.2.1~dev4-3.22.3
- (no CPE)range: < 12.0.4~dev11-5.33.2
- (no CPE)range: < 14.2.1~dev4-3.22.3
- (no CPE)range: < 12.0.4~dev11-5.33.2
- (no CPE)range: < 12.0.4~dev11-5.33.2
- (no CPE)range: < 12.0.4~dev11-5.33.2
- (no CPE)range: < 7.2.1~dev1-3.13.3
- (no CPE)range: < 7.2.1~dev1-3.13.3
- (no CPE)range: < 3.0.1~dev30-4.12.2
- (no CPE)range: < 7.4.2~dev31-4.24.3
- (no CPE)range: < 7.4.2~dev31-4.24.3
- (no CPE)range: < 3.0.1~dev30-4.12.3
- (no CPE)range: < 2.2.6~dev4-3.18.1
- (no CPE)range: < 2.2.6~dev4-3.18.1
- (no CPE)range: < 2.8.2~dev5-3.9.3
- (no CPE)range: < 2.2.6~dev4-3.18.1
- (no CPE)range: < 2.8.2~dev5-3.9.3
- (no CPE)range: < 20190923_16.32-3.12.1
- (no CPE)range: < 20190923_16.32-3.12.1
- (no CPE)range: < 20190923_16.32-3.12.1
- (no CPE)range: < 11.0.9~dev65-3.33.2
- (no CPE)range: < 11.0.9~dev65-3.33.2
- (no CPE)range: < 13.0.8~dev68-3.25.3
- (no CPE)range: < 11.0.9~dev65-3.33.2
- (no CPE)range: < 13.0.8~dev68-3.25.3
- (no CPE)range: < 11.0.9~dev65-3.33.2
- (no CPE)range: < 11.0.9~dev65-3.33.2
- (no CPE)range: < 11.0.9~dev65-3.33.2
- (no CPE)range: < 9.0.2~dev5-4.9.3
- (no CPE)range: < 9.0.2~dev5-4.9.4
- (no CPE)range: < 2.0.1~dev167-3.3.3
- (no CPE)range: < 2.0.1~dev167-3.3.3
- (no CPE)range: < 14.0.11~dev13-4.40.2
- (no CPE)range: < 18.3.1~dev38-3.25.4
- (no CPE)range: < 18.3.1~dev38-3.25.4
- (no CPE)range: < 14.0.11~dev13-4.40.2
- (no CPE)range: < 0.1.4-3.12.2
- (no CPE)range: < 0.1.4-3.12.2
- (no CPE)range: < 0.1.4-7.12.3
- (no CPE)range: < 0.1.4-3.12.2
- (no CPE)range: < 0.1.4-7.12.3
- (no CPE)range: < 3.2.3~dev7-3.25.3
- (no CPE)range: < 3.2.3~dev7-3.25.3
- (no CPE)range: < 1.0+git.1569436425.8b9c49f-5.3.2
- (no CPE)range: < 1.0+git.1569436425.8b9c49f-5.3.2
- (no CPE)range: < 12.2.1~a0~dev177-4.9.1
- (no CPE)range: < 2.4.2-3.12.1
- (no CPE)range: < 2.4.2-3.12.1
- (no CPE)range: < 2.4.2-3.12.1
- (no CPE)range: < 1.6.0-3.6.1
- (no CPE)range: < 1.6.0-3.6.1
- (no CPE)range: < 1.6.0-3.6.1
- (no CPE)range: < 0.0.3-9.3.2
- (no CPE)range: < 1.11.29-3.15.2
- (no CPE)range: < 1.11.29-3.15.2
- (no CPE)range: < 1.11.23-3.15.1
- (no CPE)range: < 1.8.19-3.23.1
- (no CPE)range: < 1.11.23-3.15.1
- (no CPE)range: < 1.11.23-3.15.1
- (no CPE)range: < 0.12.1-3.3.1
- (no CPE)range: < 0.12.1-3.3.1
- (no CPE)range: < 0.12.1-3.3.1
- (no CPE)range: < 2.1.8-3.3.1
- (no CPE)range: < 2.1.8-3.3.1
- (no CPE)range: < 1.16.3-3.3.3
- (no CPE)range: < 1.16.3-3.3.3
- (no CPE)range: < 3.1.2~dev2-3.3.1
- (no CPE)range: < 3.1.2~dev2-3.3.1
- (no CPE)range: < 3.1.2~dev2-3.3.1
- (no CPE)range: < 0.2.0-3.3.2
- (no CPE)range: < 0.2.0-3.3.2
- (no CPE)range: < 0.2.0-3.3.2
- (no CPE)range: < 0.2.0-3.3.2
- (no CPE)range: < 2.5.10-3.12.3
- (no CPE)range: < 2.5.10-3.12.3
- (no CPE)range: < 5.30.8-3.11.1
- (no CPE)range: < 5.30.8-3.11.1
- (no CPE)range: < 8.1.4-3.6.2
- (no CPE)range: < 5.30.8-3.11.1
- (no CPE)range: < 8.1.4-3.6.2
- (no CPE)range: < 4.2.1-3.5.1
- (no CPE)range: < 2.8.1-4.12.1
- (no CPE)range: < 4.2.1-3.5.1
- (no CPE)range: < 5.2.0-3.3.2
- (no CPE)range: < 4.2.1-3.5.1
- (no CPE)range: < 5.2.0-3.3.2
- (no CPE)range: < 0.5.0+git.1589351878.4ef877c-1.12.1
- (no CPE)range: < 5.2.2-3.3.1
- (no CPE)range: < 1.2.1-21.1
- (no CPE)range: < 5.2.2-3.3.1
- (no CPE)range: < 5.2.2-3.3.1
- (no CPE)range: < 1.8.1-11.12.1
- (no CPE)range: < 0.4.21-3.3.1
- (no CPE)range: < 0.4.21-3.3.1
- (no CPE)range: < 0.5.2-4.3.2
- (no CPE)range: < 0.4.21-3.3.1
- (no CPE)range: < 0.5.2-4.3.2
- (no CPE)range: < 4.0.2-5.6.1
- (no CPE)range: < 4.0.2-3.17.1
- (no CPE)range: < 4.0.2-5.6.1
- (no CPE)range: < 4.0.2-5.6.1
- (no CPE)range: < 1.58.1-3.3.1
- (no CPE)range: < 1.58.1-3.3.1
- (no CPE)range: < 1.58.1-3.3.1
- (no CPE)range: < 1.23-3.12.2
- (no CPE)range: < 1.23-3.12.2
- (no CPE)range: < 1.4.3-3.3.1
- (no CPE)range: < 1.4.3-3.3.1
- (no CPE)range: < 1.4.3-3.3.1
- (no CPE)range: < 1.4.3-3.3.1
- (no CPE)range: < 1.4.3-3.3.1
- (no CPE)range: < 1.4.3-3.3.1
- (no CPE)range: < 3.4.4-3.16.1
- (no CPE)range: < 7.20180803-3.18.3
- (no CPE)range: < 9.20200610-3.21.4
- (no CPE)range: < 9.20200610-3.21.4
- (no CPE)range: < 4.0.0-3.3.1
- (no CPE)range: < 4.0.0-3.3.1
- (no CPE)range: < 4.0.0-4.3.1
- (no CPE)range: < 3.9.2-7.20.1
- (no CPE)range: < 3.9.2-3.12.1
- (no CPE)range: < 1.7.7-3.3.1
- (no CPE)range: < 1.7.7-3.3.1
- (no CPE)range: < 1.7.7-4.3.1
- (no CPE)range: < 2.16.0-4.6.1
- (no CPE)range: < 2.16.0-3.9.1
- (no CPE)range: < 2.16.0-4.9.1
- (no CPE)range: < 1.1.3-3.3.1
- (no CPE)range: < 1.1.3-3.3.1
- (no CPE)range: < 1.1.3-3.3.1
- (no CPE)range: < 5.1.1~dev7-12.26.2
- (no CPE)range: < 5.1.1~dev7-12.26.2
- (no CPE)range: < 5.0.2~dev3-12.27.2
- (no CPE)range: < 5.0.2~dev3-12.27.2
- (no CPE)range: < 7.0.1~dev24-3.19.3
- (no CPE)range: < 9.0.8~dev7-12.24.2
- (no CPE)range: < 9.0.8~dev7-12.24.2
- (no CPE)range: < 11.2.3~dev23-14.27.2
- (no CPE)range: < 11.2.3~dev23-14.27.2
- (no CPE)range: < 13.0.10~dev12-3.19.2
- (no CPE)range: < 5.0.3~dev7-12.25.2
- (no CPE)range: < 5.0.3~dev7-12.25.2
- (no CPE)range: < 7.0.2~dev2-3.19.2
- (no CPE)range: < 5.0.0.0~xrc2~dev2-10.22.1
- (no CPE)range: < 5.0.0.0~xrc2~dev2-10.22.1
- (no CPE)range: < 15.0.3~dev3-12.25.1
- (no CPE)range: < 15.0.3~dev3-12.25.1
- (no CPE)range: < 17.0.1~dev30-3.17.2
- (no CPE)range: < 9.0.8~dev22-12.27.1
- (no CPE)range: < 9.0.8~dev22-12.27.1
- (no CPE)range: < 11.0.3~dev35-3.19.2
- (no CPE)range: < 12.0.5~dev3-14.30.1
- (no CPE)range: < 14.1.1~dev6-4.18.3
- (no CPE)range: < 12.0.5~dev3-14.30.1
- (no CPE)range: < 9.1.8~dev8-12.27.2
- (no CPE)range: < 9.1.8~dev8-12.27.2
- (no CPE)range: < 11.1.5~dev6-4.15.2
- (no CPE)range: < 12.0.4~dev11-11.28.2
- (no CPE)range: < 12.0.4~dev11-11.28.2
- (no CPE)range: < 14.2.1~dev4-3.19.2
- (no CPE)range: < 5.0.2_5.0.2_5.0.2~dev31-11.26.2
- (no CPE)range: < 5.0.2_5.0.2_5.0.2~dev31-11.26.2
- (no CPE)range: < 7.2.1~dev1-4.19.2
- (no CPE)range: < 5.1.1~dev5-12.31.2
- (no CPE)range: < 5.1.1~dev5-12.31.2
- (no CPE)range: < 7.4.2~dev31-3.21.2
- (no CPE)range: < 1.5.1_1.5.1_1.5.1~dev3-8.22.2
- (no CPE)range: < 1.5.1_1.5.1_1.5.1~dev3-8.22.2
- (no CPE)range: < 1.8.2~dev3-3.19.2
- (no CPE)range: < 2.2.2~dev1-11.22.3
- (no CPE)range: < 2.2.2~dev1-11.22.3
- (no CPE)range: < 2.7.1~dev10-3.17.3
- (no CPE)range: < 4.0.2~dev2-12.22.1
- (no CPE)range: < 4.0.2~dev2-12.22.1
- (no CPE)range: < 11.0.9~dev65-13.30.2
- (no CPE)range: < 11.0.9~dev65-13.30.2
- (no CPE)range: < 13.0.8~dev68-6.19.2
- (no CPE)range: < 16.1.9~dev61-11.28.2
- (no CPE)range: < 16.1.9~dev61-11.28.2
- (no CPE)range: < 18.3.1~dev38-3.19.3
- (no CPE)range: < 1.0.6~dev3-12.27.2
- (no CPE)range: < 1.0.6~dev3-12.27.2
- (no CPE)range: < 3.2.3~dev7-4.19.2
- (no CPE)range: < 7.0.5~dev4-11.26.2
- (no CPE)range: < 7.0.5~dev4-11.26.2
- (no CPE)range: < 9.0.2~dev15-3.19.2
- (no CPE)range: < 2.15.2_2.15.2_2.15.2~dev32-11.18.1
- (no CPE)range: < 2.15.2_2.15.2_2.15.2~dev32-11.18.1
- (no CPE)range: < 2.19.2~dev48-2.14.2
- (no CPE)range: < 8.0.2~dev2-11.26.1
- (no CPE)range: < 8.0.2~dev2-11.26.1
- (no CPE)range: < 3.4.10-6.1
Patches
284b2da5552e1[3.0.x] Fixed CVE-2020-13254 -- Enforced cache key validation in memcached backends.
6 files changed · +66 −45
django/core/cache/backends/base.py+21 −12 modified@@ -14,6 +14,10 @@ class CacheKeyWarning(RuntimeWarning): pass +class InvalidCacheKey(ValueError): + pass + + # Stub class to ensure not passing in a `timeout` argument results in # the default timeout DEFAULT_TIMEOUT = object() @@ -241,18 +245,8 @@ def validate_key(self, key): backend. This encourages (but does not force) writing backend-portable cache code. """ - if len(key) > MEMCACHE_MAX_KEY_LENGTH: - warnings.warn( - 'Cache key will cause errors if used with memcached: %r ' - '(longer than %s)' % (key, MEMCACHE_MAX_KEY_LENGTH), CacheKeyWarning - ) - for char in key: - if ord(char) < 33 or ord(char) == 127: - warnings.warn( - 'Cache key contains characters that will cause errors if ' - 'used with memcached: %r' % key, CacheKeyWarning - ) - break + for warning in memcache_key_warnings(key): + warnings.warn(warning, CacheKeyWarning) def incr_version(self, key, delta=1, version=None): """ @@ -280,3 +274,18 @@ def decr_version(self, key, delta=1, version=None): def close(self, **kwargs): """Close the cache connection""" pass + + +def memcache_key_warnings(key): + if len(key) > MEMCACHE_MAX_KEY_LENGTH: + yield ( + 'Cache key will cause errors if used with memcached: %r ' + '(longer than %s)' % (key, MEMCACHE_MAX_KEY_LENGTH) + ) + for char in key: + if ord(char) < 33 or ord(char) == 127: + yield ( + 'Cache key contains characters that will cause errors if ' + 'used with memcached: %r' % key, CacheKeyWarning + ) + break
django/core/cache/backends/memcached.py+16 −1 modified@@ -4,7 +4,9 @@ import re import time -from django.core.cache.backends.base import DEFAULT_TIMEOUT, BaseCache +from django.core.cache.backends.base import ( + DEFAULT_TIMEOUT, BaseCache, InvalidCacheKey, memcache_key_warnings, +) from django.utils.functional import cached_property @@ -64,24 +66,30 @@ def get_backend_timeout(self, timeout=DEFAULT_TIMEOUT): def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None): key = self.make_key(key, version=version) + self.validate_key(key) return self._cache.add(key, value, self.get_backend_timeout(timeout)) def get(self, key, default=None, version=None): key = self.make_key(key, version=version) + self.validate_key(key) return self._cache.get(key, default) def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None): key = self.make_key(key, version=version) + self.validate_key(key) if not self._cache.set(key, value, self.get_backend_timeout(timeout)): # make sure the key doesn't keep its old value in case of failure to set (memcached's 1MB limit) self._cache.delete(key) def delete(self, key, version=None): key = self.make_key(key, version=version) + self.validate_key(key) self._cache.delete(key) def get_many(self, keys, version=None): key_map = {self.make_key(key, version=version): key for key in keys} + for key in key_map: + self.validate_key(key) ret = self._cache.get_multi(key_map.keys()) return {key_map[k]: v for k, v in ret.items()} @@ -91,6 +99,7 @@ def close(self, **kwargs): def incr(self, key, delta=1, version=None): key = self.make_key(key, version=version) + self.validate_key(key) # memcached doesn't support a negative delta if delta < 0: return self._cache.decr(key, -delta) @@ -109,6 +118,7 @@ def incr(self, key, delta=1, version=None): def decr(self, key, delta=1, version=None): key = self.make_key(key, version=version) + self.validate_key(key) # memcached doesn't support a negative delta if delta < 0: return self._cache.incr(key, -delta) @@ -130,6 +140,7 @@ def set_many(self, data, timeout=DEFAULT_TIMEOUT, version=None): original_keys = {} for key, value in data.items(): safe_key = self.make_key(key, version=version) + self.validate_key(safe_key) safe_data[safe_key] = value original_keys[safe_key] = key failed_keys = self._cache.set_multi(safe_data, self.get_backend_timeout(timeout)) @@ -141,6 +152,10 @@ def delete_many(self, keys, version=None): def clear(self): self._cache.flush_all() + def validate_key(self, key): + for warning in memcache_key_warnings(key): + raise InvalidCacheKey(warning) + class MemcachedCache(BaseMemcachedCache): "An implementation of a cache binding using python-memcached"
django/core/cache/__init__.py+2 −2 modified@@ -17,13 +17,13 @@ from django.conf import settings from django.core import signals from django.core.cache.backends.base import ( - BaseCache, CacheKeyWarning, InvalidCacheBackendError, + BaseCache, CacheKeyWarning, InvalidCacheBackendError, InvalidCacheKey, ) from django.utils.module_loading import import_string __all__ = [ 'cache', 'caches', 'DEFAULT_CACHE_ALIAS', 'InvalidCacheBackendError', - 'CacheKeyWarning', 'BaseCache', + 'CacheKeyWarning', 'BaseCache', 'InvalidCacheKey', ] DEFAULT_CACHE_ALIAS = 'default'
docs/releases/2.2.13.txt+8 −0 modified@@ -6,6 +6,14 @@ Django 2.2.13 release notes Django 2.2.13 fixes two security issues and a regression in 2.2.12. +CVE-2020-13254: Potential data leakage via malformed memcached keys +=================================================================== + +In cases where a memcached backend does not perform key validation, passing +malformed cache keys could result in a key collision, and potential data +leakage. In order to avoid this vulnerability, key validation is added to the +memcached cache backends. + CVE-2020-13596: Possible XSS via admin ``ForeignKeyRawIdWidget`` ================================================================
docs/releases/3.0.7.txt+8 −0 modified@@ -6,6 +6,14 @@ Django 3.0.7 release notes Django 3.0.7 fixes two security issues and several bugs in 3.0.6. +CVE-2020-13254: Potential data leakage via malformed memcached keys +=================================================================== + +In cases where a memcached backend does not perform key validation, passing +malformed cache keys could result in a key collision, and potential data +leakage. In order to avoid this vulnerability, key validation is added to the +memcached cache backends. + CVE-2020-13596: Possible XSS via admin ``ForeignKeyRawIdWidget`` ================================================================
tests/cache/tests.py+11 −30 modified@@ -15,7 +15,7 @@ from django.conf import settings from django.core import management, signals from django.core.cache import ( - DEFAULT_CACHE_ALIAS, CacheKeyWarning, cache, caches, + DEFAULT_CACHE_ALIAS, CacheKeyWarning, InvalidCacheKey, cache, caches, ) from django.core.cache.utils import make_template_fragment_key from django.db import close_old_connections, connection, connections @@ -610,10 +610,10 @@ def test_zero_cull(self): def _perform_invalid_key_test(self, key, expected_warning): """ - All the builtin backends (except memcached, see below) should warn on - keys that would be refused by memcached. This encourages portable - caching code without making it too difficult to use production backends - with more liberal key rules. Refs #6447. + All the builtin backends should warn (except memcached that should + error) on keys that would be refused by memcached. This encourages + portable caching code without making it too difficult to use production + backends with more liberal key rules. Refs #6447. """ # mimic custom ``make_key`` method being defined since the default will # never show the below warnings @@ -1256,24 +1256,14 @@ def test_location_multiple_servers(self): with self.settings(CACHES={'default': params}): self.assertEqual(cache._servers, ['server1.tld', 'server2:11211']) - def test_invalid_key_characters(self): + def _perform_invalid_key_test(self, key, expected_warning): """ - On memcached, we don't introduce a duplicate key validation - step (for speed reasons), we just let the memcached API - library raise its own exception on bad keys. Refs #6447. - - In order to be memcached-API-library agnostic, we only assert - that a generic exception of some kind is raised. + Whilst other backends merely warn, memcached should raise for an + invalid key. """ - # memcached does not allow whitespace or control characters in keys - # when using the ascii protocol. - with self.assertRaises(Exception): - cache.set('key with spaces', 'value') - - def test_invalid_key_length(self): - # memcached limits key length to 250 - with self.assertRaises(Exception): - cache.set('a' * 251, 'value') + msg = expected_warning.replace(key, ':1:%s' % key) + with self.assertRaisesMessage(InvalidCacheKey, msg): + cache.set(key, 'value') def test_default_never_expiring_timeout(self): # Regression test for #22845 @@ -1390,15 +1380,6 @@ class PyLibMCCacheTests(BaseMemcachedTests, TestCase): # libmemcached manages its own connections. should_disconnect_on_close = False - # By default, pylibmc/libmemcached don't verify keys client-side and so - # this test triggers a server-side bug that causes later tests to fail - # (#19914). The `verify_keys` behavior option could be set to True (which - # would avoid triggering the server-side bug), however this test would - # still fail due to https://github.com/lericson/pylibmc/issues/219. - @unittest.skip("triggers a memcached-server bug, causing subsequent tests to fail") - def test_invalid_key_characters(self): - pass - @override_settings(CACHES=caches_setting_for_tests( base=PyLibMCCache_params, exclude=memcached_excluded_caches,
07e59caa0283[2.2.x] Fixed CVE-2020-13254 -- Enforced cache key validation in memcached backends.
5 files changed · +58 −45
django/core/cache/backends/base.py+21 −12 modified@@ -14,6 +14,10 @@ class CacheKeyWarning(RuntimeWarning): pass +class InvalidCacheKey(ValueError): + pass + + # Stub class to ensure not passing in a `timeout` argument results in # the default timeout DEFAULT_TIMEOUT = object() @@ -242,18 +246,8 @@ def validate_key(self, key): backend. This encourages (but does not force) writing backend-portable cache code. """ - if len(key) > MEMCACHE_MAX_KEY_LENGTH: - warnings.warn( - 'Cache key will cause errors if used with memcached: %r ' - '(longer than %s)' % (key, MEMCACHE_MAX_KEY_LENGTH), CacheKeyWarning - ) - for char in key: - if ord(char) < 33 or ord(char) == 127: - warnings.warn( - 'Cache key contains characters that will cause errors if ' - 'used with memcached: %r' % key, CacheKeyWarning - ) - break + for warning in memcache_key_warnings(key): + warnings.warn(warning, CacheKeyWarning) def incr_version(self, key, delta=1, version=None): """ @@ -281,3 +275,18 @@ def decr_version(self, key, delta=1, version=None): def close(self, **kwargs): """Close the cache connection""" pass + + +def memcache_key_warnings(key): + if len(key) > MEMCACHE_MAX_KEY_LENGTH: + yield ( + 'Cache key will cause errors if used with memcached: %r ' + '(longer than %s)' % (key, MEMCACHE_MAX_KEY_LENGTH) + ) + for char in key: + if ord(char) < 33 or ord(char) == 127: + yield ( + 'Cache key contains characters that will cause errors if ' + 'used with memcached: %r' % key, CacheKeyWarning + ) + break
django/core/cache/backends/memcached.py+16 −1 modified@@ -4,7 +4,9 @@ import re import time -from django.core.cache.backends.base import DEFAULT_TIMEOUT, BaseCache +from django.core.cache.backends.base import ( + DEFAULT_TIMEOUT, BaseCache, InvalidCacheKey, memcache_key_warnings, +) from django.utils.functional import cached_property @@ -64,27 +66,33 @@ def get_backend_timeout(self, timeout=DEFAULT_TIMEOUT): def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None): key = self.make_key(key, version=version) + self.validate_key(key) return self._cache.add(key, value, self.get_backend_timeout(timeout)) def get(self, key, default=None, version=None): key = self.make_key(key, version=version) + self.validate_key(key) val = self._cache.get(key) if val is None: return default return val def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None): key = self.make_key(key, version=version) + self.validate_key(key) if not self._cache.set(key, value, self.get_backend_timeout(timeout)): # make sure the key doesn't keep its old value in case of failure to set (memcached's 1MB limit) self._cache.delete(key) def delete(self, key, version=None): key = self.make_key(key, version=version) + self.validate_key(key) self._cache.delete(key) def get_many(self, keys, version=None): key_map = {self.make_key(key, version=version): key for key in keys} + for key in key_map: + self.validate_key(key) ret = self._cache.get_multi(key_map.keys()) return {key_map[k]: v for k, v in ret.items()} @@ -94,6 +102,7 @@ def close(self, **kwargs): def incr(self, key, delta=1, version=None): key = self.make_key(key, version=version) + self.validate_key(key) # memcached doesn't support a negative delta if delta < 0: return self._cache.decr(key, -delta) @@ -112,6 +121,7 @@ def incr(self, key, delta=1, version=None): def decr(self, key, delta=1, version=None): key = self.make_key(key, version=version) + self.validate_key(key) # memcached doesn't support a negative delta if delta < 0: return self._cache.incr(key, -delta) @@ -133,6 +143,7 @@ def set_many(self, data, timeout=DEFAULT_TIMEOUT, version=None): original_keys = {} for key, value in data.items(): safe_key = self.make_key(key, version=version) + self.validate_key(safe_key) safe_data[safe_key] = value original_keys[safe_key] = key failed_keys = self._cache.set_multi(safe_data, self.get_backend_timeout(timeout)) @@ -144,6 +155,10 @@ def delete_many(self, keys, version=None): def clear(self): self._cache.flush_all() + def validate_key(self, key): + for warning in memcache_key_warnings(key): + raise InvalidCacheKey(warning) + class MemcachedCache(BaseMemcachedCache): "An implementation of a cache binding using python-memcached"
django/core/cache/__init__.py+2 −2 modified@@ -17,13 +17,13 @@ from django.conf import settings from django.core import signals from django.core.cache.backends.base import ( - BaseCache, CacheKeyWarning, InvalidCacheBackendError, + BaseCache, CacheKeyWarning, InvalidCacheBackendError, InvalidCacheKey, ) from django.utils.module_loading import import_string __all__ = [ 'cache', 'caches', 'DEFAULT_CACHE_ALIAS', 'InvalidCacheBackendError', - 'CacheKeyWarning', 'BaseCache', + 'CacheKeyWarning', 'BaseCache', 'InvalidCacheKey', ] DEFAULT_CACHE_ALIAS = 'default'
docs/releases/2.2.13.txt+8 −0 modified@@ -6,6 +6,14 @@ Django 2.2.13 release notes Django 2.2.13 fixes two security issues and a regression in 2.2.12. +CVE-2020-13254: Potential data leakage via malformed memcached keys +=================================================================== + +In cases where a memcached backend does not perform key validation, passing +malformed cache keys could result in a key collision, and potential data +leakage. In order to avoid this vulnerability, key validation is added to the +memcached cache backends. + CVE-2020-13596: Possible XSS via admin ``ForeignKeyRawIdWidget`` ================================================================
tests/cache/tests.py+11 −30 modified@@ -15,7 +15,7 @@ from django.conf import settings from django.core import management, signals from django.core.cache import ( - DEFAULT_CACHE_ALIAS, CacheKeyWarning, cache, caches, + DEFAULT_CACHE_ALIAS, CacheKeyWarning, InvalidCacheKey, cache, caches, ) from django.core.cache.utils import make_template_fragment_key from django.db import close_old_connections, connection, connections @@ -605,10 +605,10 @@ def test_zero_cull(self): def _perform_invalid_key_test(self, key, expected_warning): """ - All the builtin backends (except memcached, see below) should warn on - keys that would be refused by memcached. This encourages portable - caching code without making it too difficult to use production backends - with more liberal key rules. Refs #6447. + All the builtin backends should warn (except memcached that should + error) on keys that would be refused by memcached. This encourages + portable caching code without making it too difficult to use production + backends with more liberal key rules. Refs #6447. """ # mimic custom ``make_key`` method being defined since the default will # never show the below warnings @@ -1251,24 +1251,14 @@ def test_location_multiple_servers(self): with self.settings(CACHES={'default': params}): self.assertEqual(cache._servers, ['server1.tld', 'server2:11211']) - def test_invalid_key_characters(self): + def _perform_invalid_key_test(self, key, expected_warning): """ - On memcached, we don't introduce a duplicate key validation - step (for speed reasons), we just let the memcached API - library raise its own exception on bad keys. Refs #6447. - - In order to be memcached-API-library agnostic, we only assert - that a generic exception of some kind is raised. + Whilst other backends merely warn, memcached should raise for an + invalid key. """ - # memcached does not allow whitespace or control characters in keys - # when using the ascii protocol. - with self.assertRaises(Exception): - cache.set('key with spaces', 'value') - - def test_invalid_key_length(self): - # memcached limits key length to 250 - with self.assertRaises(Exception): - cache.set('a' * 251, 'value') + msg = expected_warning.replace(key, ':1:%s' % key) + with self.assertRaisesMessage(InvalidCacheKey, msg): + cache.set(key, 'value') def test_default_never_expiring_timeout(self): # Regression test for #22845 @@ -1377,15 +1367,6 @@ class PyLibMCCacheTests(BaseMemcachedTests, TestCase): # libmemcached manages its own connections. should_disconnect_on_close = False - # By default, pylibmc/libmemcached don't verify keys client-side and so - # this test triggers a server-side bug that causes later tests to fail - # (#19914). The `verify_keys` behavior option could be set to True (which - # would avoid triggering the server-side bug), however this test would - # still fail due to https://github.com/lericson/pylibmc/issues/219. - @unittest.skip("triggers a memcached-server bug, causing subsequent tests to fail") - def test_invalid_key_characters(self): - pass - @override_settings(CACHES=caches_setting_for_tests( base=PyLibMCCache_params, exclude=memcached_excluded_caches,
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
21- github.com/advisories/GHSA-wpjr-j57x-wxfwghsaADVISORY
- lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/4A2AP4T7RKPBCLTI2NNQG3T6MINDUUMZ/mitrevendor-advisoryx_refsource_FEDORA
- nvd.nist.gov/vuln/detail/CVE-2020-13254ghsaADVISORY
- usn.ubuntu.com/4381-1/mitrevendor-advisoryx_refsource_UBUNTU
- usn.ubuntu.com/4381-2/mitrevendor-advisoryx_refsource_UBUNTU
- www.debian.org/security/2020/dsa-4705ghsavendor-advisoryx_refsource_DEBIANWEB
- docs.djangoproject.com/en/3.0/releases/securityghsaWEB
- docs.djangoproject.com/en/3.0/releases/security/mitrex_refsource_MISC
- github.com/django/django/commit/07e59caa02831c4569bbebb9eb773bdd9cb4b206ghsaWEB
- github.com/django/django/commit/84b2da5552e100ae3294f564f6c862fef8d0e693ghsaWEB
- github.com/pypa/advisory-database/tree/main/vulns/django/PYSEC-2020-31.yamlghsaWEB
- groups.google.com/d/msg/django-announce/pPEmb2ot4Fo/X-SMalYSBAAJghsax_refsource_MISCWEB
- lists.debian.org/debian-lts-announce/2020/06/msg00016.htmlghsamailing-listx_refsource_MLISTWEB
- lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4A2AP4T7RKPBCLTI2NNQG3T6MINDUUMZghsaWEB
- security.netapp.com/advisory/ntap-20200611-0002ghsaWEB
- security.netapp.com/advisory/ntap-20200611-0002/mitrex_refsource_CONFIRM
- usn.ubuntu.com/4381-1ghsaWEB
- usn.ubuntu.com/4381-2ghsaWEB
- www.djangoproject.com/weblog/2020/jun/03/security-releasesghsaWEB
- www.djangoproject.com/weblog/2020/jun/03/security-releases/mitrex_refsource_CONFIRM
- www.oracle.com/security-alerts/cpujan2021.htmlghsax_refsource_MISCWEB
News mentions
0No linked articles in our index yet.