Skip to content
Fencer Vulns
high 7.5

CVE-2023-45283 json

Insecure parsing of Windows paths with a \??\ prefix in path/filepath

published 2023-11-08 3 y ago modified 2026-09-08 2 mo ago also BIT-golang-2023-45283 , EUVD-2023-49584 , GO-2023-2185

cvss
7.5
version 3.1, NVD
cisa kev
Not listed
not in CISA's catalog
epss
3.3%
EPSS 3.3% chance of exploitation in 30 days, percentile 88%
public exploits
0
none known

Summary

The filepath package does not recognize paths with a \??\ prefix as special. On Windows, a path beginning with \??\ is a Root Local Device path equivalent to a path beginning with \\?\. Paths with a \??\ prefix may be used to access arbitrary locations on the system. For example, the path \??\c:\x is equivalent to the more common path c:\x. Before fix, Clean could convert a rooted path such as \a\..\??\b into the root local device path \??\b. Clean will now convert this to .\??\b. Similarly, Join(\, ??, b) could convert a seemingly innocent sequence of path elements into the root local device path \??\b. Join will now convert this to \.\??\b. In addition, with fix, IsAbs now correctly reports paths beginning with \??\ as absolute, and VolumeName correctly reports the \??\ prefix as a volume name. UPDATE: Go 1.20.11 and Go 1.21.4 inadvertently changed the definition of the volume name in Windows paths starting with \?, resulting in filepath.Clean(\?\c:) returning \?\c: rather than \?\c:\ (among other effects). The previous behavior has been restored.

Patch / fix

  • bitnami golang 1.20.11, 1.21.4
  • go stdlib 1.20.11, 1.20.12, 1.21.4, 1.21.5
  • Go standard library path/filepath 1.20.11, 1.20.12, 1.21.4, 1.21.5
  • Go standard library internal/safefilepath 1.20.11, 1.21.4
  • go1.20-openssl SLE Module for Development Tools 15 SP5, SLE Module for Development Tools 15 SP4, openSUSE Leap 15.5 +1 more 1.20.11.1-150000.1.14.1
  • go1.21 SLE Module for Development Tools 15 SP5, SLE Module for Development Tools 15 SP4, openSUSE Leap 15.5 +1 more 1.21.4-150000.1.15.1
  • go1.20 SLE Module for Development Tools 15 SP5, SLE Module for Development Tools 15 SP4, openSUSE Leap 15.5 +1 more 1.20.11-150000.1.32.1
  • go1.21-openssl SLE Module for Development Tools 15 SP5, SLE Module for Development Tools 15 SP4, openSUSE Leap 15.5 +1 more 1.21.4.1-150000.1.5.1

suse advisories SUSE-SU-2023:4472-1SUSE-SU-2023:4471-1SUSE-SU-2023:4470-1SUSE-SU-2023:4469-1

  • traefik2 openSUSE Tumbleweed 2.11.5-1.1
  • go1.20 openSUSE Tumbleweed 1.20.11-1.1
  • go1.21 openSUSE Tumbleweed 1.21.4-1.1
  • traefik openSUSE Tumbleweed 2.10.7-1.1

opensuse advisories openSUSE-SU-2024:14076-1openSUSE-SU-2024:13406-1openSUSE-SU-2024:13407-1openSUSE-SU-2024:13506-1

  • msft-golang CBL-Mariner 2.0 1.20.11-1
  • golang CBL-Mariner 2.0 1.21.6-1

azure linux advisories AZL-31897AZL-37397AZL-37444

Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT

Exploit prediction

3.35% chance of exploitation in the next 30 days, higher than 88% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
NVD 3.1 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
OSV 3.1 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Affected packages

ecosystem package affected fixed in
bitnami golang
<1.20.11
>=1.21.0-0, <1.21.4
1.20.11
1.21.4
go stdlib
<1.20.11
>=1.21.0-0, <1.21.4
>=1.20.11, <1.20.12
>=1.21.4, <1.21.5
1.20.11
1.21.4
1.20.12
1.21.5

Affected products

  • Go standard library path/filepath
  • Go standard library internal/safefilepath

Classification

Weakness
  • CWE-22 Improper Limitation of a Pathname to a Restricted Directory

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.