Średnia

ApostropheCMS: trasa REST :_id/locales pomija weryfikację autoryzacji publicznego API wymuszaną przez siostrzane trasy odczytu (ujawnienie istnienia dokumentu i metadanych wersji językowych)

  • Ujawniono: 20.10.2026
  • Aktualizacja: 20.10.2026 21:26

Podsumowanie

Trasa REST GET /api/v1/<piece-type>/:_id/locales (oraz jej odpowiednik dla stron) nie stosuje mechanizmu sprawdzającego publicApiCheckAsync, który jest egzekwowany przez inne trasy odczytu w ApostropheCMS. Nieuwierzytelniony użytkownik może odpytać tę trasę o dowolny dokument _id i dowiedzieć się, czy dokument istnieje oraz w jakich wersjach językowych (locales) został opublikowany — stanowi to ujawnienie faktu istnienia dokumentu i metadanych wersji językowych, które powinno być chronione przez API odczytu.

Dotyczy

  • Repozytorium: apostrophecms/apostrophe (pakiet monorepo apostrophe).
  • Potwierdzone w wersji: 4.32.2 (commit d3ff8c9 == wydana wersja 4.32.2; bez zmian w aktualnym HEAD w chwili zgłoszenia). Brak poprawki w momencie publikacji zgłoszenia.
  • Stos technologiczny: Node.js / Express + MongoDB.
  • Punkty końcowe: GET /api/v1/<piece-type>/:_id/locales oraz GET /api/v1/@apostrophecms/page/:_id/locales.

Szczegóły techniczne

  • Luka: modules/@apostrophecms/piece-type/index.js:397 rejestruje trasę :_id/locales bez publicApiCheckAsync. Moduł stron zawiera to samo pominięcie w modules/@apostrophecms/page/index.js:925.
  • Zabezpieczone trasy pokrewne: trasy odczytu w tym samym module (np. getAll w piece-type/index.js:256-263) wywołują publicApiCheckAsync (:263), aby wymusić politykę dostępu do publicznego API.
  • W rezultacie procedura obsługi locales (wywołująca getLocales() dla danego dokumentu) wykonuje się dla każdego wywołującego, bez względu na politykę publicznego API stosowaną przez pozostałe trasy, zwracając metadane lokalizacji i publikacji dokumentu bez autoryzacji.

Wpływ

Nieuwierzytelniony użytkownik może potwierdzić istnienie dokumentu za pomocą _id i wyliczyć jego wersje językowe oraz stan publikacji — czyli informacje, które API odczytu powinno zabezpieczać. Zasadnie zaklasyfikowane jako 4.3 (AC:H) ze względu na warunek wstępny w postaci nieprzejrzystego identyfikatora _id (wywołujący musi znać ID dokumentu).

Weryfikacja (tylko lokalnie)

Odtworzono lokalnie na wersji apostrophe@4.32.2 (== commit d3ff8c9) przy użyciu syntetycznych danych:

  • Przegląd kodu źródłowego potwierdził, że w trasie :_id/locales brakuje publicApiCheckAsync, podczas gdy siostrzane trasy odczytu posiadają to zabezpieczenie.
  • Nieuwierzytelnione zapytanie GET /api/v1/<piece-type>/<_id>/locales zwróciło metadane lokalizacji dokumentu (istnienie + wersje językowe), podczas gdy chronione trasy odczytu (np. getAll) prawidłowo wymagały spełnienia polityki publicznego API.
  • Próba kontrolna: ta sama trasa po dodaniu mechanizmu publicApiCheckAsync (zgodnie z trasami pokrewnymi) odrzuca nieuwierzytelnione żądanie, co potwierdza brak bramki jako przyczynę problemu. Testy przeprowadzono wyłącznie na danych syntetycznych; środowiska produkcyjne/hostowane nie były modyfikowane.

Podziękowania

Podziękowania dla Santosh Kumar Puppala (https://github.com/Santoshkumarpuppala).).

Co trzeba zrobić

Należy dodać bramkę autoryzacyjną publicApiCheckAsync (lub równoważną) do trasy :_id/locales zarówno w module piece-type, jak i w module page, zgodnie z konfiguracją siostrzanych tras odczytu, aby metadane istnienia dokumentu i wersji językowych były zwracane tylko wywołującym uprawnionym przez politykę publicznego API.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm apostrophe < 4.33.0 4.33.0

Odnośniki

Ocena CVSS 5.3/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Słabość (CWE)
CWE-200, CWE-862
Platforma
npm
Paczka
apostrophe
Ujawniono
20.10.2026
Aktualizacja
20.10.2026 21:26

Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.

OSV / GitHub Advisory Database - GHSA-gqh3-7856-rjjg - CC BY 4.0

Historia podatności: apostrophe

Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (27) w archiwum
Wszystkich wpisów
27
Pierwsza → ostatnia
09.2020 10.2026
Bez poprawki
4
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 2
  • Wysoka 8
  • Średnia 13
  • Niska 4

Ujawnienia w latach

  1. 2020: 2
  2. 2021: 2
  3. 2022: 0
  4. 2023: 0
  5. 2024: 0
  6. 2025: 0
  7. 2026: 23
Istotność:
  1. ApostropheCMS: trasa REST :_id/locales pomija weryfikację autoryzacji publicznego API wymuszaną przez siostrzane trasy odczytu (ujawnienie istnienia dokumentu i metadanych wersji językowych) ten wpis
    Średnia · 5.3 CVE-2026-113668 < 4.33.0 4.33.0
  2. Wysoka · 7.3 CVE-2026-45011 = 4.29.0 brak poprawki
  3. Krytyczna · 9.8 CVE-2021-25979 >= 2.63.0, < 3.4.0 3.4.0

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.