Description
httpTokenCacheKey uses path.Base to extract the expected HTTP-01 token value to lookup in the DirCache implementation. On Windows, path.Base acts differently to filepath.Base, since Windows uses a different path separator (\ vs. /), allowing a user to provide a relative path, i.e. .well-known/acme-challenge/..\..\asd becomes ..\..\asd. The extracted path is then suffixed with +http-01, joined with the cache directory, and opened. Since the controlled path is suffixed with +http-01 before opening, the impact of this is significantly limited, since it only allows reading arbitrary files on the system if and only if they have this suffix.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| golang.org/x/crypto | golang.org/x/crypto/acme/autocert | < 0.0.0-20220525230936-793ad666bf5e | 0.0.0-20220525230936-793ad666bf5e |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | golang-go.crypto | 1:0.0~git20220829.c86fa9a-1 | — |
| Debian 13 | golang-go.crypto | 1:0.0~git20220829.c86fa9a-1 | — |
| Debian 12 | golang-go.crypto | 1:0.0~git20220829.c86fa9a-1 | — |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| Go | golang.org/x/crypto | < 0.0.0-20220525230936-793ad666bf5e | 0.0.0-20220525230936-793ad666bf5e | GO-2024-2961 |