CVE-2026-125117
WysokieCVSS 8.2Streszczenie
Mongoose może schodzić do właściwości dziedziczonych podczas ładowania dokumentów w init(), ustawiania ścieżek z kropkami w $__set oraz scalania dokumentów aktualizacji w utils.mergeClone. Klucze kontrolowane przez atakującego, takie jak toString lub valueOf, mogą spowodować zapis do współdzielonych funkcji wbudowanych zamiast do własnej właściwości. Spreparowany dokument, ścieżka Mixed, dokument nieścisły lub źródło Query.prototype.merge() może nadpisać Object.prototype.toString.call, powodując awarie późniejszych zapytań na niezwiązanych modelach do czasu restartu procesu. Dodatkowo, gdy atakujący kontroluje ścieżkę z kropkami przekazaną do doc.set() dla poddokumentu z strict: false, zejście przez $__set może dotrzeć do $__schema i zmienić współdzielone walidatory lub opcje schematu.
Ocena ryzyka
Atakujący może uszkodzić współdzielone obiekty w pamięci, powodując odmowę działania aplikacji lub zmianę zachowania walidacji dla kolejnych dokumentów. Może to prowadzić do obejścia walidacji lub trwałych awarii wymagających restartu.
Rekomendacja
Zaktualizuj Mongoose do wersji 6.13.12, 7.8.13, 8.24.7 lub 9.11.4 (lub nowszej). Do czasu aktualizacji unikaj przekazywania niezaufanych ścieżek z kropkami do doc.set() oraz niezaufanych danych do operacji scalania.
Inne podatności w Mongoose
Zobacz wszystkie- CVE-2026-125119Wysokie
Mongoose przechowuje opcję sanitizeFilter na poziomie połączenia w Connection.config, ale Query.prototype._castConditions() i rzutowanie zapytań sprawdzają inne lokalizacje opcji i nie odczytują tej konfiguracji. Aplikacja, która włącza sanitizeFilter przez mongoose.connect() lub createConnection() i przekazuje obiekt kontrolowany przez atakującego do filtra zapytania, otrzymuje połączenie raportujące włączoną ochronę, podczas gdy obiekty selektorów pozostają niesanityzowane. Wykorzystanie operatora zapytania w haśle może dopasować konto bez znajomości literalnego hasła.
- CVE-2026-125118Średnie
Mongoose przed wersjami 6.13.12, 7.8.13, 8.24.7 i 9.11.4 pozwala na budowanie zagnieżdżonych ścieżek wirtualnych przez Schema.prototype.virtual() bez walidacji właściwości specjalnych stosowanej w Schema.path() i Schema.add(). Atakujący mogący wpływać na nazwy pól wirtualnych może dostarczyć segmenty takie jak __proto__, constructor lub prototype, powodując zanieczyszczenie prototypu Object.prototype lub Function.prototype. Może to fałszować dziedziczone sprawdzenia właściwości, np. flagi autoryzacji.
- CVE-2026-125116Średnie
Mongoose przed wersjami 6.13.12, 7.8.13, 8.24.7 i 9.11.4 używa wartości klucza dyskryminatora kontrolowanych przez atakującego (w tym domyślnego pola __t) do indeksowania rejestrów obiektów, takich jak Model.discriminators i schema.discriminators, bez wymagania własnej właściwości. Wartości takie jak constructor, toString lub hasOwnProperty mogą wskazywać na dziedziczone funkcje wbudowane, powodując pomieszanie typów w konstrukcji modeli, tworzeniu dokumentów, hydracji, rzutowaniu zapytań i aktualizacji oraz operacjach populate. W ścieżce bulkWrite() insertOne z skipValidation wartość constructor może spowodować zapis surowego obiektu bez rzutowania schematu, a zatruty dokument może powodować błędy wszystkich zapytań do momentu jego usunięcia.
- CVE-2026-125120Krytyczne
W bibliotece Mongoose funkcja countDocuments() nie stosuje skonfigurowanej ochrony sanitizeFilter przed wstrzykiwaniem selektorów zapytań. Aplikacja, która włącza sanitizeFilter i przekazuje do countDocuments() wartości filtrów kontrolowane przez atakującego, może przetwarzać obiekty operatorów zapytań jako operatory zamiast wartości literalnych. Może to zaniżać lub zawyżać liczbę wyników i podważać logikę autoryzacji opartą na tej liczbie.
- CVE-2026-73257Krytyczne
Podatność w Mongoose przed wersją 7.22 pozwala zdalnemu nieuwierzytelnionemu atakującemu na wysłanie żądania HTTP zawierającego zarówno Content-Length, jak i Transfer-Encoding: chunked. Kontrolery cl_count i te_count akceptują oba nagłówki i priorytetyzują kodowanie chunked, co prowadzi do desynchronizacji CL.TE i umożliwia wstrzyknięcie żądań w kontekście innego użytkownika.
- CVE-2026-73256Krytyczne
Podatność w Mongoose przed wersją 7.22 umożliwia zdalnemu nieuwierzytelnionemu atakującemu wykorzystanie wdrożenia z odwrotnym proxy HTTP/1.0 poprzez wysłanie żądania z Transfer-Encoding: chunked i sprzecznym framingiem. Funkcja http_cb() testuje hm.proto.len z niemożliwym warunkiem większym niż osiem, co powoduje, że is_http_1_0 nigdy nie jest ustawiane, a Mongoose przetwarza chunked encoding, które proxy HTTP/1.0 może zignorować.
- CVE-2026-73253Krytyczne
Podatność w Mongoose przed wersją 7.22 pozwala atakującemu sieciowemu z certyfikatem wildcard dla domeny nadrzędnej na podszywanie się pod głębsze subdomeny wobec klienta używającego wbudowanego stosu TLS. Funkcje mg_tls_verify_cert_san() i mg_tls_verify_cert_cn() wywołują mg_match(), którego wildcard może przekraczać granice etykiet DNS, więc wzorzec taki jak *.example.com może pasować do foo.bar.example.com.
- CVE-2026-73251Krytyczne
Podatność w Mongoose przed wersją 7.23 pozwala atakującemu sieciowemu na podszywanie się pod serwer TLS wobec klienta Mongoose skonfigurowanego z pakietem wielu certyfikatów CA. Funkcja mg_tls_init() przechowuje pakiet w tls->ca_bundle_der, podczas gdy tls->ca_der.len pozostaje zerowe, a mg_tls_recv_cert() używa tls_bundle_find() do akceptacji dopasowania Common Name bez weryfikacji podpisu certyfikatu.
- CVE-2026-115473Średnie
W Mongoose przed wersją 7.22 funkcja mg_path_is_sane w src/util.c odczytywała path.buf[1] bez uprzedniego sprawdzenia, czy path.len wynosi co najmniej dwa, oraz odczytywała s[2], gdy pozostały tylko dwa bajty. Nieuwierzytelnione zdalne żądania do mg_http_upload lub mg_http_serve_dir z krótkimi ścieżkami mogły wywołać jednobajtowe odczyty poza granicami sterty.
- CVE-2026-73261Wysokie
Mongoose, wbudowany serwer webowy i biblioteka sieciowa, przed wersją 7.23 nie odrzuca opcji TCP, której zadeklarowana długość opts[1] przekracza pozostałe bajty opcji. W handle_opt() sekwencja NOP, po której następuje obcięta opcja MSS, powoduje odczyt opts[3] poza zadeklarowanym obszarem opcji i użycie go jako dolnego bajtu dmss. Nieuwierzytelniony zdalny peer może uszkodzić wartość MSS dla połączenia, przez co późniejsze wywołania mg_send() wysyłają obcięte lub zerowej długości ładunki aplikacji, podczas gdy połączenie TCP wygląda na sprawne.
Oryginalny opis (angielski, źródło NVD)
Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment. Prior to 6.13.12, 7.8.13, 8.24.7, and 9.11.4, Mongoose can descend into inherited properties while loading database documents in init(), setting dotted paths in $__set, and merging update documents in utils.mergeClone. Attacker-controlled keys such as toString or valueOf can therefore cause Mongoose to write into shared built-in functions instead of an own property. A crafted document, Mixed path, non-strict document or subdocument, findOneAndReplace() replacement, chained update, or Query.prototype.merge() source can overwrite Object.prototype.toString.call, causing later queries on unrelated models to fail until the process restarts. Separately, when an attacker controls the dotted path passed to doc.set(path, value) for a subdocument configured with strict: false, descent through $__set can reach $__schema and alter shared validators or schema options for later documents. Mongoose already blocks __proto__, constructor, and prototype, so this issue overwrites properties on reachable shared objects rather than adding new properties directly to Object.prototype. This issue is fixed in versions 6.13.12, 7.8.13, 8.24.7, and 9.11.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

