CVE-2023-24540 Improper handling of JavaScript whitespace in html/template

Critical 9.8 Published Updated

Attackers can bypass sanitization in Go html/template by using specific JavaScript whitespace characters, potentially leading to cross-site scripting.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2023-24540?

CVE-2023-24540 is a critical cross-site scripting vulnerability in Golang Go, published on 11 May 2023. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

Not all valid JavaScript whitespace characters are considered to be whitespace. Templates containing whitespace characters outside of the character set "\t\n\f\r\u0020\u2028\u2029" in JavaScript contexts that also contain actions may not be properly sanitized during execution.

Weakness: CWE-77

Which versions are affected by CVE-2023-24540?

2 open source packages ship an affected version, including golang and stdlib. It affects 1 product.

PackageAffectedFixed in
golang BitnamiAll versions1.19.9, 1.20.4
stdlib GoAll versions1.19.9, 1.20.4
Linux distribution packages (38)
delve AlmaLinux:8All versions1.9.1-1.module_el8.8.0+3471+a62632a0
go-toolset AlmaLinux:8All versions1.19.9-1.module_el8.8.0+3570+5dc5ffc3
golang AlmaLinux:8All versions1.19.9-1.module_el8.8.0+3570+5dc5ffc3
golang-bin AlmaLinux:8All versions1.19.9-1.module_el8.8.0+3570+5dc5ffc3
golang-docs AlmaLinux:8All versions1.19.9-1.module_el8.8.0+3570+5dc5ffc3
golang-misc AlmaLinux:8All versions1.19.9-1.module_el8.8.0+3570+5dc5ffc3
golang-race AlmaLinux:8All versions1.19.9-1.module_el8.8.0+3570+5dc5ffc3
golang-src AlmaLinux:8All versions1.19.9-1.module_el8.8.0+3570+5dc5ffc3
golang-tests AlmaLinux:8All versions1.19.9-1.module_el8.8.0+3570+5dc5ffc3
go-toolset AlmaLinux:9All versions1.19.9-1.el9_2
golang AlmaLinux:9All versions1.19.9-2.el9_2
golang-bin AlmaLinux:9All versions1.19.9-2.el9_2
golang-docs AlmaLinux:9All versions1.19.9-2.el9_2
golang-misc AlmaLinux:9All versions1.19.9-2.el9_2
golang-race AlmaLinux:9All versions1.19.9-2.el9_2
golang-src AlmaLinux:9All versions1.19.9-2.el9_2
golang-tests AlmaLinux:9All versions1.19.9-2.el9_2
kubevirt Red Hat:container_native_virtualization:4.12::el7All versions0:4.12.5-1189.el7
kubevirt-virtctl Red Hat:container_native_virtualization:4.12::el7All versions0:4.12.5-1189.el7
kubevirt-virtctl-redistributable Red Hat:container_native_virtualization:4.12::el7All versions0:4.12.5-1189.el7
kubevirt Red Hat:container_native_virtualization:4.12::el8All versions0:4.12.5-1189.el8
kubevirt-virtctl Red Hat:container_native_virtualization:4.12::el8All versions0:4.12.5-1189.el8
kubevirt-virtctl-redistributable Red Hat:container_native_virtualization:4.12::el8All versions0:4.12.5-1189.el8
buildah Red Hat:openshift:4.12::el8All versions1:1.23.4-4.1.rhaos4.12.el8
buildah-debuginfo Red Hat:openshift:4.12::el8All versions1:1.23.4-4.1.rhaos4.12.el8
buildah-debugsource Red Hat:openshift:4.12::el8All versions1:1.23.4-4.1.rhaos4.12.el8
buildah-tests Red Hat:openshift:4.12::el8All versions1:1.23.4-4.1.rhaos4.12.el8
buildah-tests-debuginfo Red Hat:openshift:4.12::el8All versions1:1.23.4-4.1.rhaos4.12.el8
openshift Red Hat:openshift:4.12::el8All versions0:4.12.0-202305301919.p0.g3fe2906.assembly.stream.el8
openshift-clients Red Hat:openshift:4.12::el8All versions0:4.12.0-202305301015.p0.g97c75d0.assembly.stream.el8
openshift-clients-redistributable Red Hat:openshift:4.12::el8All versions0:4.12.0-202305301015.p0.g97c75d0.assembly.stream.el8
openshift-hyperkube Red Hat:openshift:4.12::el8All versions0:4.12.0-202305301919.p0.g3fe2906.assembly.stream.el8
skopeo Red Hat:openshift:4.12::el8All versions2:1.9.4-2.1.rhaos4.12.el8
skopeo-debuginfo Red Hat:openshift:4.12::el8All versions2:1.9.4-2.1.rhaos4.12.el8
skopeo-debugsource Red Hat:openshift:4.12::el8All versions2:1.9.4-2.1.rhaos4.12.el8
skopeo-tests Red Hat:openshift:4.12::el8All versions2:1.9.4-2.1.rhaos4.12.el8
openshift Red Hat:openshift:4.12::el9All versions0:4.12.0-202305301919.p0.g3fe2906.assembly.stream.el9
openshift-clients Red Hat:openshift:4.12::el9All versions0:4.12.0-202305301015.p0.g97c75d0.assembly.stream.el9

Products include Golang Go.

How do I fix CVE-2023-24540?

Upgrade golang to a fixed version for your release line: 1.19.9 or 1.20.4.

Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.

Is CVE-2023-24540 being exploited?

There is no known exploitation of CVE-2023-24540 in the wild and no public exploit code.

All Golang Go vulnerabilities

Sources

Also known as ALSA-2023:3318, ALSA-2023:3319, AZL-26626, AZL-37428, AZL-37517, AZL-79082 and 10 more.

Is CVE-2023-24540 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free