CVE-2026-39857
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 38 - wyżej niż 38% wszystkich znanych CVE
Streszczenie
W ApostropheCMS w wersjach 4.28.0 i wcześniejszych parametry choices i counts w REST API wykonują operacje MongoDB distinct(), które omijają ograniczenia publicApiProjection. Nieuwierzytelniony atakujący może wyodrębnić wszystkie unikalne wartości pól schematu, w tym pól chronionych przez viewPermission, a wariant counts ujawnia liczbę dokumentów dla każdej wartości.
Ocena ryzyka
Może dojść do wycieku danych z pól, które powinny być ukryte przed publicznym dostępem, co narusza poufność i może ułatwić dalsze ataki.
Rekomendacja
Zaktualizuj ApostropheCMS do wersji 4.29.0, która naprawia tę podatność.
Inne podatności w ApostropheCMS
Zobacz wszystkie- CVE-2026-113711Wysokie
W ApostropheCMS przed wersją 4.33.0 (oraz import-export przed 3.7.0) trasy importu wywołują bigUploadMiddleware bez wczesnego callbacku autoryzacji. Nieuwierzytelnione żądania mogą wykonać inicjalizację uploadu, zapis chunków, przetwarzanie tymczasowe i zadeklarowane przez atakującego sprzątanie, zanim późniejsza kontrola użytkownika odrzuci import.
- CVE-2026-113710Średnie
ApostropheCMS przed wersją 4.33.0 ma endpoint samoobsługowej zmiany hasła, który weryfikuje bieżące hasło, ale nie korzysta z mechanizmu licznika nieudanych prób, ograniczania, opóźnienia ani blokady modułu logowania. Atakujący z ważną uwierzytelnioną sesją może wielokrotnie zgadywać bieżące hasło bez otrzymania blokady lub ograniczenia. Problem naprawiono w wersji 4.33.0.
- CVE-2026-113670Średnie
ApostropheCMS przed wersją 4.33.0 ma w rdzeniowym REST API stron odczyt pełnych dokumentów stron z .permission(false) w getOne oraz w zrzucie drzewa all=1, co omija sprawdzenia viewRole typu strony, visibility: private i visibility: loginRequired. Nieuwierzytelnieni odwiedzający i kontrybutorzy o niskich uprawnieniach mogą odczytać treść stron przeznaczonych tylko dla administratorów i niepublicznych za pomocą _id/slug. Problem naprawiono w wersji 4.33.0.
- CVE-2026-113668Średnie
ApostropheCMS przed wersją 4.33.0 ma trasę REST GET /api/v1/<piece-type>/:_id/locales (oraz równoważną trasę stron), która nie stosuje bramki publicApiCheckAsync wymuszanej przez inne trasy odczytu ApostropheCMS. Nieuwierzytelniony wywołujący może zapytać tę trasę dla dowolnego _id dokumentu i dowiedzieć się, czy dokument istnieje oraz w jakich lokalizacjach jest opublikowany — ujawnienie istnienia dokumentu i metadanych lokalizacji, które API odczytu powinno normalnie chronić. Problem naprawiono w wersji 4.33.0.
- CVE-2026-113667Średnie
W integracjach CAPTCHA (Form, login-recaptcha, login-hcaptcha) dla ApostropheCMS token odpowiedzi użytkownika jest wstawiany bez kodowania do żądania weryfikacji u dostawcy. Spreparowane tokeny mogą przemycać parametry żądania i zakłócać weryfikację CAPTCHA oraz chronione nią formularze lub logowanie. Możliwe jest automatyczne sondowanie obejścia, ale nie potwierdzono skutecznego obejścia CAPTCHA ani ujawnienia sekretu.
- CVE-2026-113666Wysokie
W db-connect przed 1.1.0 i ApostropheCMS przed 4.33.0 konto z dostępem view-draft może przesłać ścieżkę wykluczenia projekcji przechodzącą przez łańcuch prototypu konstruktora do współdzielonego elementu prototypu, gdy używany jest adapter SQLite, PostgreSQL lub multipostgres. Helper unsetNestedField usuwa wtedy współdzielony element runtime, powodując trwałe skutki dla integralności i dostępności procesu; domyślny adapter MongoDB nie jest podatny.
- CVE-2026-113662Średnie
W module import-export ApostropheCMS przed wersją 3.7.0 uwierzytelniony użytkownik z dostępem do importu dla docelowego typu może podać obiekt lub operator jako wartość klucza aktualizacji, powodując dopasowanie zapytania importu do niezidentyfikowanego istniejącego dokumentu, który użytkownik ma ogólne uprawnienie do edycji. Normalny filtr uprawnień findForEditing nadal ogranicza kandydatów, więc luka nie pozwala na nadpisanie dowolnej chronionej treści bez uprawnień.
- CVE-2026-113660Średnie
W ApostropheCMS przed wersją 4.33.0 API exist-in-locale pozwala uwierzytelnionemu użytkownikowi o niskich uprawnieniach ustalić, czy ograniczone dokumenty istnieją w określonym locale i trybie, w tym w trybie roboczym. Endpoint zwraca identyfikatory zlokalizowanych dokumentów bez stosowania kryteriów autoryzacji na poziomie dokumentu. Luka została naprawiona w wersji 4.33.0.
- CVE-2026-113655Średnie
W ApostropheCMS przed wersją 4.33.0 uwierzytelniony redaktor z uprawnieniami do edycji zwykłej strony zagnieżdżonej pod ograniczonym rodzicem może użyć operacji przenoszenia stron w obrębie tego samego rodzica, aby zmienić kolejność rodzeństwa bez uprawnień do tworzenia w tym rodzicu. Obejście dotyczy wyłącznie kolejności rodzeństwa, a nie dowolnej modyfikacji treści, utraty poufności ani tworzenia ograniczonego zagnieżdżenia.
- CVE-2026-113653Średnie
W ApostropheCMS przed wersją 4.33.0 viewRole nie jest stosowana do anonimowych odwiedzających, gdy deweloper udostępnia obiekty użytkowników przez publicznie renderowaną relację lub jawnie włączone publiczne API. Niewystarczająco ograniczone szablony, w tym serializacja całego powiązanego obiektu użytkownika, mogą warunkowo ujawnić pola użytkownika, ale hasła są przechowywane osobno i nie są objęte problemem.
Oryginalny opis (angielski, źródło NVD)
ApostropheCMS is an open-source Node.js content management system. Versions 4.28.0 and prior contain an authorization bypass vulnerability in the choices and counts query parameters of the REST API, where these query builders execute MongoDB distinct() operations that bypass the publicApiProjection restrictions intended to limit which fields are exposed publicly. The choices and counts parameters are processed via applyBuildersSafely before the projection is applied, and MongoDB's distinct operation does not respect projections, returning all distinct values directly. The results are returned in the API response without any filtering against publicApiProjection or removeForbiddenFields. An unauthenticated attacker can extract all distinct field values for any schema field type that has a registered query builder, including string, integer, float, select, boolean, date, slug, and relationship fields. Fields protected with viewPermission are similarly exposed, and the counts variant additionally reveals how many documents have each distinct value. Both the piece-type and page REST APIs are affected. This issue has been fixed in version 4.29.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

