Vulnerability · Published Apr 6, 2023 · Assigned by Go

CVE-2023-24538Backticks not treated as string delimiters in html/template

Critical 9.8

In plain English

A critical-severity code injection in html/template from Go standard library. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 2.3% (higher than 83% of all known vulnerabilities). Ready-made attack tooling exists: public proof-of-concept code. Fixed versions are available - upgrade the affected package.

Severity (CVSS 3.1)9.8Critical
Exploit odds (30 days)2.3%top 16.8% of all CVEs
Exploited in the wildNo reportsCISA SSVC: none
Attack tooling1Public PoC

Official description

Templates do not properly consider backticks (`) as Javascript string delimiters, and do not escape them as expected. Backticks are used, since ES6, for JS template literals. If a template contains a Go template action within a Javascript template literal, the contents of the action can be used to terminate the literal, injecting arbitrary Javascript code into the Go template. As ES6 template literals are rather complex, and themselves can do string interpolation, the decision was made to simply disallow Go template actions from being used inside of them (e.g. "var a = {{.}}"), since there is no obviously safe way to allow this behavior. This takes the same approach as github.com/google/safehtml. With fix, Template.Parse returns an Error when it encounters templates like this, with an ErrorCode of value 12. This ErrorCode is currently unexported, but will be exported in the release of Go 1.21. Users who rely on the previous behavior can re-enable it using the GODEBUG flag jstmpllitinterp=1, with the caveat that backticks will now be escaped. This should be used with caution.

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
AlmaLinux:8aardvark-dns2:1.7.0-1.module_el8.9.0+3657+d86e192fALSA-2023:6939
AlmaLinux:8aardvark-dns2:1.0.1-38.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8buildah1:1.24.6-7.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8buildah1:1.31.3-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9buildah1:1.31.3-1.el9ALSA-2023:6473
AlmaLinux:8buildah-tests1:1.31.3-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8buildah-tests1:1.24.6-7.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9buildah-tests1:1.31.3-1.el9ALSA-2023:6473
AlmaLinux:8cockpit-podman75-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8cockpit-podman46-1.module_el8.7.0+3344+5bcd850fALSA-2023:6938
AlmaLinux:8conmon2:2.1.4-2.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8conmon3:2.1.8-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8container-selinux2:2.205.0-3.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8container-selinux2:2.221.0-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8containernetworking-plugins1:1.3.0-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8containernetworking-plugins1:1.1.1-5.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9containernetworking-plugins1:1.3.0-4.el9ALSA-2023:6402
AlmaLinux:8containers-common2:1-38.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8containers-common2:1-54.module_el8.9.0+3673+0c64b403ALSA-2023:6939
AlmaLinux:8crit3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8crit3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8crit3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8criu3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8criu3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8criu3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8criu-devel3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8criu-devel3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8criu-devel3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8criu-libs3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8criu-libs3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8criu-libs3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8crun1.8.7-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8crun1.8.3-1.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8fuse-overlayfs1.9-2.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8fuse-overlayfs1.12-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8libslirp4.4.0-1.module_el8.8.0+3615+3543c705ALSA-2023:6939
AlmaLinux:8libslirp4.4.0-1.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8libslirp4.4.0-1.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8libslirp-devel4.4.0-1.module_el8.8.0+3615+3543c705ALSA-2023:6939
AlmaLinux:8libslirp-devel4.4.0-1.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8libslirp-devel4.4.0-1.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8netavark2:1.7.0-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8netavark2:1.0.1-38.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8oci-seccomp-bpf-hook1.2.5-2.module_el8.8.0+3468+16b86c82ALSA-2023:6938
AlmaLinux:8oci-seccomp-bpf-hook1.2.9-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-catatonit3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-catatonit2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8podman-docker3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-docker2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman-docker2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-gvproxy2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8podman-gvproxy3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9podman-gvproxy2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-plugins3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-plugins2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman-plugins2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-remote3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-remote2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman-remote2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-tests3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-tests2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman-tests2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8python3-criu3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8python3-criu3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8python3-criu3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8python3-podman4.0.0-2.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8python3-podman4.6.0-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8runc1:1.1.5-2.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8runc1:1.1.9-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8skopeo2:1.13.3-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8skopeo2:1.6.2-8.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9skopeo2:1.13.3-1.el9ALSA-2023:6363
AlmaLinux:8skopeo-tests2:1.6.2-8.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8skopeo-tests2:1.13.3-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9skopeo-tests2:1.13.3-1.el9ALSA-2023:6363
AlmaLinux:8slirp4netns1.2.1-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8slirp4netns1.1.8-3.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8toolbox0.0.99.4-5.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8toolbox0.0.99.4-5.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9toolbox0.0.99.4-6.el9_3ALSA-2023:6346
AlmaLinux:8toolbox-tests0.0.99.4-5.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8toolbox-tests0.0.99.4-5.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9toolbox-tests0.0.99.4-6.el9_3ALSA-2023:6346
AlmaLinux:8udica0.2.6-4.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8udica0.2.6-20.module_el8.8.0+3615+3543c705ALSA-2023:6939
Alpine:v3.20go1.20.3-r0ALPINE-CVE-2023-24538
Alpine:v3.21go1.20.3-r0ALPINE-CVE-2023-24538
Alpine:v3.22go1.20.3-r0ALPINE-CVE-2023-24538
Alpine:v3.23go1.20.3-r0ALPINE-CVE-2023-24538
Alpine:v3.24go1.20.3-r0ALPINE-CVE-2023-24538
Debian:12golang-1.191.19.8-2DEBIAN-CVE-2023-24538
Gostdlib1.19.8, 1.20.3GO-2023-1703
Rocky Linux:8buildah1:1.24.6-7.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8cockpit-podman0:46-1.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8conmon2:2.1.4-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8container-selinux2:2.205.0-3.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8containernetworking-plugins1:1.1.1-5.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8containers-common2:1-38.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8criu0:3.15-3.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8crun0:1.8.3-1.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8fuse-overlayfs0:1.9-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8libslirp0:4.4.0-1.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8libslirp0:4.4.0-1.module+el8.9.0+1445+07728297RLSA-2023:6939
Rocky Linux:8oci-seccomp-bpf-hook0:1.2.5-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8podman2:4.0.2-24.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8python-podman0:4.0.0-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8runc1:1.1.5-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8slirp4netns0:1.1.8-3.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8udica0:0.2.6-4.module+el8.9.0+1445+07728297RLSA-2023:6938
Ubuntu:22.04:LTSgolang-1.131.13.8-1ubuntu2.22.04.2USN-6038-2
Ubuntu:22.04:LTSgolang-1.131.13.8-1ubuntu2.22.04.2UBUNTU-CVE-2023-24538
Ubuntu:22.04:LTSgolang-1.171.17.13-3ubuntu1.2USN-7061-1
Ubuntu:22.04:LTSgolang-1.171.17.13-3ubuntu1.2UBUNTU-CVE-2023-24538
Ubuntu:22.04:LTSgolang-1.181.18.1-1ubuntu1.1USN-6038-1
Ubuntu:22.04:LTSgolang-1.181.18.1-1ubuntu1.1UBUNTU-CVE-2023-24538

Affected products (as reported)

VendorProductVersions
Go standard library html/template 0 – before 1.19.81.20.0-0 – before 1.20.3

Weakness: CWE-94 · Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

References