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
- go.dev/cl/541175 patch
- go.dev/cl/540277 advisory
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
-
go.dev
/cl/540277
issue-tracking, vendor-advisory, advisory, patch
-
go.dev
/cl/541175
web, patch
-
go.dev
/issue/63713
issue-tracking, vendor-advisory, advisory, report
-
groups.google.com
/g/golang-announce/c/4tU8LZfBFkY
issue-tracking, mailing-list, vendor-advisory, advisory, web
-
pkg.go.dev
/vuln/GO-2023-2185
issue-tracking, vendor-advisory, advisory
-
go.dev
/issue/64028
web, report
-
groups.google.com
/g/golang-dev/c/6ypN5EjibjM/m/KmLVYH_uAgAJ
web
-
openwall.com
/lists/oss-security/2023/12/05/2
web
-
security.netapp.com
/advisory/ntap-20231214-0008/
web
-
nvd.nist.gov
/vuln/detail/CVE-2023-45283
web
Sources
- CVE List CVE-2023-45283
- NVD CVE-2023-45283
- OSV BIT-golang-2023-45283
- OSV GO-2023-2185
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.