CVE-2026-39822
WysokieCVSS 7.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 8 - wyżej niż 8% wszystkich znanych CVE
Streszczenie
W systemach Unix otwieranie pliku w os.Root nieprawidłowo podąża za dowiązaniami symbolicznymi do lokalizacji poza Root, gdy ostatni komponent ścieżki jest dowiązaniem symbolicznym, a ścieżka kończy się na /. Na przykład 'root.Open("symlink/")' otworzy "symlink", nawet jeśli wskazuje on poza korzeń.
Ocena ryzyka
Ryzyko polega na możliwości ominięcia ograniczeń dostępu do systemu plików, co może prowadzić do odczytu lub zapisu plików poza zamierzonym katalogiem głównym, potencjalnie ujawniając wrażliwe dane lub umożliwiając eskalację uprawnień.
Rekomendacja
Zaleca się natychmiastową aktualizację do wersji Go, która zawiera poprawkę dla CVE-2026-39822, oraz unikanie używania ścieżek kończących się ukośnikiem przy otwieraniu plików przez os.Root do czasu zastosowania łatki.
Inne podatności w Go
Zobacz wszystkie- CVE-2025-47906Średnie
Podatność w funkcji LookPath powoduje, że gdy zmienna środowiskowa PATH zawiera ścieżki do plików wykonywalnych (a nie tylko katalogów), przekazanie określonych ciągów znaków („”, „.”, „..”) może skutkować nieoczekiwanym zwróceniem plików binarnych wymienionych w PATH.
- CVE-2023-45290Średnie
Podczas parsowania formularza multipart w Go, limity całkowitego rozmiaru formularza nie były stosowane do pamięci zużywanej podczas odczytu pojedynczej linii. Umożliwia to atakującemu wysłanie złośliwego żądania, które może spowodować nadmierne zużycie pamięci.
- CVE-2025-22873Średnie
Podatność w pakiecie os standardowej biblioteki Go umożliwia nieprawidłowy dostęp do katalogu nadrzędnego os.Root poprzez otwarcie nazwy pliku kończącej się na "../". Na przykład wywołanie Root.Open("../") otwiera katalog nadrzędny, co stanowi naruszenie ograniczeń dostępu.
- CVE-2025-0913Średnie
Podatność w implementacji funkcji os.OpenFile w języku Go powoduje różne zachowanie na systemach Unix i Windows, gdy ścieżka docelowa jest wiszącym dowiązaniem symbolicznym. Na Unixie flaga O_EXCL zapobiega podążaniu za dowiązaniami, podczas gdy na Windowsie funkcja może podążać za dowiązaniem do nieistniejącej lokalizacji.
- CVE-2023-39325Wysokie
Podatność w implementacji HTTP/2 w Go pozwala złośliwemu klientowi na szybkie tworzenie i resetowanie żądań, co prowadzi do nadmiernego zużycia zasobów serwera. Mimo ograniczenia liczby równoczesnych strumieni przez MaxConcurrentStreams, resetowanie żądań umożliwia atakującemu ciągłe wysyłanie nowych żądań.
- CVE-2023-45283Wysokie
Pakiet filepath w Go nie rozpoznaje ścieżek z prefiksem \??\ jako specjalnych. W systemie Windows ścieżka zaczynająca się od \??\ jest równoważna ścieżce zaczynającej się od \\?\ i może być używana do dostępu do dowolnych lokalizacji w systemie.
- CVE-2023-29406Średnie
Klient HTTP/1 w języku Go nie w pełni weryfikuje zawartość nagłówka Host. Złośliwie spreparowany nagłówek Host może umożliwić wstrzyknięcie dodatkowych nagłówków lub całych żądań. Poprawka uniemożliwia wysyłanie żądań z nieprawidłową wartością Request.Host lub Request.URL.Host.
- CVE-2024-34155Średnie
Podatność w standardowym parserze języka Go powoduje panikę przy przetwarzaniu kodu źródłowego z głęboko zagnieżdżonymi literałami. Problem wynika z wyczerpania stosu podczas rekurencyjnego parsowania.
- CVE-2024-45336Średnie
Klient HTTP w Go usuwa wrażliwe nagłówki (np. Authorization) po przekierowaniu między domenami, ale może je ponownie wysłać przy kolejnym przekierowaniu w obrębie tej samej domeny, co stanowi potencjalne ryzyko wycieku danych.
- CVE-2026-56865Wysokie
Złośliwy GOPROXY mógł wcześniej sfałszować do dwóch kafelków sumdb, co pozwalało na obejście kontroli GOSUMDB dla żądanego modułu i utrwalenie treści modułu kontrolowanej przez atakującego w lokalnym cache modułów Go. Atak umożliwia złośliwemu GOPROXY serwowanie złośliwej treści modułu, która nie może być wykryta przez ocenę dziennika przejrzystości. Wszystkie kafelki są teraz poprawnie weryfikowane względem ich rodziców. Aby sprawdzić, czy zostałeś dotknięty: rm -r go.sum go.work.sum vendor/ && go mod tidy
Oryginalny opis (angielski, źródło NVD)
On Unix systems, opening a file in an os.Root improperly follows symlinks to locations outside of the Root when the final path component of the a path is a symbolic link and the path ends in /. For example, 'root.Open("symlink/")' will open "symlink" even when "symlink" is a symbolic link pointing outside of the root.

