WordPress Vulnerabilities

WordPress <= 5.3 - wp_kses_bad_protocol() Colon Bypass

Description

A JavaScript payload such as "javascript&colon;alert(1)" in a URL could cause a Cross-Site Scripting (XSS) vulnerability.

According to the commit message (see references):

"`wp_kses_bad_protocol()` makes sure to validate that uri attributes don’t contain invalid/or not allowed protocols. While this works fine in most cases, there’s a risk that by using the colon html5 named entity, one is able to bypass this function."

Proof of Concept

Affects WordPress

Fixed in WordPress 3.8.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 3.9.30
Fixed in WordPress 3.9.30
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 3.9.30
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.1.29
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 4.2.26
Fixed in WordPress 3.8.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 3.7.32
Fixed in WordPress 3.7.32
Fixed in WordPress 3.7.32
Fixed in WordPress 3.7.32
Fixed in WordPress 3.7.32
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 3.9.30
Fixed in WordPress 3.9.30
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.0.29
Fixed in WordPress 4.0.29
Fixed in WordPress 4.0.29
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 4.3.22
Fixed in WordPress 4.3.22
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 4.4.21
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.4.21
Fixed in WordPress 4.3.22
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 4.5.20
Fixed in WordPress 4.5.20
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.5.20
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.6.17
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.7.16
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.7.16
Fixed in WordPress 4.6.17
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.7.16
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.7.16
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.7.16
Fixed in WordPress 4.7.16
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.8.12
Fixed in WordPress 4.8.12
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.7.16
Fixed in WordPress 4.8.12
Fixed in WordPress 4.8.12
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.7.16
Fixed in WordPress 4.9.13
Fixed in WordPress 4.9.13
Fixed in WordPress 4.8.12
Fixed in WordPress 4.7.16
Fixed in WordPress 4.6.17
Fixed in WordPress 4.5.20
Fixed in WordPress 4.4.21
Fixed in WordPress 4.3.22
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 4.9.13
Fixed in WordPress 4.8.12
Fixed in WordPress 4.7.16
Fixed in WordPress 4.6.17
Fixed in WordPress 4.5.20
Fixed in WordPress 4.4.21
Fixed in WordPress 4.3.22
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 4.9.13
Fixed in WordPress 4.9.13
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.7.16
Fixed in WordPress 4.8.12
Fixed in WordPress 4.9.13
Fixed in WordPress 4.9.13
Fixed in WordPress 3.7.32
Fixed in WordPress 3.8.32
Fixed in WordPress 3.9.30
Fixed in WordPress 4.0.29
Fixed in WordPress 4.1.29
Fixed in WordPress 4.2.26
Fixed in WordPress 4.3.22
Fixed in WordPress 4.4.21
Fixed in WordPress 4.5.20
Fixed in WordPress 4.6.17
Fixed in WordPress 4.7.16
Fixed in WordPress 4.8.12
Fixed in WordPress 4.9.13
Fixed in WordPress 4.9.13
Fixed in WordPress 5.0.8
Fixed in WordPress 5.0.8
Fixed in WordPress 4.9.13
Fixed in WordPress 4.8.12
Fixed in WordPress 4.7.16
Fixed in WordPress 4.6.17
Fixed in WordPress 4.5.20
Fixed in WordPress 4.4.21
Fixed in WordPress 4.3.22
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 5.0.8
Fixed in WordPress 5.0.8
Fixed in WordPress 5.1.4
Fixed in WordPress 5.1.4
Fixed in WordPress 5.0.8
Fixed in WordPress 4.9.13
Fixed in WordPress 4.8.12
Fixed in WordPress 4.7.16
Fixed in WordPress 4.6.17
Fixed in WordPress 4.5.20
Fixed in WordPress 4.4.21
Fixed in WordPress 4.3.22
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 5.2.5
Fixed in WordPress 5.2.5
Fixed in WordPress 5.2.5
Fixed in WordPress 5.2.5
Fixed in WordPress 5.1.4
Fixed in WordPress 5.0.8
Fixed in WordPress 4.9.13
Fixed in WordPress 4.8.12
Fixed in WordPress 4.7.16
Fixed in WordPress 4.6.17
Fixed in WordPress 4.5.20
Fixed in WordPress 4.4.21
Fixed in WordPress 4.3.22
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 5.2.5
Fixed in WordPress 5.1.4
Fixed in WordPress 5.0.8
Fixed in WordPress 4.9.13
Fixed in WordPress 4.8.12
Fixed in WordPress 4.7.16
Fixed in WordPress 4.6.17
Fixed in WordPress 4.5.20
Fixed in WordPress 4.4.21
Fixed in WordPress 4.3.22
Fixed in WordPress 4.2.26
Fixed in WordPress 4.1.29
Fixed in WordPress 4.0.29
Fixed in WordPress 3.9.30
Fixed in WordPress 3.8.32
Fixed in WordPress 3.7.32
Fixed in WordPress 5.3.1

References

Classification

Type
XSS
CWE

Miscellaneous

Original Researcher
WordPress.org Security Team
Verified
No

Timeline

Publicly Published
2019-12-13 (about 6 years ago)
Added
2020-01-04 (about 6 years ago)
Last Updated
2020-09-22 (about 5 years ago)

Other