Directory Traversal Affecting golang-tests package, versions <0:1.20.12-1.49.amzn1


Severity

Recommended
medium

Based on Amazon Linux security rating.

Threat Intelligence

EPSS
0.17% (55th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications

Snyk Learn

Learn about Directory Traversal vulnerabilities in an interactive lesson.

Start learning
  • Snyk IDSNYK-AMZN201803-GOLANGTESTS-6147441
  • published9 Jan 2024
  • disclosed9 Nov 2023

Introduced: 9 Nov 2023

CVE-2023-45283  (opens in a new tab)
CWE-22  (opens in a new tab)

How to fix?

Upgrade Amazon-Linux:2018.03 golang-tests to version 0:1.20.12-1.49.amzn1 or higher.
This issue was patched in ALAS-2024-1903.

NVD Description

Note: Versions mentioned in the description apply only to the upstream golang-tests package and not the golang-tests package as distributed by Amazon-Linux. See How to fix? for Amazon-Linux:2018.03 relevant fixed versions and status.

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.

CVSS Scores

version 3.1