CVE-2026-67319
ŚrednieCVSS 6.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 17 - wyżej niż 17% wszystkich znanych CVE
Streszczenie
Axios przed wersją 0.33.0 (oraz 1.x przed 1.18.0) może konsumować dziedziczone właściwości z zagnieżdżonych obiektów opcji żądania, gdy Object.prototype procesu JavaScript został już zanieczyszczony przez inny komponent. Mimo że scalona konfiguracja najwyższego poziomu używa prototypu null, zagnieżdżone obiekty, takie jak auth i paramsSerializer, są klonowane do zwykłych obiektów i odczytywane bez sprawdzania własności. Gdy aplikacja przekazuje zagnieżdżone obiekty zastępcze, takie jak auth: {} lub paramsSerializer: {}, dziedziczone wartości nazwy użytkownika/hasła mogą spowodować ciche wstrzyknięcie nagłówka Authorization: Basic, a dziedziczone wartości encode/serialize mogą zmienić serializację łańcucha zapytania (pełna zamiana serializatora wymaga prymitywu zanieczyszczenia funkcją). Jest to możliwe do wykorzystania tylko w obecności istniejącego zanieczyszczenia prototypu.
Ocena ryzyka
Ryzyko polega na możliwości cichego wstrzyknięcia nagłówka autoryzacyjnego lub zmiany serializacji URL, co może prowadzić do nieautoryzowanego dostępu lub manipulacji żądaniami, ale tylko w przypadku wcześniejszego zanieczyszczenia prototypu przez inny komponent.
Rekomendacja
Zaleca się aktualizację biblioteki axios do wersji 0.33.0 lub 1.18.0 oraz zabezpieczenie aplikacji przed zanieczyszczeniem prototypu.
Inne podatności w axios
Zobacz wszystkie- GHSA-mmx7-hfxf-jppxŚrednie
Axios jest podatny na gadżety zanieczyszczenia prototypu po stronie odczytu, gdy Object.prototype został już zanieczyszczony przez inną podatność lub zależność. Najbardziej dostępny problem dotyczy aliasów metod bez ciała: axios.get(), axios.delete(), axios.head() i axios.options().
- GHSA-pmv8-rq9r-6j72Średnie
Axios w wersjach od 0.28.0 zawiera niekontrolowaną rekurencję w formDataToJSON, która jest udostępniana jako axios.formToJSON() i używana wewnętrznie, gdy axios serializuje FormData z Content-Type: application/json. Jeśli aplikacja przekaże kontrolowane przez atakującego nazwy pól FormData, może to prowadzić do wyczerpania stosu.
- CVE-2025-27152Wysokie
Podatność w bibliotece axios pozwala na wysyłanie żądań do absolutnych URL-i zamiast względnych, co może prowadzić do ataków SSRF i wycieku poświadczeń. Nawet przy ustawionym baseURL, axios ignoruje to i wysyła żądanie do podanego absolutnego adresu URL.
- GHSA-7q8q-rj6j-mhjqŚrednie
Axios może konsumować dziedziczone właściwości z zagnieżdżonych obiektów opcji żądania, gdy proces JavaScript ma już zanieczyszczony Object.prototype. Główna połączona konfiguracja jest chroniona prototypem null, ale zagnieżdżone zwykłe obiekty, takie jak auth i paramsSerializer, są klonowane do obiektów z prototypem.
- GHSA-42h9-826w-cgv3Średnie
Axios w wersjach 0.28.0 i późniejszych zawiera niekontrolowaną rekurencję w formDataToJSON, pomocniku stojącym za publicznym API axios.formToJSON() / nazwanym formToJSON oraz domyślnym przekształceniu żądania używanym, gdy FormData jest wysyłane z typem treści application/json.
- CVE-2023-45857Średnie
W Axios 1.5.1 wykryto problem, który nieumyślnie ujawnia poufny token XSRF-TOKEN przechowywany w ciasteczkach. Token ten jest dołączany do nagłówka HTTP X-XSRF-TOKEN w każdym żądaniu wysyłanym do dowolnego hosta, co pozwala atakującym na podejrzenie wrażliwych informacji.
- CVE-2025-62718Krytyczne
Podatność w bibliotece Axios przed wersjami 1.15.0 i 0.31.0 nieprawidłowo normalizuje nazwy hostów podczas sprawdzania reguł NO_PROXY. Żądania do adresów pętli zwrotnej, takich jak localhost. (z kropką na końcu) lub [::1] (adres IPv6), omijają dopasowanie NO_PROXY i są kierowane przez skonfigurowany serwer proxy.
- CVE-2026-67321Średnie
W bibliotece axios w wersjach 0.31.1 przed 0.33.0 oraz 1.15.1 przed 1.18.0 występuje niekompletne obejście ograniczenia głębokości w pliku toFormData.js. Atakujący kontrolujący klucze obiektów i zagnieżdżone wartości przekazywane do serializacji formularza lub parametrów może wywołać błąd RangeError z JSON.stringify, powodując odmowę usługi w ścieżce żądania.
- CVE-2026-67320Wysokie
axios w środowisku Node.js używające adaptera HTTP może kierować żądania przez proxy kontrolowane przez atakującego. axios zabezpiecza scaloną konfigurację żądania, tworząc obiekt z prototypem null, ale interceptory żądań działają po scaleniu; popularny wzorzec niezmiennego interceptora, taki jak {...config} lub Object.assign({}, config), konwertuje zabezpieczoną konfigurację z powrotem na zwykły obiekt. axios następnie wysyła ten obiekt bez ponownego zabezpieczania, a adapter HTTP Node odczytuje config.proxy przez łańcuch prototypów. Jeśli atakujący może zanieczyścić Object.prototype.proxy, dotknięte żądania mogą być kierowane przez proxy kontrolowane przez atakującego. W przypadku zwykłych żądań HTTP proxy może obserwować nagłówki Authorization, Basic auth z config.auth, metodę, bezwzględny URL, Host i treść żądania oraz może zwrócić własną odpowiedź. Dotyczy wersji >=0.31.1 (naprawione w 0.33.0) i >=1.15.2 (naprawione w 1.18.0).
- CVE-2026-67318Średnie
Axios w wersjach >=1.13.0 (adapter HTTP Node.js) nie egzekwuje skonfigurowanego limitu maxBodyLength dla strumieniowych ciał żądań, gdy żądania są wysyłane z httpVersion: 2. Ponieważ API żądań HTTP/2 Node.js nie honoruje opcji maxBodyLength, a opakowanie strumienia zliczającego bajty w axios jest uzależnione od maxRedirects === 0, atakujący kontrolujący strumień przekazany do axios może spowodować, że aplikacja wyśle dane wyjściowe przekraczające skonfigurowany skończony maxBodyLength. Wpływ jest ograniczony do zużycia zasobów i obejścia polityki (nadmierny egress, zużycie limitów upstream, ograniczona dostępność); nie umożliwia wykonania kodu, ujawnienia danych uwierzytelniających ani kontroli miejsca docelowego żądania. Wywołania z domyślnym maxBodyLength: -1 i adaptery przeglądarkowe nie są dotknięte.
Oryginalny opis (angielski, źródło NVD)
axios before 0.33.0 (and 1.x before 1.18.0) can consume inherited properties from nested request option objects when the JavaScript process's Object.prototype has already been polluted by another component. While the top-level merged config uses a null prototype, nested plain objects such as auth and paramsSerializer are cloned into ordinary objects and read without own-property checks. When an application passes placeholder nested objects such as auth: {} or paramsSerializer: {}, inherited username/password values can cause silent injection of an Authorization: Basic header, and inherited encode/serialize values can alter query-string serialization (full serializer replacement requires a function-valued pollution primitive). This is exploitable only in the presence of pre-existing prototype pollution.

