ApostropheCMS: Międzydomenowy token sesji w adresie URL umożliwia przejęcie sesji
Podsumowanie
Mechanizm migracji sesji między domenami w Apostrophe przekazuje jednorazowy token sesji jako parametr zapytania URL i zapisuje go w pamięci podręcznej Mongo. Każdy klient, który przedstawi ten token, po cichu przejmuje pełną sesję docelowego użytkownika (w tym passport.user) bez podawania danych uwierzytelniających.
Szczegóły
packages/apostrophe/modules/@apostrophecms/i18n/index.js:
- Generowanie tokena przy przepływach między hostami/ustawieniami regionalnymi (L479–487) oraz przekierowanie między lokalizacjami w passport-bridge (
passport-bridge/index.jsL557–593) umieszcza token w adresie URL. acceptCrossDomainSessionToken(L258–298) odczytuje?aposCrossDomainSessionToken, przepisuje za pomocąObject.assignzapisaną sesję (plik cookie +passport.user) nareq.session, a następnie czyści wpis w pamięci podręcznej w przestrzeni nazw@apostrophecms/i18n:cross-domain-sessions.- Oprogramowanie pośredniczące (middleware) bez
before:jest rejestrowane dla każdego adresu URL (expressfindModuleMiddlewareAndRoutesL820–879); zweryfikowano za pomocąAPOS_LOG_ALL_ROUTES=1.
PoC
# 0) Anonymous baseline: admin-only draft → 403
# 1) Admin logs in legitimately (token minted into redirect URL):
curl -c admin.cookies -X POST -H "Content-Type: application/json" \
--data '{"username":"admin","password":"adminpassword","session":true}' \
http://localhost:3100/api/v1/@apostrophecms/login/login
# 2) Attacker with NO credentials visits the leaked token URL:
curl -c atk.cookies "http://localhost:3100/?aposCrossDomainSessionToken=HUNTING_TOKEN"
# → 302 Location: / ; attacker now holds a vulnlab.sid SID cookie
# 3) Attacker reads admin-only content via adopted session:
curl -b atk.cookies ".../api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:draft"
# → 200 adopted-session read -> Secret Private Page | secretData = TOP-SECRET-VALUE-abc123
# 4) Cache entry consumed (single-use): {"value":null}
Wpływ
Przejęcie sesji lub konta migrowanego użytkownika przez każdego, kto wejdzie w posiadanie tokena, wraz z odziedziczeniem wszystkich uprawnień danego konta. Ryzyko ujawnienia jest wysokie, ponieważ token znajduje się w adresach URL: w logach serwerów, serwerów proxy i przeglądarek, w historii przeglądania oraz w nagłówku Referer, gdy host docelowy różni się od źródłowego (zamierzony przypadek użycia). Jednorazowy charakter tokena ogranicza okno czasowe ataku, lecz go nie eliminuje.
Co trzeba zrobić
Zaktualizuj pakiet apostrophe do wersji 4.33.0 lub nowszej oraz @apostrophecms/passport-bridge do wersji 1.6.1 lub nowszej. Zgodnie z zaleceniami token powinien być przekazywany za pośrednictwem krótkotrwałego, podpisanego pliku cookie HttpOnly z atrybutem SameSite zamiast parametru w URL, powiązany ze ściśle określoną parą hostów źródłowego i docelowego, wygasać w ciągu kilku sekund i nie trafiać do dzienników zdarzeń.
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Paczka npm | apostrophe | < 4.33.0 | 4.33.0 |
| Paczka npm | @apostrophecms/passport-bridge | < 1.6.1 | 1.6.1 |
Odnośniki
- Wektor CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N- Słabość (CWE)
CWE-598- Platforma
- npm
- Paczka
apostrophe, @apostrophecms/passport-bridge- Ujawniono
- 20.10.2026
- Aktualizacja
- 20.10.2026 21:21
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-hhvr-8m24-qqr3 - 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ć.
- 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
- 2020: 2
- 2021: 2
- 2022: 0
- 2023: 0
- 2024: 0
- 2025: 0
- 2026: 23
-
ApostropheCMS: Międzydomenowy token sesji w adresie URL umożliwia przejęcie sesji ten wpis
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.