CVE-2026-86750
WysokieCVSS 7.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 9 - wyżej niż 9% wszystkich znanych CVE
Streszczenie
Snipe-IT w wersjach do 8.6.3 (poprawione w 8.7.0) nie weryfikuje autoryzacji przypisania firmy przed zapisaniem rekordów użytkowników przez REST API. W Api\UsersController::store() i ::update() rekord użytkownika jest wypełniany z żądania i zapisywany przed filtrowaniem żądanych wartości company_id / company_ids[] względem firm dozwolonych dla aktora (Company::getIdsForCurrentUser()). W instalacjach z pełnym wsparciem wielu firm (FMCS), nie-superużytkownik z uprawnieniami users.create (lub users.edit na docelowym użytkowniku) może przesłać identyfikatory firm spoza swojego zakresu — w tym mieszankę dozwolonych i obcych identyfikatorów — co powoduje zapisanie wiersza konta w bazie danych przed sprawdzeniem autoryzacji. Gdy ustawione jest null_company_is_floater=1, filtr po fakcie pozostawia pusty pivot firmy, a konto jest zapisywane jako "floater" z widocznością między firmami, co pozwala na tworzenie lub przenoszenie kont użytkowników między granicami dzierżawców.
Ocena ryzyka
Ryzyko obejmuje nieautoryzowane tworzenie lub przenoszenie kont użytkowników między firmami, co może prowadzić do naruszenia izolacji danych i nieautoryzowanego dostępu do zasobów.
Rekomendacja
Zaleca się aktualizację Snipe-IT do wersji 8.7.0 lub nowszej oraz wdrożenie walidacji autoryzacji przed zapisem danych użytkownika.
Inne podatności w Snipe-IT
Zobacz wszystkie- CVE-2026-116201Wysokie
Snipe-IT przed wersją 8.5.0 zawiera podatność powtórzenia asercji SAML, która pozwala atakującym na ponowne użycie przechwyconych asercji poprzez wykorzystanie nieatomowego sprawdzania nonce w obsłudze SAML acs. Atakujący mogą wysłać równoległe żądania POST do /saml/acs z jedną przechwyconą asercją, aby uzyskać wiele uwierzytelnionych sesji ofiary.
- CVE-2026-116200Średnie
Snipe-IT przed wersją 8.6.3 ignoruje wartość zwracaną przez ldap_start_tls() w Ldap::connectToLdap(), co pozwala atakującym w ścieżce sieciowej wymusić jawne powiązania LDAP. Atakujący mogą odpowiedzieć na żądanie StartTLS błędem protokołu, aby przechwycić poświadczenia konta usługi i hasła logowania użytkowników końcowych.
- CVE-2026-116199Wysokie
Snipe-IT przed wersją 8.6.3 zawiera obejście uwierzytelniania w GoogleAuthController::handleGoogleCallback, które loguje użytkownika o nazwie zgodnej z adresem e-mail konta Google bez wymuszania flagi aktywacji. Dezaktywowani użytkownicy z nazwami w formie e-mail i aktywnymi tożsamościami Google mogą zalogować się przez Google SSO i odzyskać sesje na pierwotnym poziomie uprawnień, w tym administratora.
- CVE-2026-116198Średnie
Snipe-IT przed wersją 8.7.0 zawiera podatność polegającą na braku szyfrowania w Api\AssetsController::store, która zapisuje dane w postaci jawnej do kolumn niestandardowych pól oznaczonych jako szyfrowane, gdy wywołujący nie mają uprawnienia assets.view.encrypted_custom_fields. Uwierzytelnieni użytkownicy API bez tego uprawnienia mogą tworzyć zasoby, których wrażliwe wartości niestandardowych pól są przechowywane w bazie danych bez szyfrowania, co naraża je poprzez kopie zapasowe, repliki lub bezpośredni dostęp do bazy danych.
- CVE-2026-114064Średnie
Snipe-IT w wersjach przed 8.7.0 zawiera podatność typu server-side request forgery w funkcji testowania webhooków, która pozwala użytkownikom z uprawnieniami super-administratora na sondowanie wewnętrznych adresów sieciowych, w tym zakresów loopback i RFC1918. Atakujący mogą kierować webhooki na wewnętrzne hosty i porty, a następnie porównywać odpowiedzi 4xx i 5xx z Test Webhooks, aby mapować otwarte porty i aktywne hosty.
- CVE-2026-63498Wysokie
Snipe-IT przed wersją 8.7.0 pozwala uwierzytelnionemu użytkownikowi z uprawnieniami do zarządzania plikami na przesyłanie załączników XML i XSLT oraz żądanie ich z parametrem inline=true. Przeglądarka może przetworzyć odniesienie xml-stylesheet i wykonać JavaScript wygenerowany przez arkusz stylów w kontekście Snipe-IT. Ofiara musi otworzyć URL załącznika, po czym skrypt może czytać dane samego pochodzenia i wykonywać uwierzytelnione działania z uprawnieniami ofiary.
- CVE-2026-63493Wysokie
Snipe-IT przed wersją 8.7.0 pozwala sesji uwierzytelnionej hasłem dla konta z uprawnieniem self.api na dostęp do API tokenów osobistych przed ukończeniem wyzwania drugiego czynnika, ponieważ CheckForTwoFactor jest egzekwowane w grupie middleware web, ale nie w grupie API. Token może czytać i modyfikować zasoby z uprawnieniami ofiary, a dla administratora może dotrzeć do punktu końcowego users/two_factor_reset, co umożliwia przejęcie konta administratora.
- CVE-2026-62368Wysokie
Snipe-IT przed wersją 8.7.0 pozwala użytkownikowi z uprawnieniem customfields.create na przechowywanie znaczników w CustomField.name, które są przypisywane jako nieucieczkowy tytuł nagłówka bootstrap-table. Gdy inny użytkownik otworzy stronę listy zasobów, przechowywane znaczniki wykonują się na stronie w sesji ofiary, co może ujawnić dane samego pochodzenia i wykonać uwierzytelnione działania, w tym eskalację uprawnień.
- CVE-2026-88894Średnie
Ścieżka realizacji predefiniowanych zestawów (kit checkout) w Snipe-IT nie egzekwuje izolacji dzierżawców Full Multiple Company Support (FMCS) na celu realizacji. W przeciwieństwie do innych ścieżek realizacji, App\Services\PredefinedKitCheckoutService nigdy nie wywołuje $item->canCheckoutTo($target); wykonuje jedynie sprawdzenie polityki aktor-vs-element oraz sprawdzenie dostępności przed zapisaniem realizacji. Przy włączonym FMCS użytkownik niebędący superużytkownikiem, należący do co najmniej dwóch firm i posiadający uprawnienie assets.checkout, może wysłać żądanie POST do /kits/{kit}/checkout z user_id należącym tylko do firmy B i przypisać temu użytkownikowi zasób firmy A (podobnie licencje, materiały eksploatacyjne i akcesoria zestawu), omijając sprawdzenie niezgodności firm. Problem naprawiono w Snipe-IT 8.7.2.
- CVE-2026-86774Średnie
Snipe-IT przed wersją 8.7.0 zawiera podatność polegającą na uszkodzonej kontroli dostępu w AssetModelPolicy, gdzie metoda files() kaskaduje z uprawnienia assets.files, umożliwiając uwierzytelnionym użytkownikom przesyłanie i usuwanie załączników w rekordach Asset Model bez wymaganego uprawnienia models.files. Atakujący posiadający tylko uprawnienie assets.files mogą modyfikować współdzielone załączniki modeli ponad granicami firm i ominąć dedykowane uprawnienie models.files, które ma ograniczać zarządzanie plikami we wspólnym katalogu Asset Model.
Oryginalny opis (angielski, źródło NVD)
Snipe-IT versions <= 8.6.3 (fixed in 8.7.0) do not validate company assignment authorization before persisting user records via the REST API. In Api\UsersController::store() and ::update(), the user record is filled from the request and saved before the requested company_id / company_ids[] values are filtered against the actor's permitted companies (Company::getIdsForCurrentUser()). On installs using Full Multiple Companies Support (FMCS), a non-superuser holding users.create (or users.edit on a target user) can submit company identifiers for companies outside their scope — including a mix of permitted and foreign ids — causing the account row to be committed to the database before authorization is checked. Where null_company_is_floater=1 is set, the post-hoc filter leaves an empty company pivot and the account is persisted as a "floater" with cross-company visibility, allowing creation or relocation of user accounts across tenant boundaries.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

