5.7
MEDIUM
CVE-2020-15118
Wagtail Cross-Site Scripting (XSS) Debian AJAX
Description

In Wagtail before versions 2.7.4 and 2.9.3, when a form page type is made available to Wagtail editors through the `wagtail.contrib.forms` app, and the page template is built using Django's standard form rendering helpers such as form.as_p, any HTML tags used within a form field's help text will be rendered unescaped in the page. Allowing HTML within help text is an intentional design decision by Django; however, as a matter of policy Wagtail does not allow editors to insert arbitrary HTML by default, as this could potentially be used to carry out cross-site scripting attacks, including privilege escalation. This functionality should therefore not have been made available to editor-level users. The vulnerability is not exploitable by an ordinary site visitor without access to the Wagtail admin. Patched versions have been released as Wagtail 2.7.4 (for the LTS 2.7 branch) and Wagtail 2.9.3 (for the current 2.9 branch). In these versions, help text will be escaped to prevent the inclusion of HTML tags. Site owners who wish to re-enable the use of HTML within help text (and are willing to accept the risk of this being exploited by editors) may set WAGTAILFORMS_HELP_TEXT_ALLOW_HTML = True in their configuration settings. Site owners who are unable to upgrade to the new versions can secure their form page templates by rendering forms field-by-field as per Django's documentation, but omitting the |safe filter when outputting the help text.

INFO

Published Date :

July 20, 2020, 6:15 p.m.

Last Modified :

July 28, 2020, 12:29 p.m.

Remotely Exploitable :

Yes !

Impact Score :

5.2

Exploitability Score :

0.5
Affected Products

The following products are affected by CVE-2020-15118 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

ID Vendor Product Action
1 Torchbox wagtail
1 Wagtail wagtail
References to Advisories, Solutions, and Tools

Here, you will find a curated list of external links that provide in-depth information, practical solutions, and valuable tools related to CVE-2020-15118.

URL Resource
https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.Field.help_text Third Party Advisory
https://docs.wagtail.io/en/stable/reference/contrib/forms/index.html#usage Vendor Advisory
https://github.com/wagtail/wagtail/blob/master/docs/releases/2.9.3.rst Release Notes Third Party Advisory
https://github.com/wagtail/wagtail/commit/d9a41e7f24d08c024acc9a3094940199df94db34 Patch Third Party Advisory
https://github.com/wagtail/wagtail/security/advisories/GHSA-2473-9hgq-j7xw Third Party Advisory

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2020-15118 vulnerability anywhere in the article.

The following table lists the changes that have been made to the CVE-2020-15118 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.

  • CVE Modified by [email protected]

    May. 14, 2024

    Action Type Old Value New Value
  • Initial Analysis by [email protected]

    Jul. 28, 2020

    Action Type Old Value New Value
    Added CVSS V2 Metadata Victim must voluntarily interact with attack mechanism
    Added CVSS V2 NIST (AV:N/AC:M/Au:S/C:N/I:P/A:N)
    Added CVSS V3.1 NIST AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
    Changed Reference Type https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.Field.help_text No Types Assigned https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.Field.help_text Third Party Advisory
    Changed Reference Type https://docs.wagtail.io/en/stable/reference/contrib/forms/index.html#usage No Types Assigned https://docs.wagtail.io/en/stable/reference/contrib/forms/index.html#usage Vendor Advisory
    Changed Reference Type https://github.com/wagtail/wagtail/blob/master/docs/releases/2.9.3.rst No Types Assigned https://github.com/wagtail/wagtail/blob/master/docs/releases/2.9.3.rst Release Notes, Third Party Advisory
    Changed Reference Type https://github.com/wagtail/wagtail/commit/d9a41e7f24d08c024acc9a3094940199df94db34 No Types Assigned https://github.com/wagtail/wagtail/commit/d9a41e7f24d08c024acc9a3094940199df94db34 Patch, Third Party Advisory
    Changed Reference Type https://github.com/wagtail/wagtail/security/advisories/GHSA-2473-9hgq-j7xw No Types Assigned https://github.com/wagtail/wagtail/security/advisories/GHSA-2473-9hgq-j7xw Third Party Advisory
    Added CWE NIST CWE-79
    Added CPE Configuration OR *cpe:2.3:a:torchbox:wagtail:*:*:*:*:*:*:*:* versions from (including) 2.7 up to (excluding) 2.7.4 *cpe:2.3:a:torchbox:wagtail:*:*:*:*:*:*:*:* versions from (including) 2.9 up to (excluding) 2.9.3
  • CVE Modified by [email protected]

    Jul. 20, 2020

    Action Type Old Value New Value
    Changed Description In Wagtail before versions 2.7.4 and 2.9.3, when a form page type is made available to Wagtail editors through the `wagtail.contrib.forms` app, and the page template is built using Django's standard form rendering helpers such as form.as_p, any HTML tags used within a form field's help text will be rendered unescaped in the page. Allowing HTML within help text is an intentional design decision by Django; however, as a matter of policy Wagtail does not allow editors to insert arbitrary HTML by default, as this could potentially be used to carry out cross-site scripting attacks, including privilege escalation. This functionality should therefore not have been made available to editor-level users. The vulnerability is not exploitable by an ordinary site visitor without access to the Wagtail admin. Patched versions have been released as Wagtail 2.7.4 (for the LTS 2.7 branch) and Wagtail 2.9.3 (for the current 2.9 branch). In these versions, help text will be escaped to prevent the inclusion of HTML tags. Site owners who wish to re-enable the use of HTML within help text (and are willing to accept the risk of this being exploited by editors) may set WAGTAILFORMS_HELP_TEXT_ALLOW_HTML = True in their configuration settings. Site owners who are unable to upgrade to the new versions can secure their form page templates by rendering forms field-by-field as per Django's documentation, but omitting the |safe filter when outputting the help text. In Wagtail before versions 2.7.4 and 2.9.3, when a form page type is made available to Wagtail editors through the `wagtail.contrib.forms` app, and the page template is built using Django's standard form rendering helpers such as form.as_p, any HTML tags used within a form field's help text will be rendered unescaped in the page. Allowing HTML within help text is an intentional design decision by Django; however, as a matter of policy Wagtail does not allow editors to insert arbitrary HTML by default, as this could potentially be used to carry out cross-site scripting attacks, including privilege escalation. This functionality should therefore not have been made available to editor-level users. The vulnerability is not exploitable by an ordinary site visitor without access to the Wagtail admin. Patched versions have been released as Wagtail 2.7.4 (for the LTS 2.7 branch) and Wagtail 2.9.3 (for the current 2.9 branch). In these versions, help text will be escaped to prevent the inclusion of HTML tags. Site owners who wish to re-enable the use of HTML within help text (and are willing to accept the risk of this being exploited by editors) may set WAGTAILFORMS_HELP_TEXT_ALLOW_HTML = True in their configuration settings. Site owners who are unable to upgrade to the new versions can secure their form page templates by rendering forms field-by-field as per Django's documentation, but omitting the |safe filter when outputting the help text.
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.
CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2020-15118 is associated with the following CWEs:

Common Attack Pattern Enumeration and Classification (CAPEC)

Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2020-15118 weaknesses.

Exploit Prediction

EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days.

0.11 }} 0.00%

score

0.41991

percentile

CVSS31 - Vulnerability Scoring System
Attack Vector
Attack Complexity
Privileges Required
User Interaction
Scope
Confidentiality
Integrity
Availability